TTF/OTFフォントを読み込むには

◆PROCESSING 逆引きリファレンス

 カテゴリー:文字関連処理

TTF/OTFフォントを読み込むには

【概要】

プログラム作成時にデバッグ用の情報を表示するなら、print()命令が楽ちんです。

しかし描画領域に文字を表示しようとすると、意外と面倒な作業が必要となります。PROCESSINGで文字を扱うには

  1. Windowsが扱えるTTFまたはOTF形式のフォントを準備する
  2. フォントをPROCESSINGが扱えるvlw形式に変換する
  3. vlw形式の文字データを、dataフォルダに格納する
  4. プログラムで文字を読み込んで表示する

という手順が必要です。そして以前は、この手順でうまくいっていました。ええ・・・。

この辺りは、古い記事ですが「文字データを読み込むには」に書かせていただいております。

ところが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 様にて配布されているものを利用させて頂きました。

<出力サンプル>

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。