Processingでコンピュータにインストールされているフォントを確認する
Processingでデジタルアートやデザインを作っていく中で、いろんなフォントを活用することもあります。
loadFont()やcreateFont()でフォントを取り込んで利用していきますが、お使いのパソコンにインストールされているフォントを利用する場合には、どのフォントがあるのか確認するかと思います。
Processingでは、システムにインストールされているフォントを、リストとして取得し確認することができます。
ただ、少しだけうまくいかないこともありますので、それを踏まえたフォントの種類の確認方法をご紹介します。
インストールされているフォントの確認
Processingでシステムにインストールされているフォントの種類を確認するには、PFontクラスとlist()メソッドを使います。
PFontクラス
Processingの.vlwフォーマットフォントを扱うためのクラスです。
フォントを扱うときの変数の作成で利用します。
list()メソッド
システムにインストールされているフォントのリストを取得します。
取得したリストは、文字列の配列として値が返ってきます。
配列で取得した情報を管理するので、String型の配列を作成します。
そして、printArray()で配列の中身をコンソールで確認します。
String[] fontList = PFont.list();
printArray(fontList);
エディタのコンソールに、インストールされているフォントが確認できます。
ですが、少し気になるところが。
配列のインデックス番号[172]からのリストになっています。
ProcessingのコンソールでprintArrayやprintlnといった、改行ありでデータを出力していくことはよくありますが、表示に限界があり、私が確認したところでは500行ほどしか表示されませんでした。
最近では扱うフォントも増えて、多くのフォントがシステムにインストールされていることが多いです。
length()でリストの数を見てみると、私のMacbook Proには「670」のフォントがインストールされています。
int num = fontList.length;
println(num);
他、Windows PCも持っていますが、Windowsでも「518」と結構インストールされています。
すべてのフォントを確認
膨大な配列のデータを一度に確認したい場合は、for文の繰り返し処理の中、print()で改行なしで表示すると問題なくすべて表示できます。
でも、文字列が改行なしでずらりと並ぶと、何が書いてあるのかわからなくなります。
for文で配列の数だけループ処理して、インデックス番号の表示やスペースを開けたりして、見やすくすると良いでしょう。
以下、サンプルコードになります。
String[] fontList = PFont.list();
for(int i = 0; i < fontList.length; i++){
print(i + ":" + fontList[i] + " ");
}
改行なしでも見やすいかたちで、データをコンソールに表示させることができました。
よくデザインされる方は、たくさんのフォントがインストールされているのではないでしょうか。
Processingのコンソールにも限界がありますので、for文のループ処理でうまく表示させてみてください。