[解決済み】文字、コードポイント、グリフ、書記素はどう違うの?
質問
現代のユニコードの微妙な部分を理解しようとすると、頭が痛くなります。特に、コードポイント、文字、グリフ、書記素の区別についてです。 最も単純な ASCII文字を使った英語のテキストを扱う場合、すべてが一対一の関係であることが悩みの種です。
Matthias Bynens のような文書でこれらの用語がどのように使用されるかを見てみましょう。 JavaScriptにはUnicodeの問題がある やWikipediaの 漢民族の統一 これらの概念は同じものではなく、混同するのは危険だということは理解できたのですが、それぞれの用語が何を意味しているのかがよくわからないのです。 意味 .
ユニコード・コンソーシアムでは 用語集 というような定義でいっぱいです。
<ブロッククオート抽象的なキャラクター . テキストデータの構成、制御、または表現に使用される情報の単位。...
...
キャラクター . ... (2)抽象的な文字の同義語。(3) Unicode 文字符号化方式の符号化の基本単位。...
...
グリフ . (1) 1つまたは複数のグリフ画像を表現する抽象的な形式. (2) グリフイメージの同義語。Unicode 文字データを表示する際、特定の文字を描写するために 1 つまたは複数のグリフを選択することができる。
...
書記素 . (1)特定の文字体系の文脈の中で、文字の最小限の特徴的な単位をいう。...
これらの定義のほとんどは、非常にアカデミックでフォーマルな響きを持つが、以下のような品質には欠ける。 意味 そうでなければ、定義の問題を別の用語集や規格のセクションに先送りすることになります。
そこで、私より学識のある方々の難解な知恵を求めます。これらの概念は、それぞれ具体的にどのように異なり、どのような場合に一対一の関係を持たないのでしょうか?
どのように解決するのか?
-
キャラクター は、多くのことを意味するオーバーロードされた用語である。
-
A コードポイント は情報の原子単位である。 テキスト はコードポイントの列である。各コードポイントは、ユニコード規格によって意味を与えられた番号である。
-
A コード単位 の保存単位です。 部分 の符号化されたコードポイント。 UTF-8 の場合は 8 ビット、UTF-16 の場合は 16 ビットを意味します。 1 つの コ ー ド ユニ ッ ト は、 コ ー ド 点全体を表す こ と も で き ます し 、 コ ー ド 点の一部を表す こ と も で き ます。 例えば、雪だるまグリフ(
☃
は1つのコードポイントですが、UTF-8のコードユニットが3つ、UTF-16のコードユニットが1つです。 -
A 書記素 は、1つまたは複数のコードポイントのシーケンスで、読者が文字システムの1つの要素として認識する、単一のグラフィックユニットとして表示されます。例えば
a
とä
は書記素であるが、複数の符号点から構成されることもある(例.ä
は2つのコードポイントであり、1つは基底文字であるa
しかし、この書記素を表す代替の、旧来の単一の符号点もあります)。一部の符号点は、どの書記素にも属しません (例: ゼロ幅の非ジョイナー、方向性のオーバーライド)。 -
A グリフ は画像であり、通常は フォント (グリフの集合体である)、文字またはその一部を表現するために使用される。フォントは複数のグリフを組み合わせて一つの表現にすることができる。例えば、上記の
ä
が1つのコードポイントである場合、フォントは、空間的に重なった2つの別々のグリフとしてレンダリングすることを選択することができる。OTF の場合、フォントの GSUB と GPOS テーブルは、これを実現するための置換と位置決めの情報を含んでいます。フォントには、同じ字句に対して複数の代替グリフを含めることもできる。
関連
-
[解決済み】Haskell: IntからStringに変換する
-
[解決済み] 文字列を別の変数に分割する
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] UTF-8とBOMなしUTF-8の違いは何ですか?
-
[解決済み] 引数とパラメータの違いは何ですか?
-
[解決済み] フェイク、モッキング、スタビングの違いとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Haskell: IntからStringに変換する
-
[解決済み] swiftで改行する方法
-
[解決済み] Tclスクリプトで文字列の特定の文字を置き換えるには?
-
[解決済み] golangの[]stringと...stringの違いは何ですか?
-
[解決済み] デリミタによる文字列の分割
-
[解決済み] PowerShell 4.0を使用して変数入力からスペースを削除する
-
[解決済み] Luaでstring.gmatch()を使って文字列を分割する
-
[解決済み] Javaで文字列の文字を反復処理する最も簡単/最も良い/最も正しい方法は何ですか?
-
[解決済み】Bashで文字を別の文字に置き換える。
-
[解決済み] 正規表現 \p{L} and \p{N}