В Java Swing, почему неправильный размер шрифта? - PullRequest
2 голосов
/ 09 июля 2020

Я пробовал несколько версий Java Swing, но этот размер шрифта всегда неправильный, когда он будет исправлен?

JButton lButton=new JButton("\u24c1");
lButton.setFont(new Font("Monospaced",0,23));

JButton mButton=new JButton("\u24c2");               // (M) is always smaller, why ?!
mButton.setFont(new Font("Monospaced",0,23));

JButton nButton=new JButton("\u24c3");
nButton.setFont(new Font("Monospaced",0,23));

Как вы можете видеть ниже, (M) в середина всегда меньше, почему?!

введите описание изображения здесь

1 Ответ

2 голосов
/ 09 июля 2020

Средний M, скорее всего, взят из другого шрифта, чем другие. Обведенный символ M является частью «эмодзи» (его можно использовать как знак «метро»), поэтому существует больше шрифтов, которые включают его, чем обведенные L или N. Сравните https://unicode-table.com/en/24C1/ и https://unicode-table.com/en/24C2/

Чтобы исправить это, вы можете рассмотреть возможность использования специального шрифта c вместо «моноширинного» логического шрифта, как в соответствии с java .awt .Font Спецификация API :

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

...