我正在处理泰语键盘输入。有些键是元音符号,只有在与某些前面的字符组合时才允许使用。
此处0x0E33
是元音符号
例如0x0E1C + 0x0E33
有效
但0x0E44 + 0x0E33
无效,应忽略0x0E33
。
我希望找到一种方法来了解何时应该忽略元音符号,或者何时不与前一个字符组合。
有什么想法吗?
答案 0 :(得分:0)
顺便提一下,许多泰语元音(和音标)属于非间距合并标记类别。您的目标是使用一些可以告诉每个角色属于哪个类别的库。然后你可以决定是否"忽略"它,无论"忽略"意味着在您的应用程序环境中。
检查Unicode General Category Values
您的两个兴趣点是:
进一步阅读:
答案 1 :(得分:0)
我知道他的帖子是几年前的,但这是我想出的使用 icu lib 我怀疑它可以改进......
UChar32 newChar;
UChar32 previousChar;
int32_t gcb = u_getIntPropertyValue(newChar, UCHAR_GRAPHEME_CLUSTER_BREAK);
if (gcb != U_GCB_OTHER)
{
int32_t insc = u_getIntPropertyValue(newChar, UCHAR_INDIC_SYLLABIC_CATEGORY);
if (insc == U_INSC_VOWEL_DEPENDENT || insc == U_INSC_TONE_MARK)
{
if (u_getIntPropertyValue(prevChar, UCHAR_INDIC_SYLLABIC_CATEGORY) != U_INSC_CONSONANT)
{
// invalid combination, ignore
}
}
}