答案1
stackinset
可以使用包中的 来调整变音符号的位置stackengine
。这个想法是为字母和变音符号的每种组合定义一个单独的宏。这违背了使用 unicode 的目的,但结果是符合要求的。
参数\stackinset
是插入符号相对于基本符号的水平对齐(左、中、右)、水平偏移(正或负)、垂直对齐、垂直偏移、插入符号(称为插入)、基本符号(称为锚点)。
梅威瑟:
\documentclass{article}
\usepackage{fontspec}
\usepackage{stackengine}
\setmainfont{CMU Serif}
\begin{document}
\emph{ḧ ĥ ḋ} (default)
\def\huml{\stackinset{c}{-1pt}{t}{-2pt}{\"{}}{h}}
\def\hcar{\stackinset{c}{-1pt}{t}{-2.5pt}{\^{}}{h}}
\def\ddot{\stackinset{c}{2.5pt}{t}{-3.5pt}{$\cdot$}{d}}
\vspace{2mm}
\emph{\huml\ \hcar\ \ddot} (with \texttt{\textbackslash stackinset})
\end{document}
结果: