PDFJ、use utf8;で円記号¥(U+00A5)出すには
スポンサードリンク
PDFJ [hp1.jonex.ne.jp] という Perl のみで PDF を生成できるとてもありがたいライブラリを使って、見積書でも作ろうかというミッション。
そんで、use utf8; して、スクリプト自体 UTF-8 で書こうという魂胆。当然、use PDFJ 'UTF8'; と書いて、PDFJ 側の準備も万全だぜ!
で、見積書なので円記号(¥)が必要なんですけれども、当然ながらキーボードから打つ円記号は、0x5c なんで、\ となる(環境によってはバックスラッシュに見えたり、円記号に見えたり)。
そんで、それを PDFJ にぶっ込むと表示されないんです。
▲キーボードから円記号(\)を打ってみたよ
▲バックスラッシュやんけ!(Unicode的には正解)
そんで、use utf8; している訳なので、単純に¥(U+00A5)をスクリプト中に挿入すればいいんじゃね? ていうことで、Windows の文字コード表で入力し、コピペ。
▲文字コード表から、U+00A5:YEN SIGN(¥)を選択し、コピー
▲文字コード表からコピーした、U+00A5:YEN SIGN(¥)をペーストしてみたよ(微妙に0x5cと字形違う)
▲消えたやないか!
今度は消えちゃいました! なにこれ!
たいていこういう場合は UTF-8 flag が悪さしているんじゃねえかって思ったので、UTF-8 flag 下げてみました。
▲文字コード表から、U+00A5:YEN SIGN(¥)を打った部分をUTF-8 flag下げてみたよ
▲円記号出た!
よし、出た! でも、このままじゃ、\(0x5c)と、¥(U+00A5)が混じっちゃって Windows の MS ゴシックで見る限りとてもきもいんで(両方とも¥に見えますから)、¥ を文字コード表記にしちゃいました。
▲こんなかんじ
▲円記号出た!(画像も使い回し)
~~~
やっていることは至極当たり前で、use utf8; したら、print するときに UTF-8 flag 落とさなきゃバケバーケって言うのと同じことですよね。PDFJ の場合、普通の日本語文字列のみを通したときはバケバーケにならなかったので気づかなかった(HTML::Template みてえだ)。
- 全角の円記号「¥」使えっていうのは無し。でかいじゃん。
- ソース入力にMS ゴシック使うな、ていうのも無し。
- PDFのスクリーンショットでは、KozGoPro-Medium の代替表示になってます。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2062
いにしえのテキストサイトっぽい展開でワロタ