aboutsummaryrefslogtreecommitdiff
path: root/src/common/Utilities/Util.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/Utilities/Util.h')
-rw-r--r--src/common/Utilities/Util.h33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h
index 3fc09f65792..be4a68d7788 100644
--- a/src/common/Utilities/Util.h
+++ b/src/common/Utilities/Util.h
@@ -157,23 +157,28 @@ inline bool isCyrillicCharacter(wchar_t wchar)
return false;
}
-inline bool isEastAsianCharacter(wchar_t wchar)
+inline bool isKoreanCharacter(wchar_t wchar)
{
if (wchar >= 0x1100 && wchar <= 0x11F9) // Hangul Jamo
return true;
- if (wchar >= 0x3041 && wchar <= 0x30FF) // Hiragana + Katakana
- return true;
if (wchar >= 0x3131 && wchar <= 0x318E) // Hangul Compatibility Jamo
return true;
- if (wchar >= 0x31F0 && wchar <= 0x31FF) // Katakana Phonetic Ext.
+ if (wchar >= 0xAC00 && wchar <= 0xD7A3) // Hangul Syllables
return true;
- if (wchar >= 0x3400 && wchar <= 0x4DB5) // CJK Ideographs Ext. A
+ if (wchar >= 0xFF01 && wchar <= 0xFFEE) // Halfwidth forms
return true;
- if (wchar >= 0x4E00 && wchar <= 0x9FC3) // Unified CJK Ideographs
+ return false;
+}
+
+inline bool isChineseCharacter(wchar_t wchar)
+{
+ if (wchar >= 0x4E00 && wchar <= 0x9FFF) // Unified CJK Ideographs
return true;
- if (wchar >= 0xAC00 && wchar <= 0xD7A3) // Hangul Syllables
+ if (wchar >= 0x3400 && wchar <= 0x4DBF) // CJK Ideographs Ext. A
return true;
- if (wchar >= 0xFF01 && wchar <= 0xFFEE) // Halfwidth forms
+ if (wchar >= 0x3100 && wchar <= 0x312C) // Bopomofo
+ return true;
+ if (wchar >= 0xF900 && wchar <= 0xFAFF) // CJK Compatibility Ideographs
return true;
return false;
}
@@ -226,10 +231,18 @@ inline bool isCyrillicString(std::wstring_view wstr, bool numericOrSpace)
return true;
}
-inline bool isEastAsianString(std::wstring_view wstr, bool numericOrSpace)
+inline bool isKoreanString(std::wstring_view wstr, bool numericOrSpace)
+{
+ for (wchar_t c : wstr)
+ if (!isKoreanCharacter(c) && (!numericOrSpace || !isNumericOrSpace(c)))
+ return false;
+ return true;
+}
+
+inline bool isChineseString(std::wstring_view wstr, bool numericOrSpace)
{
for (wchar_t c : wstr)
- if (!isEastAsianCharacter(c) && (!numericOrSpace || !isNumericOrSpace(c)))
+ if (!isChineseCharacter(c) && (!numericOrSpace || !isNumericOrSpace(c)))
return false;
return true;
}