Установить по умолчанию заглавные буквы в числах

Установить по умолчанию заглавные буквы в числах

Я использую 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}

Результат тот же, что и выше.

Связанный контент