文字を扱うには(AndroidMode編)

◆PROCESSING 逆引きリファレンス

 カテゴリー:スマホ(AndroidMode)

フォントを扱うには(AndroidMode編)

【解説】

Android Mode を導入する事で、PROCESSINGで開発したプログラムをAndroid端末上で動かす事ができるようになります。

Android Modeの導入については「PROCESSINGをAndroid端末で動かすには(4.0版)」記事を参照してください。

フォントを扱うには loadFont() 命令または createFont() 命令でフォントデータを読み込み、textFont() 命令で利用するフォントを指定します。また textSize()  命令でフォントの表示サイズを変更可能です。

AndroidModeでも、基本的にはJavaModeと同じ命令を使います。

 

フォントの読み込み

AndroidModeでも vlw 形式のフォントを loadFont() 命令で読み込んで、利用することが可能です。ただしvlw形式のフォントは、非推奨となります。

AndroidModeでは loadFont() 命令ではなく、createFont() 命令を利用するのが良いでしょう。

createFont() 命令では、 TTF または OTF 形式のフォントデータを読み込むことが可能です。

 

フォントサイズの指定

JavaModeでは、createFont() する際にフォントの大きさを指定しました。また createFont() した後に、textFont() や textSize() 命令でフォントの大きさを指定可能でした。

AndroidModeでもcreateFont() する際にフォントの大きさを指定しますが、フォントの大きさを変更するには、textSize() 命令も合わせて利用する必要があります。

また(AndroidModeのバグだと思うのですが) textFont() 命令でフォントの大きさを指定してはいけません。詳しくは下記注意事項を参照して下さい。

 

利用するフォントの指定

textFont() 命令で loadFont() や createFont() したフォントデータを使うように指定します。

ただし先にも書きましたが、AndroidModeではtextFont() 命令でフォントの大きさを指定しないでください。

 

【構文】

PFont  font  =  loadFont(  String  vlwFileName  ) ;
PFont  font  =  createFont(  String fileName ,  float  size  ) ;
PFont  font  =  createFont(  String fileName ,  float  size,  boolean  smooth ) ;

void  textFont(  PFont  font  ) ;

void  textSize(  float  size  ) ;

vlwFileName  :vlwフォントファイル名
fileName          :TTFまたはOTFフォントファイル名
size                     :フォントサイズ
smooth             :True アンチエイリアスする  /  False  しない

 

【注意】

createFont() や loadFont() に与えるフォントファイルは、PCのスケッチ格納フォルダのdataフォルダ配下に格納しておく必要があります。

このファイルが、スケッチプログラムをコンパイルすると、Android端末のassetsフォルダに置かれて利用されます。

vlw 形式のフォントはAndroid端末での利用にふさわしくないため、loadFont() 命令を利用すると、以下のような警告が表示されます。

Inefficient font rendering: use createFont() with a TTF/OTF instead of loadFont().

Android Modeでは loadFont() ではなく、createFont() 命令を利用した方が良いでしょう。

ただしAndroidModeでcreateFont() 命令を利用する際には、以下のような注意があります。

 

注意1:createFont() 命令で指定するフォントサイズについて

AndroidModeではcreateFont() 命令でフォントの大きさを指定するだけでは、文字の大きさが変わりません。

文字の大きさを変更するには、createFont() した後で textSize() 命令を利用する必要があります。

ただし、createFont() 命令で指定するフォントサイズと、textSize() で指定するフォントサイズは同一の値にしてください。異なる値を指定した場合、場合によっては期待通り表示されない事があります。

例えば以下の2つの例では、表示がおかしくなりました。

NGケース1:

createFont() でサイズに1を指定し、textSize() で64を指定しています。極端な例ですが、この場合だと以下のような表示になりました。

文字が画面の上端に寄ってしまい、正しく表示されていません。


(フォントデータ:デザインのブログ 様)

NGケース2:

NGパターン1の処理から、textFont() と textSize() の順番を入れ替えました。この場合は、文字の上端に妙な余白ができています。

下図を見ていただくとわかるように、青線(64ピクセルの位置に引いた線)から、文字の下端がはみ出ています(汗)。


(フォントデータ:デザインのブログ 様)

 

注意2:createFont() 命令で指定するフォントサイズは0にしない事

createFont()に与える文字サイズは1以上の数値である必要があります。0を与えると、実行時に以下のような例外が発生します。

java.lang.IllegalArgumentException: width and height must be > 0

 

注意3:textFont() 命令では、フォントの大きさを指定しない事

JavaModeでは textFont() 命令でフォントの大きさを指定可能でした。

AndroidModeでも引数としては指定可能です。ですが、文字の大きさは変わりません(汗)。

そればかりか textFont() でフォントのサイズを指定すると、createFont() や loadFont() したフォントデータが使われなくなってしまう不具合があるようです。

以下の例ではcreateFont() したフォントではなく、標準のフォントが表示されています。

testFont() 命令は、サイズ指定無しで使いましょう。

 

【関連記事】

 


サンプルプログラム

フォントを生成して表示する例:

フォントデータを生成し、64ピクセルで表示しています。

<出力サンプル>

(フォントデータ:デザインのブログ 様)

 


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

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