Использование ресурсов шрифтов для графических языков в Java 1.4 - PullRequest
0 голосов
/ 25 ноября 2008

У меня следующая проблема с использованием Java 1.4

Я пытаюсь отобразить очень простой HTML-документ в JTextPane, который содержит китайские символы.

Если языковой стандарт, используемый при запуске виртуальной машины Java, - это user.language = zh и user.country = CN, графические символы отображаются правильно.

Для любой другой локали символы отображаются в виде квадратов.

Разница, которую я вижу, состоит в том, что java 1.4 использует разные файлы font.properties для каждой локали. В этом конкретном случае файл font.properties.zh содержит дополнительную запись:

dialog.plain.0=Arial,ANSI_CHARSET 
**dialog.plain.1=\u5b8b\u4f53,GB2312_CHARSET**
dialog.plain.1=WingDings,SYMBOL_CHARSET
dialog.plain.2=Symbol,SYMBOL_CHARSET

Теперь эта запись недоступна для других локалей.

Проблема, с которой я столкнулся, заключается в том, что мне нужно иметь возможность отображать эту строку при использовании любой локали. Кроме того, я не могу изменить файл font.properties, чтобы добавить дополнительные записи, поскольку у меня нет контроля над JVM, используемой клиентом.

В Java 1.5 эта проблема не возникает.

Есть ли способ добавить это отображение программно? Есть ли другое решение?

1 Ответ

0 голосов
/ 25 ноября 2008

Видимо, ответ ....

Невозможно для Java 1.4 согласно этому URL:

http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp#desktop-rendering

Использование логических имен шрифтов:

  • Преимущества: эти имена шрифтов гарантированно будут работать где угодно, и они позволяют рендеринг текста, по крайней мере, на языке, на котором локализована операционная система хоста (часто гораздо больший диапазон языков).

  • Недостатки: физические шрифты, используемые для рендеринга текста, различаются в зависимости от реализации, хост-операционной системы и локали, поэтому приложение не может получить одинаковый внешний вид везде. Кроме того, механизмы отображения иногда ограничивают диапазон символов, которые могут быть отображены. Последнее было большой проблемой в версиях JRE до 5.0: например, текст на японском языке мог отображаться только в японских локализованных операционных системах хоста, а не в других локализованных системах, даже если были установлены японские шрифты . Для приложений, использующих рендеринг 2D-шрифтов, эта проблема намного реже в JRE версии 5.0, потому что механизм отображения теперь обычно распознает и использует шрифты для всех поддерживаемых систем записи, если они установлены.

Единственно возможный способ - установить в компоненте шрифт, который поддерживает жестко расширенные графические символы в компоненте.

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