Объединение Grapheme Joiner не работает в Какао, iOS? - PullRequest
4 голосов
/ 20 февраля 2012

Эта строка:

[NSString stringWithFormat:@"%C%C%C%C", 0x31, 0x34f, 0x32, 0x20dd]

должна отображаться как 12 с кружком вокруг обоих символов.0x34f - это объединяющее графемное объединение, а 0x20dd - это объединяющий круг.

Отображается 12 с кружком вокруг только 2. Соединитель, кажется, игнорируется.Есть ли какой-нибудь способ заставить работать объединение графемов?

1 Ответ

4 голосов
/ 20 февраля 2012

Такое использование объединения столярных графемов не рекомендуется:

Из стандарта Unicode, глава 16.2 Элементы управления компоновкой - объединение столярных графемов

рендеринга. При рендеринге объединяющий объединяющий графем невидим.Тем не менее, некоторые более старые реализации могут обрабатывать последовательность кластеров графем, связанных путем объединения элементов графем, в качестве единого блока для применения объединяющих меток объединения.Для получения дополнительной информации о кластерах графем см. Технический отчет Unicode № 29 «Сегментация текста Unicode». Для получения дополнительной информации о включении комбинированных меток см. Раздел 3.11, Формы нормализации.

Из главы 3.6 Комбинация

Следует отметить, однако, что более ранние реализации могли поддерживать применение объединяющей комбинированной метки ко всему конъюнктивному конъюнкту-индикатору или к последовательности кластеров графем, связанных друг с другом объединением графемных соединений.Такой подход имеет ряд технических проблем и приводит к дефектам взаимодействия, поэтому настоятельно рекомендуется, чтобы реализации не следовали ему.

И с http://unicode.org/faq/char_combmark.html#19

В: Можно ли применить диакритический знак или знак сочетания к последовательности из более чем одного (не объединяющего) символа?

A: Нет, за исключением «двойного»диакритические знаки », специально предназначенные для нанесения на двухбуквенную последовательность, например, U + 035D, ДВОЙНОЙ КОМБИНИРОВАНИЕ.Ни ZWJ (U + 200D ZERO WITDH JOINER), ни CGJ (U + 034F COMBINING GRAPHEME JOINER) не «склеивают» символы таким образом, чтобы это влияло на область действия любого последующего комбинирующего символа.Чтобы получить последовательность символов, например «Esc», в нечто вроде U + 20E3 КОМБИНИРУЮЩУЮ КЛАВИШУ КОМБИНИРОВАНИЯ, вы должны прибегнуть к протоколам более высокого уровня. [КП]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...