![使用变音符号呈现斜体和小型大写字母,或手动输入变音符号](https://linux22.com/image/407280/%E4%BD%BF%E7%94%A8%E5%8F%98%E9%9F%B3%E7%AC%A6%E5%8F%B7%E5%91%88%E7%8E%B0%E6%96%9C%E4%BD%93%E5%92%8C%E5%B0%8F%E5%9E%8B%E5%A4%A7%E5%86%99%E5%AD%97%E6%AF%8D%EF%BC%8C%E6%88%96%E6%89%8B%E5%8A%A8%E8%BE%93%E5%85%A5%E5%8F%98%E9%9F%B3%E7%AC%A6%E5%8F%B7.png)
我尝试使用长音符呈现斜体小写字母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 得到的字体):