Я пытаюсь заставить JTextArea (и другие текстовые компоненты через мое приложение) разрешить пользователям вводить RTL. Это корректно работает для ввода, такого как арабский, но я также должен установить его для применения к стандартным текстам. Поэтому, если я наберу «привет!» он будет отображаться как «! olleh».Формирование заказа RTL в JTextArea
Я попытался с помощью метода applyOrientation() и установив текстовую область, чтобы иметь RTL выглядеть примерно так:
jTextPane1.getDocument().putProperty(
TextAttribute.RUN_DIRECTION,
TextAttribute.RUN_DIRECTION_RTL);
Я не имел успеха до сих пор. Было высказано предположение, что я пытаюсь использовать библиотеки Bidi, но они, похоже, сосредоточены на интерпретации текста, который уже двунаправлен. Когда я применяю вышеуказанное, я получаю правильный текст, но он остается LTR в терминах порядка символов. Есть ли что-то, что мне здесь не хватает? Есть ли способ установить значение, которое сама Java проверяет при поиске, в каком направлении текст должен перемещаться карат?
Каретка - это место, где будет введен следующий символ, он не имеет никакого отношения к визуализации текста. Кроме того, есть ли причина, по которой вы хотите, чтобы символы, которые по определению Unicode, а не RTL, отображались как RTL? – RealSkeptic
Я создаю программу, используемую лингвистами, и они должны иметь возможность создавать шрифты, представляющие новые наборы символов, и иметь возможность печатать с использованием шрифтов RTL. Большинство, что они создали до сих пор, просто помещают новых персонажей поверх существующих букв. Когда у вас есть символы, которые не включены в юникод, и вам нужно решение, которое не так привлекательно, как получение одобренных Unicode, это казалось лучшим решением. –
Как насчет наборов символов, которые должны быть «RTL» на арабском/фарси/иврите? – RealSkeptic