Javaで扱うFont名
FontをJavaで扱う時、Font名には論理フォント名、フォントファミリー名、フォントフェース名の3つがあります。
下のsampleではFontオブジェクトから、論理フォント名、フォントファミリー名、フォントフェース名を入手しています。
JlabelオブジェクトにFontをセットしているわけではありません。
/* get default Font from component */ import java.awt.*; import java.awt.event.*; import javax.swing.*; class ExamFontName { public static void main(String args[]) { JFrame jf = new JFrame("Font name"); jf.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } }); Font f1 = new Font("Serif", Font.PLAIN, 18); JLabel jlb11 = new JLabel("Family name = " + f1.getFamily()); JLabel jlb12 = new JLabel("Face name = " + f1.getFontName()); JLabel jlb13 = new JLabel("Logical name = " + f1.getName()); Font f2 = new Font("SansSerif", Font.BOLD | Font.ITALIC, 18); JLabel jlb21 = new JLabel("Family name = " + f2.getFamily()); JLabel jlb22 = new JLabel("Face name = " + f2.getFontName()); JLabel jlb23 = new JLabel("Logical name = " + f2.getName()); JPanel jp = new JPanel(); jp.setLayout(new GridLayout(3,2)); jp.add(jlb11); jp.add(jlb21); jp.add(jlb12); jp.add(jlb22); jp.add(jlb13); jp.add(jlb23); jf.getContentPane().add(jp); jf.setBounds(10,20,500,100); jf.setVisible(true); } } |
![]() ![]() |
||
![]() |
JavaでFontを指定する時は、Java固有の論理Font名を使います。 それぞれのプラットフォームで扱う本当のFont名(物理フォント名)ではありません。 Family nameとFace nameの違いがよくわかりませんが、このスタイルまで含んだレベルで 論理Fontと物理Fontがマッピングされています。 マッピングが記述されているファイルは、font.propertiesです。 |