Discussion:
Afficher des caratères avec accent
(trop ancien pour répondre)
Ahmed Ayadi
2008-06-30 15:19:00 UTC
Permalink
Bonjour,

Je suis nouveau avec le language Postscript. J'aime bien imprimé des
documents postscript avec des lettres avec accent comme 'é', 'à' et
'ç'.

Merci d'avance
Ahmed
François Robert
2008-07-10 23:20:44 UTC
Permalink
In article
Post by Ahmed Ayadi
Je suis nouveau avec le language Postscript. J'aime bien imprimé des
documents postscript avec des lettres avec accent comme 'é', 'à' et
'ç'.
Bonsoir.
En supposant l'usage de caractères sur 8 bits, il faut procéder au
recodage de la fonte.

Une fonte (Type 1, Type 3, TrueType, OpenType etc...) contient une
association entre un code numérique (code de caractère) et un dessin
vectoriel (glyphe) qui représente en général (au moins dans les langues
alphabétiques) une lettre, un chiffre, un signe de ponctuation etc...
Cette association est l'encodage. (encoding)
Cette association n'est pas fixée et peut être modifié via une
programmation Postscript adéquate. Cette programmation se nomme
'recodage' (re-encoding).
En Postscript les fontes ne sont pas tenues d'avoir un encodage
particulier, et donc pour avoir des résultats reproductible avec
n'importe quelle fonte, le recodage est indispensable.

Pour une fonte T1 (ou Type 42, expression Postscript d'une TrueType),
l'encodage est donnée par le vecteur dont la clef est /Encoding dans le
dictionnaire de la fonte. Il faut modifier ce vecteur pour recoder la
fonte. Ce vecteur comporte 256 valeurs (indicées par le code de
caractère sur 8 bits, de 0 à 255). Chaque valeur de ce vecteur est un
nom de glyphe, identifiant le dessin qui sera effectué.

Donc pour recoder une fonte, on fait une copie du dictinnaire de fonte
où l'on assigne des valeurs différente aux éléments du vecteur
/Encoding. Les interpréteurs PS prédéfinissent des vecteurs usuels, ce
qui évite de devoir réinventer la roue. Un de ces vecteurs est
/ISOLatin1Encoding (voir Red Book annexe E)

Muni de ces explications, l'exemple du Red Book section 5.9.1 se
comprend mieux (sachant que pour des raisons d'unicité, il n'est pas
permis de cloner l'identificateur de fonte contenu sous clef /FID du
dictionnaire de fonte):

/Helvetica findfont
dup length dict begin
{ 1 index /FID ne
{def}
{pop pop}
ifelse
} forall
/Encoding ISOLatin1Encoding def
currentdict
end
/Helvetica-ISOLatin1 exch definefont pop

/Helvetica-ISOLatin1 findfont 30 scalefont setfont
20 120 moveto (c cedille ç \347 ) show
20 90 moveto (e grave è \350 ) show
20 60 moveto (a grave à \340 ) show
showpage

________________________________________________________
François Robert

Loading...