今までは以下の理由でEUC-JPのフォントを使ってきました。
- Shift-JIS は0x5cを含む文字が文字化けを起こす。
- UTF-8 はデフォルトでインストールされていないこともある。
日本語文字列出力を参考に、EUC-JPでテキストを作り、/Ryumin-Light-EUC-H のように EUC-JPのフォントを指定してきたのです。
しかし、この設定ですと、㈱や①のようなWIndows 機種依存文字はRyumin-Light-EUC-Hに含まれていないために豆腐文字になってしまいます。業務に用いる帳票には機種依存文字が含まれていますので、そのまま印刷するのには不都合です。
昨日、C:\Program Files\Adobe\Reader 10.0\Resource\CMap の中を見ると「90ms」の文字があるのに気が付きました。
sirocco@sirocco-PC /C/Program Files/Adobe/Reader 10.0/Resource/CMap $ ls 83pv-RKSJ-H 90pv-RKSJ-H Adobe-Japan1-1 Adobe-Japan1-90ms-RKSJ EUC-H Identity-V UniJIS-UCS2-V 90ms-RKSJ-H 90pv-RKSJ-UCS2 Adobe-Japan1-2 Adobe-Japan1-90pv-RKSJ EUC-V UCS2-90ms-RKSJ UniJIS-UTF16-H 90ms-RKSJ-UCS2 90pv-RKSJ-UCS2C Adobe-Japan1-3 Adobe-Japan1-H-CID Ext-RKSJ-H UCS2-90pv-RKSJ UniJIS-UTF16-V 90ms-RKSJ-V Add-RKSJ-H Adobe-Japan1-4 Adobe-Japan1-H-Host Ext-RKSJ-V UniJIS-UCS2-H UniJIS2004-UTF16-H 90msp-RKSJ-H Add-RKSJ-V Adobe-Japan1-5 Adobe-Japan1-H-Mac H UniJIS-UCS2-HW-H UniJIS2004-UTF16-V 90msp-RKSJ-V Adobe-Japan1-0 Adobe-Japan1-6 Adobe-Japan1-UCS2 Identity-H UniJIS-UCS2-HW-V V
ms はきっと Microsoftのことで、MS-Mincho-90ms-RKSJ-H を使うと文字化けは起きなくなるのではないかと思い、やってみると予想通り文字化けはなくなりました。
90ms-RKSJ-H とは何なのか検索してみると、90msが文字セット、RKSJが符号化方式、Hが組み方向を表していることが分かりました。
【PDF Adviser エンコーディング】
- 90ms:WindowsでのMicrosoftの文字セット
- RKSJ:Romaji Kana Shift JISの略。シフトJISの文字コード
- H:Horizontalの略。拗促音や括弧などの記号類が、横書き用の文字であることを表す
【83pv-RKSJのお話】「83pvは文字セットを表わし「83年度版JIS(JIS X 0208-1983)準拠の文字セットで、部分的に縦組用文字を含む(partially vertical)セット」という意味」だそうです。
0x5cを含む文字については「表\示」「\\」のように\を挿入することにします。
%!PS-Adobe-3.0 EPSF-3.0 % SJIS で保存。 % 参考:TeXが苦手とする処理 % http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?TeX%E3%81%8C%E8%8B%A6%E6%89%8B%E3%81%A8%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86 /mm {2.834645669 mul} def /verticalPosition 297 mm 20 mm sub def % A4 297mm /horizontalPosition 25 mm def /newline { /verticalPosition verticalPosition 20 sub def horizontalPosition verticalPosition moveto } def /putStrLn { findfont 15 scalefont setfont show newline } def horizontalPosition verticalPosition moveto (---------------- 0x5c を含む文字------) /MS-Mincho-90ms-RKSJ-H putStrLn % 実際に記入すると文字化けを起こしてしまいます。 (---------------- 機種依存文字------) show newline showpage