Я просмотрел документацию по java и поискал в сети информацию о поддержке Java для международных символов с определенными шрифтами (такими как Monospace), но не смог получить четкого конкретного ответа.
Произошло изменение между java 1.4 и java 1.5 / 1.6. Например, в java 1.4, если вы установите шрифт в JTextArea на Monospace, он не сможет обрабатывать посторонние символы (вместо этого получите прямоугольники), но в java 1.5 / 1.6 он, похоже, работает нормально.
Эти различия / улучшенная поддержка четко задокументированы где-нибудь?
Спасибо




От Улучшения интернационализации:
Multilingual Text Rendering
To render multilingual text, using logical fonts, 2D now takes advantage of installed host OS fonts for all supported writing systems. For example, if you run in a Thai locale environment, but have Korean fonts installed, both Thai and Korean are rendered. The JRE now also automatically detects physical fonts that are installed into its lib/fonts/fallback directory and adds these physical fonts to all logical fonts for 2D rendering.
Use of Unicode APIs on Windows
AWT now uses the Unicode APIs on Windows 2000/XP. As a result, some of its components can handle text without being restricted by Windows locale settings. For example, AWT text components can accept and display text in the Devanagari writing system regardless of the Windows locale settings. (emphasis mine)
Насколько «чужеродны» эти персонажи? Большинство шрифтов на основе латиницы могут обрабатывать, по крайней мере, буквы с диакритическими знаками и другие символы в верхней половине ISO-8859-1, но я не думаю, что вы можете разумно рассчитывать на поддержку чего-либо, кроме этого.
Лучше всего, чтобы пользователь мог выбирать из списка поддерживаемых шрифтов, который вы извлекаете из базовой ОС. Если не можете или не хотите, вы можете воспользоваться подходом CSS: перебрать список приемлемых шрифтов и использовать первый установленный.
Чтобы заполнить список, просто введите в Google "шрифты для программистов" или "моноширинные шрифты". Мне никогда не нравились логические шрифты Java, особенно Monospace, то есть Courier или Courier New для Windows. Я перестал его использовать много лет назад.