让 (Xe)LaTeX 显示字体中未包含的重音和字符

让 (Xe)LaTeX 显示字体中未包含的重音和字符

我使用的字体 (Adobe Garamond Premier Pro) 确实有一些预制的带变音符号的字形,所以我用 (Xe)LaTeX 将它们添加进去。我发现这个帖子并使用那里描述的方法处理变音符号下方的组合点。现在,我正在努力寻找用于 caron 和希伯来字符 aleph 和 ayin 音译的命令。

我所做的就是在序言中未声明这些。因此:

\UndeclareUTFcomposite[\UTFencname]{x01CE}{\v}{a}
\UndeclareUTFcharacter[\UTFencname]{x02BE}{\texthamza}
\UndeclareUTFcharacter[\UTFencname]{x02BF}{\textain}

我遇到的问题是找到正确的代码来更新\v\texthamza\textain“命令”(?)。(\text*如果字体不包含字形,字符还能显示吗?)

我需要一些指导,知道在哪里可以找到这些代码。我试过 ot1enc.def、t1enc.def、ts1enc.def 文件,但没有成功。任何关于如何实现这些字形的建议都将不胜感激。

PS:如果我使用的术语不正确,请原谅我;在这方面我还是个初学者。


好的,关于 caron,到目前为止我所拥有的如下:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}

\UndeclareUTFcomposite[\UTFencname]{x01CE}{\v}{a}
\makeatletter
\renewcommand{\v}[1]
  {\leavevmode \vtop{\offinterlineskip \ialign{##\cr #1\cr
  \setbox0=\hbox{\raise.1ex\hbox{\char"02C7}}\ht0=0pt\dp0=0pt\hidewidth\box0
  \hidewidth\cr}}}
\makeatother

\begin{document}

\huge\v{a}

\end{document}

我不确定间距是否正确,但它看起来很好。任何想法都值得赞赏。谢谢!


根据 egreg 的指导并进行了一些修改,我现在得到的是:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
\newfontfamily{\transliterationfont}{Linux Libertine O}

\UndeclareUTFcomposite[\UTFencname]{x1E63}{\d}{s}
\makeatletter
\renewcommand{\d}[1]
  {\hmode@bgroup
  \o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-1ex}.\hidewidth}\egroup}
\makeatother

\usepackage{newunicodechar}
\newunicodechar{ǎ}{\accent\string"02C7 a}
\newunicodechar{ʾ}{{\transliterationfont{ʾ}}} % U+02BE
\newunicodechar{ʿ}{{\transliterationfont{ʿ}}} % U+02BF

\begin{document}

\huge\emph{hǎlākāh}
\huge\emph{Baba Me\d{s}iʿa}
\huge\emph{ʾErubin}

\end{document}

\d如果 Garamond 字体没有卡龙符号,我想就没有办法通过使用上述方法来绕过在下面添加组合点的问题了,对吗?

答案1

我建议采取以下策略

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\newfontfamily{\hebrewfont}{New Peninim MT}

\usepackage{newunicodechar}
\newunicodechar{ǎ}{\accent\string"02C7 a}
\newunicodechar{א}{{\hebrewfont{א}}} % HEBREW LETTER ALEF
\newunicodechar{ע}{{\hebrewfont{ע}}} % HEBREW LETTER AYIN

换句话说,您设置一个包含所需字符的字体系列,并在缺少字符时切换到它们。对于卡隆,基元\accent应该会给出良好的结果(假设字体中存在独立的重音符号)。

相关内容