1

ドキュメントでこれに関する情報を見つけることができないようです.常に使用される関数は FT_Get_Char_Index(ftFace, i); であり、1つのユニコードコードポイントしか取りません. しかし、結合された文字、つまり複数のコード ポイントを使用する文字についてはどうでしょうか?

これらの文字の一部は、単純に Unicode で正規化して別の (単一の) コード ポイントとして表すことができることは理解していますが、できない文字もありますよね? それらにどのように対処しますか?

私は汎用のテキスト編集ソフトウェアを作成しており、すべての Unicode をサポートしたいと考えています。しかし、マルチコードポイント文字のこの問題は非常に小さいため、問題に値しないのではないでしょうか? そのような文字は、いくつかの主要なアジア言語でかなり一般的ではありませんか?

freetype で適切に実行できない場合、どうすればよいですか?

4

1 に答える 1

2

私が正しく理解していれば、何らかのレイアウトライブラリを追加で使用しないと、やりたいことができません。レイアウトライブラリは、OpenTypeフォントの補足情報を使用して、(他の多くのものの中でも)結合マークを配置します。たとえば、シーケンスU + 0041、U + 0301(Latin Uppercase A、Combining Acute Mark)があるとします。一般に、Acute Markは「A」の形状と衝突するため、これら2つをレンダリングスペース内のデフォルトの位置と一緒に叩くことはできません。

レイアウトライブラリは、このシーケンスのフォントのOpenTypeレイアウトテーブルを分析し、シーケンスの各アイテムを適切に配置するために使用できる配置情報を返します。たとえば、シーケンスを指定すると、「「A」をそのままにして、鋭角の50単位を右に、90単位を上にシフトする」と表示される場合があります(これよりもかなり複雑ですが、うまくいけばアイデアが得られます)。

于 2012-04-29T15:39:29.570 に答える