Posted on

PDFで文字を埋め込まない時は半角¥がバックスラッシュに変わる

この前TCPDFというPHPからPDFを出力するライブラリではまったのでメモ。
TCPDFとはこちら
こちらのサイトを参考にしてファイルのサイズの関係でフォントを埋め込まないようにして
PDFを出力していたんですが、「半角(¥)がバックスラッシュ(\)」になって出力されてしまいました。
何で・・・?


フォントを埋め込んだ時はちゃんと半角¥マークで出力されるのでおかしいなーと思っていたらPDF自体の仕様ようです。
半角円マークが含まれていると PDF にフォントが埋め込まれてしまう
ここにあるように
——————————————————–

半角円マーク(?)は PDF ファイル上で文字コード「0x003e」によってコード化されます。これを Acrobat 製品で表示すると、この文字コードは U+005C の Unicode 文字に変換されます。もし PDF ファイルにフォントが埋め込まれていない場合、U+005C のコードに該当する Unicode 文字がそのまま表示され、結果として半角バックスラッシュで表示されてしまいます。

これを防ぐため、Acrobat Distiller は半角円マーク(?)はこの文字コードが含まれる場合、強制的にフォントを埋め込みます。

この現象は半角円マークに日本語 TrueType フォント(MS 明朝など)を使用した際に発生します。欧文フォントを使用した場合には発生しません。

——————————————————–
らしいです。
う?ん。TCPDFのフォントサブセット(使っている文字だけ埋め込む)は使い物にならないし(処理が重過ぎる)、半角¥マークを画像にするか?(めんどくさい・・・)、結局、全角¥マークでお客さんに我慢してもらいました。(1ファイル3MBは重いって言われたので・・・)