Carregue fontes extras com lualatex

Carregue fontes extras com lualatex

Estou preparando um documento que facilita o pacote fontspecpara definir a fonte principal e a sans. Nesse documento, gostaria de comparar a fonte principal com a Computer Modern ou, para ser mais preciso, sua sucessora, a Latin Modern.

Eu estava convencido de que escrever

\newfontfamily\lmfont{Latin Modern Roman}

permitiria a família completa com todos os seus mais de 70 arquivos de fontes. Mas isso não está correto.

Por exemplo, quando digo

{\lmfont\scshape{}abcd} {\scshape{}abcd}

Eu entendi isso:

Comparação de Pequenas Capitais

No lado esquerdo a fonte latina moderna, mas sem as letras maiúsculas :-(, no lado direito, a fonte padrão ("mainfont") do documento como deveria ser.

Para minha comparação, gostaria de apresentar uma grande seleção/combinação de fontes nesta família, ou seja, as fontes romana, sans e mono adicionadas com formas e faces como -italic, -italic-bold, -slanted, -slanted-bold , -negrito, -smallcaps.

Infelizmente, minha solução carrega apenas as fontes LMRoman10-Regularand LMSans10-Regular, mas não LMRomanCaps10-Regular. É por isso que \lmfont\scshape(ou \lmfont\ttfamily) não funcionou.

Então, existe a possibilidade de definir \newfamilyque contém as fontes Latin Modern completas?

Qualquer solução que me permita ter uma macro simples para comparar as duas famílias de fontes lado a lado seria adequada.

Aqui está um MWE:

\documentclass{scrbook}
\usepackage{fontspec}

\setmainfont{Times New Roman} % and other definitions
\newfontfamily\lmfont{Latin Modern Roman} % this is not complete!!

%% New command to compare.  
%% #1 defines the family/shape/series
\newcommand{\compare}[1]{%
  {#1%
    ABCD \dots{} XYZ, abcd \dots{} xyz\\
    \lmfont{}ABCD \dots{} XYZ, abcd \dots{} xyz\par
  }
}

\begin{document}
\compare{\upshape}
\compare{\itshape}
\compare{\itshape\bfseries}
\compare{\scshape}
\end{document}

Responder1

Não, não funciona assim e realmente não pode.

Não existe convenção de nomenclatura de fontes e várias fontes fazem coisas muito diferentes. Algumas fontes possuem um smcprecurso, outras não e é necessário especificar a fonte a ser usada para versalete.

Latin Modern Roman está em uma situação muito diferente: existem cerca de 70 arquivos de fontes e está fora do escopo fontspecanalisá-los para fazer todas as atribuições necessárias.

Porém, para o caso específico, .fdos arquivos estão disponíveis para que você possa utilizá-los.

\documentclass{article}
\usepackage{fontspec}

\setmainfont{EB Garamond}

\newfontfamily\lmodern{Latin Modern Roman}[
  NFSSFamily=lmr
]

\begin{document}

Abc\textsc{Abc}

\lmodern

Abc\textsc{Abc}

\end{document}

insira a descrição da imagem aqui

Responder2

Como um adendo à excelente resposta de egreg: para uma fonte personalizada que armazena versaletes em um arquivo separado, por exemplo chamado SomeFont-RegularSC.otfe SomeFont-BoldSC.otf, você os carregaria com

\newfontfamily\somefont{SomeFont}[
   UprightFont = *-Regular ,
   SmallCapsFont = *-RegularSC ,
   BoldFont = *-Bold ,
   BoldFeatures = { SmallCapsFont = *-BoldSC },
   % Etc.
   Extension = .otf ]

Você também pode colocar este comando em um arquivo nomeado SomeFont.fontspecpara poder escrever \newfontfamily\somefont{SomeFont}em seus documentos. Isso evita deixar dependências em uma versão específica da fonte em todos os seus documentos.

informação relacionada