tcltk 源代码复杂脚本支持



我正在研究 tcltk 源代码中的阿拉伯语归纳法几周,我从人物评论和 tcltk 源代码文档中了解到 tcltk 不支持阿拉伯语。我的问题是有人知道我可以在 tcltk 中使用哪些库进行国际化支持吗?其次,我可以在tcltk中使用Windows库进行国际化吗,Windows是否存在版权问题?第三,当我们从文本小部件或条目小部件编写文本时,有没有人知道字符串最终存储在哪里?存储和显示的功能是什么?或者存储字符串的链接列表指针在哪里?

双向文本输入和输出

虽然 Tcl 语言支持许多脚本中的文本(目前任何使用 Unicode 基本多语言平面的语言,这是最常见的语言,肯定包括阿拉伯语),但 Tk 存在一些重大问题。特别是,目前绝对没有双向文本输入支持。渲染可能工作正常(特别是在OSX上,但如果Xft做正确的事情,也许在Windows上,也可能在Unix上),但输入肯定是错误的。

我不知道哪些库可能适合或可能不适合使用;在Windows上,Tk目前使用直接对Windows核心库本身的调用来呈现文本。(版权从来没有问题,但许可证是一个更微妙的问题。不过,只要库不是GPL或AGPL,它应该没问题。

字符串存储

字符串最终存储为一系列 Unicode 字符——可能用 UTF-8 编码,但不一定,你不应该太关心它们存储的内容,因为 Tcl 有一些相当有效的字符集翻译引擎——存储在从Tcl_Obj *句柄引用的内存中。您通常不会直接访问该内存,而是会请求可以访问的特定形式(例如,两字节Tcl_UniChar值序列)。细节变得复杂,除非你要非常深入内存管理引擎,否则并不重要。通常,Tcl_Obj *句柄将存储在 Tcl 变量中的某处;这是鼓励的做事方式。

除非您正在使用text小部件。这要复杂得多。请先使用其他东西,因为这个小部件是最难的情况!(它有一个内部可共享的B树模型,这让我非常害怕。

最新更新