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);
103 }
104
|
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 if (fontResource.isEmbeddedFont()) {
82 final long cgFontRef = fontResource.getCGFontRef();
83 if (cgFontRef != 0) {
84 fontRef = OS.CTFontCreateWithGraphicsFont(
85 cgFontRef, size, matrix, 0);
86 }
87 } else {
88 final long psNameRef = OS.CFStringCreate(fontResource.getPSName());
89 if (psNameRef != 0) {
90 fontRef = OS.CTFontCreateWithName(psNameRef, size, matrix);
91 OS.CFRelease(psNameRef);
92 }
93 }
94 if (fontRef == 0) {
95 if (PrismFontFactory.debugFonts) {
96 System.err.println("Failed to create CTFont for " + this);
97 }
98 }
99 }
100
101 long getFontRef() {
102 return fontRef;
103 }
104
105 @Override protected DisposerRecord createDisposer(FontStrikeDesc desc) {
106 CTFontFile fontResource = getFontResource();
107 return new CTStrikeDisposer(fontResource, desc, fontRef);
108 }
109
110 @Override protected Glyph createGlyph(int glyphCode) {
111 return new CTGlyph(this, glyphCode, drawShapes);
112 }
113
|