Почему шрифт "Courier New" не имеет всех символов Юникода с одинаковой шириной?
У меня есть представление hexdump в моем приложении:
Я использую шрифт Courier New в Java:
private final Text contentText;
contentText.setFont(Font.font("Courier New"));
Но, как вы можете видеть, некоторые знаки Юникода имеют большую ширину. Есть тот или иной шрифт, который делает все знаки с одинаковой шириной?
1 ответ
Вы видите результаты аварийного восстановления шрифта, который заменяет что-то отличное от оригинального шрифта, который вы указали, когда пытаетесь отобразить символы, которых нет в этом шрифте. В этом случае кана и некоторые другие символы (Won sign, другие) отсутствуют в Courier New, поэтому вы получаете другой шрифт, метрики которого не совпадают с метриками Courier New.
Простого решения этого не существует, особенно если вы ожидаете отображать широкий спектр символов. Что вы можете сделать, это настроить фильтр, как это делают многие шестнадцатеричные редакторы, и просто показать "." или аналогичный для чего-либо, не относящегося к ASCII (или в этом случае вы можете выполнить небольшую детективную работу и настроить ее на показ "." для всего, что отсутствует в шрифте Courier New).