Я считаю, что итератор "персонаж, воспринимаемый пользователем" (далее UPC) был бы очень полезен в библиотеке Unicode. Под UPC я подразумеваю смысл, обсуждаемый в приложении 29 стандарта Unicode, то есть то, что пользователь воспринимает как символ , но может быть представлен в Юникоде как кодовая точка или графема-кластер. Поскольку я обычно работаю с латинскими языками, я всегда придумываю такие примеры, как «Я хочу обрабатывать ü как один UPC, независимо от того, является ли UPC кластером графем или одной кодовой точкой».
Коллеги, которые против итератора UPC (или итератора графемного кластера, выбирайте сами), возражают: «Вы можете нормализовать до NFC, а затем использовать итерацию кодовой точки» и «для итерации графемного кластера нет вариантов использования».
Я продолжаю думать о вариантах использования, ориентированных на латынь, которые, возможно, не очень хорошо переводятся во вселенную Unicode — например, я делаю вывод терминала, я хочу дополнить столбец шириной N столбцов, поэтому я хочу знать, сколько UPC находятся в цепочке...
Я думаю, что я хочу знать:
- Существуют ли значимые кластеры графем, которые нельзя нормализовать до одной кодовой точки? Есть ли такие, которые могут возникнуть среди западных пользователей? Я предполагаю, что корейский или арабский являются примерами этого, но я должен признать полное невежество.
- Предоставляют ли какие-либо другие языки итерацию/операции кластера UPC/grapheme? Есть ли какой-нибудь совет из спецификации Unicode?