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 23SimpleFontInstance::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 36SimpleFontInstance::~SimpleFontInstance() 37{ 38 // nothing to do... 39} 40 41const 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 54void 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 69le_int32 SimpleFontInstance::getUnitsPerEM() const 70{ 71 return 2048; 72} 73 74le_int32 SimpleFontInstance::getAscent() const 75{ 76 return fAscent; 77} 78 79le_int32 SimpleFontInstance::getDescent() const 80{ 81 return fDescent; 82} 83 84le_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... 91LEGlyphID 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... 98LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper) const 99{ 100 return LEFontInstance::mapCharToGlyph(ch, mapper); 101} 102 103LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch) const 104{ 105 return (LEGlyphID) ch; 106} 107 108float SimpleFontInstance::getXPixelsPerEm() const 109{ 110 return fPointSize; 111} 112 113float SimpleFontInstance::getYPixelsPerEm() const 114{ 115 return fPointSize; 116} 117 118float SimpleFontInstance::getScaleFactorX() const 119{ 120 return 1.0; 121} 122 123float SimpleFontInstance::getScaleFactorY() const 124{ 125 return 1.0; 126} 127 128le_bool SimpleFontInstance::getGlyphPoint(LEGlyphID /*glyph*/, le_int32 /*pointNumber*/, LEPoint &/*point*/) const 129{ 130 return FALSE; 131} 132 133