使えるシステムから使いたいシステムへ、有限会社アテージ

前回からの続きでlibHaruを使って文字列を扱ってみます。

文字の表示

IPAゴシック、IPA明朝の等幅フォントを使って文字を表示してみます。主なポイントは次の通りです。

  • 日本語を使う場合は、useJPEncodings()で日本語エンコーディングを有効にする必要があります。今回はIPAフォントを使いますが、組み込みの日本語フォントを使う場合は、useJPFonts()で有効にします。
  • getFont()の第2引数でエンコーディングを指定します。エンコーディングの一覧はこちら。日本語でつかえるのは、RKSJの付く3つとEUCで始まる2つです。名前の通り、前3つはSJIS、後の2つはEUCです。Hは横書き、Vは縦書きです。
  • 文字をレンダリングするときのモードが塗りつぶしや外形のみなど8種類あり、setTextRenderingMode()で指定できます。
  • beginText()でテキストの挿入開始、endText()終了。
  • textOut()で挿入位置を指定しますが、文字のベースラインの開始点(横書きなら左端)が基準になります。文字の左下、左上ではないことに注意が必要です。
  • ベースラインからの上下の幅はgetAscent(), getDescent()で得られます。フォントサイズに対するパーミル値を返しますので、1000で除したものをフォントサイズに乗ずれば幅が得られます。

コード例:日本語の表示

出力されたPDFはこちら

文字列の幅

描画した文字列の幅を求めるには、HaruPage::getTextWidth()を使います。HaruFontにも同じ名前のメソッドがあるので要注意です。

コード例:アンダーライン

出力されたPDFはこちら

moveToTextPos()による位置決め

長い文章を表示する場合、textOut()での位置決めは大変ですので、moveTextPos()を使います。行の送り幅を定義(setTextLeading())して改行(showTextNextLine())で改行することもできます。

コード例:改行

出力されたPDFはこちら

文字列の変形

setTextMatrix()で文字列を変形させることができます。

コード例:文字列の変形

出力されたPDFはこちら

次回はパスワードの設定などについてみていきます。