プロット用フォント

このページでは、昔のプロッターのようなやり方で、亀場に文字を描く方法について説明する。

1. 文字出力用の簡易プロッターライブラリ(Python言語用)

turtle_font.py

亀場の描画機能は非常に限定的なので、文字を出力するためにsay( )関数や、tprintf( )関数は 用意されているものの、文字の大きさを変えたり、寝かせて描いたりする機能は提供されていない。 もちろん、線分の組み合わせで、文字を含むどんな図形でも描くことは原理的には可能だろうけれども、例えば、"KAME"と描画するだけでも、結構な手間になってしまうだろう。

そこで、turtle.py(Python 3用はturtle3.py)と組み合わせて使うための、簡単な文字描画用のライブラリturtle_font.pyを作成してみた。

2. ライブラリ関数

まず、ダウンロードした二つのファイル turtle.py(またはturtle3.py)とturtle_font.pyをプログラムと同じディレクトリに置いて、コードの先頭あたりに

from turtle3 import Turtle
import turtle_font

ttl = Turtle("localhost")

のように記述して亀場の支度を整える。import turtle_font が新しく加える部分である。

次いで、プログラム中で、以下の関数を呼び出す。以下で「亀場」は、上のコードの例ではttlのことである。

文字列の描画

turtle_font.draw_string( 亀場, 文字列 , 文字サイズ , 角度 )

半角英数文字列を、亀の現在位置に描画する。 小文字は大文字で描画される。一部の記号はサポートされない(空白となる)。 「文字サイズ」で文字幅を指定する(実数)。 フォントは幅1に対して高さ2のプロポーション(固定幅)である。 「角度」(実数)が0の場合は水平に、90が鉛直上向き、に文字列が描かれる。 それ以外の数値を指定しても構わない(例えば75.0等)。

ttl.jump(0,-200)
ttl.lw(2)
turtle_font.draw_string(ttl,"YOU ARE WHAT YOU EAT.", 10, 90.0)

整数値の描画

turtle_font.draw_int( 亀場, 整数値 , 文字サイズ , 角度 )
turtle_font.draw_int_right( 亀場, 整数値 , 文字サイズ , 角度)

整数式の値を、亀の現在位置に描画する。 draw_int_right( )関数は「右づめ」出力用。

ttl.jump(0,0)
turtle_font.draw_int(i*j//7, 5, 0)

実数値の描画

draw_float( 亀場 , 実数値 , 小数点以下の桁数 , 文字サイズ , 角度 )
draw_float_right( 亀場 , 実数値 , 小数点以下の桁数 , 文字サイズ , 角度)

実数式の値を、亀の現在位置に描画する。 「小数点以下の桁数」(整数)は、例えば 1 を指定すると、3.1のように描画される。 draw_float_right( )関数は「右づめ」出力用。

ttl.col(1,1,0)
turtle_font.draw_float( ttl, x, 3, 5, 0) ;

描画位置と文字のサイズ

描画される文字は、横幅1に対して高さが2のプロポーションになっている。 上記の関数の引数の「文字サイズ」は、フォントの横幅をピクセル単位で指定する。

亀は、矩形領域(実際には少しだけ右に傾いた平行四辺形)の左下から描画を開始して、1文字描くと、また同じ場所に戻ってくる。 文字列(文字の連なり)の描画は、一文字描いたら、文字サイズの1.4倍だけ「となり」にジャンプし、次の文字を描く・・・、を繰り返している。

基本的に文字は線画として描かれるので、太さはlw()関数、色はcol( )関数を使って変更できる。

tfield-turtle-font