1. ホーム
  2. unicode

なぜすべてのUnicodeグリフを含むフォントがないのですか?

2023-09-21 11:40:12

質問

タイトルにある通りです。合成文字、他の文字や合字に影響を与える文字など、すべての Unicode フォーマットを正しくレンダリングすることは本当に難しく、それは理解しています。私たちには、Unicode 記号を最大限にサポートするように設計されたフォント (Symbola, Code2001, その他) と、特定の平面または文字範囲に特化したフォント (BabelStone Han, その他) があります。

私は、フォントの基本的な技術的詳細についてはよく知りません。最大サイズというのはあるのでしょうか? それは著作権の問題なのでしょうか。現存する約 110,000 のグリフを本質的にすべて再描画するのは大変なことなのでしょうか? スタイルに関する懸念は理解できますが、次のようなグリフを持つ「デフォルト」フォントにフォールバックしてはどうでしょう。 すべて ? それらは unicode.org にあり、それらをすべて再描画するのはかなり大変な作業ですが、そうすればすべてのフォールバックフォントが保証されることになります。もし、既存のフォントの権利を持っているなら、それを合成すればいいし、それは多くの助けになるはずです。このようなフォントは人類にとって大きな助けとなるでしょうし、それが存在しない十分な技術的理由も、少なくともそれを作成するためのオープンソースの努力も見当たりませんので、私はそれができない目に見えない理由を推測しています。

その理由とは何でしょうか?

どのように解決するのですか?

という疑問はさておき、プログラミングの観点からは、非常に単純な理由があります。 OpenType 仕様 は 1 つの USHORT のアドレス可能なグリフ インデックス空間しか提供しないため、1 つのフォントは 16 ビット分のグリフ識別子、つまり最大 65,536 グリフにしか対応できません (用語に注意してください: 「グリフ」。 ではなく 同じ を文字として使用することはできません。)

現在のUnicodeのバージョン、この回答の時点ではv8ですが、それには 120,737 の割り当てられたコードポイント という、現代的なフォントのほぼ 2 倍の数が割り当てられています ( 2021 年編集: v13 では 143,859 個に増えました。 ). 実際、2001 年に Unicode 3.1 がリリースされ、コード ポイント数が 49,259 から 94,205 に増加して以来、Unicode は最新の OpenType フォントに収まらなくなっています。

では、フォント コレクションはどうなるのでしょうか。なぜ複数のフォントを使用せず、その方法ですべての unicode をサポートしないのでしょうか? さて、あなたは今、Adobe の Sans Pro と Google の Noto (これらは同じフォントです)を説明しました。

この地球上で確立された 129 の文字があり、それぞれが独自の組版規則を持つ中で、Unicode のすべてのグリフのスタイルを統一することは、どれほど難しいことでしょうか? 信じられないほど難しいです。フォントは単に文字の絵が描かれたファイルで、誰かが文字を入力するとその絵が表示されると思うかもしれませんが、それはフォントがどのように機能するかではなく、1980 年代後半からフォントがどのように機能してきたかということでもないのです。

確かに、その ROM を実行するハードウェアやソフトウェアがなければあまり意味がありませんが、実際に重要なものはすべて ROM の中にあるのです。同様に、モダンなフォントには をすべて を含んでいます。単なる画像ではなく、メタデータ、測定基準、任意のシーケンスに対する配置と置換のルール、OpenType がサポートする各文字に対する個別のルールセット、必須およびオプションの合字、単語の先頭/中間/末尾にある文字に対する言語固有の文字の置換、あるいは単独での置換が含まれています。任意に複雑な前後の文字列に対する文字の再配置、任意に複雑な他の文字列への置き換え、スモールポイントレンダリングのためのビットマップフォールバック、本来特定のピクセルグリッドに整列されないベクトルグラフィックの適切なラスタライズ方法に関するヒント指示、などなどです。現代のフォントは非常に複雑なアプリケーションであり、フォント エンジンは が参照する を参照して、コード ポイントのシーケンスをどのようにタイプセットするかを決定します。

すべてのコンテキストに適した、ユニコードを包含するフォント(のセット)を作ることは、膨大なチームワークが必要です。

では、なぜすべての Unicode グリフを含むフォントが存在しないのでしょうか。私たちは フォント ファミリ しかし、129 もの異なるスクリプトがあり、それぞれが独自のタイプセット ルールを持つため、それは ロット の作業であり、すべての言語のサブセットのみをカバーすることに比べれば、ほとんど (ほとんど) 価値がないのです。

そして、これに関しては

このようなフォントは人類にとって大きな助けとなるはずで、それが存在しない技術的な理由、少なくともそれを作るためのオープンソースの努力は見当たりませんので、それができない目に見えない理由があると推測されます。

あなたが知らなかったからといって、存在しないわけではありませんし、何百万人もの人が

です。 何百万人もの人が知っているのです。彼らは存在するのです =)。

オープンソースでもある それを作ってくれた人たちに感謝しましょう。