--- old/modules/javafx.graphics/src/main/native-font/coretext.c 2016-10-04 00:13:37.000000000 +0530 +++ new/modules/javafx.graphics/src/main/native-font/coretext.c 2016-10-04 00:13:36.000000000 +0530 @@ -364,19 +364,6 @@ return rc; } -JNIEXPORT jlong JNICALL OS_NATIVE(CTFontCreateWithName) - (JNIEnv *env, jclass that, jlong arg0, jdouble arg1, jobject arg2) -{ - CGAffineTransform _arg2, *lparg2=NULL; - jlong rc = 0; - if (arg2) if ((lparg2 = getCGAffineTransformFields(env, arg2, &_arg2)) == NULL) goto fail; - rc = (jlong)CTFontCreateWithName((CFStringRef)arg0, (CGFloat)arg1, (CGAffineTransform*)lparg2); -fail: - /* In only */ -// if (arg2 && lparg2) setCGAffineTransformFields(env, arg2, lparg2); - return rc; -} - JNIEXPORT void JNICALL OS_NATIVE(CFRelease) (JNIEnv *env, jclass that, jlong arg0) { @@ -679,6 +666,32 @@ return (*env)->NewString(env, (jchar *)buffer, length); } +JNIEXPORT jlong JNICALL OS_NATIVE(CTFontCreate) + (JNIEnv *env, jclass that, jlong fileName, jlong psName, jdouble size, jobject matrix) +{ + CGAffineTransform transform, *transformPtr = NULL; + CTFontRef fontRef = NULL; + + if (matrix) if ((transformPtr = getCGAffineTransformFields(env, matrix, &transform)) == NULL) goto fail; + + CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)fileName, kCFURLPOSIXPathStyle, false); + CGDataProviderRef dataProvider = CGDataProviderCreateWithURL(url); + CGFontRef cgFont = CGFontCreateWithDataProvider(dataProvider); + if (cgFont) { + fontRef = CTFontCreateWithGraphicsFont(cgFont, (CGFloat)size, (CGAffineTransform*)transformPtr, 0); + CFRelease(cgFont); + } else { + // TTC files are supported by CGFontCreateWithDataProvider, fallback to CTFontCreateWithName. + fontRef = CTFontCreateWithName((CFStringRef)psName, (CGFloat)size, (CGAffineTransform*)transformPtr); + } + CFRelease(dataProvider); + CFRelease(url); +fail: + /* In only */ +// if (arg2 && lparg2) setCGAffineTransformFields(env, arg2, lparg2); + return (jlong)fontRef; +} + JNIEXPORT jbyteArray JNICALL OS_NATIVE(CGBitmapContextGetData) (JNIEnv *env, jclass that, jlong arg0, jint dstWidth, jint dstHeight, jint bpp) {