Красноречивее Русского языка, в данном случае, скажет код и вывод:
Код | 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')); |
Ява послушно выведет заветное число. Я использовал класс com.sun.opengl.util.j2d.TextRenderer, что входит в состав JOGL
Мне бы хотелось узнать, нет ли какого-то иного способа вычислить ширину слова? p.s.: по-моему это баг, вам так не кажется?
u.p.s.: java от Sun - 1.6 update 10 под Linux'ом |