特定のフォントサイズの高さを取得する代わりに、特定の高さを生成する特定のフォント(この場合はSansSerif)のフォントサイズを取得する(きちんとした)方法はありますか?
もちろん、フォントサイズをループしたり、何らかの形式のバイナリチョップを使用したりすることもできますが、可能であれば、少しクリーンでリソースをあまり消費しないものを使用したいと思います。私が見つけた最良の方法は、このようなものを使用することです。
特定のフォントサイズの高さを取得する代わりに、特定の高さを生成する特定のフォント(この場合はSansSerif)のフォントサイズを取得する(きちんとした)方法はありますか?
もちろん、フォントサイズをループしたり、何らかの形式のバイナリチョップを使用したりすることもできますが、可能であれば、少しクリーンでリソースをあまり消費しないものを使用したいと思います。私が見つけた最良の方法は、このようなものを使用することです。
簡単な方法はありません。
まず、Javaが提供する論理フォントファミリは5つだけであることを知っています。他のすべてのフォントは、プログラムを実行するシステムに存在することが保証されていません。
そうすると、いいえ、システム上のフォントのプロパティが自動的にマッピングされることはありません。それらをすべてロードし、必要なメジャーをループ検索する必要があります。
このコードを使用すると、使用可能なフォントをループできます。
import java.awt.Font;
import java.awt.GraphicsEnvironment;
public class MainClass {
public static void main(String[] a) {
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = e.getAllFonts(); // Get the fonts
for (Font f : fonts) {
System.out.println(f.getFontName());
}
}
}
次に、ニーズに合ったものを選択します。コードを変更して、必要な情報(重量など)を表示します。
編集:http : //download.oracle.com/javase/1.3/docs/guide/intl/addingfonts.htmlのThey are merely font-type names recognized by the Java runtime which must be mapped to some physical font that is installed on your system
観察に注意してください。
論理フォントでさえ、常に同じであることが保証されているわけではありません。あなたができることは、10ptのサイズを取得し、フォントサイズを計算することです。好き
font_size_in_points =((10 * desidered_measure)/同等の_measure_of_the_10pt)
FontMetrics metric = new FontMetrics(new Font("font"), Font.BOLD, 12);
metrics.getHeight()
あなたが探しているものかもしれません。
詳細:http ://download.oracle.com/javase/6/docs/api/java/awt/FontMetrics.html
こことここTextLayout
に表示されている、を検索すると、特定のテキストに最も厳しい境界が提供されます。