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 fontRef = OS.CTFontCreate(fileNameRef, psNameRef, size, matrix);
86 OS.CFRelease(fileNameRef);
87 }
88 OS.CFRelease(psNameRef);
89 }
90 if (fontRef == 0) {
91 if (PrismFontFactory.debugFonts) {
92 System.err.println("Failed to create CTFont for " + this);
93 }
94 }
95 }
96
97 long getFontRef() {
98 return fontRef;
99 }
100
101 @Override protected DisposerRecord createDisposer(FontStrikeDesc desc) {
102 CTFontFile fontResource = getFontResource();
103 return new CTStrikeDisposer(fontResource, desc, fontRef);
104 }
105
106 @Override protected Glyph createGlyph(int glyphCode) {
107 return new CTGlyph(this, glyphCode, drawShapes);
|