Definir números em versalete por padrão

Definir números em versalete por padrão

Estou usando o fontspecpacote com LuaLaTeX. Estou curioso para saber se existe uma maneira de definir automaticamente números em versalete por padrão, semelhante a como você pode definir números em OldStyle/Lowercase por padrão por meio das fontspecopções do pacote Numbers=OldStyleouNumbers=Lowercase

Nota: Nem todas as fontes suportam números em versalete. Eu uso uma fonte gratuita em meu MWE que suporta números maiúsculos.

Minha motivação para fazer essa pergunta é que atualmente estou testando se a composição de números em versalete é mais fácil ou mais agradável de ler do que os habituais números maiúsculos e monoespaçados. Ter uma maneira mais fácil de gerar números em versalete seria maravilhoso.

\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}

EDIT 1: adicionei uma foto exibindo números com versalete. insira a descrição da imagem aqui

EDIT 2: Estou procurando uma solução, se possível, que faça com que os números sejam exibidos em letras maiúsculaspor padrãosem ter que usar \textscou qualquer outra macro no texto. Portanto, \textsc{1234}e 1234deve parecer idêntico. Se isso não for possível, é claro, posso sempre recorrer à criação de uma macro em texto.

Responder1

Então, o que você procura são dígitos que correspondam ao tamanho de letras maiúsculas (que não têm realmente um nome, que eu saiba, já que o termo "versalete" geralmente é usado apenas para letras), mas você deseja que eles sejam impressos neste estilo independentemente do estilo envolvente do texto.

Você pode selecionar recursos OpenType específicos usando fontspeca opção RawFeature=+xxxxonde xxxxestá a abreviatura do recurso OpenType relevante. Portanto, você pode optar RawFeature=+smcppor ativar letras maiúsculas em geral. Infelizmente, o Source Sans Pro não contém um recurso que permite selecionar apenas esses pequenos números sem afetar outras letras e, por outro lado, parece que não é diretamente possível selecionar esses recursos apenas para números usando fontspec.

No entanto, você pode usar fonts.handlers.otf.addfeaturee aprimorar a fonte com seu próprio recurso OpenType personalizado, que pode ser usado com arquivos fontspec. No exemplo a seguir, criei o recurso xnumque substitui os glifos de dígitos pelas variantes em versalete (no entanto, você precisaria procurar os nomes dos glifos relevantes na fonte):

\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}

insira a descrição da imagem aqui


Outra forma seria criar um combofontusando o pacote com o mesmo nome (que é baseado nos mecanismos fornecidos pelo luaotfloadpacote). É importante observar que adicionar recursos como smcpa segunda fonte só funciona com a configuração 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}

A saída é a mesma acima.

informação relacionada