Каков правильный алгоритм определения количества символов, воспринимаемых пользователем?

У меня есть задача подсчитать количество воспринимаемых символов во входных данных. Входными данными является группа целых чисел (мы можем думать о ней как int [] ), которая представляет кодовые точки Unicode.

java.text.BreakIterator.getCharacterInstance () не допускается. (Я имею в виду, что их формула разрешена, и это то, что я хотел, но переплетение их исходного кода и таблиц состояний ни к чему не привело>.

Мне было интересно, каков правильный алгоритм для подсчета количества графем-кластеров с учетом некоторого кода баллов?

Изначально я думал, что все, что мне нужно сделать, это объединить все вхождения:

  1. U + 0300 - U + 036F (объединение диакритических знаков)

  2. U + 1DC0 - U + 1DFF (добавление диакритических знаков)

  3. U + 20D0 - U + 20FF (объединение диакритических знаков для символов)

  4. U + FE20 - U + FE2F (объединение половин mark)

в предыдущий недиакритический знак.

Однако я понял , что перед этой операцией я должен сначала удалить все не-символы.

Это включает:

  1. U + FDD0 - U + FDEF

  2. Последние две кодовые точки каждой плоскости

Но, похоже, есть еще кое-что, что нужно сделать. Юникод.org заявляет, что нам необходимо включить U + 200C (объединитель нулевой ширины) и U + 200D (объединитель нулевой ширины) как часть набора продолжающихся символов (источник) .

Кроме того, здесь говорится еще о паре вещей, но вся тема рассматривается абстрактно. Например, каковы диапазоны кодовых точек для интервалов комбинирования знаков , символов хангыль джамо, которые образуют слоги хангыль ?

Кто-нибудь знает правильный алгоритм для подсчета количества графем- кластеры с int [] кодовых точек?

14
задан ROMANIA_engineer 26 September 2017 в 03:18
поделиться