2014年6月28日土曜日

VB フォントと PrivateFontCollection

フォントって、ふぉんとう に(本当に)、難解ですね。
普通に使っている分には、然程ではありませんが、ちょっと、深みに足を突っ込むと、もう ... 。
これは、色々な、規格のものがあって、それ毎に、扱う仕組みが違うからです。
VB.Net の Form で、TTF や TTC のファイルを扱うだけなら、余り、頭を悩ませずに済むんですけれど。


システムに組み込まれたフォントは、色々なプロパティから操作が出来ます。
でも、フォントに魅せられて、色々なものを PC に突っ込む様になると、徐々に、OS 自体の挙動が重くなって来ます。
そこで、普通に考える対策は、特定のアプリにのみ、有効なフォントを割り当て、システムには組み込まないと言う対応ですね。

所謂、 PrivateFontCollection というアプリ専用のフォントの列挙をして、ここからアクセスします。

Dim privateFontCollection As New System.Drawing.Text.PrivateFontCollection()
Dim fontTemporaryDir As String = "C:¥temp"
privateFontCollection.AddFontFile(fontTemporaryDir + "¥" + "KonnaFontAttakke.ttf")  

先にも、書きました様に、 TTF や TTC のファイル限定ですと、これで、用は足ります。


ところで、フォントファイルは、 TTF や TTC のファイルばかりではありません。
OTF というフォントも存在します。
都合の悪い事に、OTF は、TTF の後継で、仕様が拡張されていて、新しいフォントのファイル形態であるばかりか、
魅力的な フォント があったりします。
更に、OS ( Windows 7 等 ) では、すんなり、システムのフォントとして普通にインストール出来てしまったりします。
にも拘らず、先の PrivateFontCollection では、このファイルを指定すると、 ファイルが無い! と怒られてしまいます。

これは、msdn にも、記述があるのですが、             PrivateFontCollection.AddFontFile メソッド  解説の項目

PrivateFontCollection が、任意の OTF ファイルを扱う様になっていない為です。


Form は、GDI+ で描画されますが、GDI+ は TTF の時代の技術です。
このフォントは、 System.Drawing  のクラスに属します。

これに、変わろうとしている技術と言えば、
Windoow の WPF に、なるのでしょうか。

WPF 即ち、 System.Windows.Media クラスでフォントを使う事により、OTF ファイルでも対応が可能になりそうです。
   どこかで、最近の microsoft の UI は C# & WPF で記述されていると読んだ記憶があります。 不確かですが。
   なるほど、WPF ね、と納得の私です。 
   だから、システムでフォントの登録時に、OTF ファイルでも、文字のサンプルが表示される訳なんですね。


うわぁ、避けて通っていた WPF に首を突っ込まないといけない様ですね。
                                        WPF と言えば、C# が多い ってイメージです。
                                        やはり、C# を覚えておくのが正解でしょうか。
                                        これから、プログラムを と言う方は、C# & WPF をお勧めします。



0 件のコメント:

コメントを投稿