Symbol, SYMBOL_CHARSET, NEED_CONVERTED
задають, що віртуальний шрифт dialog звичайного накреслення складається з 3-х шрифтів (Arial, WingDings і Symbol). Далі, ось ці рядки:
fontcharset.dialog.0 = sun.io.CharToByteCp1251
fontcharset.dialog.1 = sun.awt.windows.CharToByteWingDings
fontcharset.dialog.2 = sun.awt.CharToByteSymbol
задають, які класи потрібно використовувати для перекодування з Unicode в кодування даного шрифту. При виведенні символів спочатку шукається, в якому шрифт визначені виводяться символи. Це визначається тим, які символи може конвертувати зазначені класи. Є так само додаткова настройка (exclusion), яка явно задає діапазони символів, які незастосовні для даного шрифту. Наприклад, ось цей рядок
exclusion.dialog.0 = 0100-0400,0460-ffff
задає, що при виведенні символів з кодами від 0100 до 0400 і від 0460 до ffff шрифт 0 (Arial) використовувати не слід. Цей рядок потрібна, в основному, для оптимізації. p> Таким чином, при виведенні грецьких символів шрифт 0 (Arial) не підходить за exclusion, шрифт 1 (WingDings) не підходить, тому в таблиці перекодування CharToByteWingDings вони відсутні тому використовується шрифт 2 (Symbol), в якому є грецькі символи. p> З бібліотекою Swing все простіше - в ній все малюється через підсистему Java2D. Написи в стандартних діалогах (JOptionPane, JFileChooser, JColorChooser) переробити на російську дуже просто - достатньо лише створити кілька файлів ресурсів. Я це вже виконав, так що можете просто взяти готовий файл і додати його в libext або в CLASSPATH. Єдина проблема, з якою я зіткнувся - у версіях JDK починаючи з 1.2 rc1 і по 1.3 beta, російські літери не виводяться під Win9x при використанні стандартних шрифтів (Arial, Courier New, Times New Roman, etc.) Через помилку в Java2D. Помилка вельми своєрідна - зі стандартними шрифтами зображення букв відображаються не у відповідності з кодами Unicode, а за таблицею Cp1251 (кодування Ansi). Ця помилка зареєстрована в BugParade під номером 4192443. За умовчанням в Swing використовуються шрифти, Запитання й у файлі font.properties.ru, так що досить замінити їх іншими - і російські літери з'являються. На жаль, набір робітників шрифтів слабкий - це шрифти Tahoma, Tahoma Bold і два набори шрифтів з дистрибутива JDK - Lucida Sans * і Lucida Typewriter * (приклад файлу font.properties.ru). Чим ці шрифти відрізняються від стандартних - мені незрозуміло. p> Починаючи з версії 1.3rc1 ця проблема вже виправлена, так що потрібно просто оновити JDK. JDK 1.2 вже сильно застарів, так що я не рекомендую ним користуватися. Так само треба врахувати, що з оригінальною версією Win95 поставляються шрифти, які не підтримуючі Unicode - у цій ситуації можна просто скопіювати шрифти з Win98 або WinNT. p> Типові помилки, або "куди поділася буква Ш? " p> Буква Ш.
Цей питання ("куди поділася буква Ш?") досить часто виникає у початківців програмістів на Java. Давайте розберемося,...