
Я набираю документ на иврите, который включает в себя указатели (например, гласные, точки шин и син, дагеш и т. д.) с помощью ConTeXt. Текст на иврите, который я хочу набрать, был нормализован в каноническую форму 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. Я взял шрифт SBL Hebrew с сайтаhttps://www.sbl-site.org/educational/BiblicalFonts_SBLHebrew.aspx. Согласно руководству пользователя шрифта (см. ссылку выше MWE), шрифт должен уметь объединять знаки для формирования правильного глифа независимо от их порядка после согласной, но в данном случае это, похоже, не так.
Есть ли функция OpenType, которую мне нужно включить в моем \definefontfeature
вызове, чтобы исправить это, или есть какой-то модуль или опция, которую я могу включить, чтобы ConTeXt набирал нормализованный Unicode иврит, как если бы он был упорядочен рекомендуемым образом, как это делает XeLaTeX? Я вижу, что модуль uninormalize упоминается вXeLaTeX, LuaLaTeX, fontspec, unicode и нормализация; можно ли это использовать с ConTeXt?
решение1
Я разместил этот вопрос в списке рассылки ConTeXt (https://www.mail-archive.com/[email protected]/), и оттуда я узнал, что в ConTeXt не реализован механизм для переупорядочивания точек иврита таким образом, который бы лучше всего работал с правилами подстановки, реализованными в большинстве шрифтов иврита. Ганс Хаген любезно предложил свою помощь в течение нескольких дней, и он добавил механизм переупорядочивания в стандартный hebrew
набор функций. Теперь MWE в моем вопросе будет работать так, как и ожидалось, если объявление шрифта изменить на \definefontfamily[hebrew] [rm] [SBL Hebrew] [features=hebrew]
.
Эта функция должна быть реализована в последней версии ConTeXt (http://www.pragma-ade.com/download-1.htm).