< prev index next >

modules/javafx.graphics/src/main/native-font/coretext.c

Print this page
rev 10066 : 8088205: [Mac] WebView renders icons instead of letters on some sites
rev 9951 : 8161705: Rename directories under modules to exactly match the module names
Reviewed-by: kcr, vadim

*** 362,384 **** fail: if (arg1 && lparg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0); 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) { CFRelease((CFTypeRef)arg0); } --- 362,371 ----
*** 677,686 **** --- 664,699 ---- CFStringGetCharacters(stringRef, CFRangeMake(0, length), buffer); CFRelease(stringRef); 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) { jbyteArray result = NULL; if (dstWidth < 0) return NULL;
< prev index next >