Печатный символ в 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)

Он проверит, может ли шрифт отображать конкретную кодовую точку (более того, он проверяет, отображается ли шрифт вообще - поскольку есть символы, которые можно отобразить - например, ą), но некоторые шрифты не могут их отобразить.

Другие вопросы по тегам