デフォルトで数字を小文字に設定する

デフォルトで数字を小文字に設定する

私はfontspecパッケージを使用しています。パッケージオプションまたはLuaLaTeXで数字をデフォルトでOldStyle/Lowercaseに設定するのと同様に、数字をデフォルトで小文字で自動的に設定する方法があるかどうか知りたいです。fontspecNumbers=OldStyleNumbers=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

つまり、必要なのは、サイズがスモールキャップスに一致する数字 (私の知る限り、スモールキャップスという用語は通常文字にのみ使用されるため、実際には名前はありません) ですが、テキストの周囲のスタイルに関係なく、このスタイルで印刷する必要があります。

fontspecオプション (は関連する OpenType 機能の略語)を使用して、特定の OpenType 機能を選択できます。したがって、全般的にスモール キャップスを有効にするように選択できますRawFeature=+xxxx。残念ながら、Source Sans Pro には、他の文字に影響を与えずにこれらの小さな数字だけを選択できる機能は含まれていません。また、 を使用して数字に対してのみこのような機能を直接選択することはできないようです。xxxxRawFeature=+smcpfontspec

ただし、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もう 1 つの方法は、同じ名前のパッケージを使用してを作成することです(これは、パッケージによって提供されるメカニズムに基づいています)。 などの機能を2 番目のフォントに追加できるのは、 の設定のみであることにluaotfload注意してください。smcpmode=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}

出力は上記と同じです。

関連情報