Смешение арабского и английского языков вызывает проблемы в JTextArea (Java)

У меня есть JTextArea, который отображает HTML арабской веб-страницы. Так что это, по сути, смесь английского и арабского языков. В JTextArea со столбцами, установленными на 30, определенный текст просто исчезает вместо правильного переноса. Странно то, что если я скопирую невидимый текст и вставлю его в Блокнот, то я смогу увидеть его в Блокноте. Если я изменю количество столбцов на 40, все будет отображаться нормально. Есть идеи?


person Community    schedule 25.11.2008    source источник


Ответы (2)


Посмотрите на этот скриншот проблемы:

http://i.stack.imgur.com/lErjB.jpg

Эли, спасибо за ответ. Хотя не уверен, что правильно объяснил задачу. Слева на скриншоте находится JTextArea. Справа — выделение из JTextArea, вставленное в Блокнот. Теперь это имеет больше смысла?

person Community    schedule 25.11.2008
comment
Вы по-прежнему сталкиваетесь с этой проблемой даже без арабского языка в тексте, или это происходит только тогда, когда вы добавляете арабский язык? Попробуйте вставить текст из блокнота в текстовую область с арабским языком и без него и дайте мне знать, что произойдет. - person Elie; 25.11.2008
comment
Да, хорошая идея. Кажется, что проблема здесь не в арабском языке. Это как-то связано с вкладками. Все исчезающие строки начинаются с 5 табуляции. Если я удалю одну вкладку, чтобы они начинались с 4 вкладок, то в JTextArea они отображаются нормально. - person ; 25.11.2008
comment
какое у вас расстояние между вкладками? Он установлен на 6? - person Elie; 25.11.2008
comment
установлено значение по умолчанию 8, но его изменение не помогает. Я видел, как об этой проблеме сообщали и другие люди (bugs.sun .com/bugdatabase/) Мой обходной путь — просто заменить вкладки пробелами. Спасибо за помощь, Эли - person ; 25.11.2008

Это 30-й символ, который исчезает? Возможно, из-за сценария JTextArea не может правильно отображать арабские символы. Так что он правильно считает символы, но не понимает, что они занимают больше места. Поддержка таких шрифтов не велика, поэтому вы можете написать собственный рендерер для вашего JTextArea, чтобы справиться с этим (чтобы вы могли вручную учитывать надлежащее количество места, необходимое для каждого символа на арабском языке, и соответствующим образом настроить перенос строки).

person Elie    schedule 25.11.2008