我正在尝试重现历史上的排版示例,但有些东西我不知道如何获得:诗歌以斜体形式打印,但每节诗句的首字母大写字母是向上的,并且诗句第一个单词的首字母和下一个字母之间有一些斜体校正。此外,诗句中的所有大写字母也都是向上的。
我觉得我应该定义一个新的字体系列,但尝试改编此网站上的一些代码会导致错误 ( !Extra \endgroup
)。如果有人能解释如何做到这一点,我将不胜感激。
答案1
根据你的需求和改变的字符类别数量调整 Andrey Vihrov 的代码,我可以提供
\documentclass{article}
\usepackage{fontspec}
\XeTeXinterchartokenstate=1
\newXeTeXintercharclass \uppercaseclass
\makeatletter
% Assign the new class to all Latin capital letters
\@tempcnta=`\A
\loop\unless\ifnum\@tempcnta>`\Z
\XeTeXcharclass \@tempcnta \uppercaseclass
\advance \@tempcnta by 1
\repeat
\makeatother
% Setup font change
\XeTeXinterchartoks 0 \uppercaseclass = {\begingroup\upshape}
\XeTeXinterchartoks \uppercaseclass 0 = {\endgroup}
\XeTeXinterchartoks 4095 \uppercaseclass = {\begingroup\upshape}
\XeTeXinterchartoks \uppercaseclass 4095 = {\endgroup}
\begin{document}
\itshape
Once Upon a Time, there was a Beautiful Princess\ldots
\end{document}
答案2
使用 luatex/luaotfload,您可以(在 texlive 2016 和最新的 miktex 中)构建组合字体。恕我直言,目前还没有高级接口,但除此之外,它还可以工作:
\documentclass[]{article}
\usepackage{fontspec}
\font \one = file:EBGaramond12-Italic.otf
\font \two = file:EBGaramond12-Regular.otf
\font \onetwo = "combo: 1 -> \fontid \one ;
2 -> \fontid \two , 0x41-0x5A;"
\begin{document}
\onetwo Some Text with Capital XYabcXY
\end{document}
答案3
另一种选择是更改 .otf 或 .ttf 文件,然后合并字体系列,如下所示:
\newfontfamily\myFont{my-awesome-font}[
Path = ./Fonts/awesome-font/,
Extension = .ttf,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic
]