summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeigo Nonaka <nona@google.com>2016-02-23 03:57:58 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-02-23 03:57:58 +0000
commitdbf5c2776bb2de1baf1cd5e53ce21f5bd3226052 (patch)
treed0742dc81ea6d3ed0c951f59ff924211f7d42732
parent30bf8a7c05925a970f1cab87c38bec8dd97fa82e (diff)
parent533a01ea8438bb102b0dbc71f6c4ef356b260ed5 (diff)
downloadandroid_frameworks_minikin-dbf5c2776bb2de1baf1cd5e53ce21f5bd3226052.tar.gz
android_frameworks_minikin-dbf5c2776bb2de1baf1cd5e53ce21f5bd3226052.tar.bz2
android_frameworks_minikin-dbf5c2776bb2de1baf1cd5e53ce21f5bd3226052.zip
Merge "Support Hanb script." into nyc-dev
-rw-r--r--libs/minikin/FontLanguage.cpp7
-rw-r--r--libs/minikin/FontLanguage.h17
-rw-r--r--tests/FontFamilyTest.cpp12
3 files changed, 28 insertions, 8 deletions
diff --git a/libs/minikin/FontLanguage.cpp b/libs/minikin/FontLanguage.cpp
index 8e5c9c4..db63059 100644
--- a/libs/minikin/FontLanguage.cpp
+++ b/libs/minikin/FontLanguage.cpp
@@ -61,9 +61,16 @@ FontLanguage::FontLanguage(const char* buf, size_t length) : FontLanguage() {
uint8_t FontLanguage::scriptToSubScriptBits(uint32_t script) {
uint8_t subScriptBits = 0u;
switch (script) {
+ case SCRIPT_TAG('B', 'o', 'p', 'o'):
+ subScriptBits = kBopomofoFlag;
+ break;
case SCRIPT_TAG('H', 'a', 'n', 'g'):
subScriptBits = kHangulFlag;
break;
+ case SCRIPT_TAG('H', 'a', 'n', 'b'):
+ // Bopomofo is almost exclusively used in Taiwan.
+ subScriptBits = kHanFlag | kBopomofoFlag;
+ break;
case SCRIPT_TAG('H', 'a', 'n', 'i'):
subScriptBits = kHanFlag;
break;
diff --git a/libs/minikin/FontLanguage.h b/libs/minikin/FontLanguage.h
index ee0b505..1a20480 100644
--- a/libs/minikin/FontLanguage.h
+++ b/libs/minikin/FontLanguage.h
@@ -68,14 +68,15 @@ private:
// mLanguage = 0 means the FontLanguage is unsupported.
uint32_t mLanguage;
- // For faster comparing, use 7 bits for specific scripts.
- static const uint8_t kEmojiFlag = 1u;
- static const uint8_t kHanFlag = 1u << 1;
- static const uint8_t kHangulFlag = 1u << 2;
- static const uint8_t kHiraganaFlag = 1u << 3;
- static const uint8_t kKatakanaFlag = 1u << 4;
- static const uint8_t kSimplifiedChineseFlag = 1u << 5;
- static const uint8_t kTraditionalChineseFlag = 1u << 6;
+ // For faster comparing, use 8 bits for specific scripts.
+ static const uint8_t kBopomofoFlag = 1u;
+ static const uint8_t kEmojiFlag = 1u << 1;
+ static const uint8_t kHanFlag = 1u << 2;
+ static const uint8_t kHangulFlag = 1u << 3;
+ static const uint8_t kHiraganaFlag = 1u << 4;
+ static const uint8_t kKatakanaFlag = 1u << 5;
+ static const uint8_t kSimplifiedChineseFlag = 1u << 6;
+ static const uint8_t kTraditionalChineseFlag = 1u << 7;
uint8_t mSubScriptBits;
static uint8_t scriptToSubScriptBits(uint32_t script);
diff --git a/tests/FontFamilyTest.cpp b/tests/FontFamilyTest.cpp
index 11407a3..34a9296 100644
--- a/tests/FontFamilyTest.cpp
+++ b/tests/FontFamilyTest.cpp
@@ -131,6 +131,7 @@ TEST_F(FontLanguageTest, ScriptMatchTest) {
{ "zh-Hani", "Hani", SUPPORTED },
{ "ko-Kore", "Kore", SUPPORTED },
{ "ko-Hang", "Hang", SUPPORTED },
+ { "zh-Hanb", "Hanb", SUPPORTED },
// Japanese supports Hiragana, Katakanara, etc.
{ "ja-Jpan", "Hira", SUPPORTED },
@@ -142,6 +143,10 @@ TEST_F(FontLanguageTest, ScriptMatchTest) {
// Chinese supports Han.
{ "zh-Hans", "Hani", SUPPORTED },
{ "zh-Hant", "Hani", SUPPORTED },
+ { "zh-Hanb", "Hani", SUPPORTED },
+
+ // Hanb supports Bopomofo.
+ { "zh-Hanb", "Bopo", SUPPORTED },
// Korean supports Hangul.
{ "ko-Kore", "Hang", SUPPORTED },
@@ -176,12 +181,19 @@ TEST_F(FontLanguageTest, ScriptMatchTest) {
// Kanji doesn't support Chinese, etc.
{ "zh-Hani", "Hant", NOT_SUPPORTED },
{ "zh-Hani", "Hans", NOT_SUPPORTED },
+ { "zh-Hani", "Hanb", NOT_SUPPORTED },
// Hangul doesn't support Korean, etc.
{ "ko-Hang", "Kore", NOT_SUPPORTED },
{ "ko-Hani", "Kore", NOT_SUPPORTED },
{ "ko-Hani", "Hang", NOT_SUPPORTED },
{ "ko-Hang", "Hani", NOT_SUPPORTED },
+
+ // Han with botomofo doesn't support simplified Chinese, etc.
+ { "zh-Hanb", "Hant", NOT_SUPPORTED },
+ { "zh-Hanb", "Hans", NOT_SUPPORTED },
+ { "zh-Hanb", "Jpan", NOT_SUPPORTED },
+ { "zh-Hanb", "Kore", NOT_SUPPORTED },
};
for (auto testCase : testCases) {