2022/08/13

PDFの文字コードの話

PDFを表示すると文字があり、文字としてコピペできるので、文字(を指定する文字コード)が埋め込まれているものだと思っていた。

結論から言うと、どの文字コードでもない、というのが答え。


どの文字コードなのだろうかと思って調べていたが、Unicodeでもないようだし、、、、とネットで調べたらよく解説されたページがあった。

前編:PDFをコピペするとなぜ“文字化け”が起きてしまうのか 変換テーブル“ToUnicode CMap”が原因だった(https://logmi.jp/tech/articles/324366)

後編:PDFに文字化けを起こさせない対策法 もらったファイルは正規化で、作成ツールは対応済みを使え(https://logmi.jp/tech/articles/324412)


これによると、

  • PDFの中身は一部が圧縮されているので、そのまま見ても意味がわからない。QPDFというツールを使うことで、圧縮解除とインデントと付けた見やすい形に変換してくれる。(qpdfはCygwinにも登録されていた。)

  • 埋め込まれているのは、文字(=文字コード)ではなく、どのフォントのどの字形(グリフ)をどこに配置するかの情報

  • PDF変換前の文書の文字コード(Unicodeなど)の符号位置を、OpenTypeフォントのcmapテーブルを使い、PDFが利用するグリフを指定する番号(CIDおよびGID)に変更して保存

  • その際、元の文字コードの符号位置は記録に残されない

  • 変換前の複数文字(似ている字形)が、変換後に1つの文字になるケースがあるため、逆変換すると、元の文字に戻らないケースがある。

  • その場合、Unicodeの符号位置が手前にある康煕部首にヒットしてしまい、その後ろにある日本語の漢字が選ばれないため、PDFからコピペした文字列の漢字が中国語っぽい文字になる。

ということで、PDFの中身はなにの文字コードを使っているかというと、どの文字コードでもないというのが答えでした。


 

 

0 件のコメント:

コメントを投稿