6

少し背景..

JavaLWJGLを使用して OpenGL ゲームを作成中です。TextRendererキャッシュされたグリフのページを使用してテキストをレンダリングするクラスを作成しました。グリフ自体は Java2D で にレンダリングされBufferedImage、グリフ測定値とともにテクスチャ ページにパックされます。TextRendererキャッシュされた情報を使用して、テクスチャ付きのクワッドとしてキャラクターを描画します。

これはすべてうまく機能しますが、カーニングの欠落という 1 つの点を除きます。確かに、テキストはそのままできれいに見えるので必要ではありませんが、フォントのカーニング情報にアクセスできれば、品質が向上します。

そして質問は..

Windows、Linux、および MacOS X 間で移植可能な方法で、プレーンな Java を使用してカーニング情報を取得することは可能ですか? 私が書いたとき、TextRenderer私は簡単に周りを見回しましたが、そのような方法を見つけることができませんでした..

考えられる解決策の 1 つ

純粋な Java でこれを行う方法がない場合は、Freetypeを使用して別のツールを作成することを考えていました。機能ページに記載されているとおり:

FreeType 2 は、カーニング距離、グリフ名、垂直メトリックなど、他の同様のフォント エンジンでは得られない情報を提供します。

このツールは、一般的な文字のカーニング ペアを、テキスト レンダラーが読み込んで使用するファイルに保存します。ですから、皆さんがより良い代替案を思いつかない場合、これはおそらく私がすることです. :)

4

2 に答える 2

2

Java SE 6 以降、フォントがカーニング情報を提供する場合、Java はカーニング情報を提供できます。デフォルトではオフになっており、次のようにオンにできます。

Map<TextAttribute, Object> textAttributes = new HashMap<TextAttribute, Object>();  

textAttributes.put(TextAttribute.FAMILY, "Arial");  
textAttributes.put(TextAttribute.SIZE, 25f);  
textAttributes.put(TextAttribute.KERNING, TextAttribute.KERNING_ON);  

Font font = Font.getFont(textAttributes);  

このフォーラム スレッドには、このトピックに関するより詳細な議論が含まれています。

http://forums.sun.com/thread.jspa?threadID=5359127

于 2009-06-15T19:02:18.780 に答える
1

私が知っている唯一のライブラリは、カーニング情報を「ある程度」正しく読み取ることができるもので、ApacheのiTextFOPです。

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/ (オンライン API がないように見えるため、svn へのリンク)

于 2009-06-15T15:31:36.983 に答える