自由连字符在印地语的 LuaLaTeX 中有效,但在梵语中无效,尽管脚本和字体相同

自由连字符在印地语的 LuaLaTeX 中有效,但在梵语中无效,尽管脚本和字体相同

我正在排版一本以英语为主要语言、以梵语为第二语言的书。我在 MiKTeX (22.10) 上使用 LuaLaTeX (LuaHBTeX,版本 1.15.1) 对于梵语中的长复合词,我只想在特定的单词边界处使用连字符。为此,我使用\hyphenrules{nohyphenation}and \-(自由连字符)

这是我的 MWE。

\documentclass[twoside]{book}
\usepackage[main=english]{babel}
\babelprovide[import]{sanskrit}
\babelprovide[import]{hindi}
\babelfont[english]{rm}{Charis SIL}
\babelfont{rm}[Renderer=HarfBuzz,Script=Devanagari]{Shobhika}
\usepackage{ragged2e}
\begin{document}
\fontsize{12}{18}\selectfont
\chapter{Test}
\section{Hindi}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{hindi}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\section{Sanskrit}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{sanskrit}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\end{document}

印地语和梵语的脚本(天城文)、字体(Shobhika)和内容相同。但是,软连字符在印地语(\foreignlanguage{hindi})时可以正常工作,但在梵语(\foreignlanguage{sanskrit})时则不行。这是我看到的输出

在此处输入图片描述

我遗漏了什么?如何让自由连字符在梵语中像在印地语中一样起作用?

答案1

针对 Sanskrit 的 babel 设置文件 ( babel-sa.ini) 包含以下内容:

[identification]
charset = utf8
version = 0.11
date = 2021-04-2430
name.english = Sanskrit
name.babel = sanskrit
name.polyglossia = sanskrit
tag.bcp47 = sa
language.tag.bcp47 = sa
tag.bcp47.likely = sa-Deva-IN
tag.opentype = SAN
script.name = Devanagari
script.tag.bcp47 = Deva
script.tag.opentype = deva
level = 0
encodings = 
derivate = no

;; some content skipped

[typography]
frenchspacing = yes
hyphenrules = sanskrit
lefthyphenmin = 1
righthyphenmin = 3
hyphenchar = 
prehyphenchar = 0
posthyphenchar = 
exhyphenchar = 
preexhyphenchar = 
postexhyphenchar = 
hyphenationmin = 
; The syntax is liable to change in 'other' values
hyphenate.other.locale = "200C "200D
hyphenate.other.script = "0CF1 "0CF2

这里最重要的部分是prehyphenchar = 0,它关闭连字符。

您可以通过将此设置更改为空值(而不是0)来将其重新打开,默认为连字符-

\documentclass[twoside]{book}
\usepackage[main=english]{babel}
\babelprovide[import,typography/prehyphenchar=]{sanskrit}
\babelprovide[import]{hindi}
\babelfont[english]{rm}{Charis SIL}
\babelfont{rm}[Renderer=HarfBuzz,Script=Devanagari]{Shobhika}
\usepackage{ragged2e}
\begin{document}
\fontsize{12}{18}\selectfont
\chapter{Test}
\section{Hindi}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{hindi}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\section{Sanskrit}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{sanskrit}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\end{document}

通过此设置,印地语和梵语版本的输出相同。

相关内容