C#で、外字ファイルをシステムインストールしていないパソコンで表示させたい。
WPFだと外字を組み込み表示上は何とかなったのだが、印刷しようとするとどうしても□が出てくる。
さて、どうしたものか。
色々と調べまわってみたところ、以下のようにコードを書くと、印刷時に外字が出てくる事が分かった。これでシステム的な紐づけがされるのか?良く分からないのだけど、外字ファイルを指定してフォントファミリーに対する。実際に描画する時には全く違うフォントを指定しているのだが、ちゃんと外字が印字されるようになった。理屈が分からずちょっと気持ち悪いが。
※プログラムと同じディレクトリにEUDC.TTEファイル(外字ファイル)を置く事
//http://dobon.net/vb/dotnet/graphics/privatefontcollection.html
//http://d.hatena.ne.jp/EnogunoCap/20090418/1240021079
//PrivateFontCollectionオブジェクトを作成する
System.Drawing.Text.PrivateFontCollection pfc =
new System.Drawing.Text.PrivateFontCollection();
//PrivateFontCollectionにフォントを追加する
pfc.AddFontFile(@"EUDC.TTE");
//使いたいフォント名を見つけてFontFamilyオブジェクトを変数にセット
FontFamily addedFont = null;
foreach (FontFamily ff in pfc.Families)
{
if (ff.Name == "EUDC")
{
addedFont = ff;
break;
}
}
//明朝で印刷指定してもちゃんと、外字が出てくる
e.Graphics.DrawString(TextValue, new Font("MS 明朝", FontSize), Brushes.Black, hidariyohaku + 40, dan_2 - 25, new StringFormat());
外字のフォントはゴシック指定になっていた。