PrivateFontCollectionはフォントファイルからフォント情報を読み込み、フォントファミリを保持するためのクラス。 例えばシステムにインストールされていない独自のフォントを読み込み、それを使ってテキストを描画するなどの目的に用いる。

フォントは、フォントファイルからだけではなく、メモリ上に存在するフォント情報からも作成することができる。

主なコンストラクタ

PrivateFontCollection()
インスタンスを生成する。

主なメソッド

void AddFontFile(string)
指定されたファイルからフォント情報を読み込み、内部コレクションにフォントファミリを追加する。
void AddFontFile(IntPtr, int)
メモリ上に展開されているフォント情報を読み込み、内部コレクションにフォントファミリを追加する。

主なプロパティ

Families (FontFamily[])
内部コレクションに含まれるフォントファミリを参照する。

主な呼び出し順序

  • new PrivateFontCollection()
  • AddFontFile()
  • Familiesプロパティから参照したFontFamilyを用いてFontのインスタンスを生成する。

使用例

PrivateFontCollectionを用いてフォントファイルを読み込み、読み込んだフォントを用いてテキストを描画する例。

using System;
using System.Drawing;
using System.Drawing.Text;

public class PrivateFontCollectionSample {
  static void Main()
  {
    ( new PrivateFontCollectionSample() ).Run();
  }

  private void Run()
  {
    PrivateFontCollection privateFont = new PrivateFontCollection();

    privateFont.AddFontFile( @".\font.ttf" );
    
    // フォントファイルに含まれるフォントファミリの名前を出力する
    foreach ( FontFamily family in privateFont.Families ) {
      Console.WriteLine( family.ToString() );
    }

    // 読み込んだフォントを使用して文字を描画し、ビットマップファイルに保存する
    using ( Bitmap b = new Bitmap( 240, 80 ) ) {
      using ( Graphics g = Graphics.FromImage( b ) ) {
        using ( Font f = new Font( privateFont.Families[0], 20 ) ) {
          g.Clear( Color.Yellow );
          g.DrawString( "ABC日本語あいう", f, Brushes.Black, 0.0f, 0.0f );

          b.Save( @".\sample.bmp" );
        }
      }
    }
      
    privateFont.Dispose();
  }
}