作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我使用 libunibreak 库中的 set_word_breaks_utf32()
来浏览单词时,我看到单字母单词(即英语中的“a”、中文中的“北”等)消失了因为它们总是评估为 WORDBREAK_BREAK,因此与周围的空白无法区分。以下代码演示了该问题:
#include <stdio.h>
#include "wordbreak.h"
int main(int argc, const char* argv[]) {
int i;
uint32_t text[] = { 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', '.', '\n' };
char breaks[1024];
size_t length = sizeof(text) / sizeof(text[0]);
set_word_breaks_utf32(text, length, "", breaks);
for(i = 0; i < length; i++) putchar(text[i]);
for(i = 0; i < length; i++) putchar(breaks[i] + '0');
putchar('\n');
return 0;
}
此代码的输出清楚地表明字母“a”与周围的空格无法区分:
This is a test.
1110010000111000
如何确保单字母单词的边界在 set_word_breaks_utf32()
输出中可区分?
[很抱歉使用 line-breaks
标签,但 word-break
标签与 CSS 属性相关。]
最佳答案
Unicode Standard Annex #29并不是真正为此设计的。 set_wordbreaks_utf32()
的作用是找到每个单词边界。
This is a test.
1110010000111000
T h i s ' ' i s ' ' a ' ' t e s t . '\n'
| _ _ _ | | _ | | | | _ _ _ | | |
上面的每个|
都是一个单词边界,这有助于查找单词,但并不是完整的解决方案。请注意,字符串开头有一个隐式单词边界。完整的单词检测算法必须确定每个相邻单词边界之间的字符是否为 unicode 字母,并相应地将该字符标记为单词。
关于无法使用 libunibreak 区分单字符单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40536156/
当我使用 libunibreak 库中的 set_word_breaks_utf32() 来浏览单词时,我看到单字母单词(即英语中的“a”、中文中的“北”等)消失了因为它们总是评估为 WORDBREA
我是一名优秀的程序员,十分优秀!