【发布时间】:2021-09-18 10:23:51
【问题描述】:
我正在使用 Manjaro Linux KDE 和最新版本的 Tcl 和 Tk,并试图在文本小部件中显示希伯来语。在测试中,希伯来文文本被粘贴到 Kate 文本编辑器中的 Tcl 脚本中,并以正确的顺序出现,从右到左带有复合字符。
在 Tcl/Tk 中不使用特定字体,文本从左到右打印并分离复合字符的组成部分,使得元音点和音节标记显示为单独的字符。使用SBL Hebrew font后,单词看起来更好,但元音点位置不正确,仍然从左到右书写。我尝试使用 \u200f 和 \u200e 标记,但没有区别;但我真的不知道我在那里做什么,只是尝试在希伯来语单词上加上前缀和后缀。颠倒字符串有帮助,但元音点不与辅音结合。
我没有使用 Tkinter,但这个较旧的 SO post 似乎表明这是 Tcl 的 Linux 问题。
如果我使用 Tcl 从 SQLite 中提取希伯来语并使用 puts 将其写入命令行,它会正确显示。此外,如果我从 Tk 文本小部件复制反转的文本并将其粘贴到这个 SO 问题中,它会以正确的顺序显示。澄清一下,这里的反转不是指使用string reverse,只是它在 Tk 中出现反转,但是当粘贴到这个 SO 框中时,它显示正确。
你能告诉我我做错了什么以及如何让它正确显示吗?
我尝试关注document 关于 Tcl 国际化和编码的内容,但没有关注这会如何影响在文本小部件中显示希伯来语。我还遇到了一个网站,其中包含unicode editor 的代码,它显示了包括希伯来语在内的多种语言,但我也无法遵循该代码。我尝试运行代码,如果选择希伯来语,它会从右到左书写,但我看不到元音点或音标;但我对输入希伯来语不太了解。
谢谢。
.tw tag configure heb -font {"SBL Hebrew" 18 normal}
.tw insert end "בְּרֵאשִׁ֖ית" "heb"
# Also tried "בְּרֵאשִׁ֖ית\u200f" and "\u200fבְּרֵאשִׁ֖ית".
# and "בְּרֵאשִׁ֖ית\u200e" and "\u200eבְּרֵאשִׁ֖ית".
# Tried .t insert end [string reverse $h ] "heb", which order the
# consonants but the vowel points and cantillation marks are not correct.
这是正确的渲染。
这是来自 Tk。第一个是正常顺序,第二个使用字符串反转。可以观察到,元音点不在辅音“上”,并且音标不正确。我对希伯来语知之甚少,但我可以看出它们不匹配,并且似乎被打印为单独的字符而不是组合。我认为看起来像“W”的希伯来字母下看起来像“t”的东西是两个相互重叠的字符——一个点和符号有点类似于正确渲染中的左括号。
我不知道为什么,但是在重新启动并安装下一批更新后,并不是说它们与 Tk 有任何关系,当没有设置字体时,渲染是不同的。但是,一旦设置了 SBL 希伯来语字体,字符就会如上所示被分开。
【问题讨论】:
-
为此,您需要包含错误的屏幕截图。我怀疑问题出在字体渲染引擎上;我真的帮不上忙,因为我在使用完全不同的字体渲染器的 macOS 上。
-
@DonalFellows 谢谢。我添加了屏幕截图。我还没有在 Windows 上尝试过。我引用的一篇 SO 帖子声称它在 Windows 上按预期工作。