3

現在、CoreGraphics と CoreText を使用して単純なビットマップ フォント ジェネレーターを作成しています。次の方法でフォントのカーニング テーブルを取得しています。

CFDataRef kernTable = CTFontCopyTable(m_ctFontRef, kCTFontTableKern, kCTFontTableOptionNoOptions);

そしてそれを解析するとうまくいきます。カーニング ペアは、カーニング ペアのグリフ インデックス (つまり CGGlyph) を提供し、それらを Unicode (つまり UniChar) に変換する必要がありますが、残念ながら、これは非常に簡単ではないようです。私が得た最も近いものは次のものを使用していました:

CGFontCopyGlyphNameForGlyph

CGGlyph のグリフ名を取得するには、名前を Unicode に変換する方法がわかりません。これは、実際にはquoteleftなどの単なる文字列であるためです。私が考えたもう1つのことはkCTFontTableCmap、グリフからUnicode IDへのマッピングを手動で行うために自分自身を解析することでしたが、それはタスクにとって余分な作業のようです. これを行う簡単な方法はありますか?

ありがとう!

4

1 に答える 1

5

特定のグリフの Unicode を取得する直接的な方法はわかりませんが、次の方法でマッピングを作成できます。

  • でフォントのすべての文字を取得しCTFontCopyCharacterSet()ます。
  • を使用して、これらすべての Unicode 文字をそれぞれのグリフにマップしCTFontGetGlyphsForCharacters()ます。
  • 各 Unicode 文字とそのグリフについて、マッピングglyph -> Unicode をディクショナリに保存します。
于 2013-08-14T18:11:28.027 に答える