c# システムインストールされていない外字フォントを指定する

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

 

 

外字のフォントはゴシック指定になっていた。

関連コンテンツ