From 868aaca9ccbfa4b3014959c04854d0451768a92f Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 18 Apr 2018 13:53:15 +0200 Subject: Try other CJK languages to find missing characters. --- source/fitz/font.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'source') diff --git a/source/fitz/font.c b/source/fitz/font.c index de69ff9c..6e7e0063 100644 --- a/source/fitz/font.c +++ b/source/fitz/font.c @@ -1644,6 +1644,40 @@ fz_encode_character_with_fallback(fz_context *ctx, fz_font *user_font, int unico return *out_font = font, gid; } +#ifndef TOFU_CJK_LANG + if (script == UCDN_SCRIPT_HAN) + { + font = fz_load_fallback_font(ctx, script, FZ_LANG_ja, user_font->flags.is_serif, user_font->flags.is_bold, user_font->flags.is_italic); + if (font) + { + gid = fz_encode_character(ctx, font, unicode); + if (gid > 0) + return *out_font = font, gid; + } + font = fz_load_fallback_font(ctx, script, FZ_LANG_ko, user_font->flags.is_serif, user_font->flags.is_bold, user_font->flags.is_italic); + if (font) + { + gid = fz_encode_character(ctx, font, unicode); + if (gid > 0) + return *out_font = font, gid; + } + font = fz_load_fallback_font(ctx, script, FZ_LANG_zh_Hant, user_font->flags.is_serif, user_font->flags.is_bold, user_font->flags.is_italic); + if (font) + { + gid = fz_encode_character(ctx, font, unicode); + if (gid > 0) + return *out_font = font, gid; + } + font = fz_load_fallback_font(ctx, script, FZ_LANG_zh_Hans, user_font->flags.is_serif, user_font->flags.is_bold, user_font->flags.is_italic); + if (font) + { + gid = fz_encode_character(ctx, font, unicode); + if (gid > 0) + return *out_font = font, gid; + } + } +#endif + font = fz_load_fallback_symbol_font(ctx); if (font) { -- cgit v1.2.3