文字の書体を設定する

  1. 文字の書体
    表示する文字の書体を設定する方法を紹介します。

  2. 書体
    1. 書体
      文字の書体はFontクラスで設定できます。書体には

       フォント名
       フォントサイズ
       イタリック
       ボールド

      が指定できます。フォント名はシステムに組み込まれているフォントファイルで定まります。
    2. フォントファイル
       フォントの一覧は、コントロールパネルの 「フォント」より一覧できます。また、ここから フォントファイルを組み込むことができます。
       よく利用される日本語ファオントは、MS 明朝 ですが、これも3種類あります。@MS 明朝 は縦書きのフォントです。MS P明朝 はプロポーショナルフォントで、文字幅が文字により変化します。

           :プロポーショナル
        :等幅

      等幅でも、全角文字と半角文字では文字幅が異なるようです。

    3. フォントの設定
       ここでは、書体を次の変数で設定します。bold,italic は太字、斜体 に設定したい場合 true とします。

       String fontname1 = "DFG唐風隷書体W5";
       int size=30;
       boolean bold=true;
       boolean italic=false;

    4. Font クラス
      Fontクラスは fontname1, type, size を指定して作成します。

      Font font1;
      font1 = new Font(fontname1, type, size);

      bold と italic はビット属性で、次のようにtypeに設定します。

       int type = Font.PLAIN;
       if (bold) type = type | Font.BOLD;
       if (italic) type = type | Font.ITALIC;

      Font.PLAIN; は boldやイタリックの指定しない定数で、これに、Font.BOLD; を倫理和(|)することで、bold の属性を設定します。italic も同様です。

    5. FontMetrics クラス
       指定したフォントの大きさは、size が同じでも、文字の高さや幅が異なります。

      FontMetrics fm;
       fm=getFontMetrics(font2);
       int hgt = fm.getHeight()

      で、文字の高さを取得できます。文字幅は、文字毎に異なります。
       fm.charWidth('A')
      で、指定文字(この場合 'A' )の幅を取得できます。


    6. ここでは、二つの書体を大きさ30、bold、で表示します。行間は、FontMetrics で取得します。文字の位置は左下ですから、確保する行間は、次に表示する Font の高さを確保する必要があります。

  3. プログラム
    import java.applet.*;
    import java.awt.Font;
    import java.awt.FontMetrics;
    import java.awt.Graphics;
    
    public class font extends Applet{
        
     int size=30; 
     String fontname1 = "DFG唐風隷書体W5";
     String fontname2 = "HG教科書体";
     boolean bold=true;
     boolean italic=false;
     
     int type = Font.PLAIN;
     
     String text="abc123漢字";
     Font font1,font2;
     FontMetrics fm;
    
     public void paint(Graphics g) {
    
        if (bold) type = type | Font.BOLD;
        if (italic) type = type | Font.ITALIC;
    
        font1 = new Font(fontname1, type, size);
        g.setFont(font1);
        g.drawString(text, 10, 50);
        
        font2 = new Font(fontname2, type, size);
        g.setFont(font2);
        fm=getFontMetrics(font2);
        g.drawString(text, 10, 50+fm.getHeight()+10);
     }
    }

  4. 実行
    二つのフォントで表示します。同じ書体がない場合はデフォルトの書体になります。