src/share/classes/sun/font/FileFont.java

Print this page
rev 1379 : [mq]: fontmanager.patch

*** 156,166 **** * map they are held in via a boolean flag * Since this isn't expected to be anything other than an extremely * rare maybe it is not worth doing this last part. */ synchronized void deregisterFontAndClearStrikeCache() { ! FontManager.deRegisterBadFont(this); for (Reference strikeRef : strikeCache.values()) { if (strikeRef != null) { /* NB we know these are all FileFontStrike instances * because the cache is on this FileFont --- 156,167 ---- * map they are held in via a boolean flag * Since this isn't expected to be anything other than an extremely * rare maybe it is not worth doing this last part. */ synchronized void deregisterFontAndClearStrikeCache() { ! SunFontManager fm = SunFontManager.getInstance(); ! fm.deRegisterBadFont(this); for (Reference strikeRef : strikeCache.values()) { if (strikeRef != null) { /* NB we know these are all FileFontStrike instances * because the cache is on this FileFont
*** 170,241 **** scaler.invalidateScalerContext(strike.pScalerContext); } } } scaler.dispose(); ! scaler = FontManager.getNullScaler(); } StrikeMetrics getFontMetrics(long pScalerContext) { try { return getScaler().getFontMetrics(pScalerContext); } catch (FontScalerException fe) { ! scaler = FontManager.getNullScaler(); return getFontMetrics(pScalerContext); } } float getGlyphAdvance(long pScalerContext, int glyphCode) { try { return getScaler().getGlyphAdvance(pScalerContext, glyphCode); } catch (FontScalerException fe) { ! scaler = FontManager.getNullScaler(); return getGlyphAdvance(pScalerContext, glyphCode); } } void getGlyphMetrics(long pScalerContext, int glyphCode, Point2D.Float metrics) { try { getScaler().getGlyphMetrics(pScalerContext, glyphCode, metrics); } catch (FontScalerException fe) { ! scaler = FontManager.getNullScaler(); getGlyphMetrics(pScalerContext, glyphCode, metrics); } } long getGlyphImage(long pScalerContext, int glyphCode) { try { return getScaler().getGlyphImage(pScalerContext, glyphCode); } catch (FontScalerException fe) { ! scaler = FontManager.getNullScaler(); return getGlyphImage(pScalerContext, glyphCode); } } Rectangle2D.Float getGlyphOutlineBounds(long pScalerContext, int glyphCode) { try { return getScaler().getGlyphOutlineBounds(pScalerContext, glyphCode); } catch (FontScalerException fe) { ! scaler = FontManager.getNullScaler(); return getGlyphOutlineBounds(pScalerContext, glyphCode); } } GeneralPath getGlyphOutline(long pScalerContext, int glyphCode, float x, float y) { try { return getScaler().getGlyphOutline(pScalerContext, glyphCode, x, y); } catch (FontScalerException fe) { ! scaler = FontManager.getNullScaler(); return getGlyphOutline(pScalerContext, glyphCode, x, y); } } GeneralPath getGlyphVectorOutline(long pScalerContext, int[] glyphs, int numGlyphs, float x, float y) { try { return getScaler().getGlyphVectorOutline(pScalerContext, glyphs, numGlyphs, x, y); } catch (FontScalerException fe) { ! scaler = FontManager.getNullScaler(); return getGlyphVectorOutline(pScalerContext, glyphs, numGlyphs, x, y); } } /* T1 & TT implementation differ so this method is abstract. --- 171,242 ---- scaler.invalidateScalerContext(strike.pScalerContext); } } } scaler.dispose(); ! scaler = FontScaler.getNullScaler(); } StrikeMetrics getFontMetrics(long pScalerContext) { try { return getScaler().getFontMetrics(pScalerContext); } catch (FontScalerException fe) { ! scaler = FontScaler.getNullScaler(); return getFontMetrics(pScalerContext); } } float getGlyphAdvance(long pScalerContext, int glyphCode) { try { return getScaler().getGlyphAdvance(pScalerContext, glyphCode); } catch (FontScalerException fe) { ! scaler = FontScaler.getNullScaler(); return getGlyphAdvance(pScalerContext, glyphCode); } } void getGlyphMetrics(long pScalerContext, int glyphCode, Point2D.Float metrics) { try { getScaler().getGlyphMetrics(pScalerContext, glyphCode, metrics); } catch (FontScalerException fe) { ! scaler = FontScaler.getNullScaler(); getGlyphMetrics(pScalerContext, glyphCode, metrics); } } long getGlyphImage(long pScalerContext, int glyphCode) { try { return getScaler().getGlyphImage(pScalerContext, glyphCode); } catch (FontScalerException fe) { ! scaler = FontScaler.getNullScaler(); return getGlyphImage(pScalerContext, glyphCode); } } Rectangle2D.Float getGlyphOutlineBounds(long pScalerContext, int glyphCode) { try { return getScaler().getGlyphOutlineBounds(pScalerContext, glyphCode); } catch (FontScalerException fe) { ! scaler = FontScaler.getNullScaler(); return getGlyphOutlineBounds(pScalerContext, glyphCode); } } GeneralPath getGlyphOutline(long pScalerContext, int glyphCode, float x, float y) { try { return getScaler().getGlyphOutline(pScalerContext, glyphCode, x, y); } catch (FontScalerException fe) { ! scaler = FontScaler.getNullScaler(); return getGlyphOutline(pScalerContext, glyphCode, x, y); } } GeneralPath getGlyphVectorOutline(long pScalerContext, int[] glyphs, int numGlyphs, float x, float y) { try { return getScaler().getGlyphVectorOutline(pScalerContext, glyphs, numGlyphs, x, y); } catch (FontScalerException fe) { ! scaler = FontScaler.getNullScaler(); return getGlyphVectorOutline(pScalerContext, glyphs, numGlyphs, x, y); } } /* T1 & TT implementation differ so this method is abstract.
*** 273,283 **** * execute first? If so the file would not * be deleted on MS-windows. */ fontFile.delete(); /* remove from delete on exit hook list : */ ! FontManager.tmpFontFiles.remove(fontFile); } catch (Exception e) { } } return null; } --- 274,285 ---- * execute first? If so the file would not * be deleted on MS-windows. */ fontFile.delete(); /* remove from delete on exit hook list : */ ! // FIXME: still need to be refactored ! SunFontManager.getInstance().tmpFontFiles.remove(fontFile); } catch (Exception e) { } } return null; }