18 Nov 2010

Comment fonctionne le système de fontes ?

Florence @ 06:55

Quelles sont les informations nécessaires à TeX pour utiliser une fonte?

TeX ne gère que le positionnement des caractères, il lui manque:

  • les informations de taille
  • les ligatures
  • le crénage
  • les corrections italiques

Ces informations se situent dans le fichier de métriques nom.tfm

fonte-img.png

Gestion des fontes

Chaque association d’une classe, d’options et de package détermine une fonte standard. On peut changer la famille, la série et l’aspect à l’intérieur d’un document:

  • \rmfamily, \sffamily et \ttfamily
  • \mdseries et \bfseries
  • \upshape, \itshape, \slshape, \scshape
  • la commande \normalfont remet la fonte de base.
  • éviter les commandes obsolètes \bf, \it, \tt

Différence entre {\it ...}, {\itshape ...} et \textit{...} ?

  • {\it ...} est une commande TeX qui n’est pas cumulative: \it\bf ne produit pas du gras italique.
  • {\itshape ...} (l’équivalent LaTeX) est cumulatif. À utiliser pour mettre un paragraphe entier en italique. Équivaut à \begin{itshape}...\end{itshape}
  • \textit{...} est cumulatif et est le plus approprié pour mettre en italique de petites portions de texte car, entre autres, elles incluent la correction italique.
un texte ({\bf\it neuf})
un texte ({\it\bf neuf})
un texte ({\itshape\bfseries neuf})
un texte (\textit{\textbf{neuf}})
fonte-itbf.png

Déclaration d’une nouvelle fonte

\newfont{\mafonte}{cmss10}
{\mafonte un texte en Computer Modern Sans Serif 10pt}
{\mafonte un texte en Computer Modern Sans Serif 10pt}
\newfont{\magrandefonte}{cmss10 scaled 3000}
{\magrandefonte la même x3}
{\magrandefonte la même x3}

\Huge\mafonte n’aura pas le même résultat que \mafonte\Huge car la commande \mafonte réinitialise la fonte;

\newfont{\mafonte}{cmss10}
{\Huge\mafonte Huge mafonte}
{\mafonte un texte en Computer Modern Sans Serif 10pt}
\newfont{\mafonte}{cmss10}
{\mafonte\Huge mafonte Huge}
{\mafonte un texte en Computer Modern Sans Serif 10pt}

NFSS : « New Font Selection Scheme»

Une fonte est définie par 5 attributs:

  • encodage    T1
  • famille    cmr
  • aspect    n
  • série    m
  • taille    10pt
\fontfamily{ccr}\fontencoding{T1}\fontseries{m}
\fontshape{sl}\selectfont
fonte-ccr.png
\fontfamily{ccr}\fontencoding{T1}\fontseries{m}
\fontsize{7pt}{9pt}\fontshape{sl}\selectfont
fonte-ccr2.png

Attention à la portée des commandes !

Il faut s’assurer que la combinaison demandée existe. On peut le vérfier en cherchant pour chaque famille table de correspondance entre les attributs des fontes et les fontes elles-mêmes. Elles se trouvent dans les fichiers encodagefamille.fd (ot1ccr.fd par exemple).

\DeclareFontShape{OT1}{ccr}{m}{sl}{
  <5> <6> <7> <8> <9> ccsl9
  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> ccsl10}{}
\DeclareFontShape{OT1}{ccr}{m}{it}{
  <5> <6> <7> <8> <9>
  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> ccti10}{}
\DeclareFontShape{OT1}{ccr}{c}{sl}{<9> ccslc9}{}

Les nombres entre <> indiquent les tailles pour lesquelles la fonte est disponible.

Le nom indiqué après une série de tailles est le fichier de métriques que LaTeX doit utiliser.

Seule la taille 9pt est disponible pour la combinaison OT1/ccr/c/sl. En modifiant la dernière ligne:

\DeclareFontShape{OT1}{ccr}{c}{sl}{
 <5> <6> <7> <8> <9> <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> ccslc9}{}

on peut utiliser cette combinaison dans les tailles ci-dessus.

Certaines fontes ont une fichier beaucoup plus simple:

\DeclareFontShape{T1}{ftr}{m}{n}{ <-> ftrr8t }{}
\DeclareFontShape{T1}{ftr}{m}{sc}{ <-> ftrrc8t }{}
\DeclareFontShape{T1}{ftr}{m}{sl}{ <-> ftrro8t }{}
\DeclareFontShape{T1}{ftr}{m}{it}{ <-> ftrri8t }{}
\DeclareFontShape{T1}{ftr}{b}{n}{ <-> ftrb8t }{}
\DeclareFontShape{T1}{ftr}{b}{sc}{ <-> ftrbc8t }{}
\DeclareFontShape{T1}{ftr}{b}{sl}{ <-> ftrbo8t }{}
\DeclareFontShape{T1}{ftr}{b}{it}{ <-> ftrbi8t }{}

Ce sont des fontes Postscript qui peuvent exister pour toutes les tailles demandées.

Lorsque l’on demande une combinaison non définie, LaTeX produit un message d’erreur de type:

LaTeX Font Warning: Font shape `T1/ccr/bx/sc' undefined
(Font)              using `T1/ccr/bx/n' instead on input line 1064.

qui nous indique que LaTeX n’a pas trouvé la combinaison T1/ccr/bx/sc, et qu’il l’a substituée par la combinaison T1/ccr/bx/n.

Si l’on n’est pas satisfait par le choix de LaTeX pour la fonte de remplacement, on peut lui indiquer celle à prendre:

\DeclareFontShape{T1}{ftr}{bx}{n}{<->sub * ftr/b/n}{}
\DeclareFontShape{T1}{ftr}{bx}{sc}{<->sub * ftr/b/sc}{}
\DeclareFontShape{T1}{ftr}{bx}{sl}{<->sub * ftr/b/sl}{}
\DeclareFontShape{T1}{ftr}{bx}{it}{<->sub * ftr/b/it}{}

On peut aussi indiquer la combinaison à prendre par défaut pour toute combinaison manquante:

\DeclareFontSubstitution{T1}{cmr}{m}{n}
  • on peut aussi utiliser \usefont{encodage}{famille}{série}{aspect}
    \usefont{U}{ygoth}{m}{n} un texte en gothique
    
    fonte-goth.png
  • pour définir la famille à utiliser pour chaque écriture (romaine, linéale et mécane):
    \renewcommand{\rmdefault}{ptm}  % écriture romaine en Times Roman
    \renewcommand{\sfdefault}{phv}  % écriture linéale en Helvetica
    \renewcommand{\ttdefault}{pcr}  % écriture mécane en Courier
    
  • comment trouver le nom de la famille?
    Dans l’arboresence de LaTeX, il y a un répertoire fontname qui contient des fichiers .map. Ils décrivent, pour chaque police disponible dans l’installation, le nom des fichiers de métriques disponibles.

    %%% adobe.map %%%
    pcrb8a    Courier-Bold                 phvr8a    Helvetica
    pcrbo8a   Courier-BoldOblique          phvb8a    Helvetica-Bold
    pcrr8a    Courier                      phvbo8a   Helvetica-BoldOblique
    pcrro8a   Courier-Oblique              phvro8a   Helvetica-Oblique
    

Laisser une réponse

Vous devez vous identifier pour poster un commentaire. Connectez vous maintenant.