しってても教えてくれない。文字コードの呪い【後編】— フォントの呪いと“見た目が違う同じ文字”

パソコン
スポンサーリンク

はじめに:先人は頑張っていた。でも、時すでに遅かった。

前編(¥とShift_JISの話)では、文字コードの衝突が引き起こした“¥問題”を取り上げました。
しかし日本語の混乱は「コード」だけでは終わりません。
フォント(字形)そのものが別の地雷を埋めていたのです。

同じ文字なのに見た目が違う。

そして、見た目が同じなのに別の文字。

——それが「フォントの呪い」。


🧩 第1章:PC-98の時代──フォントは“ROMに焼くもの”

1980年代のNEC PC-9801 シリーズは、当時の日本のPCの事実上の標準機でした。
このマシンのフォントはなんと ROMチップに焼き込み済み

つまり:

  • OSはフォントを意識せずに文字を描けた
  • JISコード(例:0x3042=「あ」)を送るとハードが自動的に出す
  • フォントの“見た目”は機種ごとに固定

この方式は超安定。
Shift_JISの欠陥も「ハード側が帳尻を合わせる」ことで表面的には破綻しませんでした


💥 第2章:DOS/Vの登場──フォントをデータで扱う時代

1990年代に入り、IBMが「日本語もVGAで出そう」と考案したのが DOS/V
(VはVGAのV。NECへの“勝利”を皮肉ってVictoryとも)

フォントをROMから外し、メモリ上で描画するアーキテクチャを採用。
これにより:

  • NEC以外のメーカーもPCを作れるように
  • しかしフォントの統一が崩壊
  • 同じJISコードでも字形がフォント依存

“日本語がマシン依存”から“フォント依存”に変わった瞬間です。


🧨 第3章:Windows登場と「フォント戦国時代」

Windows 3.1/95 では、TrueTypeフォント(.ttf)が導入され、誰でも独自フォントを作れるようになりました。
結果、こんな状況に:

文字 フォントA フォントB 結果
\ ¥に見える バックスラッシュに見える 見た目バラバラ
(波ダッシュ) 長い波線 チルダに近い形 両者で印象が違う
(長音) 太め直線 細めチルダ風 音引きがズレる

MSゴシック・DF平成ゴシック・リコー明朝・ヒラギノ…
どれも同じ文字コードを持つのに、グリフが違う

しかも、印刷所や自治体では「フォントが違うだけで文書がずれる」事故が多発しました。


🧩 第4章:同じ文字なのに別物になる“波ダッシュ問題”

有名な例が 「~」(波ダッシュ) 問題

種類コードUnicode意味
波ダッシュJIS X 0208:0x2141U+301C日本語規格(古)
全角チルダUnicode互換U+FF5E欧文互換(新)
全角マイナスU+2212数式で使われる
長音符U+30FCカタカナ語用

同じ「~」でも、フォントによってはチルダやマイナスに見える。
印刷の現場では「~」が波線でなくチルダっぽく印字されるなど、混乱が日常茶飯事でした。


🧱 第5章:「環境依存文字」という魔法のワード

さらにWindowsが“日本語独自文字”を拡張。
「①」「㎡」「㍉」「㌢」「㌔」「髙」「﨑」などの 機種依存文字 を多数導入。

問題はこれ:

他のOS・フォントでは「存在しない」。

→ Wordで書いた請求書を別PCで開くと「□」になる。
→ Webで送ると「?」になる。

つまり、フォントが違えば文書の意味が壊れるという恐怖が広がったのです。


🪦 第6章:修正を試みた人々──だが遅かった

  • Unicodeは1990年代後半に登場し、世界共通のコード体系を定義。
  • しかし、Shift_JIS/EUC-JP/ISO-2022-JP がすでに社会基盤に浸透していた。
  • 日本語フォントはすでに「U+005C=¥」で設計済み。
  • Unicode化しても“見た目が変わる”ため互換優先で放置

「直すと壊れる」
——それが、フォントの呪いの根底です。


⚙️ 第7章:現代Webにも残る影

  • CSSでフォントが「游ゴシック」の場合 → \¥ に見える
  • AI生成画像で日本語を使うと、文字グリフがバラバラ
  • WordPressのエディタで「\」を入力 → 保存時に¥化
  • PDF化で「〜」「-」が違う字形に差し替わる

いずれも「コードは同じ」「フォントが違う」だけの話。
でも、人間には“違う”と見える。
つまり 認知上のバグ が発生しています。


🧠 第8章:なぜフォントを統一しないのか

理由は単純。
歴史的資産の互換性を壊せないから。

  • 公文書・戸籍・銀行システムはMSゴシック前提
  • Word/Excelは“見た目互換”優先でレンダリング
  • macOSは「ヒラギノ」で“正しい\”表示に変更済み
  • 結果:Windowsとmacで同じ文字でも違って見える

🧩 第9章:では、どう生き延びる?

  1. コードではUTF-8を使う
     → Shift_JISは過去資産専用と割り切る。
  2. Webでは等幅ラテン系フォントを優先指定
     → 特にバックスラッシュ、チルダ、マイナス記号対策。
  3. WordPressでは投稿内CSSでフォントスコープを切る
     html  <style>  .bs-scope, .bs-scope code {   font-family: "Consolas","Menlo","Monaco","Courier New","Noto Sans Mono",monospace;   font-variant-east-asian: normal;  }  </style>  
  4. KaTeXでは文字出力時に \text{\textbackslash} を使う
  5. PDF書き出し時は「フォント埋め込み」をONに

💬 結語:日本語フォントは文化遺産

「バグではない、文化だ」
そう言う人もいます。

確かに、ROMフォントの精緻なドット設計は芸術でした。
だが、互換性の維持という呪いが長すぎた。

日本語のコンピュータ文化は、
努力と混乱の両方で作られた。

そして今、UTF-8とオープンフォントの時代に入った私たちには、
その歴史を「知って避ける」責任があります。


付録:実害再現と対策スニペット

現象原因対策
「\」が¥に見えるU+005Cが¥グリフ英字等幅フォントで上書き
「~」が短い波になるフォント差異(301C/FF5E)正規化+Webフォント統一
「□」「?」になる環境依存文字Unicode対応フォントを使用
PDF化で字形ズレ埋め込みなし「埋め込みフォント」ON

後書き(筆者の所感)

この問題は「学者も開発者もみんなわかっていた」のに、
止められなかった歴史です。
当時の人たちは本当に頑張っていた。
でも――

一度“文字コードの整合性”を壊したら、二度と戻らない

それが「フォントの呪い」の真の教訓です。


免責

本記事は当時の実装史・規格文書・実機挙動をもとに再構成した技術的検証であり、特定企業・団体への批判を目的とするものではありません。