BreakIterator ICU - 获取字形集群的字节长度

时间:2015-02-03 16:49:48

标签: unicode iterator icu

当使用ICU的BreakIterator时,有没有办法在输入字符串的第n个边界检索字形簇的字节长度(或代码单元长度)?理想情况下,API调用次数最少。

1 个答案:

答案 0 :(得分:0)

自答:

如果以代码单位知道当前索引,则可以使用ICU :: ubrk_current()返回ICU :: ubrk_next()最近返回的cude单位索引。 请参阅:http://icu-project.org/apiref/icu4c/ubrk_8h.html#a4f8b67527c5c9d9205a3446506ffeefc

我对UBreakIterator方法描述中的含糊不清感到困惑。但是,在联系ICU支持后,"字符索引"在这种情况下,它等同于代码单元索引。

有了这些信息,一个简单的实现如下:

(ubrk_current(m_breakIterator) - currentIndexInCodeUnits) * INTERNAL_ENCODING_BYTE_LENGTH;