提交 533a01ea 编写于 作者: S Seigo Nonaka

Support Hanb script.

Hanb is a union of Han and Bopomofo.

Bug: 26687969
Change-Id: Ic696bcbbc9607f3842fd0115668b8e7bd917e62b
上级 070633ad
...@@ -61,9 +61,16 @@ FontLanguage::FontLanguage(const char* buf, size_t length) : FontLanguage() { ...@@ -61,9 +61,16 @@ FontLanguage::FontLanguage(const char* buf, size_t length) : FontLanguage() {
uint8_t FontLanguage::scriptToSubScriptBits(uint32_t script) { uint8_t FontLanguage::scriptToSubScriptBits(uint32_t script) {
uint8_t subScriptBits = 0u; uint8_t subScriptBits = 0u;
switch (script) { switch (script) {
case SCRIPT_TAG('B', 'o', 'p', 'o'):
subScriptBits = kBopomofoFlag;
break;
case SCRIPT_TAG('H', 'a', 'n', 'g'): case SCRIPT_TAG('H', 'a', 'n', 'g'):
subScriptBits = kHangulFlag; subScriptBits = kHangulFlag;
break; 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'): case SCRIPT_TAG('H', 'a', 'n', 'i'):
subScriptBits = kHanFlag; subScriptBits = kHanFlag;
break; break;
......
...@@ -68,14 +68,15 @@ private: ...@@ -68,14 +68,15 @@ private:
// mLanguage = 0 means the FontLanguage is unsupported. // mLanguage = 0 means the FontLanguage is unsupported.
uint32_t mLanguage; uint32_t mLanguage;
// For faster comparing, use 7 bits for specific scripts. // For faster comparing, use 8 bits for specific scripts.
static const uint8_t kEmojiFlag = 1u; static const uint8_t kBopomofoFlag = 1u;
static const uint8_t kHanFlag = 1u << 1; static const uint8_t kEmojiFlag = 1u << 1;
static const uint8_t kHangulFlag = 1u << 2; static const uint8_t kHanFlag = 1u << 2;
static const uint8_t kHiraganaFlag = 1u << 3; static const uint8_t kHangulFlag = 1u << 3;
static const uint8_t kKatakanaFlag = 1u << 4; static const uint8_t kHiraganaFlag = 1u << 4;
static const uint8_t kSimplifiedChineseFlag = 1u << 5; static const uint8_t kKatakanaFlag = 1u << 5;
static const uint8_t kTraditionalChineseFlag = 1u << 6; static const uint8_t kSimplifiedChineseFlag = 1u << 6;
static const uint8_t kTraditionalChineseFlag = 1u << 7;
uint8_t mSubScriptBits; uint8_t mSubScriptBits;
static uint8_t scriptToSubScriptBits(uint32_t script); static uint8_t scriptToSubScriptBits(uint32_t script);
......
...@@ -131,6 +131,7 @@ TEST_F(FontLanguageTest, ScriptMatchTest) { ...@@ -131,6 +131,7 @@ TEST_F(FontLanguageTest, ScriptMatchTest) {
{ "zh-Hani", "Hani", SUPPORTED }, { "zh-Hani", "Hani", SUPPORTED },
{ "ko-Kore", "Kore", SUPPORTED }, { "ko-Kore", "Kore", SUPPORTED },
{ "ko-Hang", "Hang", SUPPORTED }, { "ko-Hang", "Hang", SUPPORTED },
{ "zh-Hanb", "Hanb", SUPPORTED },
// Japanese supports Hiragana, Katakanara, etc. // Japanese supports Hiragana, Katakanara, etc.
{ "ja-Jpan", "Hira", SUPPORTED }, { "ja-Jpan", "Hira", SUPPORTED },
...@@ -142,6 +143,10 @@ TEST_F(FontLanguageTest, ScriptMatchTest) { ...@@ -142,6 +143,10 @@ TEST_F(FontLanguageTest, ScriptMatchTest) {
// Chinese supports Han. // Chinese supports Han.
{ "zh-Hans", "Hani", SUPPORTED }, { "zh-Hans", "Hani", SUPPORTED },
{ "zh-Hant", "Hani", SUPPORTED }, { "zh-Hant", "Hani", SUPPORTED },
{ "zh-Hanb", "Hani", SUPPORTED },
// Hanb supports Bopomofo.
{ "zh-Hanb", "Bopo", SUPPORTED },
// Korean supports Hangul. // Korean supports Hangul.
{ "ko-Kore", "Hang", SUPPORTED }, { "ko-Kore", "Hang", SUPPORTED },
...@@ -176,12 +181,19 @@ TEST_F(FontLanguageTest, ScriptMatchTest) { ...@@ -176,12 +181,19 @@ TEST_F(FontLanguageTest, ScriptMatchTest) {
// Kanji doesn't support Chinese, etc. // Kanji doesn't support Chinese, etc.
{ "zh-Hani", "Hant", NOT_SUPPORTED }, { "zh-Hani", "Hant", NOT_SUPPORTED },
{ "zh-Hani", "Hans", NOT_SUPPORTED }, { "zh-Hani", "Hans", NOT_SUPPORTED },
{ "zh-Hani", "Hanb", NOT_SUPPORTED },
// Hangul doesn't support Korean, etc. // Hangul doesn't support Korean, etc.
{ "ko-Hang", "Kore", NOT_SUPPORTED }, { "ko-Hang", "Kore", NOT_SUPPORTED },
{ "ko-Hani", "Kore", NOT_SUPPORTED }, { "ko-Hani", "Kore", NOT_SUPPORTED },
{ "ko-Hani", "Hang", NOT_SUPPORTED }, { "ko-Hani", "Hang", NOT_SUPPORTED },
{ "ko-Hang", "Hani", 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) { for (auto testCase : testCases) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册