
なぜ日本語テキストが中国語っぽいフォントに化けるのか
デジタル環境において、日本語テキストがたびたび不自然に感じられるフォントに置き換わって描画されることがあります。この現象が起こる仕組みを簡単に解説します。
この現象を俗に「中華フォント化現象」と呼ぶことがありますが、フォントが置き換わる先は中国語に限るわけではありません。もしも韓国語のフォントが優先されるような環境であれば、日本語テキストが韓国語フォントに置き換わることもあります。むしろ、日本語の文字を収録している外国語フォントが関係する場合においては、往々にして起こる可能性がある現象、と考えるべきかもしれません。
まず結論だけ述べると、「中華フォント化現象」を完全に解消する手立ては、現状存在しないと考えられます。そして、「中華フォント化現象」は非日本語話者のユーザー全員(日本語環境を除くほぼ全世界)の環境で現在進行形で生じており、『適切な日本語フォント』で日本語テキストを読んでいるユーザーは、非常に限られている可能性が高い、ということです。
このことは、現在の主流なテキスト描画システムが採用しているフォントフォールバックの仕様と、一部東アジア言語のフォントに日本語文字が含まれていることによる複合的な要因に基づいています。
ことわっておくべきこと
この問題/現象を考えるにあたって、筆者は何かの特定の思想やナショナリズム等とは切り離して向き合うべきである、という意見を持っています。言語や文字などの文化は互いに尊重し合うべきものであって、一方的に非難したりすることは、基本あってはならないのだと考えます。
一方で、現にデジタル環境における日本語やフォントに関わる問題は無視できない状況であることは事実であって、何もせず放置することは得策ではないと思います。
特にデジタル製品やデジタルコンテンツを制作する日本人クリエイターは、まずはこの問題と冷静に向き合い、今起きていることの構造や仕組みを理解し、制作場面においては常に適切な表現を目指していく姿勢が必要なのだと思います。
日本語と東アジアの字形比較
この問題を考えるに当たって、まずは日本語と東アジア各言語の字形やフォントの特徴を比較してみましょう。
俗に言う「中華フォント化現象」と呼ばれるものの例を挙げてみます。私たち日本語話者が不覚にも見慣れてしまった「違和感のある日本語テキスト」の様子とは、概ね次のような具合になっているはずです(図1)。

日本語として読めなくはないが、文字の形が歪だったり、日本語ネイティブの目から見るとどうにもバランスが悪い印象が拭えません。このようなテキストは、主に外国で開発されたソフトウェアで日本語テキストを扱う場面において、往々にして発生することがあります。YouTubeの字幕や、海外製のゲームなどに見られる日本語テキストの違和感は、わかりやすい例だと思います。
いくつかの特徴的な文字を比較してみましょう。

「直角底仮化鯖」などの漢字は、CJKそれぞれで微妙に異なる字形を使います。日本語テキストの表現を正とした場合に、日本語、繁体中国語、簡体中国語、韓国語それぞれのフォントで同じ文字を描画したものが図2です。
今回、繁体中国語のプレビューには「ヒラギノ角ゴ繁体中文」を採用したこともあってか、そもそもの字形の違いを除くと、文字の全体的な印象は日本語(ヒラギノ角ゴシック)とは差異が少なく、違和感もあまり感じられません。ヒラギノ書体は日本の株式会社SCREENがデザインしたものなので当たり前なのですが、仮に日本語と中国語(繁体字)を混在させるような場面では、これらのフォントを組み合わせることによって、スタイルの整ったテキストを表現できると思います。
ただし、繁体字を使う台湾や香港では日本語と違って句読点を中央に打つので、役物の扱いには要注意です。
一方、簡体中国語のプレビューには「STHeiti」という中国語フォントを採用しました。漢字はもちろんのこと、日本語の仮名もなんだか味がある見た目になりました。そもそも漢字と仮名とでスタイルが違って見えますし、「無難な日本語テキストの描画」用途には全く向いていないことは明らかです。
韓国語のプレビューには「AppleGothic」という韓国語フォントを採用しました。少なくとも採用した文字に関しては字形の大きな違いは感じられませんが、やはり日本語という観点ではそこに漂う違和感を拭いきれません。

違いが現れやすい「直」という文字に着目してみます。
日本語と韓国語の「直」は同じ字形ですが、フォントの特徴なのかわかりませんが、漢字の突き出し部分が若干大袈裟に見える感じがあります。ただ、ほとんど違和感はないので、そのまま日本語としても読めるとは思います。
一方中国語に関しては、そもそも字形が異なっています。「L」の部分が横一直線になり、「目」の下部分がくっついて梯子になっています。字のスタイルが日本語のヒラギノとよく似ているヒラギノ各ゴ繁体中文でも、流石に違和感が強いです。

次に「仮」という文字に着目してみます。
「直」では韓国語が違和感がほとんどなかったのですが、「仮」だとなんだかバランスが不自然に見える気がします。単純にフォント固有のデザインの問題なのかもしれませんが、もしかしたら、韓国語話者が違和感なく受け入れられる漢字のスタイルと、日本語話者が違和感なく受け入れられる漢字のスタイルに差異があるのかもしれません(これはなんとも言えません)。
日本語話者である私の目では、人偏と「反」の高さが揃っていないように見えるのと、空き部分が大きすぎるような印象を受けます。まあでも誤差だと思います。
繁体中国語では字形の差異が無いようなので、日本語の「仮」と完全に一致しています(同じヒラギノファミリーのため)。
一方簡体中国語では字形が少し異なり、「反」の横棒部分が右に上がり、ちょうど「盾」のような形になっています。

最後に句読点の比較です。
句読点は、日本語、韓国語、簡体中国語ではいずれも横書きでは左下(縦書きでは右上)に寄せるように打ちますが、繁体字では中央に打ちます。同じヒラギノファミリーでも句読点の位置には差異が大きく現れるので、混在させる際には注意が必要です。
日本語文字が各言語のフォントに置き換わる仕組み

日本語文字が各言語のフォントに置き換わる仕組みは、バグだとか、あるいは誰かが意図してそう仕向けたとは考えにくく、さまざまな「不幸」が重なった結果と捉えることが自然です。
まず前提として、日本語の文字は日本語のフォントにだけ収録されているわけではない、という事実があります。日本語フォントにアルファベットが含まれているように、一部の中国語や韓国語のフォントにも日本語文字が含まれていることがあります。その際に、漢字はCJK間で微妙に異なるスタイルを使っていたり、非ネイティブのフォントデザイナーが日本語の仮名をデザインするとどうしても違和感が生じやすい、というような条件が重なり、結果として「日本語話者にとっては違和感のある仮名と漢字」を収録したフォントが揃うことになります。
次に、テキストエンジン(テキスト描画を処理するソフトウェア)の振る舞い方の問題が考えられます。ある文字列をどのフォントで描画するのか、という判定をテキストエンジンの内部で行うのですが、この際に、日本語を示すコードである「ja」あるいは「ja_JP」が適用されない環境下では、それ以外の言語に属するフォントを探そうとします。日本語の文字は一部の中国語や韓国語のフォントにも含まれることがありますから、これらが優先候補となるわけです。
このようなフォントを置き換える仕組みのことを「フォントフォールバック」あるいは単に「フォールバック」と呼びます。
Apple製のOSなど、現在主流のGUIシステムにおいては基本的に国際化対応が施されており、日本語のサポートも手厚い環境があります。iPhoneのiOS、macOS、Android、Windowsなどはいずれも日本語のサポートと、適切な日本語フォントを収録しているため、本来であれば日本語テキストが中国語フォントにフォールバック(中華フォント化)してしまうことは起きないはずでは? と思うかもしれません。しかし、OSに組み込まれている言語順序設定という存在によって、不幸にも日本語の「中華フォント化」が起きてしまっています。

一般的な日本語ユーザーの環境では、図7のように言語順序設定で最優先言語を「日本語」に設定しています。この環境下では基本的に中華フォント化は起きません。日本語の文字列は正しく日本語の適切なシステムフォントにフォールバックされるので、私たちが見慣れた文字を見ることができます。
しかし、仮にシステムフォントやその他の日本語フォントをすべて削除してしまうと、優先言語が日本語になっていたとしても、適切なフォントを見つけられず、次に優先されるフォントにフォールバックします。すなわち、中国語のいずれかのフォントです。

日本語の優先度が低い環境の例を見てみましょう。図8の例は、最優先言語にアメリカ英語、2番目に中国語、3番目に韓国語、4番目に日本語という順序を想定しています。
日本語は4番目にあるため、1〜3までの言語の中に日本語を収録しているフォントが見つかれば、それがフォールバック先に採用されます。おそらくは2番目の中国語のいずれかのフォントが採用され、日本語テキストは中華フォント化します。

1番目のアメリカ英語はそのままに、2番目に日本語を移動させた場合には、日本語フォントに優先的にフォールバックする振る舞いをとるので、日本語テキストは適切に描画されます(図9)。

図7〜9までは、言語順序に明示的に何かしらの言語を指定していた場合の環境例でした。図10は、1番目にそのユーザーにとっての主要言語、2番目以降は空欄という設定です。実際のところ、iPhoneなどで言語設定をする時には、ほとんどのユーザーがこのような形になっているはずです。
仮に1番目が日本語だとすると、これは問題なく日本語テキストが日本語フォントで描画されます。しかし、アメリカ英語、イギリス英語、中国語、韓国語、タガログ語、なんでも構わないのですが、非日本語が1番目に設定されている時に、2番目以降には、日本語を差し置いて、暗黙的に中国語(zh_CN?)がまず挿入されることがあります。なぜ中国語が暗黙的に優先されるのかはわかりませんが、おそらく、アルファベット順でChinese → Japaneseという単純な理由なのだと思います(要出典)※。
※同じような現象が実は韓国語においても同様に生じているのではないかと考えているのですが(Chinese → Koreanの順であるため)、十分な調査ができていないため、現状未確認です。
フォントフォールバックという仕組みを想定する以上、ユーザーが明示的に言語順を設定していなくても、システムはデフォルトの言語順というものを持つ必要があります。この環境設定はあくまでそのデフォルトの言語順をカスタマイズするためのものであって、何かの思想や政治等を抜きにしても、必ず一つの並び順というものを採用しなければならない仕組みになっています。

「日本語の優先度が低い環境」とは、要するに非日本語ユーザー全般のことであって、日本語ユーザーを除く全世界のほぼ全員ということになります。すなわち、日本語を日本語フォントで正しく見ているのはほとんどが日本語話者(≒日本人)だけであって、他の人々は皆「中華フォント化」した日本語テキストを見ていると考えられます。
もしも、日本文化を伝えるためのコンテンツを制作・開発するのであれば、この仕組みのことをよく理解した上で、テキストに不適切なフォントフォールバックが生じないような工夫を施す必要があるはずです。
一方で、中華フォント化の逆、中国語話者や韓国語話者にとっての「日本フォント化現象」というものも、原理的には起きる可能性が考えられます。一方的に日本語を優先言語に設定してしまうと、今度は中国語ユーザーや韓国語ユーザーの環境で、彼らの文字が日本語のフォントにフォールバックされる可能性もあるため、結局、誰かが理不尽な思いをしなければならない仕組みである、という結論に達します。なので、今の仕組み上はほとんどどうしようもないのです。
まとめ
日本語テキストが中国語等のフォントに置き換わる現象は、
一部の外国語(中国語)フォントに、日本語文字が収録されている
テキストエンジンは、フォントフォールバックの仕組みを使ってどうにか文字を描画しようとする
デフォルトの言語順がどうやら日本語よりも中国語を優先する
の3つが複合的に合わさった結果、不幸にも日本語フォントが割り当てられなくなることに起因していると考えられます。また、日本語フォントが収録されていないシステムでも同様のことが起きます。
この仕組みを採用していないシステムについてはよくわかりませんが、iPhone (iOS)やWindowsなどの主流OS、Web等の仕組みは概ねこの構造になっているので、原因はだいたい同じだと考えられます。
日本語を適切に日本語フォントにフォールバックさせるためには、
ユーザー環境側で、日本語を中国語よりも優先言語に設定する
システム側で、強制的に日本語フォントにフォールバックする実装を施す
のいずれかになるだろうと考えられます。
1に関しては、そもそも日本語を明示的に優先設定にする物好きな非日本語ユーザーはいないだろうから現実的ではありませんし、中国語ユーザーなどにとっては、逆に「日本フォント化」を引き起こす可能性も考えられます。
2に関しては、現在検討できるもっとも現実的な手立てです。プラットフォームごとにその実現方法はそれぞれ異なりますが、アプリケーションレベルで対応できる可能性が高いため、特に日本コンテンツを扱うサービス/ソフトウェアにおいては、フォントフォールバックの制御をデザインに織り込むことを検討してみてください。
関連情報
記事末端
ここから先は

UI設計ビジュアライズノート集
usagimaruのTwitter / Xで不定期に投稿してきたUI設計のビジュアライズノート(デザインパターン解説)を収録しています。新…
この記事が気に入ったらチップで応援してみませんか?