◆PROCESSING 逆引きリファレンス
カテゴリー:文字関連処理
TTF/OTFフォントを読み込むには
【概要】
プログラム作成時にデバッグ用の情報を表示するなら、print()命令が楽ちんです。
しかし描画領域に文字を表示しようとすると、意外と面倒な作業が必要となります。PROCESSINGで文字を扱うには
- Windowsが扱えるTTFまたはOTF形式のフォントを準備する
- フォントをPROCESSINGが扱えるvlw形式に変換する
- vlw形式の文字データを、dataフォルダに格納する
- プログラムで文字を読み込んで表示する
という手順が必要です。そして以前は、この手順でうまくいっていました。ええ・・・。
この辺りは、古い記事ですが「文字データを読み込むには」に書かせていただいております。
ところがWindows10環境では、どうにも上手く動作しません。
問題1:フォント作成画面に表示されない
Windows10にインターネットから入手したTTF形式(またはOTF形式)のフォントをインストールします。
しかしそれをPROCESSINGの標準ツールでvlw形式に変換しようとしても、フォント作成画面の一覧に表示されません。
以前は確かに英語名で表示されていたフォント(IPAフォント等)も、なぜか表示されなくなっています・・・。
PROCESSINGの公式ページを参照すると、PFontクラスのlistメソッドで、PROCESSINGが利用可能なフォント一覧が得られると書いてあります。
以下のようなプログラムです。
<実行結果>
これを実行すると、ちゃんとインストールしたフォント名が表示されます。でもフォント作成画面には出てこない。もちろん英語の名前でも出てきません。※
※Windows7環境では問題なく表示されます
で、さらに調査・・・。
PROCESSINGのフォント作成画面では以下のようにしてフォント一覧を取得し、そのポストスクリプト名を表示しています。
ですが、どうやらこのポストスクリプト名が、Windows7とWindows10で異なっているようなのです。以下のプログラムで確認すると
梅ゴシックC4の場合
Windows10の結果
[java.awt.Font[family=Dialog,name=梅ゴシックC4,style=plain,size=1]] PSNAME=[Dialog.plain]
Windows7の結果
[java.awt.Font[family=梅ゴシックC4,name=梅ゴシックC4,style=plain,size=1]] PSNAME=[Ume-Gothic-C4]
おおう!Σ(゚Д゚)・・・なんてことだ。
フォント作成画面をよく見ると、確かにDialog.plainという名前のフォントが見つかります。ですがこれを選択し、全ての文字種を指定して変換すると
Exception in thread “AWT-EventQueue-0” java.lang.OutOfMemoryError: Java heap space
で落ちます・・・orz。※
※Windows7環境では問題なく変換可能です
これは想像ですが、Windows10(Windows8にも)にはBahnschriftという名前のシステムフォントがインストールされており、このポストスクリプト名がDialog.plainであるため、システムフォントと区別がつかずに誤動作しているようです。
問題2:インストール済みフォントがcreateFont()で読めない
次の手段として、インストール済みのフォントをcreateFont命令で読み込んでみます。
<実行結果>
“梅ゴシックC4” is not available, so another font will be used. Use PFont.list() to show available fonts.
でもやっぱり、このようなエラーとなり失敗します。ダメダこりゃ・・・※
※こちらもWindows7環境では問題なく変換できました
というわけで、vlw形式のフォントを利用するのはあきらめて、TTFまたはOTF形式のフォントを直接読み込む方法を紹介したいと思います。
なお私と同じ現象ではまっている方の記事を見つけましたので、参考までにリンクをさせて頂きます。
【詳細】
まずTTF形式またはOTF形式のフォントファイルを、dataフォルダに配置します。その上で、createFont命令にそのファイル名を与えて読み込ませます。
.
フォントを生成するPFont font = createFont( String fileName, int size, boolean smooth);
font:作成したフォント
fileName:TTFフォントファイル名
size:フォントサイズ
smooth:アンチエイリアス指定。trueならスムーズにする
読み込みと生成に少し時間がかかりますが、これでフォント作成画面に表示されないようなTTF形式またはOTF形式のフォントであっても、PROCESSINGで利用できるようになります。
全てのフォントで試したわけではありませんが、Windows10環境で従来の方法ではvlw形式のフォントが生成できなくて困っている人は、一度お試し下さい。
以下はTTFフォントファイルを直接読み込む例です。
【関連記事】
サンプルプログラム
あの映画のオープニングっぽいアレの例:
上記を実行すると、あの映画のオープニングのような場面が表示されます。
上記はProcessing 言語による情報メディア入門 様に掲載されていたプログラムを改編して掲載しています。また利用しているフォントデータはM+FONT 様にて配布されているものを利用させて頂きました。
<出力サンプル>
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。