author | jiefu |
Fri, 15 Nov 2019 20:39:26 +0800 | |
changeset 59110 | 8c4c358272a9 |
parent 58621 | 17300b6f751f |
permissions | -rw-r--r-- |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
1 |
/* |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
2 |
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
4 |
* |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. Oracle designates this |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
8 |
* particular file as subject to the "Classpath" exception as provided |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
9 |
* by Oracle in the LICENSE file that accompanied this code. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
10 |
* |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
15 |
* accompanied this code). |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
16 |
* |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
17 |
* You should have received a copy of the GNU General Public License version |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
20 |
* |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
22 |
* or visit www.oracle.com if you need additional information or have any |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
23 |
* questions. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
24 |
*/ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
25 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
26 |
#include "jlong.h" |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
27 |
#include "sun_font_SunLayoutEngine.h" |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
28 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
29 |
#include "hb.h" |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
30 |
#include "hb-jdk.h" |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
31 |
#ifdef MACOSX |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
32 |
#include "hb-coretext.h" |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
33 |
#endif |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
34 |
#include <stdlib.h> |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
35 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
36 |
#if defined(__GNUC__) && __GNUC__ >= 4 |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
37 |
#define HB_UNUSED __attribute__((unused)) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
38 |
#else |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
39 |
#define HB_UNUSED |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
40 |
#endif |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
41 |
|
54232 | 42 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
43 |
static hb_bool_t |
54232 | 44 |
hb_jdk_get_nominal_glyph (hb_font_t *font HB_UNUSED, |
45 |
void *font_data, |
|
46 |
hb_codepoint_t unicode, |
|
47 |
hb_codepoint_t *glyph, |
|
48 |
void *user_data HB_UNUSED) |
|
49 |
{ |
|
50 |
||
51 |
JDKFontInfo *jdkFontInfo = (JDKFontInfo*)font_data; |
|
52 |
JNIEnv* env = jdkFontInfo->env; |
|
53 |
jobject font2D = jdkFontInfo->font2D; |
|
54 |
*glyph = (hb_codepoint_t)env->CallIntMethod( |
|
55 |
font2D, sunFontIDs.f2dCharToGlyphMID, unicode); |
|
56 |
if (env->ExceptionOccurred()) |
|
57 |
{ |
|
58 |
env->ExceptionClear(); |
|
59 |
} |
|
60 |
if ((int)*glyph < 0) { |
|
61 |
*glyph = 0; |
|
62 |
} |
|
63 |
return (*glyph != 0); |
|
64 |
} |
|
65 |
||
66 |
static hb_bool_t |
|
67 |
hb_jdk_get_variation_glyph (hb_font_t *font HB_UNUSED, |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
68 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
69 |
hb_codepoint_t unicode, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
70 |
hb_codepoint_t variation_selector, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
71 |
hb_codepoint_t *glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
72 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
73 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
74 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
75 |
JDKFontInfo *jdkFontInfo = (JDKFontInfo*)font_data; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
76 |
JNIEnv* env = jdkFontInfo->env; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
77 |
jobject font2D = jdkFontInfo->font2D; |
54232 | 78 |
*glyph = (hb_codepoint_t)env->CallIntMethod( |
79 |
font2D, sunFontIDs.f2dCharToVariationGlyphMID, |
|
80 |
unicode, variation_selector); |
|
50840 | 81 |
if (env->ExceptionOccurred()) |
82 |
{ |
|
83 |
env->ExceptionClear(); |
|
84 |
} |
|
43826
ff4d8d468f68
8172967: [macosx] Exception while working with layout for text containing unmappable character
prr
parents:
43232
diff
changeset
|
85 |
if ((int)*glyph < 0) { |
ff4d8d468f68
8172967: [macosx] Exception while working with layout for text containing unmappable character
prr
parents:
43232
diff
changeset
|
86 |
*glyph = 0; |
ff4d8d468f68
8172967: [macosx] Exception while working with layout for text containing unmappable character
prr
parents:
43232
diff
changeset
|
87 |
} |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
88 |
return (*glyph != 0); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
89 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
90 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
91 |
static hb_position_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
92 |
hb_jdk_get_glyph_h_advance (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
93 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
94 |
hb_codepoint_t glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
95 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
96 |
{ |
43232 | 97 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
98 |
float fadv = 0.0f; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
99 |
if ((glyph & 0xfffe) == 0xfffe) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
100 |
return 0; // JDK uses this glyph code. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
101 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
102 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
103 |
JDKFontInfo *jdkFontInfo = (JDKFontInfo*)font_data; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
104 |
JNIEnv* env = jdkFontInfo->env; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
105 |
jobject fontStrike = jdkFontInfo->fontStrike; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
106 |
jobject pt = env->CallObjectMethod(fontStrike, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
107 |
sunFontIDs.getGlyphMetricsMID, glyph); |
43232 | 108 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
109 |
if (pt == NULL) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
110 |
return 0; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
111 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
112 |
fadv = env->GetFloatField(pt, sunFontIDs.xFID); |
40712 | 113 |
fadv *= jdkFontInfo->devScale; |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
114 |
env->DeleteLocalRef(pt); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
115 |
|
41003
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
116 |
return HBFloatToFixed(fadv); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
117 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
118 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
119 |
static hb_position_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
120 |
hb_jdk_get_glyph_v_advance (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
121 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
122 |
hb_codepoint_t glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
123 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
124 |
{ |
43232 | 125 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
126 |
float fadv = 0.0f; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
127 |
if ((glyph & 0xfffe) == 0xfffe) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
128 |
return 0; // JDK uses this glyph code. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
129 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
130 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
131 |
JDKFontInfo *jdkFontInfo = (JDKFontInfo*)font_data; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
132 |
JNIEnv* env = jdkFontInfo->env; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
133 |
jobject fontStrike = jdkFontInfo->fontStrike; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
134 |
jobject pt = env->CallObjectMethod(fontStrike, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
135 |
sunFontIDs.getGlyphMetricsMID, glyph); |
43232 | 136 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
137 |
if (pt == NULL) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
138 |
return 0; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
139 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
140 |
fadv = env->GetFloatField(pt, sunFontIDs.yFID); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
141 |
env->DeleteLocalRef(pt); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
142 |
|
41003
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
143 |
return HBFloatToFixed(fadv); |
43232 | 144 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
145 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
146 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
147 |
static hb_bool_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
148 |
hb_jdk_get_glyph_h_origin (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
149 |
void *font_data HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
150 |
hb_codepoint_t glyph HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
151 |
hb_position_t *x HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
152 |
hb_position_t *y HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
153 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
154 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
155 |
/* We always work in the horizontal coordinates. */ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
156 |
return true; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
157 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
158 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
159 |
static hb_bool_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
160 |
hb_jdk_get_glyph_v_origin (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
161 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
162 |
hb_codepoint_t glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
163 |
hb_position_t *x, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
164 |
hb_position_t *y, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
165 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
166 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
167 |
return false; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
168 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
169 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
170 |
static hb_position_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
171 |
hb_jdk_get_glyph_h_kerning (hb_font_t *font, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
172 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
173 |
hb_codepoint_t lejdk_glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
174 |
hb_codepoint_t right_glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
175 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
176 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
177 |
/* Not implemented. This seems to be in the HB API |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
178 |
* as a way to fall back to Freetype's kerning support |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
179 |
* which could be based on some on-the fly glyph analysis. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
180 |
* But more likely it reads the kern table. That is easy |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
181 |
* enough code to add if we find a need to fall back |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
182 |
* to that instead of using gpos. It seems like if |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
183 |
* there is a gpos table at all, the practice is to |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
184 |
* use that and ignore kern, no matter that gpos does |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
185 |
* not implement the kern feature. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
186 |
*/ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
187 |
return 0; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
188 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
189 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
190 |
static hb_position_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
191 |
hb_jdk_get_glyph_v_kerning (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
192 |
void *font_data HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
193 |
hb_codepoint_t top_glyph HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
194 |
hb_codepoint_t bottom_glyph HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
195 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
196 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
197 |
/* OpenType doesn't have vertical-kerning other than GPOS. */ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
198 |
return 0; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
199 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
200 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
201 |
static hb_bool_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
202 |
hb_jdk_get_glyph_extents (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
203 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
204 |
hb_codepoint_t glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
205 |
hb_glyph_extents_t *extents, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
206 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
207 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
208 |
/* TODO */ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
209 |
return false; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
210 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
211 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
212 |
static hb_bool_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
213 |
hb_jdk_get_glyph_contour_point (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
214 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
215 |
hb_codepoint_t glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
216 |
unsigned int point_index, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
217 |
hb_position_t *x, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
218 |
hb_position_t *y, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
219 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
220 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
221 |
if ((glyph & 0xfffe) == 0xfffe) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
222 |
*x = 0; *y = 0; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
223 |
return true; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
224 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
225 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
226 |
JDKFontInfo *jdkFontInfo = (JDKFontInfo*)font_data; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
227 |
JNIEnv* env = jdkFontInfo->env; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
228 |
jobject fontStrike = jdkFontInfo->fontStrike; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
229 |
jobject pt = env->CallObjectMethod(fontStrike, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
230 |
sunFontIDs.getGlyphPointMID, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
231 |
glyph, point_index); |
43232 | 232 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
233 |
if (pt == NULL) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
234 |
*x = 0; *y = 0; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
235 |
return true; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
236 |
} |
41003
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
237 |
*x = HBFloatToFixed(env->GetFloatField(pt, sunFontIDs.xFID)); |
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
238 |
*y = HBFloatToFixed(env->GetFloatField(pt, sunFontIDs.yFID)); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
239 |
env->DeleteLocalRef(pt); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
240 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
241 |
return true; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
242 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
243 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
244 |
static hb_bool_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
245 |
hb_jdk_get_glyph_name (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
246 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
247 |
hb_codepoint_t glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
248 |
char *name, unsigned int size, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
249 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
250 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
251 |
return false; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
252 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
253 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
254 |
static hb_bool_t |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
255 |
hb_jdk_get_glyph_from_name (hb_font_t *font HB_UNUSED, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
256 |
void *font_data, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
257 |
const char *name, int len, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
258 |
hb_codepoint_t *glyph, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
259 |
void *user_data HB_UNUSED) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
260 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
261 |
return false; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
262 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
263 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
264 |
// remind : can we initialise this from the code we call |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
265 |
// from the class static method in Java to make it |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
266 |
// completely thread safe. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
267 |
static hb_font_funcs_t * |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
268 |
_hb_jdk_get_font_funcs (void) |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
269 |
{ |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
270 |
static hb_font_funcs_t *jdk_ffuncs = NULL; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
271 |
hb_font_funcs_t *ff; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
272 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
273 |
if (!jdk_ffuncs) { |
43232 | 274 |
ff = hb_font_funcs_create(); |
275 |
||
54232 | 276 |
hb_font_funcs_set_nominal_glyph_func(ff, hb_jdk_get_nominal_glyph, NULL, NULL); |
277 |
hb_font_funcs_set_variation_glyph_func(ff, hb_jdk_get_variation_glyph, NULL, NULL); |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
278 |
hb_font_funcs_set_glyph_h_advance_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
279 |
hb_jdk_get_glyph_h_advance, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
280 |
hb_font_funcs_set_glyph_v_advance_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
281 |
hb_jdk_get_glyph_v_advance, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
282 |
hb_font_funcs_set_glyph_h_origin_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
283 |
hb_jdk_get_glyph_h_origin, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
284 |
hb_font_funcs_set_glyph_v_origin_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
285 |
hb_jdk_get_glyph_v_origin, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
286 |
hb_font_funcs_set_glyph_h_kerning_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
287 |
hb_jdk_get_glyph_h_kerning, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
288 |
hb_font_funcs_set_glyph_v_kerning_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
289 |
hb_jdk_get_glyph_v_kerning, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
290 |
hb_font_funcs_set_glyph_extents_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
291 |
hb_jdk_get_glyph_extents, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
292 |
hb_font_funcs_set_glyph_contour_point_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
293 |
hb_jdk_get_glyph_contour_point, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
294 |
hb_font_funcs_set_glyph_name_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
295 |
hb_jdk_get_glyph_name, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
296 |
hb_font_funcs_set_glyph_from_name_func(ff, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
297 |
hb_jdk_get_glyph_from_name, NULL, NULL); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
298 |
hb_font_funcs_make_immutable(ff); // done setting functions. |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
299 |
jdk_ffuncs = ff; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
300 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
301 |
return jdk_ffuncs; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
302 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
303 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
304 |
static void _do_nothing(void) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
305 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
306 |
|
47188
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
307 |
static void _free_nothing(void*) { |
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
308 |
} |
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
309 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
310 |
struct Font2DPtr { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
311 |
JavaVM* vmPtr; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
312 |
jweak font2DRef; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
313 |
}; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
314 |
|
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
315 |
static void cleanupFontInfo(void* data) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
316 |
Font2DPtr* fontInfo; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
317 |
JNIEnv* env; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
318 |
|
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
319 |
fontInfo = (Font2DPtr*) data; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
320 |
fontInfo->vmPtr->GetEnv((void**)&env, JNI_VERSION_1_1); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
321 |
env->DeleteWeakGlobalRef(fontInfo->font2DRef); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
322 |
free(data); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
323 |
} |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
324 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
325 |
static hb_blob_t * |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
326 |
reference_table(hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
327 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
328 |
Font2DPtr *fontInfo; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
329 |
JNIEnv* env; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
330 |
jobject font2D; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
331 |
jsize length; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
332 |
void* buffer; |
43232 | 333 |
|
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
334 |
// HB_TAG_NONE is 0 and is used to get the whole font file. |
47188
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
335 |
// It is not expected to be needed for JDK. |
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
336 |
if (tag == 0) { |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
337 |
return NULL; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
338 |
} |
47188
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
339 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
340 |
fontInfo = (Font2DPtr*)user_data; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
341 |
fontInfo->vmPtr->GetEnv((void**)&env, JNI_VERSION_1_1); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
342 |
if (env == NULL) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
343 |
return NULL; |
47188
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
344 |
} |
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
345 |
font2D = fontInfo->font2DRef; |
47188
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
346 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
347 |
jbyteArray tableBytes = (jbyteArray) |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
348 |
env->CallObjectMethod(font2D, sunFontIDs.getTableBytesMID, tag); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
349 |
if (tableBytes == NULL) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
350 |
return NULL; |
47188
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
351 |
} |
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
352 |
length = env->GetArrayLength(tableBytes); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
353 |
buffer = calloc(length, sizeof(jbyte)); |
58621 | 354 |
if (buffer == NULL) { |
355 |
return NULL; |
|
356 |
} |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
357 |
env->GetByteArrayRegion(tableBytes, 0, length, (jbyte*)buffer); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
358 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
359 |
return hb_blob_create((const char *)buffer, length, |
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
360 |
HB_MEMORY_MODE_WRITABLE, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
361 |
buffer, free); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
362 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
363 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
364 |
extern "C" { |
47188
0048f025c993
8186317: Cache font layout tables for use by harfbuzz
prr
parents:
43826
diff
changeset
|
365 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
366 |
/* |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
367 |
* Class: sun_font_SunLayoutEngine |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
368 |
* Method: createFace |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
369 |
* Signature: (Lsun/font/Font2D;ZJJ)J |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
370 |
*/ |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
371 |
JNIEXPORT jlong JNICALL Java_sun_font_SunLayoutEngine_createFace(JNIEnv *env, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
372 |
jclass cls, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
373 |
jobject font2D, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
374 |
jboolean aat, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
375 |
jlong platformFontPtr) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
376 |
#ifdef MACOSX |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
377 |
if (aat && platformFontPtr) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
378 |
hb_face_t *face = hb_coretext_face_create((CGFontRef)platformFontPtr); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
379 |
return ptr_to_jlong(face); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
380 |
} |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
381 |
#endif |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
382 |
Font2DPtr *fi = (Font2DPtr*)malloc(sizeof(Font2DPtr)); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
383 |
if (!fi) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
384 |
return 0; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
385 |
} |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
386 |
JavaVM* vmPtr; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
387 |
env->GetJavaVM(&vmPtr); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
388 |
fi->vmPtr = vmPtr; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
389 |
fi->font2DRef = env->NewWeakGlobalRef(font2D); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
390 |
if (!fi->font2DRef) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
391 |
free(fi); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
392 |
return 0; |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
393 |
} |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
394 |
hb_face_t *face = hb_face_create_for_tables(reference_table, fi, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
395 |
cleanupFontInfo); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
396 |
return ptr_to_jlong(face); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
397 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
398 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
399 |
/* |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
400 |
* Class: sun_font_SunLayoutEngine |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
401 |
* Method: disposeFace |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
402 |
* Signature: (J)V |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
403 |
*/ |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
404 |
JNIEXPORT void JNICALL Java_sun_font_SunLayoutEngine_disposeFace(JNIEnv *env, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
405 |
jclass cls, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
406 |
jlong ptr) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
407 |
hb_face_t* face = (hb_face_t*) jlong_to_ptr(ptr); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
408 |
hb_face_destroy(face); |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
409 |
} |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
410 |
|
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
411 |
} // extern "C" |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
412 |
|
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
413 |
static hb_font_t* _hb_jdk_font_create(hb_face_t* face, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
414 |
JDKFontInfo *jdkFontInfo, |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
415 |
hb_destroy_func_t destroy) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
416 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
417 |
hb_font_t *font; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
418 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
419 |
font = hb_font_create(face); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
420 |
hb_font_set_funcs (font, |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
421 |
_hb_jdk_get_font_funcs (), |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
422 |
jdkFontInfo, (hb_destroy_func_t) _do_nothing); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
423 |
hb_font_set_scale (font, |
41003
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
424 |
HBFloatToFixed(jdkFontInfo->ptSize*jdkFontInfo->devScale), |
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
425 |
HBFloatToFixed(jdkFontInfo->ptSize*jdkFontInfo->devScale)); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
426 |
return font; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
427 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
428 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
429 |
#ifdef MACOSX |
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
430 |
static hb_font_t* _hb_jdk_ct_font_create(hb_face_t* face, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
431 |
JDKFontInfo *jdkFontInfo) { |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
432 |
|
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
433 |
hb_font_t *font = NULL; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
434 |
font = hb_font_create(face); |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
435 |
hb_font_set_scale(font, |
41003
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
436 |
HBFloatToFixed(jdkFontInfo->ptSize), |
054df19db18c
8165345: JDK macro definition re-defined by MacOS core framework
prr
parents:
40988
diff
changeset
|
437 |
HBFloatToFixed(jdkFontInfo->ptSize)); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
438 |
return font; |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
439 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
440 |
#endif |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
441 |
|
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
442 |
hb_font_t* hb_jdk_font_create(hb_face_t* hbFace, |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
443 |
JDKFontInfo *jdkFontInfo, |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
444 |
hb_destroy_func_t destroy) { |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
445 |
#ifdef MACOSX |
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
446 |
if (jdkFontInfo->aat && jdkFontInfo->nativeFont) { |
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
447 |
return _hb_jdk_ct_font_create(hbFace, jdkFontInfo); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
448 |
} |
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
449 |
#endif |
54590
98473958d49a
8220231: Cache HarfBuzz face object for same font's text layout calls
dbatrak
parents:
54232
diff
changeset
|
450 |
return _hb_jdk_font_create(hbFace, jdkFontInfo, destroy); |
34414
e496a8d8fc8a
8143177: Integrate harfbuzz opentype layout engine per JEP 258
prr
parents:
diff
changeset
|
451 |
} |