1

ドキュメントでこれについての情報を見つけることはできません。常に使用される関数はFT_Get_Char_Index(ftFace、i);であり、ユニコードコードポイントは1つのみです。しかし、結合された文字はどうですか?複数のコードポイントを取るものはどうですか?freetypeで結合されたユニコード文字をレンダリングする方法は?

これらの文字の一部は、別の(単一の)コードポイントとして表現されるために単純にユニコード正規化される可能性があることを理解していますが、そうでない文字もあります。私たちはそれらをどのように扱いますか?

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

freetypeで正しく処理できない場合、どうすればよいですか?

答えて

2

私が正しく理解すれば、何らかのレイアウトライブラリを追加しなくても、あなたが望むことをすることはできません。レイアウトライブラリは、OpenTypeフォントの補助情報を使用して、(他の多くのものの中でも)結合マークの配置に使用されます。例えば、あなたがU + 0041、U + 0301(ラテン大文字A、急性マークを組み合わせる)というシーケンスを持っているとしましょう。急なマークが 'A'の形と衝突するので、一般に、レンダリング空間内でのデフォルトの位置合わせでこれらの2つを一緒に叩くことはできません。

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

関連する問題