Красивый (с псевдонимом) китайский иероглиф - PullRequest
3 голосов
/ 19 июня 2010

alt text http://sites.google.com/site/yanchengcheok/Home/chinese-display.png

В последнее время я понимаю, что отображаемые китайские иероглифы довольно уродливы в моем приложении.

Я подумал, что должен сделать их "сглаживающими".Но как я могу это сделать в Java?

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

Locale.setDefault(locale);

Система всегда выберет

javax.swing.plaf.FontUIResource [family = Tahomaимя = Tahoma, стиль = обычный, размер = 11]

независимо от того, на каком я языке - на английском или китайском.

Ответы [ 2 ]

2 голосов
/ 19 июня 2010

Сглаживание считается вредным: http://www.joelonsoftware.com/articles/fog0000000041.html

Дело в том, что красота персонажей не обязательно является целью пользовательского интерфейса. Это не все. То, что вы должны искать, это читабельность текста. Когда ваши китайские иероглифы выглядят не гладко, это может быть именно тем, что помогает контрольной петле человеческого глаза знать, что она находится в фокусе, и перестать обвинять мускулы глаза в размытости. На самом деле, не падайте в этот питфал.

1 голос
/ 20 июня 2010

Вот метод для чтения шрифта TrueType из classpath и регистрации его в графическом окружении:

private static Font readFont(String name) {
    InputStream in = Fonts.class.getResourceAsStream(name + ".ttf");
    if (in == null) {
        throw new IllegalArgumentException(name);
    }
    try {
        Font retval = Font.createFont(Font.TRUETYPE_FONT, in);
        GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(retval);
        return retval;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

Затем вы можете использовать этот объект шрифта для получения символов разных размеров или вы можете попробовать применитьэтот шрифт с использованием Swing CSS.В этом случае значение, которое вы бы указали в атрибуте "font-family", - это значение, возвращаемое Font.getName ().

Например:

static {

    Font font = readFont("VeraMono");
    if (font != null) {
        font = font.deriveFont(14f);
    } else {
        throw new IllegalStateException();
    }

    MONOSPACED_TEXT_FONT = font;
    MONOSPACED_TEXT_FONT_STYLE = "font-family: " + font.getName() + "; font-size: 14pt; font-weight: normal;";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...