aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaph Levien <raph@google.com>2013-04-08 16:02:49 -0700
committerRaph Levien <raph@google.com>2013-04-08 16:09:13 -0700
commit19ab554305561e06cfa5a633a28369dc02b6ea04 (patch)
treebcb7eeda65a2b04c4aefcc7a1d1ab17cb48b975e
parentc71c874b145252fba15400c049e4b010e6ab2960 (diff)
downloadskia-19ab554305561e06cfa5a633a28369dc02b6ea04.tar.gz
Add additional scripts in font mapping
This is an implementation of bug 8565810: Enable more complex scripts in text layout This change adds a number of additional scripts to the mapping from "representative" Unicode code point to script tag, which is used by Skia's fallback mechanism to find an appropriate font for a run of text. In cases where Harfbuzz old does not have the script in its enum (for legacy rendering), we use a value which can never occur, which will preserve the existing behavior. Change-Id: I3e197abf7a6ccf305d2e6409b17a8aeb7dc7d32e
-rw-r--r--src/ports/SkFontHost_android.cpp62
1 files changed, 36 insertions, 26 deletions
diff --git a/src/ports/SkFontHost_android.cpp b/src/ports/SkFontHost_android.cpp
index 6dd9cab4e6..aeb819a6fa 100644
--- a/src/ports/SkFontHost_android.cpp
+++ b/src/ports/SkFontHost_android.cpp
@@ -1122,33 +1122,43 @@ struct HB_UnicodeMapping {
* HB_SCRIPT_INHERITED
*/
+/* Harfbuzz (old) is missing a number of scripts in its table. For these,
+ * we include a value which can never happen. We won't get complex script
+ * shaping in these cases, but the library wouldn't know how to shape
+ * them anyway. */
+#define HB_Script_Unknown HB_ScriptCount
+
static HB_UnicodeMapping HB_UnicodeMappingArray[] = {
- {HB_Script_Armenian, HB_SCRIPT_ARMENIAN, 0x0531},
- {HB_Script_Hebrew, HB_SCRIPT_HEBREW, 0x0591},
- {HB_Script_Arabic, HB_SCRIPT_ARABIC, 0x0600},
- {HB_Script_Syriac, HB_SCRIPT_SYRIAC, 0x0710},
- {HB_Script_Thaana, HB_SCRIPT_THAANA, 0x0780},
- {HB_Script_Nko, HB_SCRIPT_NKO, 0x07C0},
- {HB_Script_Devanagari, HB_SCRIPT_DEVANAGARI, 0x0901},
- {HB_Script_Bengali, HB_SCRIPT_BENGALI, 0x0981},
- {HB_Script_Gurmukhi, HB_SCRIPT_GURMUKHI, 0x0A10},
- {HB_Script_Gujarati, HB_SCRIPT_GUJARATI, 0x0A90},
- {HB_Script_Oriya, HB_SCRIPT_ORIYA, 0x0B10},
- {HB_Script_Tamil, HB_SCRIPT_TAMIL, 0x0B82},
- {HB_Script_Telugu, HB_SCRIPT_TELUGU, 0x0C10},
- {HB_Script_Kannada, HB_SCRIPT_KANNADA, 0x0C90},
- {HB_Script_Malayalam, HB_SCRIPT_MALAYALAM, 0x0D10},
- {HB_Script_Sinhala, HB_SCRIPT_SINHALA, 0x0D90},
- {HB_Script_Thai, HB_SCRIPT_THAI, 0x0E01},
- {HB_Script_Lao, HB_SCRIPT_LAO, 0x0E81},
- {HB_Script_Tibetan, HB_SCRIPT_TIBETAN, 0x0F00},
- {HB_Script_Myanmar, HB_SCRIPT_MYANMAR, 0x1000},
- {HB_Script_Georgian, HB_SCRIPT_GEORGIAN, 0x10A0},
- // we don't currently support HB_Script_Ethiopic, it is a placeholder for an upstream merge
- //{HB_Script_Ethiopic, HB_SCRIPT_ETHIOPIC, 0x1200},
- {HB_Script_Ogham, HB_SCRIPT_OGHAM, 0x1680},
- {HB_Script_Runic, HB_SCRIPT_RUNIC, 0x16A0},
- {HB_Script_Khmer, HB_SCRIPT_KHMER, 0x1780},
+ {HB_Script_Armenian, HB_SCRIPT_ARMENIAN, 0x0531},
+ {HB_Script_Hebrew, HB_SCRIPT_HEBREW, 0x0591},
+ {HB_Script_Arabic, HB_SCRIPT_ARABIC, 0x0600},
+ {HB_Script_Syriac, HB_SCRIPT_SYRIAC, 0x0710},
+ {HB_Script_Thaana, HB_SCRIPT_THAANA, 0x0780},
+ {HB_Script_Nko, HB_SCRIPT_NKO, 0x07C0},
+ {HB_Script_Devanagari, HB_SCRIPT_DEVANAGARI, 0x0901},
+ {HB_Script_Bengali, HB_SCRIPT_BENGALI, 0x0981},
+ {HB_Script_Gurmukhi, HB_SCRIPT_GURMUKHI, 0x0A10},
+ {HB_Script_Gujarati, HB_SCRIPT_GUJARATI, 0x0A90},
+ {HB_Script_Oriya, HB_SCRIPT_ORIYA, 0x0B10},
+ {HB_Script_Tamil, HB_SCRIPT_TAMIL, 0x0B82},
+ {HB_Script_Telugu, HB_SCRIPT_TELUGU, 0x0C10},
+ {HB_Script_Kannada, HB_SCRIPT_KANNADA, 0x0C90},
+ {HB_Script_Malayalam, HB_SCRIPT_MALAYALAM, 0x0D10},
+ {HB_Script_Sinhala, HB_SCRIPT_SINHALA, 0x0D90},
+ {HB_Script_Thai, HB_SCRIPT_THAI, 0x0E01},
+ {HB_Script_Lao, HB_SCRIPT_LAO, 0x0E81},
+ {HB_Script_Tibetan, HB_SCRIPT_TIBETAN, 0x0F00},
+ {HB_Script_Myanmar, HB_SCRIPT_MYANMAR, 0x1000},
+ {HB_Script_Georgian, HB_SCRIPT_GEORGIAN, 0x10A0},
+ {HB_Script_Unknown, HB_SCRIPT_ETHIOPIC, 0x1200},
+ {HB_Script_Unknown, HB_SCRIPT_CHEROKEE, 0x13A0},
+ {HB_Script_Ogham, HB_SCRIPT_OGHAM, 0x1680},
+ {HB_Script_Runic, HB_SCRIPT_RUNIC, 0x16A0},
+ {HB_Script_Khmer, HB_SCRIPT_KHMER, 0x1780},
+ {HB_Script_Unknown, HB_SCRIPT_TAI_LE, 0x1950},
+ {HB_Script_Unknown, HB_SCRIPT_NEW_TAI_LUE, 0x1980},
+ {HB_Script_Unknown, HB_SCRIPT_TAI_THAM, 0x1A20},
+ {HB_Script_Unknown, HB_SCRIPT_CHAM, 0xAA00},
};
static hb_script_t getHBScriptFromHBScriptOld(HB_Script script_old) {