equal
deleted
inserted
replaced
276 direction = HB_DIRECTION_RTL; |
276 direction = HB_DIRECTION_RTL; |
277 } |
277 } |
278 hb_buffer_set_direction(buffer, direction); |
278 hb_buffer_set_direction(buffer, direction); |
279 |
279 |
280 chars = (*env)->GetCharArrayElements(env, text, NULL); |
280 chars = (*env)->GetCharArrayElements(env, text, NULL); |
|
281 if ((*env)->ExceptionCheck(env)) { |
|
282 hb_buffer_destroy(buffer); |
|
283 hb_font_destroy(hbfont); |
|
284 free((void*)jdkFontInfo); |
|
285 return JNI_FALSE; |
|
286 } |
281 len = (*env)->GetArrayLength(env, text); |
287 len = (*env)->GetArrayLength(env, text); |
282 |
288 |
283 hb_buffer_add_utf16(buffer, chars, len, offset, limit-offset); |
289 hb_buffer_add_utf16(buffer, chars, len, offset, limit-offset); |
284 |
290 |
285 hb_shape_full(hbfont, buffer, features, featureCount, 0); |
291 hb_shape_full(hbfont, buffer, features, featureCount, 0); |
307 |
313 |
308 hb_buffer_destroy (buffer); |
314 hb_buffer_destroy (buffer); |
309 hb_font_destroy(hbfont); |
315 hb_font_destroy(hbfont); |
310 free((void*)jdkFontInfo); |
316 free((void*)jdkFontInfo); |
311 if (features != NULL) free(features); |
317 if (features != NULL) free(features); |
|
318 (*env)->ReleaseCharArrayElements(env, text, chars, JNI_ABORT); |
312 |
319 |
313 return JNI_TRUE; |
320 return JNI_TRUE; |
314 } |
321 } |
315 |
322 |