文字、コードポイント、グリフ、グラフィムの違いは何ですか? 質問する

文字、コードポイント、グリフ、グラフィムの違いは何ですか? 質問する

現代の Unicode の微妙な部分を理解しようとすると、頭が痛くなります。特に、コード ポイント、文字、グリフ、グラフィム (最も単純なケースでは、ASCII 文字を使用した英語のテキストを扱う場合、これらはすべて互いに 1 対 1 の関係にある概念) の区別が、私を困らせています。

マティアス・ビネンスの文書でこれらの用語がどのように使用されているかを見ると、JavaScriptにはUnicodeの問題があるまたはWikipediaの漢の統一これらの概念は同じものではなく、混同するのは危険だと理解しましたが、それぞれの用語の意味を理解するのに苦労しています。

ユニコードコンソーシアムは、用語集これを説明するには、次のような「定義」が満載です。

抽象文字。テキスト データの編成、制御、または表現に使用される情報の単位。...

...

文字。…(2)抽象文字の同義語。(3)Unicode文字エンコーディングの基本単位。…

...

グリフ。(1) 1 つ以上のグリフ画像を表す抽象的な形式。(2) グリフ画像の同義語。Unicode 文字データを表示する場合、特定の文字を表すために 1 つ以上のグリフを選択できます。

...

書記素。(1) 特定の表記体系の文脈における、最小限に区別できる表記単位。...

これらの定義のほとんどは、非常に学術的かつ形式的な印象を与えますが、何の意味も持たない、あるいは定義の問題を別の用語集のエントリや標準のセクションに先送りすることになります。

そこで私は、自分よりも学識のある人たちの神秘的な知恵を求めます。これらの概念はそれぞれどのように異なっているのでしょうか。また、どのような状況では、概念同士が 1 対 1 の関係を持たないのでしょうか。

ベストアンサー1

  • 性格は、多くのことを意味することができる、意味が複雑な言葉です。

  • コードポイントは情報の原子単位です。テキストはコード ポイントのシーケンスです。各コード ポイントは、Unicode 標準によって意味が与えられた数値です。

  • コードユニットは、エンコードされたコード ポイントの一部を格納する単位です。UTF-8 では 8 ビット、UTF-16 では 16 ビットを意味します。1 つのコード ユニットは、完全なコード ポイントを表すことも、コード ポイントの一部を表すこともできます。たとえば、雪だるまのグリフ ( ) は 1 つのコード ポイントですが、3 つの UTF-8 コード ユニットと 1 つの UTF-16 コード ユニットです。

  • グラフィムとは、1 つ以上のコード ポイントのシーケンスであり、単一のグラフィカル ユニットとして表示され、読者が書記体系の 1 つの要素として認識します。たとえば、と はどちらもaグラフィムäですが、複数のコード ポイントで構成される場合があります (たとえば、ä基本文字に 1 つ、a分音記号に 1 つという 2 つのコード ポイントがある場合がありますが、このグラフィムを表す代替の従来の単一のコード ポイントもあります)。一部のコード ポイントは、どのグラフィムにも含まれません (ゼロ幅の非結合子や方向オーバーライドなど)。

  • グリフは、通常フォント(グリフの集合)に保存される画像で、書記素またはその一部を表すために使用されます。フォントは、複数のグリフを 1 つの表現にまとめる場合があります。たとえば、上記がä1 つのコード ポイントである場合、フォントはそれを 2 つの別々の空間的に重なり合ったグリフとしてレンダリングすることを選択できます。OTF の場合、フォントの GSUB テーブルと GPOS テーブルには、これを機能させるための置換情報と位置情報が含まれています。フォントには、同じ書記素に対して複数の代替グリフが含まれている場合もあります。

おすすめ記事