M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2007年5月 4日 20:43

PDFJ、use utf8;で円記号¥(U+00A5)出すには

このエントリーをはてなブックマークに追加 mixiチェック

PDFJ [hp1.jonex.ne.jp] という Perl のみで PDF を生成できるとてもありがたいライブラリを使って、見積書でも作ろうかというミッション。

そんで、use utf8; して、スクリプト自体 UTF-8 で書こうという魂胆。当然、use PDFJ 'UTF8'; と書いて、PDFJ 側の準備も万全だぜ!

で、見積書なので円記号(¥)が必要なんですけれども、当然ながらキーボードから打つ円記号は、0x5c なんで、\ となる(環境によってはバックスラッシュに見えたり、円記号に見えたり)。

そんで、それを PDFJ にぶっ込むと表示されないんです。

Pdfjyen01
▲キーボードから円記号(\)を打ってみたよ

Pdfjyen02
▲バックスラッシュやんけ!(Unicode的には正解)

そんで、use utf8; している訳なので、単純に¥(U+00A5)をスクリプト中に挿入すればいいんじゃね? ていうことで、Windows の文字コード表で入力し、コピペ。

Pdfjyenmojicode
▲文字コード表から、U+00A5:YEN SIGN(¥)を選択し、コピー

Pdfjyen03
▲文字コード表からコピーした、U+00A5:YEN SIGN(¥)をペーストしてみたよ(微妙に0x5cと字形違う)

Pdfjyen04
▲消えたやないか!

今度は消えちゃいました! なにこれ!

たいていこういう場合は UTF-8 flag が悪さしているんじゃねえかって思ったので、UTF-8 flag 下げてみました。

Pdfjyen05
▲文字コード表から、U+00A5:YEN SIGN(¥)を打った部分をUTF-8 flag下げてみたよ

Pdfjyen06
▲円記号出た!

よし、出た! でも、このままじゃ、\(0x5c)と、¥(U+00A5)が混じっちゃって Windows の MS ゴシックで見る限りとてもきもいんで(両方とも¥に見えますから)、¥ を文字コード表記にしちゃいました。

Pdfjyen07
▲こんなかんじ

Pdfjyen06
▲円記号出た!(画像も使い回し)

~~~

やっていることは至極当たり前で、use utf8; したら、print するときに UTF-8 flag 落とさなきゃバケバーケって言うのと同じことですよね。PDFJ の場合、普通の日本語文字列のみを通したときはバケバーケにならなかったので気づかなかった(HTML::Template みてえだ)。

  1. 全角の円記号「¥」使えっていうのは無し。でかいじゃん。
  2. ソース入力にMS ゴシック使うな、ていうのも無し。
  3. PDFのスクリーンショットでは、KozGoPro-Medium の代替表示になってます。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2062

コメント(1)

いにしえのテキストサイトっぽい展開でワロタ

コメントする