void XeTeXFontInst_FT2::initialize(LEErrorCode &status) { if (face == 0) { status = LE_FONT_FILE_NOT_FOUND_ERROR; return; } XeTeXFontInst::initialize(status); if (LE_FAILURE(status)) { /* font can ONLY be used via FreeType APIs, not direct table access */ fFreeTypeOnly = true; status = LE_NO_ERROR; /* fill in fields that XeTeXFontInst::initialize failed to get for us */ fUnitsPerEM = face->units_per_EM; fAscent = yUnitsToPoints(face->ascender); fDescent = yUnitsToPoints(face->descender); // fLeading = ; fItalicAngle = 0; PS_FontInfoRec font_info; if (FT_Get_PS_Font_Info(face, &font_info) == 0) { // will return error if it wasn't a PS font fItalicAngle = font_info.italic_angle; } } return; }
SimpleFontInstance::SimpleFontInstance(float pointSize, LEErrorCode &status) : fPointSize(pointSize), fAscent(0), fDescent(0) { if (LE_FAILURE(status)) { return; } fAscent = (le_int32) yUnitsToPoints(2000.0); fDescent = (le_int32) yUnitsToPoints(600.0); return; }
void LEFontInstance::transformFunits(float xFunits, float yFunits, LEPoint &pixels) const { pixels.fX = xUnitsToPoints(xFunits) * getScaleFactorX(); pixels.fY = yUnitsToPoints(yFunits) * getScaleFactorY(); }
void LEFontInstance::unitsToPoints(LEPoint &units, LEPoint &points) const { points.fX = xUnitsToPoints(units.fX); points.fY = yUnitsToPoints(units.fY); }