175 } 176 177 public void layout(FontStrikeDesc desc, float[] mat, float ptSize, int gmask, 178 int baseIndex, TextRecord tr, int typo_flags, 179 Point2D.Float pt, GVData data) { 180 Font2D font = key.font(); 181 FontStrike strike = font.getStrike(desc); 182 long layoutTables = font.getLayoutTableCache(); 183 if (useICU) { 184 nativeLayout(font, strike, mat, gmask, baseIndex, 185 tr.text, tr.start, tr.limit, tr.min, tr.max, 186 key.script(), key.lang(), typo_flags, pt, data, 187 font.getUnitsPerEm(), layoutTables); 188 } else { 189 long pNativeFont = font.getPlatformNativeFontPtr(); // used on OSX 190 // pScaler probably not needed long term. 191 long pScaler = 0L; 192 if (font instanceof FileFont) { 193 pScaler = ((FileFont)font).getScaler().nativeScaler; 194 } 195 shape(font, strike, ptSize, mat, pScaler, pNativeFont, isAAT(font), 196 tr.text, data, key.script(), 197 tr.start, tr.limit, baseIndex, pt, 198 typo_flags, gmask); 199 } 200 } 201 202 /* Native method to invoke ICU layout engine */ 203 private static native void 204 nativeLayout(Font2D font, FontStrike strike, float[] mat, int gmask, 205 int baseIndex, char[] chars, int offset, int limit, 206 int min, int max, int script, int lang, int typo_flags, 207 Point2D.Float pt, GVData data, long upem, long layoutTables); 208 209 210 /* Native method to invoke harfbuzz layout engine */ 211 private static native boolean 212 shape(Font2D font, FontStrike strike, float ptSize, float[] mat, 213 long pscaler, long pNativeFont, boolean aat, 214 char[] chars, GVData data, 215 int script, int offset, int limit, 216 int baseIndex, Point2D.Float pt, int typo_flags, int slot); 217 } | 175 } 176 177 public void layout(FontStrikeDesc desc, float[] mat, float ptSize, int gmask, 178 int baseIndex, TextRecord tr, int typo_flags, 179 Point2D.Float pt, GVData data) { 180 Font2D font = key.font(); 181 FontStrike strike = font.getStrike(desc); 182 long layoutTables = font.getLayoutTableCache(); 183 if (useICU) { 184 nativeLayout(font, strike, mat, gmask, baseIndex, 185 tr.text, tr.start, tr.limit, tr.min, tr.max, 186 key.script(), key.lang(), typo_flags, pt, data, 187 font.getUnitsPerEm(), layoutTables); 188 } else { 189 long pNativeFont = font.getPlatformNativeFontPtr(); // used on OSX 190 // pScaler probably not needed long term. 191 long pScaler = 0L; 192 if (font instanceof FileFont) { 193 pScaler = ((FileFont)font).getScaler().nativeScaler; 194 } 195 shape(font, strike, ptSize, mat, pScaler, pNativeFont, 196 layoutTables, isAAT(font), 197 tr.text, data, key.script(), 198 tr.start, tr.limit, baseIndex, pt, 199 typo_flags, gmask); 200 } 201 } 202 203 /* Native method to invoke ICU layout engine */ 204 private static native void 205 nativeLayout(Font2D font, FontStrike strike, float[] mat, int gmask, 206 int baseIndex, char[] chars, int offset, int limit, 207 int min, int max, int script, int lang, int typo_flags, 208 Point2D.Float pt, GVData data, long upem, long layoutTables); 209 210 211 /* Native method to invoke harfbuzz layout engine */ 212 private static native boolean 213 shape(Font2D font, FontStrike strike, float ptSize, float[] mat, 214 long pscaler, long pNativeFont, long layoutTables, boolean aat, 215 char[] chars, GVData data, 216 int script, int offset, int limit, 217 int baseIndex, Point2D.Float pt, int typo_flags, int slot); 218 } |