
我正在使用 ConTeXt 排版希伯來語文檔,其中包括指向(例如,元音、脛骨和罪點、dagesh 等)。我想要排版的希伯來文字已標準化為 Unicode 的 NFC 規範形式。眾所周知,希伯來語點的 Unicode 規範排序與基於其功能的特定點的建議標記排序相衝突(請參閱https://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf有關此主題的更多資訊)。值得慶幸的是,許多排版引擎會自動對點重新排序,以確保它們根據許多字體的規格進行組合。我非常確定 XeLaTeX 就是其中之一,因為即使希伯來文本採用 NFC 形式,它也可以正確地用多個點排版希伯來字母。
我的問題是,ConTeXt 與 LuaTeX 能否正確處理相同的情況?在下面的最小範例中,當字元採用印刷推薦順序時,ConTeXt 排版正確指向希伯來語,但當字元採用 Unicode 規範順序時則不然:
%Setup Hebrew text font:
\definefontfeature[f:pointedhebrew][default][
ccmp=yes,
mark=yes,
script=hebr
]
\definefontfamily[hebrew] [rm] [SBL Hebrew] [features=f:pointedhebrew]
%Set the body font:
\setupbodyfont[hebrew]
%Set up right-to-left alignment:
\setupalign[r2l]
\starttext
%Characters after normalization, in Unicode canonical order (bet + segol + dagesh + final nun):
בֶּן
%A word with characters in typographically recommended order (bet + dagesh + segol + final nun):
בֶּן
\stoptext
我使用 ConTeXt 2020.03.10 版(與 TeXLive 2020 一起發布)進行排版。https://www.sbl-site.org/educational/BiblicalFonts_SBLHebrew.aspx。根據字體的使用手冊(請參閱 MWE 上方的連結),字體應該能夠組合標記以形成正確的字形,無論它們在輔音之後的順序如何,但這裡的情況似乎並非如此。
我是否需要在呼叫中啟用 OpenType 功能來\definefontfeature
解決此問題,或者是否可以包含一些模組或選項來讓 ConTeXt 排版 Unicode 規範化希伯來語,就像按照推薦方式排序一樣,就像 XeLaTeX 一樣?我看到 unnormalize 模組被提到XeLaTeX、LuaLaTeX、fontspec、unicode 和標準化;可以與 ConTeXt 一起使用嗎?
答案1
我在 ConTeXt 郵件列表上發布了這個問題(https://www.mail-archive.com/[電子郵件受保護]/),從那裡我了解到 ConTeXt 沒有實現一種機制來重新排序希伯來語點,這種機制最適合大多數希伯來語字體中實現的替換規則。漢斯·哈根在幾天的時間裡慷慨地提供了幫助,他在標準hebrew
功能集中添加了重新排序機制。現在,如果字體聲明更改為\definefontfamily[hebrew] [rm] [SBL Hebrew] [features=hebrew]
.
此功能應該在最新版本的 ConTeXt 中實作(http://www.pragma-ade.com/download-1.htm)。