
Estou preparando um documento que facilita o pacote fontspec
para 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:
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-Regular
and 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 \newfamily
que 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 smcp
recurso, 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 fontspec
analisá-los para fazer todas as atribuições necessárias.
Porém, para o caso específico, .fd
os 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}
Responder2
Como um adendo à excelente resposta de egreg: para uma fonte personalizada que armazena versaletes em um arquivo separado, por exemplo chamado SomeFont-RegularSC.otf
e 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.fontspec
para 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.