-1

私は tcltk ソース コードでのアラビア語の導入に数週間取り組んでいます。People Reviews と tcltk ソース コード ドキュメントから、アラビア語が tcltk でサポートされていないことを知りました。私の質問は、国際化サポートのために tcltk で使用できるライブラリを誰か知っていますか? 次に、国際化のために tcltk で Windows ライブラリを使用できますか? Windows の著作権の問題はありますか? 第三に、テキスト ウィジェットやエントリ ウィジェットからテキストを書き込んだときに、文字列が最終的にどこに格納されるか知っている人はいますか? 保存および表示するためのその機能は何ですか? または、文字列を格納するリンクリスト ポインタはどこにあるのでしょうか。

4

1 に答える 1

2

双方向のテキスト入出力

Tcl 言語は多くのスクリプト (現在、最も一般的な言語であり、間違いなくアラビア語を含む Unicode Basic Multilingual Plane を使用するすべてのもの) のテキストをサポートしていますが、Tk にはいくつかの重大な問題があります。特に、現時点では双方向テキスト入力のサポートはまったくありません。レンダリングは正しく動作する可能性があります (特に OSX では、Xft が正しく動作する場合は Windows や Unix でも可能です) が、入力は明らかに間違っています。

どのライブラリが使用に適しているか、または適していないかについてはわかりません。Windows では、Tk は現在、Windows コア ライブラリ自体への呼び出しを直接使用してテキストをレンダリングします。(著作権には決して問題はありませんが、ライセンスはより微妙な点です。それでも、ライブラリが GPL または AGPL でない限り、問題ないはずです。)

文字列ストレージ

文字列は最終的に一連の Unicode 文字として保存されます — おそらく UTF-8 でエンコードされますが、必ずしも.Tcl_Obj *ハンドルから参照されるメモリに格納されます。通常、そのメモリに直接アクセスすることはありませんが、代わりに、アクセスできる特定の形式 (2 バイトTcl_UniChar値のシーケンスなど) を要求します。詳細は複雑になり、メモリ管理エンジンの内部を非常に深く掘り下げない限り、それほど重要ではありません。通常、Tcl_Obj *ハンドルは Tcl 変数内のどこかに格納されます。それが推奨される方法です。

textウィジェットで作業している場合を除きます。それは非常に複雑です。このウィジェットは可能な限り難しいケースなので、最初に何か他のもので作業してください! (内部で共有可能な B ツリー モデルがあり、これには非常に恐れています。)

于 2013-11-07T19:59:54.927 に答える