Я сталкиваюсь с проблемой, когда пытаюсь раскрасить диакритические знаки на иврите, справа налево на Java. Результат должен быть примерно таким: https://tex.stackexchange.com/questions/13069/coloring-combining-characters-without-changing-color-of-a-base-character
Для действительно базового c вида для архивации я попытался использовать код html, который содержит объединение Unicode:
<html>\u05db\u05bc\u05b8\u05ea\u05b7\u05d1\u05b0\u05ea\u05bc\u05b8</html>
Результат выглядит следующим образом: Нормальное, правильное представление иврита
Когда я сейчас пытаюсь раскрасить только указанные c вещи с помощью <span color='red'>
, или даже просто окружая диакритические знаки простым <span>
, диакритические знаки смещаются и появляется неправильное представление:
Добавлен диапазон для одного символа
с использованием <html>\u05db\u05bc\u05b8\u05ea\u05b7\u05d1\u05b0\u05ea<span>\u05bc</span>\u05b8</html>
Интервал окружает только символ точкой, символ T под символом (\ u05b8) все равно смещается. Если сначала поставить Т, а затем точку, Т остается в правильном положении. Кажется, что тег span после радикала (сама буква) мешает использованию языков RTL. Еще один способ показать это - раскрасить как радикалы, так и диакритические знаки:
<html>\u05db\u05bc<span color='red'>\u05b8</span>\u05ea<span color='red'>\u05b7</span>\u05d1<span color='red'>\u05b0\u05ea\u05bc\u05b8</span></html>
Не смещено Но при окраске только части этого промежуток, похоже, снова мешает.
Есть ли способ раскрашивать диакритические знаки отдельно, используя Java и JLabel (или любой другой эквивалент), не путаясь с позиционированием?