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();
}
}