我尝试使用长音符呈现斜体小写字母u
,但结果始终不是小写字母。之所以采用这种组合,是因为我的标题以小写字母呈现,而我的一个章节标题包含日语文学作品的名称,该名称应为斜体。
以下是一个例子:
% !TEX encoding = UTF-8 Unicode
% !TEX program = xelatex
\documentclass{book}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Linux Libertine}
\begin{document}
\textsc{Test: \emph{Shōchū}}
\end{document}
结果是:
我的猜测是,我的字体缺少带有变音符号的预制斜体小型大写字母,因此会退回到非小型大写字母字形,但无论我尝试哪种字体,结果总是一样的,所以我猜大多数字体不将其作为预制字形包含。
即使尝试使用 unicode 组合宏命令 (U+0304) 而不是常规宏命令u
来手动组成字符也无法解决这个问题。
是否有某种方法可以强制 LaTeX(XeLaTeX)手动组合这个字符,以便它按预期显示,或者有任何其他方法来实现所需的效果?
答案1
你问,
还有...其他方法可以达到想要的效果吗?
该Stix Two Text
字体具有小写/斜体/带长音符号的字母字形。接下来的两行分别由Linux Libertine O
和组成Stix Two Text
,同时注意确保两种字体的 x 高度相等。
可以肯定的是,Stix Two Text
是 的克隆Times Roman
,它可能适合也可能不适合您的字体相关需求。但是,您可以将 的使用限制Stix Two Text
在页眉行中,对吗?
% !TEX program = xelatex %%% or !TEX program = lualatex
\documentclass{book}
\usepackage{fontspec,iftex}
\begin{document}
\setmainfont{Linux Libertine O}
\textsc{Lorem Ipsum: \textit{Shōchū}}
\ifxetex
\setmainfont{STIX2Text-Regular}%
[Path=/Users/mico/Library/Fonts/, % adjust this line as needed
Scale=MatchLowercase,
ItalicFont=STIX2Text-Italic]
\else\ifluatex
\setmainfont{Stix Two Text}%
[Scale=MatchLowercase]
\fi\fi
\textsc{Lorem Ipsum: \textit{Shōchū}}
\end{document}
答案2
使用 lualatex 时,组合重音或多或少可以起作用(位置并不完美)
\documentclass{book}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Linux Libertine O}
\begin{document}
\textsc{Test: \emph{Shōchū Sho^^^^0304chu^^^^0304}}
\end{document}
使用 xelatex(或 harf 模式)时,harfbuzz 会干扰并替换字形。您只能选择定义自己的重音命令来为字符设置规则,或者切换到带有长音符号的小写字母字体。默认的 Latin Modern 字体 eg 也可以使用(左侧是您使用 xelatex 得到的字体):