Когда я использую set_word_breaks_utf32()
из библиотеки libunibreak для перемещения по словам, я вижу, что однословные слова (т.е. «a» на английском языке, «北» на китайском языке ...) исчезают, потому что они всегда оценивайте WORDBREAK_BREAK и, следовательно, неотличимы от окружающих пробелов. Следующий код демонстрирует проблему:Невозможно отличить одиночные символьные слова с libunibreak
#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;
}
Выходной сигнал этого кода ясно показывает, что буква «а» неотличима от окружающего пробельных:
This is a test.
1110010000111000
Что я могу сделать, чтобы гарантировать, что границы однобуквенных слов различаются в set_word_breaks_utf32()
выводах?
[Извинения для использования line-breaks
тега, но word-break
тег связан со свойством CSS.]
Почему это проблема? –
@ Lashane Мне нужно иметь возможность перемещаться по текстовому полю со словом за раз, а однословные слова в настоящее время пропускаются полностью, потому что я никогда не вижу перехода от 'WORDBREAK_NOBREAK' к' WORDBREAK_BREAK'. –
Почему вы используете информацию о слове, чтобы перемещаться по словам? –