オペレーティング システムの文字セットとフォントに違いがあるのでしょうか。. 文字セットが文字のセットを整数値にマップすることは知っていますが、フォントが登場すると漠然とした気持ちになります.. . それらがどのように関連しているのだろうか?
2 に答える
文字セットは、符号なし整数から抽象文字へのマッピングです。たとえば、Ascii 文字セットでは、数値 103 (10 進数、16 進数で 67) はラテン語の小文字 g にマップされます。論理的なレベルでは、文字セットはコンピュータと関係がある必要はありません (ただし、この概念は情報技術において明らかに実用的な関連性があります)。
現代的な意味でのフォントは、文字を特定のグリフとして特定の形状でレンダリング (表示) するためのコンピューター コードです。
内部的には、フォントはグリフ インデックスだけでなく、文字セットに基づくインデックス番号も使用します。フォントを使用して文字 g をレンダリングする場合、文字セット内の番号によって内部的に表され、この番号を使用してフォント内のグリフを見つけます。つまり、文字番号はグリフ番号にマップされます。(テキストの文字セットがフォントのコーディングで使用される文字セットと異なる場合は、この前に文字セット間の追加の変換を実行する必要があります。)
これは多くの場合、文字番号でインデックス付けされたグリフの配列としてフォントを記述することで簡略化されます: インデックス、たとえば 103 は、(文字 g の) グリフを含む 103 番目の仮想ボックスを取得するために使用されます。基本的な考え方を理解するには便利ですが、実際には単純化しすぎています。多くのフォントでは、文字 g に対して 2 つ以上のグリフ (1 ループ形式と 2 ループ形式、または通常の形式と小文字の形式など) がありますが、そのうちの 1 つはデフォルトのグリフであり、その他はフォームは特別なツールで選択する必要があります。
フォント ファイルには、文字を (文字の「インデックス」によって) 表示可能なベクトルまたはビットマップ データにマッピングする情報が含まれています。概要については、 http://v1.jontangerine.com/log/2008/08/typeface--fontを参照してください。
文字セット - たとえば、 http ://www.iana.org/assignments/character-sets/character-sets.xml を参照してください。キーボードは関係ありません。インデックス (整数) から文字 (概念、特定のグリフではありません)。
あなたが説明するものは、キーマップ(afaik)という名前です。
あなたの目的にはそれで十分だと思います。必要に応じて、より深く掘り下げるためのいくつかの指針を提供します。
更新 魔法のチェーン(おそらく少しぼんやりしていて、私はそれを調査していませんでした。見つけたエラーを修正してください):
キーボードのキーを押すと、割り込みがトリガーされます。これがキー イベントです。キーボードとコンピューターの間のワイヤプロトコルはわかりませんが、キーダウンの場合は 0..127、キーアップの場合は -1..-128 のように、キーごとに 1 バイトだと思います。
オペレーティング システムはキーボードから割り込みを受け取り、その内部状態を更新し、押された ctrl / shift / alt 修飾子などの情報を集約します ... キーボードのレイアウト ( keymap ) と使用する文字セットに関する知識が考慮されるため、文字を取得します (たとえば、"a" + "shift" -> "A" のキー イベント、これは簡単です。しかし、"Ä" のようなものを入力することもできます。これは、すべての文字セットに含まれているわけではなく、含まれていません)すべてのキーボードで)。これで、どの文字が押されたかがわかります。しかし、それは表示できるものではありません。これは単なる概念です (次のステップを参照)。
ホットキー ハンドラーまたはその他のものがキーをインターセプトせず、キーがアプリケーションに到達する場合、画面またはプリンターに何を描画するかを知る必要があります。「A」はすべて同じではありません。手書きの「A」を 2 つ取ると、おそらく異なって見えるでしょう。フォントは、文字を表すもの (文字のイメージ) を描画または印刷するために使用されます。ほとんどのユーザーとほとんどのプログラムでは、フォントは文字の外観、それを生成するためのデータを含むファイル、および通常、太字、斜体、大文字、およびそれらの組み合わせなどのすべてのバリアントを含みます。
型の専門家 (私は専門家ではありません。ただの愛好家です) は、このように区別がつかないことをあまり好みません。
書体は、グリフ(特定の外観を持つ文字)の説明データを含むフォント ファイルに格納されているフォントバリアント (上記参照)のファミリーです。フォントには、カーニング(文字間の距離)、ヒンティング(特定のサイズで表示する方法の詳細)、代替(文字の代替グリフ)、合字(文字のグループを単一のグリフに結合する方法) も含まれる場合があります。フォント ファイル形式 (TrueType、オープン タイプ、これらすべての Web フォント形式) にはさまざまな機能があります。
元のビットマップの倍数で表示されない場合、どろどろに見える単一解像度のビットマップ フォントがあります。アウトラインの数学的な記述を含むベクター フォントがあり、任意の解像度にスケーリングでき、鮮明に見える場合があります (ヒントが重要になる場合があります。また、cleartype、アンチエイリアシング、サブピクセル アンチエイリアシング)。
フォントは外観によって分類できます:プロポーショナル("i" は "m" よりも細い) とモノスペース(すべてのグリフの幅が同じ)、サンセリフとセリフ。特定の類似性がある場合、それらはフォント ファミリーとして分類されます。グロテスク,フラクチャ,シンボル,サイン, ...
今のところこれですべてです。おそらく、すべてを正しく理解できていません。しかし、それは始まりです。詳細については、お気に入りの検索エンジンに太字のものを貼り付けてください。親愛なる読者がエラーを見つけた場合: コメントをいただければ幸いです。これを更新します。