Я использую fontspec
пакет с LuaLaTeX
. Мне интересно, есть ли способ автоматически устанавливать цифры в виде маленьких заглавных букв по умолчанию, подобно тому, как вы можете устанавливать цифры в старом стиле/в нижнем регистре по умолчанию через fontspec
параметры пакета Numbers=OldStyle
илиNumbers=Lowercase
Примечание: Не все шрифты поддерживают цифры в заглавных буквах. Я использую бесплатный шрифт в своем MWE, который поддерживает цифры в заглавных буквах.
Я задаю этот вопрос, потому что в настоящее время я проверяю, легче ли или приятнее ли читать набор цифр маленькими заглавными буквами, чем обычные заглавные моноширинные цифры. Было бы замечательно иметь более простой способ вывода цифр маленькими заглавными буквами.
\documentclass{article}
\newcommand{\alphabet}{abcdefghijklmnopqrstuvwxyz}
\newcommand{\digits}{0123456789}
\usepackage{fontspec}
\setmainfont{Source Serif Pro}%Available for free on Google Fonts.
[
%Numbers=OldStyle%
%Numbers=Lowercase%
]
\begin{document}
\textbf{Regular letters and digits:}
\par
\alphabet\quad\digits
\par
\textbf{Small caps letters and digits:}
\par
\textsc{\alphabet\quad\digits}
\par
\textbf{Regular letters and Oldstyle digits:}
\par
\alphabet\quad\oldstylenums{\digits}
\end{document}
ПРАВКА 1: Я добавил фотографию, на которой цифры написаны маленькими заглавными буквами.
ПРАВКА 2: Я ищу решение, если это возможно, которое заставит цифры отображаться маленькими заглавными буквами.по умолчаниюбез необходимости использовать \textsc
или любой другой внутритекстовый макрос. Таким образом, \textsc{1234}
и 1234
должны выглядеть одинаково. Если это невозможно, конечно, я всегда могу прибегнуть к созданию внутритекстового макроса.
решение1
Итак, вам нужны цифры, соответствующие по размеру малым заглавным буквам (насколько мне известно, у них нет названия, поскольку термин «маленькие заглавные буквы» обычно используется только для букв), но вы хотите, чтобы они были напечатаны в этом стиле независимо от окружающего стиля текста.
Вы можете выбрать определенные функции OpenType, используя fontspec
опцию RawFeature=+xxxx
, где xxxx
— это аббревиатура соответствующей функции OpenType. Таким образом, вы можете выбрать RawFeature=+smcp
включение малых заглавных букв в целом. К сожалению, Source Sans Pro не содержит функции, которая позволяет вам выбирать только эти маленькие цифры, не затрагивая другие буквы, и с другой стороны, кажется, что напрямую невозможно выбрать такие функции только для цифр, используя fontspec
.
Однако вы можете использовать fonts.handlers.otf.addfeature
и улучшать шрифт с помощью собственной пользовательской функции OpenType, которую затем можно использовать с fontspec
. В следующем примере я создал функцию xnum
, которая заменяет глифы цифр вариантами с малыми капителями (хотя вам нужно будет поискать соответствующие названия глифов в шрифте):
\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.handlers.otf.addfeature {
name = "xnum",
type = "substitution",
data = {
["zero"] = "zero.sc",
["one"] = "one.sc",
["two"] = "two.sc",
["three"] = "three.sc",
["four"] = "four.sc",
["five"] = "five.sc",
["six"] = "six.sc",
["seven"] = "seven.sc",
["eight"] = "eight.sc",
["nine"] = "nine.sc",
},
}
}
\setmainfont[RawFeature=+xnum]{Source Serif Pro}
\newcommand{\alphabet}{abcdefghijklmnopqrstuvwxyz}
\newcommand{\digits}{0123456789}
\begin{document}
\textbf{Regular letters and digits:}
\par
\alphabet\quad\digits
\end{document}
Другой способ — создать combofont
с помощью пакета с тем же именем (который основан на механизмах, предоставляемых пакетом luaotfload
). Важно отметить, что добавление функций, таких как smcp
второй шрифт, работает только с настройкой mode=base
.
\documentclass{article}
\usepackage{combofont}
\setupcombofont{sourceserifpro-regular}{
{name:Source Serif Pro-Regular:mode=base;language=DFLT;+tlig} at #1pt,
{name:Source Serif Pro-Regular:mode=base;language=DFLT;+tlig;+smcp} at #1pt
}{
{} ,
0x30-0x39
}
\setupcombofont{sourceserifpro-bold}{
{name:Source Serif Pro-Bold:mode=base;language=DFLT;+tlig} at #1pt,
{name:Source Serif Pro-Bold:mode=base;language=DFLT;+tlig;+smcp} at #1pt
}{
{} ,
0x30-0x39
}
\DeclareFontFamily{TU}{sourceserifpro-combo}{}
\DeclareFontShape {TU}{sourceserifpro-combo}{m}{n} {<->combo*sourceserifpro-regular}{}
\DeclareFontShape {TU}{sourceserifpro-combo}{bx}{n}{<->combo*sourceserifpro-bold}{}
\newcommand{\alphabet}{abcdefghijklmnopqrstuvwxyz}
\newcommand{\digits}{0123456789}
\begin{document}
\fontfamily{sourceserifpro-combo}\selectfont
\textbf{Regular letters and digits:}
\par
\alphabet\quad\digits
\end{document}
Результат тот же, что и выше.