書類や帳票などをプログラムで自動生成させるようにすると捗ります。
ところで,事務書類では「チェックマーク」が要求されることがたまにあります。
(環境によっては見えないかも知れませんが「✔」のことです(「ゝ」を時計回りに90度回転させたような記号)。)
このような用途に私はRubyとPrawnを使っていますが,PrawnはUnicodeに対応したTrueTypeフォントも非常に簡単に扱えるため,チェックマークが含まっているフォントファイルさえ用意できればあとはそのフォントをPDF::Document::font した上で PDF::Document::draw_text メソッドで簡単に出せます。
このようなフォントとしては,MigMix 1Pなどがあります。
MigMix 1Pは非常に素晴らしいフォントなのですが,帳票によっては雰囲気にそぐわなかったりするため,1枚の帳票の中で他のフォントとMigMix 1P(のチェックマーク)とを切り替えて使ったりしています。ただ,チェックマークのためだけにフォントファイルを同じディレクトリに置いたりするのもちょっとどうかなと思っています1。
そこで,「チェックマーク1文字だけが入っているフォントファイル」をMigMix 1Pから作りました2。
たぶん需要は私だけだと思いますが,一応以下に置いておきます。
ライセンスは MigMix 1P に準じて,IPAフォントライセンスでお願いします。
migmix-1p-checkmark.ttf (zip)
Prawnで使うときは以下のような感じです3。
このスクリプトを実行すると以下のようなPDFが生成されます。test-checkmark.pdf
#!/usr/bin/ruby require 'prawn' require 'prawn/measurement_extensions' Prawn::Document.generate("test-checkmark.pdf", { :page_size => 'A4', :page_layout => :portrait, :margin => 0, }){ font "migmix-1p-checkmark.ttf" # チェックマークが直接入力できる場合はこちら draw_text "✔", :at => [10.5.cm, 25.2.cm], :size => 10 # チェックマークが直接入力できない場合はこちら # "✔".codepoints.map{|v| v.to_s(16)} #=> 2714 draw_text 0x2714.chr("UTF-8"), :at => [10.5.cm, 24.2.cm], :size => 10 }
注
- フォントはフォントで別ディレクトリに置いて参照すれば良いのですが,自分の方針として,再現性を保つためになるべくスクリプトとフォントとを同じディレクトリに置くようにしています。ちなみにMigMix 1Pは3MBほどあります。
- こちらのページを参考にしました。test-checkmark
- このソースコードをSyntax Highlighterで表示すると✔マークが謎の置き換えをされてしまうので今回はpreタグで表示しています。