modules/graphics/src/main/java/com/sun/javafx/font/PrismFontFile.java

Print this page

        

*** 257,266 **** --- 257,286 ---- public Map getStrikeMap() { return strikeMap; } + /* Used to determine if this size has embedded bitmaps, which + * for CJK fonts should be used in preference to LCD glyphs. + */ + public boolean useEmbeddedBitmapsForSize(int ptSize) { + Buffer eblcTable = readTable(EBLCTag); + if (eblcTable == null) return false; + int numSizes = eblcTable.getInt(4); + /* The bitmapSizeTable's start at offset of 8. + * Each bitmapSizeTable entry is 48 bytes. + * The offset of ppemY in the entry is 45. + */ + for (int i=0;i<numSizes;i++) { + int ppemY = eblcTable.get(8+(i*48)+45) & 0xff; + if (ppemY == ptSize) { + return true; + } + } + return false; + } + protected abstract PrismFontStrike createStrike(float size, BaseTransform transform, int aaMode, FontStrikeDesc desc);
*** 339,351 **** synchronized Buffer readTable(int tag) { Buffer buffer = null; boolean openedFile = false; try { - openedFile = filereader.openFile(); DirectoryEntry tagDE = getDirectoryEntry(tag); if (tagDE != null) { buffer = filereader.readBlock(tagDE.offset, tagDE.length); } } catch (Exception e) { if (PrismFontFactory.debugFonts) { e.printStackTrace(); --- 359,371 ---- synchronized Buffer readTable(int tag) { Buffer buffer = null; boolean openedFile = false; try { DirectoryEntry tagDE = getDirectoryEntry(tag); if (tagDE != null) { + openedFile = filereader.openFile(); buffer = filereader.readBlock(tagDE.offset, tagDE.length); } } catch (Exception e) { if (PrismFontFactory.debugFonts) { e.printStackTrace();