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です。 |
||