2011-12-22 21 views
4

複雑なスクリプトのレイアウトにICUを使用しようとしています。レイアウトエンジンのユーザーガイド(http://userguide.icu-project.org/layoutengine)に例があります。それは非常にシンプルなようですが、サンプルコードでテストを開始したときに、LEFontInstanceの作成に固執しました。ICUレイアウトエンジン

特定のフォントタイプ(ttf/otfなど)に対応するものはありません。彼らはletest.cppファイル内のPortableFontInstanceにttfフォントを定義して使用する例を挙げました。私がこの情報すべてから集めたのは、特定のフォントを名前などで選択する場合、LEFontInstanceから継承した新しいクラスを作成し、フォントの選択を自分で実装する必要があるということです。

よく知られているフォントフォーマットとシステムフォントテーブルの使用をそのようなライブラリに組み込む必要があると思うので、これは私にとっては非常にイライラです。そうでなければユーザーはフォントの読み込みと選択のすべての機能を実装する必要があります。レイアウトエンジンはそれ以降のグリフを扱うことができます。

複雑なスクリプトのレイアウトにICUを使用する価値はありますか(SDKのウィンドウとリンゴはシステムフォントテーブルのフォントを十分にサポートしています)?
ICUレイアウトエンジンを使用する場合の取り組みは? (私はすべてのフォントフォーマットを自分で扱わなければならないことがわかります)

ここには何かがありますか?

+0

また、ユニコード変換と正規表現ライブラリのための非常に便利なAPIです。 – Saba

+0

あなたはICUのレイアウトサンプルを見ましたか? icu/source/samples/layout –

答えて

0

内部でICU LayoutEngineを使用するDタイプのフォントエンジンとDタイプのテキストエクステンションを調べる必要があります。彼らが言うhttp://d-type.com/page/text_layout

を参照してください:

ICU LayoutEngine自体、しかし、フォントファイルに必要なレイアウトテーブルにアクセスするためのインタフェースを提供していません。フォントへのアクセス方法に応じて、このインターフェイスはクライアント(開発者)によって書き込まれる必要があります。言い換えれば、開発者は、実際のフォント(ファイルやメモリなど)のオープン、クローズ、管理、必要に応じてレイアウトテーブルへのアクセス、オプションでICU LayoutEngineへのテーブルの提供を担当します。これまでは、ソフトウェア開発者がICU LayoutEngineをD-Type Font Engineと組み合わせて使用​​する唯一の方法でした。

Dタイプのテキストレイアウト拡張では、これはもはや必要ではありません。 D-Type Text Layout Extensionは、すべてのフォント固有のタスクとICU LayoutEngineとのやりとりを処理します。ソフトウェア開発者は、1つのシンプルな拡張機能を使用して、サポートされているすべての複雑なスクリプトを表示しなくても、独自のフォントアクセスインタフェースを作成することができます。 D-Type Text Layout ExtensionはD-Typeフォントエンジンの拡張版で、複雑なスクリプトを簡単にレンダリングすることができ、開発者はこのプロセスに関連するすべての複雑さやICU LayoutEngineと直接インターフェースする必要がありません。

+0

D-Typeのフリー/オープンソースの代替品はありますか? – optikradio

6

ここでは、ICUのレイアウトエンジンの代わりにHarfBuzzを使用することをお勧めします。まだHBに対してICU APIを使用できるようにするブリッジがありますが、ICUではなくHarfBuzzを使用する必要があります。

-1

なぜICUレイアウトエンジンの代わりにHarfBuzzを使用することをお勧めしますか? HarfBuzzはまだ非常に新しいライブラリであり(バージョン1.0にも達していない)、ドキュメントは事実上なく、その信頼性、安定性、セキュリティは未知であり、十分にテストされていません。 HarfBuzzが成熟する前に、ICU Layout Engineを放棄/廃止することを決定しただけですか?もしそうなら、それは専門家ではないと聞こえます。私は、ICU Layout Engineは当初セキュリティを念頭に置いて設計されておらず、未完成かつ未加工の部品がたくさんあることを知っています(HarfBuzzよりも確かに成熟しています。私は、人々がHarfBuzzになぜ切り替えるべきかを説明するいくつかの堅実な技術的議論および/またはテストデータであなたの推薦をバックアップするべきだと思います。。これは、ICUからの推薦が当てはまる場合にはさらに多くの場合です。はい、HarfBuzzは今後ICU LayoutEngineを廃止する予定ですが、現時点で既存のICUレイアウトエンジンのユーザが新しいライブラリに切り替える理由は何ですか?

+0

私の返信に返信としてこれを投稿することを意味しましたか?私は今このメッセージにしか起こらなかった。これはおそらく、ICUプロジェクトのより直接的な直接のメッセージになります。あなたはDタイプに接続していますか(私はここでメッセージを見る前に気づいていませんでした)?あなたはICUのメーリングリストにいますか? HarfBuzzに関するメッセージは、数か月前にはほとんど返答がなかった。さらに、HarfBuzzは "新しい"かもしれませんが、既存のコードの書き直しです(古いHarfBuzzがフォークだったのと同じです)。 HarfBuzzは既にソフトウェアの出荷(LibreOffice ... Android ... FireFox ... Gnome ...)で広く使用されています。 –

+0

と私はここにスペースがありません...しかし、あなたが私に連絡することができない場合は、バグを報告するか、ICUのリストにsomethignを投稿してください。まだ別の帽子を着て、HarfBuzz統合プロジェクトをJavaに提案するいくつかの詳細があります:http://mail.openjdk.java.net/pipermail/discuss/2013-July/003099.html –

+0

openjdkのリンクはかなりです多くの完全な開示。 HarfBuzz(統一されたオープンソースのレイアウトエンジン)は今や夢でした。今はそれが現実です。 ICULEは、少なくともまだは非難されていません。 http://site.icu-project.org/download/51の私の言葉だけが「強く勧めている」と言います。 –

関連する問題