ブログトップ プライバシーポリシー お問い合わせ

Processing3の日本語表示設定(Linux)

はじめに

Linux( Ubuntu 16.04 )にProcessing3を入れて使っています。別のPCで使っていたスケッチを開いた時に、コメント文の日本語が表示されませんでした。フォント設定を忘れていたことに気づいたので、やりました。環境は以下の通りです。

  • Ubuntu 16.04
  • Processing 3.5.3

設定方法

設定ファイルである

~/.processing/preferences.txt

のフォント設定箇所

editor.font.family=Source Code Pro

を、日本語の文字が入っているフォントを使う設定に書き換えます。Processingの

ファイル→設定...→/home/ユーザー名/.processing/preferences.txt

のリンクをクリックするとpreferences.txtを開けます。このファイルは設定ファイルなので、書き換える前に、必ずProcessingを終了させてください。

結論から言うと、「Noto Sans Mono CJK JP Regular」で日本語表示ができました。

editor.font.family=Noto Sans Mono CJK JP Regular

f:id:Fluorite36:20191022175056p:plain

フォント設定を変更して日本語の表示ができるようになった様子

日本語を扱えるフォントを調べる

日本語を扱えるフォントを調べました。

以下のスケッチ(ソースコード)をprocessingで実行すると、フォントリストをProcessingIDEの下のConsoleに出力することができます。

void setup(){
  printArray(PFont.list());
}
void draw(){
}

[0] "Abyssinica SIL"
[1] "Bitstream Charter"
[2] "Bitstream Charter Bold"

...

[325] "rsfs10"
[326] "stmary10"
[327] "wasy10"

[162] "Noto Sans CJK JP Black"
[163] "Noto Sans CJK JP Bold"
[164] "Noto Sans CJK JP DemiLight"
[165] "Noto Sans CJK JP Light"
[166] "Noto Sans CJK JP Medium"
[167] "Noto Sans CJK JP Regular"
[168] "Noto Sans CJK JP Thin"
[190] "Noto Sans Mono CJK JP Bold"
[191] "Noto Sans Mono CJK JP Regular"

 これらが実際に日本語の文字を含んでいるか確かめます。以下のスケッチで描画してみます。

// setup文内で回しているので、一通り表示できるまでずっと画面が更新されない。最後まで待つこと。
// Since this code is in the setup statement, the screen will not be updated until it can be displayed. Wait until the end.

int[] testFontIndexArray = 
{
  162,
  163,
  164,
  165,
  166,
  167,
  168,
  190,
  191
};
//[162] "Noto Sans CJK JP Black"
//[163] "Noto Sans CJK JP Bold"
//[164] "Noto Sans CJK JP DemiLight"
//[165] "Noto Sans CJK JP Light"
//[166] "Noto Sans CJK JP Medium"
//[167] "Noto Sans CJK JP Regular"
//[168] "Noto Sans CJK JP Thin"
//...
//[190] "Noto Sans Mono CJK JP Bold"
//[191] "Noto Sans Mono CJK JP Regular"

PFont font;
int fontSize = 24;

void setup()
{
  size(1000, 1200);
  background(255);
  
  float x = 10;
  float y = fontSize;
  String printString = "";
  
  // フォントリストを表示する
  // Display font list
  // printArray(PFont.list());
  
  // フォントリストの内、配列で指定した要素のフォントを表示する
  // Displays the font of the element specified in the array in the font list
  println("Since this code is in the setup statement, the screen will not be updated until it can be displayed. Wait until the end.");
  println("printing...");
  
  for(int i = 0; i< testFontIndexArray.length; i++)
  {
    font = createFont(PFont.list()[ testFontIndexArray[i] ], fontSize);
    textFont(font);
    
    fill(0);
    
    printString = "[" + testFontIndexArray[i] + "]:\"" + PFont.list()[ testFontIndexArray[i] ] + "\"\t" + "こんにちは";
    
    print(i+1 + "/" +  testFontIndexArray.length + "\t");// ex. 1/9, 2/9,...
    println( printString );
    text( printString, x, y);
    y += 10;//mergin
    y += fontSize;
  }
  println("print finished!");
  noLoop();
}

void draw()
{
  
}

実行結果は以下の画像のようになりました。

f:id:Fluorite36:20191022174013p:plain

フォント描画テスト結果

フォント名に「JP」を含んでいた、あたりをつけたフォントは、日本語の文字を含んでいたことがわかりました。

この他のフォントはまだ試していないのですが、同じようにして要素番号を変えて試せるのでやってみたいと思います。