La spécification PDF définit ces encodages pour les polices simples (chacune pouvant inclure un maximum de 256 formes de caractères) pour le texte latin qui devrait être prédéfini dans tout lecteur conforme:
/EncodageStandard
(pour les polices de texte latin Type 1, mais pas pour les polices TrueType)
/MacRomanEncoding
(encodage standard du Mac OS, pour les polices TrueType et Type1)
/PDFDocEncoding
(utilisé uniquement pour les chaînes de texte en dehors des flux de contenu du document; normalement non utilisé pour afficher du texte à partir de polices)
/WinAnsiEncoding
(encodage de la page de codes Windows 1252, pour les polices TrueType et Type1)
/MacExpertEncoding
(le nom est trompeur - l'encodage n'est pas spécifique à une plate-forme; cependant, seulement quelques polices ont un jeu de caractères approprié pour utiliser cet encodage)
Ensuite, il existe 2 encodages spécifiques pour les polices de symboles:
- Encodage de Symbole
- Encodage ZapfDingBats
De plus, les polices peuvent avoir des encodages intégrés, qui peuvent dévier de toute façon souhaitée par leur créateur d'un encodage standard (par exemple aussi utilisé pour l'encodage des différences lorsque les polices standard intégrées sont partielles).
Donc, pour interpréter correctement un fichier PDF, vous devrez rechercher chacun des encodages de police utilisés, et vous devrez prendre en compte tout /Encodage
utilisant un tableau /Differences
aussi.
Cependant, la tâche globale reste assez simple pour les polices simples. Le programme de visualisation PDF doit simplement mapper 1:1 "chaque octet que je vois censé représenter une chaîne de texte" à "exactement un glyphe à dessiner que je peux rechercher dans la table d'encodage".
Pour les polices composite, CID-keyed (qui peuvent contenir des milliers de formes de caractères), la correspondance/décodage pour le programme de visualisation pour "c'est la séquence d'octets que je vois que je suis censé dessiner comme du texte" à "c'est la séquence de formes de glyphe à dessiner" n'est plus 1:1. Ici, une séquence de un ou plusieurs octets doit être décodée pour sélectionner chaque un glyphe depuis le CIDFont.
Et pour aider ce décodage CIDFont, il doit y avoir des structures CMap. Les CMaps définissent des correspondances des encodages Unicode vers des collections de caractères. La spécification PDF définit au moins 5 douzaines de CMaps - et leurs noms standard - pour les polices de langues chinoise, japonaise et coréenne. Ces CMaps prédéfinis n'ont pas besoin d'être intégrés dans le PDF (mais le lecteur PDF conforme doit savoir comment les traiter correctement). Mais il existe (bien sûr) aussi des CMaps personnalisés qui peuvent avoir été générés 'à la volée' lorsque l'application créatrice de PDF a écrit le PDF. Dans ce cas, la CMap doit être intégrée dans le fichier PDF.
Tous les détails sur ces complexités sont définis dans la spécification officielle PDF-1.7.