Печатный символ в Java
Кто-нибудь знает, как обнаружить печатные символы в Java?
Через некоторое время (проба / ошибка) я получаю этот метод:
public boolean isPrintableChar( char c ) {
Character.UnicodeBlock block = Character.UnicodeBlock.of( c );
return (!Character.isISOControl(c)) &&
c != KeyEvent.CHAR_UNDEFINED &&
block != null &&
block != Character.UnicodeBlock.SPECIALS;
}
Я получаю ввод через KeyListener и получаю Ctr-'key', печатая квадрат. С этой функцией кажется достаточно честно.
Я пропускаю немного чарса здесь?
2 ответа
Решение
Кажется, это был "независимый" шрифт.
public boolean isPrintableChar( char c ) {
Character.UnicodeBlock block = Character.UnicodeBlock.of( c );
return (!Character.isISOControl(c)) &&
c != KeyEvent.CHAR_UNDEFINED &&
block != null &&
block != Character.UnicodeBlock.SPECIALS;
}
Я не совсем уверен, понимаю ли я вашу проблему. Но если вы хотите определить, можно ли нарисовать символ в графическом объекте, и если нет, вывести какой-нибудь символ заполнителя, вы можете найти полезное:
Font.canDisplay(int)
Он проверит, может ли шрифт отображать конкретную кодовую точку (более того, он проверяет, отображается ли шрифт вообще - поскольку есть символы, которые можно отобразить - например, ą), но некоторые шрифты не могут их отобразить.