1 /*
2 *******************************************************************************
3 *
4 * Copyright (C) 1999-2013, International Business Machines
5 * Corporation and others. All Rights Reserved.
6 *
7 *******************************************************************************
8 * file name: SimpleFontInstance.cpp
9 *
10 * created on: 03/30/2006
11 * created by: Eric R. Mader
12 */
13
14 #include "unicode/utypes.h"
15 #include "unicode/uchar.h"
16
17 #include "layout/LETypes.h"
18 #include "layout/LEFontInstance.h"
19
20 #include "layout/CanonShaping.h"
21 #include "SimpleFontInstance.h"
22
SimpleFontInstance(float pointSize,LEErrorCode & status)23 SimpleFontInstance::SimpleFontInstance(float pointSize, LEErrorCode &status)
24 : fPointSize(pointSize), fAscent(0), fDescent(0)
25 {
26 if (LE_FAILURE(status)) {
27 return;
28 }
29
30 fAscent = (le_int32) yUnitsToPoints(2000.0);
31 fDescent = (le_int32) yUnitsToPoints(600.0);
32
33 return;
34 }
35
~SimpleFontInstance()36 SimpleFontInstance::~SimpleFontInstance()
37 {
38 // nothing to do...
39 }
40
getFontTable(LETag tableTag) const41 const void *SimpleFontInstance::getFontTable(LETag tableTag) const
42 {
43 if (tableTag == LE_GSUB_TABLE_TAG) {
44 return CanonShaping::glyphSubstitutionTable;
45 }
46
47 if (tableTag == LE_GDEF_TABLE_TAG) {
48 return CanonShaping::glyphDefinitionTable;
49 }
50
51 return NULL;
52 }
53
getGlyphAdvance(LEGlyphID glyph,LEPoint & advance) const54 void SimpleFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
55 {
56 #if 0
57 if (u_getCombiningClass((UChar32) glyph) == 0) {
58 advance.fX = xUnitsToPoints(2048);
59 } else {
60 advance.fX = 0;
61 }
62 #else
63 advance.fX = xUnitsToPoints(2048);
64 #endif
65
66 advance.fY = 0;
67 }
68
getUnitsPerEM() const69 le_int32 SimpleFontInstance::getUnitsPerEM() const
70 {
71 return 2048;
72 }
73
getAscent() const74 le_int32 SimpleFontInstance::getAscent() const
75 {
76 return fAscent;
77 }
78
getDescent() const79 le_int32 SimpleFontInstance::getDescent() const
80 {
81 return fDescent;
82 }
83
getLeading() const84 le_int32 SimpleFontInstance::getLeading() const
85 {
86 return 0;
87 }
88
89 // We really want to inherit this method from the superclass, but some compilers
90 // issue a warning if we don't implement it...
mapCharToGlyph(LEUnicode32 ch,const LECharMapper * mapper,le_bool filterZeroWidth) const91 LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper, le_bool filterZeroWidth) const
92 {
93 return LEFontInstance::mapCharToGlyph(ch, mapper, filterZeroWidth);
94 }
95
96 // We really want to inherit this method from the superclass, but some compilers
97 // issue a warning if we don't implement it...
mapCharToGlyph(LEUnicode32 ch,const LECharMapper * mapper) const98 LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper) const
99 {
100 return LEFontInstance::mapCharToGlyph(ch, mapper);
101 }
102
mapCharToGlyph(LEUnicode32 ch) const103 LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch) const
104 {
105 return (LEGlyphID) ch;
106 }
107
getXPixelsPerEm() const108 float SimpleFontInstance::getXPixelsPerEm() const
109 {
110 return fPointSize;
111 }
112
getYPixelsPerEm() const113 float SimpleFontInstance::getYPixelsPerEm() const
114 {
115 return fPointSize;
116 }
117
getScaleFactorX() const118 float SimpleFontInstance::getScaleFactorX() const
119 {
120 return 1.0;
121 }
122
getScaleFactorY() const123 float SimpleFontInstance::getScaleFactorY() const
124 {
125 return 1.0;
126 }
127
getGlyphPoint(LEGlyphID,le_int32,LEPoint &) const128 le_bool SimpleFontInstance::getGlyphPoint(LEGlyphID /*glyph*/, le_int32 /*pointNumber*/, LEPoint &/*point*/) const
129 {
130 return FALSE;
131 }
132
133