Home | History | Annotate | Download | only in layout
      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 
     19 class FontMap
     20 {
     21 public:
     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 
     36 protected:
     37     virtual const LEFontInstance *openFont(const char *fontName, le_int16 pointSize, LEErrorCode &status) = 0;
     38 
     39     char errorMessage[256];
     40 
     41 private:
     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 
     60 inline le_int16 FontMap::getPointSize() const
     61 {
     62     return fPointSize;
     63 }
     64 
     65 #endif
     66 
     67