< prev index next >

modules/javafx.graphics/src/main/java/com/sun/javafx/font/coretext/CTFontStrike.java

Print this page
rev 10122 : 8088205: [Mac] WebView renders icons instead of letters on some sites
rev 9951 : 8161705: Rename directories under modules to exactly match the module names
Reviewed-by: kcr, vadim


  60         super(fontResource, size, graphicsTransform, aaMode, desc);
  61         float maxDim = PrismFontFactory.getFontSizeLimit();
  62         if (graphicsTransform.isTranslateOrIdentity()) {
  63             drawShapes = size > maxDim;
  64         } else {
  65             BaseTransform tx2d = getTransform();
  66             matrix = new CGAffineTransform();
  67             matrix.a = tx2d.getMxx();
  68             matrix.b = -tx2d.getMyx(); /*Inverted coordinates system */
  69             matrix.c = -tx2d.getMxy(); /*Inverted coordinates system */
  70             matrix.d = tx2d.getMyy();
  71 
  72             if (Math.abs(matrix.a * size) > maxDim ||
  73                 Math.abs(matrix.b * size) > maxDim ||
  74                 Math.abs(matrix.c * size) > maxDim ||
  75                 Math.abs(matrix.d * size) > maxDim)
  76             {
  77               drawShapes = true;
  78             }
  79         }

  80         long psNameRef = OS.CFStringCreate(fontResource.getPSName());
  81         if (psNameRef != 0) {






















  82             fontRef = OS.CTFontCreateWithName(psNameRef, size, matrix);

  83             OS.CFRelease(psNameRef);
  84         }
  85         if (fontRef == 0) {
  86             if (PrismFontFactory.debugFonts) {
  87                 System.err.println("Failed to create CTFont for " + this);
  88             }
  89         }
  90     }
  91 
  92     long getFontRef() {
  93         return fontRef;
  94     }
  95 
  96     @Override protected DisposerRecord createDisposer(FontStrikeDesc desc) {
  97         CTFontFile fontResource = getFontResource();
  98         return new CTStrikeDisposer(fontResource, desc, fontRef);
  99     }
 100 
 101     @Override protected Glyph createGlyph(int glyphCode) {
 102         return new CTGlyph(this, glyphCode, drawShapes);




  60         super(fontResource, size, graphicsTransform, aaMode, desc);
  61         float maxDim = PrismFontFactory.getFontSizeLimit();
  62         if (graphicsTransform.isTranslateOrIdentity()) {
  63             drawShapes = size > maxDim;
  64         } else {
  65             BaseTransform tx2d = getTransform();
  66             matrix = new CGAffineTransform();
  67             matrix.a = tx2d.getMxx();
  68             matrix.b = -tx2d.getMyx(); /*Inverted coordinates system */
  69             matrix.c = -tx2d.getMxy(); /*Inverted coordinates system */
  70             matrix.d = tx2d.getMyy();
  71 
  72             if (Math.abs(matrix.a * size) > maxDim ||
  73                 Math.abs(matrix.b * size) > maxDim ||
  74                 Math.abs(matrix.c * size) > maxDim ||
  75                 Math.abs(matrix.d * size) > maxDim)
  76             {
  77               drawShapes = true;
  78             }
  79         }
  80 
  81         long psNameRef = OS.CFStringCreate(fontResource.getPSName());
  82         if (psNameRef != 0) {
  83             long fileNameRef = OS.CFStringCreate(fontResource.getFileName());
  84             if (fileNameRef != 0) {
  85                 long url = OS.CFURLCreateWithFileSystemPath(
  86                         OS.kCFAllocatorDefault(),
  87                         fileNameRef, OS.kCFURLPOSIXPathStyle, false);
  88                 if (url != 0) {
  89                     long dataProvider = OS.CGDataProviderCreateWithURL(url);
  90                     if (dataProvider != 0) {
  91                         long cgFont = OS.CGFontCreateWithDataProvider(
  92                                 dataProvider);
  93                         if (cgFont != 0) {
  94                             fontRef = OS.CTFontCreateWithGraphicsFont(
  95                                     cgFont, size, matrix, 0);
  96                             OS.CFRelease(cgFont);
  97                         }
  98                         OS.CFRelease(dataProvider);
  99                     }
 100                     OS.CFRelease(url);
 101                 }
 102                 OS.CFRelease(fileNameRef);
 103             }
 104             if (fontRef == 0) {
 105                 fontRef = OS.CTFontCreateWithName(psNameRef, size, matrix);
 106             }
 107             OS.CFRelease(psNameRef);
 108         }
 109         if (fontRef == 0) {
 110             if (PrismFontFactory.debugFonts) {
 111                 System.err.println("Failed to create CTFont for " + this);
 112             }
 113         }
 114     }
 115 
 116     long getFontRef() {
 117         return fontRef;
 118     }
 119 
 120     @Override protected DisposerRecord createDisposer(FontStrikeDesc desc) {
 121         CTFontFile fontResource = getFontResource();
 122         return new CTStrikeDisposer(fontResource, desc, fontRef);
 123     }
 124 
 125     @Override protected Glyph createGlyph(int glyphCode) {
 126         return new CTGlyph(this, glyphCode, drawShapes);


< prev index next >