2009-08-05 15 views
4

私は、テキスト文字のカーニングをより良くサポートするために、アプリケーションのテキストレンダリングを改善することを任されています。私たちのアプリケーションは、テレビに表示される画像を生成するので、画質が最も重要です。したがって、生成する出力の外観のわずかな改善でさえ、非常に便利です。Kerningの文字を入力しないでください

現在のテキストエンジンは、Uniscribeを使用して実装されていますが、これは理想的なソリューションです。前述のようにhereは、複雑なスクリプトを使用して状況に応じた方法で合字置換をサポートします。また、右から左の言語とBiDiも処理します。アラビア語/筆記体の言語を完全に表現する必要があるため、これはすべて重要です。

したがって、Uniscribeがグリフカーニング情報を出力していないと思われるようです。問題を示すためにスクリーンショットを添付しました。

alt text http://www.aliparr.net/kerning.jpg

私のアプリは、「モノスペース」表示されていることを、すべてのグリフにメモ帳と同じように実行します。 Photoshop CS2では、 'T'の上部にある橋が「e」にうまく張り出していることに注目してください。私はこれを再現したい。

私はPango/Freetypeのような他のAPIについて知っていますが、Uniscribeが他のすべてで非常に優れている場合は、このタスクの最後の1%を実行するために、

私はUniscribeを使用してステップがありませんか?これに最適な解決策は何ですか? Freetypeは軽量な方法でカーニング情報をエクスポートできるので、既存のUniscribeソリューションと統合することができますか?

N.b.我々はWindows上で実行する必要があります - プラットフォームの移植性はありがたいことですが、私は今、心配する必要はありません。

事前に乾杯!

+0

私はあなたのスクリーンショットを見ることができません。私が見るのは「alt text」です。 – tzot

+0

ええと、それはスクリーンショットです –

+2

要求されたURL /kerning.jpgはこのサーバー上に見つかりませんでした。 –

答えて

0

は、Windows XP上で実行している場合、私はあなたがコントロールパネルの地域のオプション]で、次を有効にしているために持っていると信じています:

  • 複雑なスクリプトと(タイを含む)、右から左に記述する言語用のファイルをインストールします。ユニスクライブカーニングが機能するため
  • は、東アジア言語

のファイルをインストールします。

1

Uniscribeを使用して手動でカーニングを実装することができます。

これは、手動でという引数をScriptTextOutに作成することで行いました。

// Initially the justification is simply a copy of the advance array 
int* piJustify = (int *)malloc(pcGlyphs); 
memcpy(piJustify, piAdvance, pcGlyphs); 

// Apply kerning to each glyph 
for (size_t i = 0; i < pcGlyphs; i++) { 
    if (psva[i].fClusterStart) { 
     // Only add kerning to the first glyph in each cluster 
     piJustify[i] += myKerning; 
    } 
} 

これは、あなたがすでにpcGlyphspiAdvancepsvaためScriptItemize、ScriptShapeとScriptPlaceと呼ばれている前提としています。

0

デフォルトでは、選択したフォントがサポートしている場合、ScriptShapeはカーニングを適用します。しかし、あなたがそれをオン/オフにしたい場合は、OpenType Apiをuniscribeする必要があります。

関連する問題