小背景
我正在使用 Java 和LWJGL制作OpenGL游戏。我编写了一个TextRenderer
-class,该类使用字形的缓存页面来呈现文本。字形本身在Java2D中呈现为BufferedImage
,并与字形测量一起打包到纹理页面中。 TextRenderer
使用缓存的信息将字符绘制为带纹理的四边形。
所有这些工作都很好,除了一件事:缺少字距调整。当然,并不需要因为文本看起来很好而已,但是如果我可以访问字体字距调整信息,它将提高质量。
问题是..
是否可以使用纯Java以可在Windows,Linux和MacOS X上移植的方式获得字距调整信息?回到我编写TextRenderer
时,我环顾四周,但找不到这种方法。
一种可能的解决方案
如果在纯Java中无法做到这一点,我正在考虑使用 Freetype 编写一个单独的工具。如其功能页中所列:
FreeType 2提供的信息
通常无法从其他地方获得
类似的字体引擎,例如 kerning
距离,字形名称,垂直
指标等
该工具会将常见字符的字距调整对存储到文件中,供我的文本渲染器加载并使用。因此,如果你们没有提出更好的选择,这可能就是我会做的。 :)
最佳答案
我知道的唯一能正确读取字距调整信息“somwhat”的库是来自Apache的iText和FOP。
http://www.1t3xt.info/api/com/lowagie/text/pdf/BaseFont.html
http://svn.apache.org/viewvc/xmlgraphics/fop/tags/fop-0_95/src/java/org/apache/fop/fonts/(到svn的链接,因为似乎没有在线api)