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