Fonte dsfont

Bonjour,

j'ai un petit problème avec le package dsfont.
Je le charge sans problème et j'arrive à utiliser les commandes, surtout le \mathds{1}.

Cependant les fontes sont censées être en vectorielle et ce c'est pas le cas dans mon document.
Quand je zoom sur le caractère, il est pixélisé (ce n'est pas le cas sur d'autres documents que j'ai trouvé sur le net).

Auriez-vous une idée d'où cela pourrait venir? Merci pour votre aide.

Edit : Je compile en PDFLatex, je ne sais pas si cela peut être l'origine du problème.

Réponses

  • Ce serait bien de fournir un Exemple Complet Minimal (ECM) exhibant le problème chez toi pour éviter à ceux qui voudraient t'aider de perdre leur temps à le recréer.

    Pour afficher la police vectorielle, pdfTeX a besoin de savoir où se trouve le fichier .pfb (plus quelques autres bricoles). Ceci se fait en principe en lui indiquant un fichier .map correspondant à la police, fourni avec elle.

    A priori, le fichier .map de la police qui t'intéresse s'appelle dstroke.map. Tu dois l'avoir avec le package. Je suppose qu'il n'y en a pas d'autre, mais dans l'absolu, cela n'est pas impossible. Où et comment indiquer le fichier .map à pdfTeX, toute la question est là.

    Au final, il faut qu'un fichier du genre pdftex.map (p. ex /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map) contienne quelque chose comme :
    dsrom10 dsrom10 <dsrom10.pfb
    dsrom12 dsrom12 <dsrom12.pfb
    dsrom8 dsrom8 <dsrom8.pfb
    dsss10 dsss10 <dsss10.pfb
    dsss12 dsss12 <dsss12.pfb
    dsss8 dsss8 <dsss8.pfb
    
    Ce sont les lignes contenues dans dstroke.map qui pointent vers les fichiers .pfb (police PostScript Type 1, partie décrivant la forme des caractères par opposition aux métriques) correspondant à telle ou telle police au sens de TeX (\font\mafonte=dsrom10 serait valide en TeX pur — pas terrible en LaTeX — et les fichiers DVI, lorsqu'on en produit, font référence aux polices de cette façon, avec des noms tels que dsrom10). Mais il ne faut pas mettre ces lignes directement soi-même dans pdftex.map, en tout cas pas sous TeX Live. Avec TeX Live, ça se passe en principe avec 'updmap-sys --enable Map=dstroke.map' ou en mettant "Map dstroke.map" dans un updmap.cfg puis en relançant 'mktexlsr' et 'updmap-sys', ou bien 'updmap' au lieu de 'updmap-sys' si l'on fait les choses dans son HOME, etc.

    À ce stade, tu devrais consulter... la doc de ta distribution TeX (peut-être ceci peut aider, notamment à “Font map files: telling TeX about the new font”) ou au minimum dire quel système et quelle distribution TeX tu utilises. En tout cas, sous Debian stretch, il n'y a rien à faire du moment que texlive-fonts-extra est installé : les fichiers map sont déjà enregistrés comme il faut.

    P.S. : ce qui se passe avec pdfTeX ici peut aussi s'appliquer à d'autres drivers (au sens TeXien du mot) tels que dvips ou dvipdfmx... mais la syntaxe et les méthodes pour le faire sont probablement légèrement différentes ! Cela dit, si tu t'en tiens à pdfTeX (dont le programme pdflatex), ce que j'ai écrit doit s'appliquer, sauf erreur.
  • Merci pour ton aide. Je vais essayer de régler ça.

    Désolé, je n'ai pas pensé à mettre une ECM en effet.
    \documentclass[a4paper,12pt]{article}
    \usepackage{dsfont}
    
    \begin{document}
    $\mathds{1}$
    \end{document}
    
  • OK, merci pour l'ECM. Petit complément pour ces histoires de polices embarquées et de codages : quand tu compiles le document LaTeX avec la commande pdflatex (qui utilise le moteur+driver pdfTeX), tu peux tout de suite voir si les polices sont correctement incluses, sans même regarder le PDF. Voici ce que j'obtiens avec ton ECM (j'ai inséré des retours à la ligne pour améliorer la lisibilité):
    This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex)
    
    [...]
    
     [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./test.aux) )
    </usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb>
    </usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsrom12.pfb>
    Output written on test.pdf (1 page, 9590 bytes).
    Transcript written on test.log.
    
    TeX Output finished at Thu Jun 21 19:19:08
    
    On voit que cmr12.pfb (Computer Modern Roman en 12 pt) et dsrom12 sont correctement embarquées (vectorielles). cmr12.pfb est la version vectorielle, au format PostScript Type 1, de la fameuse police Computer Modern Roman conçue par D. E. Knuth avec Metafont (la police par défaut de TeX et LaTeX). Elle n'est adaptée grosso modo qu'à l'anglais. Si on rajoute ceci au préambule pour pouvoir écrire correctement en français :
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    
    (idem avec latin1, latin9 ou ansinew à la place de utf8)
    les choses sont assez différentes :
    </home/flo/.texlive2016/texmf-var/fonts/pk/ljfour/jknappen/ec/ecrm1200.600pk>
    </usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsrom12.pfb>
    
    Là, on peut écrire correctement en français, mais la police Computer Modern n'est pas embarquée sous forme vectorielle, donc le PDF va être horrible (plus ou moins selon le logiciel utilisé pour le visionnage). La raison en est la suivante : pour avoir des césures correctes pour le français, on a dû activer le codage de police T1 au niveau LaTeX. Or la police originelle de Knuth écrite avec Metafont comme la première version vectorisée de cette police (cmr12.pfb & Co) utilisent toutes deux le codage de fonte OT1, lequel ne supporte pas les caractères dont on a besoin en français (accentués, etc.). Donc dès que l'on fait \usepackage[T1]{fontenc}, LaTeX ne peut plus les utiliser. Il se rabat alors sur une troisième version de Computer Modern, dite EC (travail de Jörg Knappen), qui elle est disponible au codage T1, possède donc nos chers caractères accentués sans magouille... mais est au format Metafont (ça ne date pas d'hier) ! Or le format PDF ne connait rien de Metafont, donc pdfTeX est obligé de fabriquer des fichiers .pk (bitmap) pour décrire la forme des glyphes dans le fichier PDF... et ça, c'est pas beau (le problème est le même en PostScript, simplement la plupart des viewers PostScript gèrent mieux la situation au niveau du rendu qu'Acrobat Reader, lorsqu'ils doivent afficher des polices bitmap).

    C'est pour cela que si l'on veut écrire en français avec une police qui ressemble comme deux gouttes d'eau à celle de Knuth, on ajoute(*) :
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    
    (ou ce que vous voulez à la place d'utf8)
    Et là, tout va bien :
    </usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsrom12.pfb>
    </usr/share/texmf/fonts/type1/public/lm/lmr12.pfb>
    
    Plus de ecrm1200.*pk ; à la place, on a le joli lmr12.pfb de la police Latin Modern Roman, qui supporte le codage de fonte T1 et bien d'autres, et est au format vectoriel PostScript Type 1 (elle est même disponible au format OpenType depuis pas mal d'années).

    Edit

    Heureusement, il n'est pas nécessaire de maîtriser tout ça sur le bout des doigts pour résoudre ton problème, mais cela peut aider à comprendre ce qui se passe avec tout ce bazar de formats et de codages.

    Une précision : lorsque j'écris « première version vectorisée de [Computer Modern Roman] », c'est un abus de langage. En effet, les polices de Knuth sont déjà toutes vectorielles, car le langage Metafont dans lequel elles sont écrites décrit des segments de droites et des courbes de Bézier. C'est juste que ce langage n'étant pas supporté par les formats PDF et PostScript, elles ne sont jamais embarquées telles quelles dans ces formats(**). Elles sont donc toujours converties dans un format bitmap (sauf lorsqu'on utilise une variante dans un autre format tel que PostScript Type 1 ou OpenType, mais alors il ne s'agit plus exactement des fontes originelles de D.E Knuth, même si artistiquement parlant, c'est essentiellement le travail de Knuth).

    (*) Avec pdfTeX ; pour XeTeX et LuaTeX, UTF-8 est imposé en entrée et le package fontspec remplace fontenc.

    (**) D'une part, parce que l'interprétation du code Metafont est probablement trop lente pour ce type d'utilisation, d'autre part parce qu'Adobe et consorts n'ont probablement rien à cirer de Metafont — les concepteurs de PostScript et PDF ont favorisé leurs technologies de polices : PostScript pour les documents PostScript ; PostScript, TrueType et sans doute aussi OpenType pour PDF (qui n'a pas fini d'évoluer).
  • Bonjour,

    j'ai réussi à résoudre mon problème.
    Le package dsfont ne s'était pas bien installé. J'ai réinstallé ma version de Miktex qui était ancienne et la nouvelle version a bien installé dsfont.

    Merci pour ton aide!
  • Moi aussi, la dernière fois que mon cendrier était plein, j'ai changé de voiture...
Connectez-vous ou Inscrivez-vous pour répondre.