2022-04-29に投稿

PDF からテキストをコピペしたときに稀に見られる潰れた文字のメモ

あるとき、エディタ上で「入」の文字が化けてしまって困ったので原因を探ったのでメモしておきます。

経緯

エディタ上でファイル名をコピペしたら「入」の文字が化けてしまいました。エクスプローラ上で見ると一見普通の「入」の文字のように見えたのですが……。

左が文字化けした入、右が手入力した入

メモ帳に貼り付けたところ、明らかに様子がおかしいことに気付きました。

左が文字化けした「入」、右が手入力した「入」です。

何故か今回文字化けした「入」は半分くらいに潰れていますね……。字形が異なるということは、もちろん、文字コードも別です。ユニコードで見ると左が \u2F0A 、右が \u5165 です。

何でしょうこれ……。

調査

調べてみると、他にもこうした文字があることが分かりました。

⼊入
⼈人
⻄西
⾃自
⾞車
⼒力
⼿手
⾮非
⼤大
⼯工

今回採集した例が上述。

半分潰れたような文字の採集結果

メモ帳で見るといずれも半分くらいの大きさに潰れています。エクスプローラで見るとほとんど違いが分からないのですが、先述の通り文字コードが別なのでファイル名はしっかり別物と認識されます。

そのため、同じファイル名が複数あるように見えるというなかなか面白い困った状況に陥ります。

さらに調べた結果、原因が判明しました。原因は PDF でした。

  • PDFの中のテキストは文字コードとは別の固有の番号で文字を出力しているが、Unicodeのような文字コードとは互換性はない
  • 一応文字コードとPDF固有の番号の変換テーブルはある
  • が、この変換テーブルがない PDF が存在する
  • そうした場合、昇順で文字を参照するが本来の文字ではなく部首に当たる文字が先にヒットしてしまう
  • この部首に当たる文字が先の半分潰れたような文字の正体
  • 結果、コピペ等 PDF の中からテキストを抜く際に本来の文字ではなく、部首に当たる文字が抜き出される。その文字は通常の文字ではないため、一部の環境では化ける

ざっくり言うとこんな感じの原因の模様。確かに、今回のケースでも PDF の中から見出しのテキストをコピペしてファイル名にしていました。その際に先の条件に当てはまり、通常の ではなく、 を混入させてしまった、ということのようです。

原因が分かれば納得ですが、なんと面倒な……。

参考

(余談)

今回の件とは別件ですが、まあ文字コードがらみは厄介ですよね、というお話。

Originally published at labor.ewigleere.net
ツイッターでシェア
みんなに共有、忘れないようにメモ

arm-band

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント