From 236b64d8f650840a04496eff7615eb53f89b3b90 Mon Sep 17 00:00:00 2001 From: Alexey Ushakov Date: Tue, 29 Dec 2015 13:41:00 +0300 Subject: [PATCH] IDEA-149882 Issue with fonts in Ubuntu 12.04 Provided fallback to default font rendering settings if libfontconfig unable to match font pattern (cherry picked from commit d93a5f1598ccab77e84b1ddd09d2761a051b8ac9) --- .../native/libfontmanager/freetypeScaler.c | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/java.desktop/share/native/libfontmanager/freetypeScaler.c b/src/java.desktop/share/native/libfontmanager/freetypeScaler.c index a21b9095b061..11ac9850f8cf 100644 --- a/src/java.desktop/share/native/libfontmanager/freetypeScaler.c +++ b/src/java.desktop/share/native/libfontmanager/freetypeScaler.c @@ -771,6 +771,23 @@ static void setupTransform(FT_Matrix* target, FTScalerContext *context) { } } +static void setDefaultScalerSettings(FTScalerContext *context) { + if (context->aaType == TEXT_AA_OFF) { + context->loadFlags = FT_LOAD_TARGET_MONO; + } else if (context->aaType == TEXT_AA_ON) { + context->loadFlags = FT_LOAD_TARGET_LIGHT; + } else { + context->lcdFilter = FT_LCD_FILTER_LIGHT; + if (context->aaType == TEXT_AA_LCD_HRGB || + context->aaType == TEXT_AA_LCD_HBGR) { + context->loadFlags = FT_LOAD_TARGET_LCD; + } else { + context->loadFlags = FT_LOAD_TARGET_LCD_V; + } + } + context->renderFlags = FT_LOAD_TARGET_MODE(context->loadFlags); +} + static int setupFTContext(JNIEnv *env, jobject font2D, FTScalerInfo *scalerInfo, FTScalerContext *context, FT_Bool configureFont) { FT_Matrix matrix; @@ -794,20 +811,7 @@ static int setupFTContext(JNIEnv *env, jobject font2D, FTScalerInfo *scalerInfo, context->loadFlags = FT_LOAD_DEFAULT; if (libFontConfig == NULL) { - if (context->aaType == TEXT_AA_OFF) { - context->loadFlags = FT_LOAD_TARGET_MONO; - } else if (context->aaType == TEXT_AA_ON) { - context->loadFlags = FT_LOAD_TARGET_LIGHT; - } else { - context->lcdFilter = FT_LCD_FILTER_LIGHT; - if (context->aaType == TEXT_AA_LCD_HRGB || - context->aaType == TEXT_AA_LCD_HBGR) { - context->loadFlags = FT_LOAD_TARGET_LCD; - } else { - context->loadFlags = FT_LOAD_TARGET_LCD_V; - } - } - context->renderFlags = FT_LOAD_TARGET_MODE(context->loadFlags); + setDefaultScalerSettings(context); return 0; } #ifndef DISABLE_FONTCONFIG @@ -835,7 +839,8 @@ static int setupFTContext(JNIEnv *env, jobject font2D, FTScalerInfo *scalerInfo, if (matchResult != FcResultMatch) { (*FcPatternDestroyPtr)(fcPattern); if (logFC) fprintf(stderr, " - NOT FOUND\n"); - return 1; + setDefaultScalerSettings(context); + return 0; } if (logFC) fprintf(stderr, "\nFC_LOG: "); (*FcPatternDestroyPtr)(fcPattern);