Почему Unicode объединяет порядок символов в IDEA и Chrome? - PullRequest
7 голосов
/ 16 июня 2019

В Java я генерирую строку с буквами A и B с ОБЪЕМОМ СОЧЕТАНИЯ U + 0305 символа между ними.

@Test
public void test() {
  System.out.println("A\u0305B");
}

Я получаю это в ИДЕИ:

enter image description here

Но если я скопирую сюда, оно станет A̅B.


Это из консоли Chrome:

enter image description here

Меня смутил порядок объединения символов . Какой из них правильный?

Я писал это на Kotlin и компилировал в JavaScript для запуска в браузере. Отладка в IDEA верна, но браузер показывает другой ответ.

1 Ответ

3 голосов
/ 17 июня 2019

Если верить Википедии и воздерживаться от прыжков в дремучие авторитетные PDF-джунгли Консорциума Unicode, текст, относящийся к этому: « В Unicode диакритические знаки всегда добавляются после основного символа (в отличие от некоторых старых комбинаций наборы символов, такие как ANSEL), поэтому к одному и тому же символу можно добавить несколько диакритических знаков, хотя по состоянию на 2010 год лишь немногие приложения поддерживают правильное отображение таких комбинаций."(возможно, мне следует отредактировать страницу в этот момент, чтобы добавить хотя "нужна цитата").

В любом случае, в GTK +, SDL и обоих браузерах в моей системе Overline рисуется на предыдущем символе. Мои приложения Qt не поддерживают этот символ, но все его родные диакритические знаки, включая "\ u0304" и "\ u0306", нарисованы на предыдущем символе. И в отличие от подчеркивания, они используются в тексте «реального мира» на латинских языках, который будет отображаться абсурдно некорректно со смещенными диалектиками.

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

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