Вопрос

Кто-нибудь знает, как обнаружить печатные символы в 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 ', печатая квадрат. С этой функцией кажется достаточно честно.

Мне не хватает какого-то символа здесь?

Это было полезно?

Решение

Похоже, это был "шрифт" независимый путь.

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)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top