< prev index next >

src/java.desktop/share/classes/sun/font/SunLayoutEngine.java

Print this page




 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 }
< prev index next >