Нередуцируемые кластеры графем в Юникоде

Я считаю, что итератор "персонаж, воспринимаемый пользователем" (далее UPC) был бы очень полезен в библиотеке Unicode. Под UPC я подразумеваю смысл, обсуждаемый в приложении 29 стандарта Unicode, то есть то, что пользователь воспринимает как символ , но может быть представлен в Юникоде как кодовая точка или графема-кластер. Поскольку я обычно работаю с латинскими языками, я всегда придумываю такие примеры, как «Я хочу обрабатывать ü как один UPC, независимо от того, является ли UPC кластером графем или одной кодовой точкой».

Коллеги, которые против итератора UPC (или итератора графемного кластера, выбирайте сами), возражают: «Вы можете нормализовать до NFC, а затем использовать итерацию кодовой точки» и «для итерации графемного кластера нет вариантов использования».

Я продолжаю думать о вариантах использования, ориентированных на латынь, которые, возможно, не очень хорошо переводятся во вселенную Unicode — например, я делаю вывод терминала, я хочу дополнить столбец шириной N столбцов, поэтому я хочу знать, сколько UPC находятся в цепочке...

Я думаю, что я хочу знать:

  1. Существуют ли значимые кластеры графем, которые нельзя нормализовать до одной кодовой точки? Есть ли такие, которые могут возникнуть среди западных пользователей? Я предполагаю, что корейский или арабский являются примерами этого, но я должен признать полное невежество.
  2. Предоставляют ли какие-либо другие языки итерацию/операции кластера UPC/grapheme? Есть ли какой-нибудь совет из спецификации Unicode?

person Spacemoose    schedule 13.08.2015    source источник


Ответы (2)


Непонятно, почему на ваши вопросы не отвечает UAX #29:

  1. Таких кластеров графем много, даже для языков, которые используют только латинский алфавит, поскольку не все комбинированные знаки имеют композиции со всеми другими буквами/формами — например, пробелы в эта таблица в Википедии. Таблица 1a в UAX #29 содержит несколько нелатинских примеров.

  2. Это цель UAX #29: обобщить операции кластера графем на все языки, которые поддерживаются в Unicode.

person 一二三    schedule 13.08.2015
comment
Я только что перечитал UAX # 15 ... Вы имеете в виду раздел 5 Составная таблица исключений? Должен признаться, что у меня возникают проблемы с переносом содержания этого раздела на языки, которые я знаю. Полагаю, я прошу культурных знаний — как часто мне нужно знать о кластерах графем? Разумно ли говорить моим клиентам, что мы их не поддерживаем? В моей компании есть элемент, склонный игнорировать их присутствие, пока они не укусят нас. Я хотел бы знать риски и иметь под рукой убедительные аргументы, если они существуют. - person Spacemoose; 13.08.2015
comment
Кажется, таблица википедии - это то, что я ищу r.e. Латинские языки. Можете ли вы или кто-либо еще сказать мне, насколько распространены эти исключенные кластеры и в каких странах я могу с ними столкнуться? - person Spacemoose; 13.08.2015
comment
Учитывая, что алгоритм поддержки графемных кластеров хорошо известен и реализован в любой приличной Unicode-библиотеке, не поддерживать их, казалось бы, сложнее. - person 一二三; 13.08.2015

(1) Есть ли такие, которые могут возникнуть среди западных пользователей?

???????? (палец вверх + светлый оттенок кожи). Может произойти: в любом месте Северного полушария в приложении, имеющем легкий доступ к эмодзи.

(2) Предоставляют ли какие-либо другие языки итерацию/операции кластера UPC/grapheme?

Крейт (библиотека) unicode_segmentation для Rust.

person Guildenstern    schedule 29.11.2020