web-dev-qa-db-ja.com

Unicode文字はどのようにしてフォントのグリフにマップされますか?

Unicodeの各文字にはコードポイントがあるのではないかと思います。フォント内の文字の類似用語は何ですか?

デコードされたファイルをフォント(または最新のフォント置換テクノロジによるフォント)にマップする必要がある場合のプロセスの部分を理解できませんでした。

たとえば、テキストエディタが文字エンコードからファイルをデコードし、ギリシャ語のアルファα(U + 03B1)があるとします。このアプリがフォント内の特定のグリフを選択する正確なプロセスは何ですか?ほとんどのアプリには優先フォントがあります。宅配便だとしましょう。 (そして、ハート♥(U + 2665)のようなまれなUnicode文字の場合、それはデフォルトのフォントではありませんか?アプリはフォントにその文字が含まれていないことをどのように認識しますか?)

フォントには、そのフォントに含まれる記号に関するメタ情報が含まれていますか?

2つのフォントの両方にアルファ記号がある場合、それらは必ずしも同じ「コードポイント」を共有しますか?それとも、Type1、Type3、TrueType、OpenTypeなどのフォントの種類に依存していますか? .。

ポインタや参照をありがとう。

36
Xah Lee

TrueTypeフォントはいくつかのセクションで構成されており、この質問で最も重要なのは、「グリフ」のテーブルと、それらのグリフに文字をマッピングするためのテーブル(「cmap」)です。

簡単に言うと、オペレーティングシステムは、「cmap」テーブルを使用して文字をグリフインデックスに変換し、一致するエントリがないものをデフォルトのグリフに置き換えます。残念ながら、フォントファイル仕様には複数のバージョンがあり(フォントの種類は言うまでもなく)、それらのテーブルには同じマッピングの異なる文字エンコードがあるため、マッピングを実行する実際のプロセスと、テキストの描画が高速になるように効率的に実行します。 、非常に複雑になります。

「コードポイント」は、文字、エンコーディング、フォントから完全に独立しています。特定のコードポイントは普遍的ですが、そのための多くのエンコーディング(UTF-8、UTF-16など)があり、さまざまなフォントのさまざまなグリフインデックスにマップされます。

Appleの開発者向けドキュメントには、TrueTypeフォントの詳細に関するかなり良いセクションがあります。

http://developer.Apple.com/fonts/ttrefman/

具体的には:

グリフテーブル: https://developer.Apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html

文字コード表: https://developer.Apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html

また、 BabelMap というアプリケーションをお勧めします。これにより、フォントに関する興味深い情報がたくさん得られます。具体的には、ツール/ Unicodeの概要、フォント/フォント分析ユーティリティ、およびフォント/フォント情報を確認してください。ここでは、グリフマッピングテーブル全体をクリップボードに抽出できます。

32
Tim Sylvester