Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > getCharWidth из TextRenderer боится русских букв


Автор: ha7y 19.10.2008, 18:06
Красноречивее Русского языка, в данном случае, скажет код и вывод:
Код
new TextRenderer(new Font(null, Font.BOLD, 14)).getCharWidth('ы');

Код
Exception in thread "main" java.lang.NullPointerException
        at sun.font.StandardGlyphVector.initFontData(StandardGlyphVector.java:1114)
        at sun.font.StandardGlyphVector.init(StandardGlyphVector.java:1090)
        at sun.font.StandardGlyphVector.<init>(StandardGlyphVector.java:149)
        at java.awt.Font.createGlyphVector(Font.java:2352)
        at com.sun.opengl.util.j2d.TextRenderer$GlyphProducer.getGlyphPixelWidth(TextRenderer.java:1624)
        at com.sun.opengl.util.j2d.TextRenderer.getCharWidth(TextRenderer.java:521)
        at org.ourprogram.TestingFont.main(TestingFont.java:62)
Java Result: 1


однако, если исправить букву 'ы', например, на 'd':
Код
System.err.println(new TextRenderer(new Font(null, Font.BOLD, 14)).getCharWidth('d'));

Код
9.0

Ява послушно выведет заветное число. Я использовал класс com.sun.opengl.util.j2d.TextRenderer, что входит в состав JOGL

Мне бы хотелось узнать, нет ли какого-то иного способа вычислить ширину слова?
p.s.: по-моему это баг, вам так не кажется?

u.p.s.: java от Sun - 1.6 update 10 под Linux'ом

Автор: Keyo 19.10.2008, 19:48
FontMetrics.getLineMetrics ?

Автор: ha7y 19.10.2008, 20:06
getStringBounds из java.awt.FontMetrics подходит как нельзя лучше
спасибо, Keyo

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)