结合变音符号的性质

时间:2011-11-26 20:38:10

标签: unicode character-properties

对于组合变音符号,它们是否被视为字母?因为,据我所知,它们只能与格式良好的Unicode中的其他字母组合。

用于确定Unicode代码点是否只是一个字母的ICU函数只需要一个代码点,因此对于任何给定的代码点,它无法知道它们是否与变音符号组合 - 或者如果它是变音符号,它是什么结合。我正在尝试使用类似

的构造实现类似于Unicode感知的正则表达式的东西
while(is_letter(codepoint))

然而,我非常担心如果codepoint实际上是一个变音符号,将与之前的代码点和其他整理标记进行整理,会发生什么。

这样做安全吗?或者我是否必须明确地找到并忽略变音符号和其他整理标记?

编辑:我真正需要做的是迭代字符,而不是代码点

这个问题是XY问题的受害者。我需要提出一个关于我的实际问题的问题

1 个答案:

答案 0 :(得分:4)

我不清楚你要做什么,所以如果这不是你想要的答案我会提前道歉,但是:

  

对于组合变音符号,它们是否算作字母?

从广义上讲,变音符号被视为“标记”而不是“字母”。例如,U + 0301 COMBINING ACUTE ACCENT,如在<ś>中,是“非间距标记”,它是三种“标记”之一。然而, 计为“字母”的“修饰字母”可能被认为是变音符号;例如,U + 02C0 MODIFIER LETTER GLOTTAL STOP,如<sˀ>,是一个“修饰符字母”。

如果查看the main file of the Unicode Character Database(警告:它是1.3 MB的文本文件),您可以了解哪些字符被归类为“修饰符字母”(Lm),哪些字符为“非缩略图”标记“(Mn)或”间距标记“(Ms)或”封闭标记“(Me)。