1/* 2 ****************************************************************************** 3 * Copyright (C) 1998-2003, International Business Machines Corporation and * 4 * others. All Rights Reserved. * 5 ****************************************************************************** 6 */ 7 8#ifndef __FONTMAP_H 9#define __FONTMAP_H 10 11#include "layout/LETypes.h" 12#include "layout/LEScripts.h" 13#include "layout/LEFontInstance.h" 14 15#include "GUISupport.h" 16 17#define BUFFER_SIZE 128 18 19class FontMap 20{ 21public: 22 FontMap(const char *fileName, le_int16 pointSize, GUISupport *guiSupport, LEErrorCode &status); 23 24 virtual ~FontMap(); 25 26 virtual const LEFontInstance *getScriptFont(le_int32 scriptCode, LEErrorCode &status); 27 28 virtual le_int16 getPointSize() const; 29 30 virtual le_int32 getAscent() const; 31 32 virtual le_int32 getDescent() const; 33 34 virtual le_int32 getLeading() const; 35 36protected: 37 virtual const LEFontInstance *openFont(const char *fontName, le_int16 pointSize, LEErrorCode &status) = 0; 38 39 char errorMessage[256]; 40 41private: 42 static char *strip(char *s); 43 le_int32 getFontIndex(const char *fontName); 44 void getMaxMetrics(); 45 46 le_int16 fPointSize; 47 le_int32 fFontCount; 48 49 le_int32 fAscent; 50 le_int32 fDescent; 51 le_int32 fLeading; 52 53 GUISupport *fGUISupport; 54 55 const LEFontInstance *fFontInstances[scriptCodeCount]; 56 const char *fFontNames[scriptCodeCount]; 57 le_int32 fFontIndices[scriptCodeCount]; 58}; 59 60inline le_int16 FontMap::getPointSize() const 61{ 62 return fPointSize; 63} 64 65#endif 66 67