Unicode に含まれていない文字 (つまり、アクセント付きのキリル文字) もありますが、シーケンスを組み合わせて作成できます。私が理解しているように、可能な結合文字シーケンスは、使用されるレイアウト エンジンおよび/またはフォントで定義されています。私は正しいですか?では、可能なすべての結合シーケンスを取得するにはどうすればよいでしょうか?
3 に答える
任意の組み合わせシーケンスを作成しようとすると、レイアウト エンジンとフォントの組み合わせで失敗する可能性があるという点で、あなたは正しいです。この問題の解決策は、Unicode 標準の範囲外です。
Unicode 6.2の第 2 章から:
すべての結合文字は、任意の基本文字に適用でき、原則として、任意のスクリプトで使用できます。他の文字と同様に、結合文字を 1 つのブロックまたは別のブロックに割り当てると、その主な用途のみが識別されます。適用される文字の範囲を定義または制限することを意図したものではありません。Unicode 標準では、文字コードのすべてのシーケンスが許可されています。
これは、すべての可能な組み合わせを等しく適切にサポートする実装上の義務を作成しません。したがって、アラビア語の注釈マークを漢字またはデバナーガリーの子音に適用することは許可されていますが、レンダリングで適切にサポートされたり、意味を成したりする可能性はほとんどありません。
特定の Unicode 文字シーケンスを表示できるかどうか、およびどのように照会できるかは、特定のレイアウト エンジンによって異なります。
結合文字は、結合文字を含む任意の文字の後に現れる可能性があるため、Unicode で可能な結合文字シーケンスのセットは文字通り無限です (ただし、数え切れないほど無限です)。ときどき、これを StackOverflow で使用しているのを目にすることがあります。これは、文字の後に結合文字の長い文字列を含む文字を使用しています。
したがって、リストは無限になります。自動的に生成できますが、あまり役に立ちません。
アクセント付きのキリル文字は、構成済みの文字としてではなく、Unicode に含まれています。Unicode では、アクセント付きキリル文字は単に 2 つの Unicode コード ポイントが連続したものです。
プレゼンテーションの品質は、使用するフォントとレンダリング エンジンによって異なります。原則として、新しいソフトウェアは я́ (鋭いキリル文字の ya) のような単純なケースを適切に処理できますが、古いソフトウェアには単純化されたレンダリング ルーチンがあり、場合によっては分音記号の位置が間違っている場合があります。高品質のレンダリングには、ソフトウェアが基本文字の寸法に関する情報にアクセスし、それに応じて分音記号を配置する必要があります。
分音記号は、基本文字と同じフォントから取得することが重要です。「クロスフォント」の組み合わせは、悪い結果やひどい結果になる傾向があります。そのため、最初に結合鋭角 U+0301 を含むフォントを確認し、残りの候補の中からフォントを選択する必要があります。
Unicode には「<a href="http://www.unicode.org/reports/tr34/" rel="nofollow">名前付き文字列」という概念があります。非公式に言えば、文字の後に結合マークが続くようなシーケンスに、その組み合わせが構成済みの文字として存在しない場合に、何らかのアイデンティティと「特徴」を与えるために使用できます。与えられた動機は次のとおりです。より正式には、他の標準では、一連の文字によって Unicode で表されるエンティティを参照する必要がある場合があります。マッピング テーブルは、他の標準の単一文字を一連の Unicode 文字にマッピングする場合があり、フォントまたはキーボードのレパートリー カバレッジのリストでは、単一の Unicode コード ポイントに対応しないエンティティを参照する必要がある場合があります。」でも、レジストリには、キリル文字をベースとするシーケンスは含まれていません。