PostScript

Le PostScript est un langage informatique spécialisé dans la, mis au point par Adobe. Il repose sur des formulations vectorielles de la majorité de ses éléments.



Catégories :

Imprimerie - Format de données numériques - Typographie - Langage de description de page

Définitions :

  • Langage de description de page créé par Adobe utilisé par les logiciels et les périphériques en PAO. Le PostScript est reconnu comme étant le standard depuis plusieurs années. (source : sit.ulaval)
  • Langage d'imprimante vectoriel, mis au point par la société Adobe. Le format PostScript est spécifiquement performant et imprimable par l'ensemble des imprimantes compatibles PostScript.... (source : abc-info.over-blog)
  • Langage informatique de description de page, servant à faire la liaison entre les ordinateurs et les unités de sortie telles que les imprimantes laser ou les composeuses. (source : imp-moderne)

Le PostScript est un langage informatique spécialisé dans la, mis au point par Adobe. Il repose sur des formulations vectorielles de la majorité de ses éléments. Il sait aussi traiter les images matricielles (en mode point).

Ce langage inter-plateformes permet d'obtenir un fichier unique comportant l'ensemble des éléments décrivant la page (textes, images, polices, couleurs, etc. ).

PostScript est devenu quasiment un standard, la majorité des imprimantes lasers haut de gamme peuvent traiter directement le format PostScript. Sur les autres ou les plus anciennes, il fallait utiliser un filtre logiciel en entrée pour convertir le langage PostScript au format raster compréhensible par les anciennes imprimantes.

D'autres rejetons de PostScript sont

Le langage

Postscript est un langage complet, qui permet le codage de tout algorithme. Quoiqu'il soit particulièrement envisageable d'écrire directement de tels programmes, ils sont généralement fabriqués par d'autres programmes, des pilotes d'impression par exemple.

Le Postscript est indissociable de l'environnement dans lequel il sera exécuté. Compte tenu de le caractère complètement dynamique de ce langage, il sera en fait interprété.

L'interpréteur se compose d'une pile, et d'un ou plusieurs dictionnaires. La pile sert de stockage temporaire pour les paramètres des fonctions, puis pour leurs résultats. Les dictionnaires permettent le stockage des variables, mais aussi du code des fonctions.

Un programme PostScript se compose d'une séquence de mots scindés par des espaces, tabulation (TAB), retour chariot (CR), avance de ligne (LF), ou commentaires. L'interpréteur analyse chaque mot du programme PostScript séquentiellement en fonctionnant comme un calculateur en notation polonaise inverse, c'est-à-dire que chaque mot est évalué, puis le (ou les ) résultat de cette évaluation est positionné au sommet de la pile, et ainsi de suite.

Exemple, pour effectuer le calcul numérique simple b2 - 4ac, cela pourra se coder :

b b mul 4 a mul c mul sub

PostScript supporte cinq types de mots :

La première partie du constructeur place une marque sur la pile, puis les éléments de cette structure sont positionnés successivement sur la pile, enfin la partie droite du constructeur récupère l'ensemble des éléments depuis la dernière marque dans la pile et «fabrique» la structure correspondante et la met sur la pile.

Les dictionnaires sont des tableaux avec uniquement deux colonnes.

Le dictionnaire est géré comme une table de hachage (grâce à une fonction de hachage prédéfinie par le langage lui-même) et on peut en prédéfinir lors de sa création la taille d'origine selon le nombre de couples nom-valeur qu'on veut y stocker, pour limiter les collisions (cependant PostScript sait redimensionner dynamiquement un dictionnaire selon le nombre de collisions sur les noms, ou de son taux de remplissage). Les dictionnaires de PostScript servent essentiellement (mais pas uniquement) à définir (dynamiquement) la portée des variables appelées et référencées ailleurs dans le langage.

Parmi les opérateurs prédéfinis, principal est def, il permet d'ajouter une association nom-valeur dans le dictionnaire courant, ce qui sert à définir de nouvelles variables avec leur valeur, ou de modifier leur valeur, et de définir ou redéfinir des fonctions. On constate par conséquent, qu'en Postscript, le code exécutable est une donnée, presque comme les autres, et peut être créé à la volée, modifié.

Exemples :

Dans le dernier exemple ci-dessus, rien n'indique que la variable appelée "compteur" sera la même que celle dont on a extrait la valeur. En effet "def" permet de stocker une association nom-valeur seulement dans le dictionnaire actuel, et aucun des autres dictionnaires dans la pile de portée. Or, la lecture de la variable compteur (la seconde référence dans le code ci-dessus) peut retourner la valeur d'une variable trouvée dans autre dictionnaire que le dictionnaire actuel (ou produire une exception à l'exécution si aucun des dictionnaires dans la pile de portée ne contient une variable de ce nom)  : dans ce cas, une nouvelle variable sera ajoutée par "def" dans le dictionnaire actuel, sans modifier la variable d'origine où elle a été trouvée et qui conservera par conséquent sa valeur; cependant tant que le dictionnaire courant sera actif, la nouvelle variable masquera l'ancienne. Ce système permet par conséquent de gérer des variables locales autrement que par une position relative dans la pile.

PostScript peut différencier les références à une variable (par son nom indiqué après un "/") et celles à sa valeur. Cependant la référence n'est résolue dans aucune dictionnaire de portée tant qu'on ne l'a pas associée à un dictionnaire pour la rechercher. Lorsque un nom est utilisé sans "/" d'origine, il est immédiatement recherché lors de la compilation de la fonction dans les dictionnaires de portée actifs (en commençant par le dictionnaire courant lors de la compilation et non celui qui sera actif à l'exécution de la fonction), alors le nom de la variable est remplacé à l'exécution dans la pile par la valeur associée à ce nom dans le dictionnaire où le nom a été trouvé.

Aussi, pour créer une référence complète à une variable bien définie et non sa valeur ou une autre variable de même nom dans un autre dictionnaire, on doit indiquer non seulement le nom de cette variable, mais également une référence au dictionnaire qui la contient et où elle doit être recherchée. Si on ne référence pas le dictionnaire (par exemple en ne préfixant pas par un /), la résolution du nom est dynamique et peut par conséquent référencer des variables différentes selon le contexte d'exécution.

Postcript définit par conséquent deux contextes différents d'utilisation d'une référence à une variable :

Ce comportement pour le déréferencement d'une variable (accès en lecture) est par conséquent particulièrement différent de celui du stockage d'une variable avec def qui se fait toujours selon le dictionnaire courant au seul moment de l'exécution.

Opérateurs

tout pop élimine l'élément de la pile
tout1 tout2 exch tout2 tout1 échange les deux éléments
nombre1 nombre2 add somme renvoie nombre1 plus nombre2
nombre1 nombre2 div quotient renvoie nombre1 divisé nombre2
entier1 entier2 idiv quotient renvoie entier1 divisé entier2

Implémentation

PostScript est sous licence de la société Adobe. Néanmoins il existe un interpréteur PostScript libre,.

Voir aussi

Liens externes

Recherche sur Amazon (livres) :



Principaux mots-clés de cette page : dictionnaires - variables - valeur - nom - postscript - pile - fonctions - référence - nombre - compteur - sera - def - langage - conséquent - éléments - puis - portée - courant - actuel - entiers - exécution - programmes - résultats - mots - sommet - numérique - tableaux - actifs - constructeur - structures -

Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/PostScript.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 11/12/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu