PostScript

PostScript es un lenguaje de descripción de páginas (en inglés: Page Description Language, PDL), utilizado en muchas impresoras y también muy común como formato de transporte de archivos gráficos en talleres de impresión profesional.

Historia 

Postcript está basado en el trabajo realizado por John Gaffney en la empresa estadounidense de diseño gráfico por ordenador “Evans&Sutherland”, en el año 1976 mientras trabajaba en una base de datos gráficos sobre el puerto de Nueva York. Posteriormente, continuaron su desarrollo Martin Nawell y él (“JaM”, 'John and Martin') en Xerox PARC y, finalmente, fue implementado en su forma actual por John Warnock. En el año 1982, precisamente John Warnock, junto con Chuck Geschke, fundaron la empresa Adobe Systems Incorporated (conocida como Adobe).

El concepto PostScript se diferenció, fundamentalmente, por utilizar un lenguaje de programación completo para describir una imagen de impresión. Imagen que más tarde sería impresa en una impresora láser o algún otro dispositivo de salida de gran resolución, en lugar de utilizar una serie de secuencias de escape de bajo nivel. En el uso de un lenguaje de programación postscript se parece a Emacs, que explotó un concepto interno parecido con respecto a las tareas de edición.

Postcript también implementó, en particular, la composición de imágenes. Estas imágenes se describían como un conjunto de:
 Líneas horizontales.
 Píxeles al vuelo
 Descripciones de curvas mediante curvas de Bezier.
 Tipos de letra (mal llamados fuentes) de alta calidad a baja resolución (p. e. 300 puntos por pulgada).

Portable Document Format (PDF) es otro lenguaje de descripción de páginas y es derivado de PostScript, pero más simple y liviano.

PostScript también ha encontrado aplicaciones distintas a la impresión en papel, como es el caso de Display PostScript (DPS). DPS es una extensión de PostScript y fue utilizado como sistema gráfico en dos dimensiones en el sistema operativo NEXTSTEP. Quartz, de Mac OS X, es un sistema similar que utiliza PDF.

Ghostscript es una implementación abierta de un intérprete compatible con PostScript. Otro tipo de lenguaje de descripción de página para impresoras es PCL (diseñado por Hewlett-Packard). PCL es más ligero pero con menos posibilidades que PostScript.

PostScript Nivel 1 
Ofrece soporte para trabajar con objetos vectoriales, con “tipos de contorno” (un conjunto limitado de descripciones de letras a base de trazados matemáticos), con lineaturas de semitonos profesionales, capacidad de generar puntos de semitonos de distintas formas (línea, cuadrado, círculo, elipse, etc.), capacidad de gestionar hasta 256 tonos de gris distintos en una impresión. Este nivel posee independencia total del dispositivo (lo que permite imprimir aprovechando al máximo la resolución de este) y permite la portabilidad entre aparatos. Otra característica es la disponibilidad pública del código y de su sintaxis, lo que permite a cualquiera escribir un programa capaz de generar ficheros PostScript, y algunas otras características.

PostScript Nivel 2 
PostScript Nivel 2 fue introducido en el año 1991, incluyendo varias mejoras como:
 Gestión de memoria extremadamente mejorada.
 Mayor velocidad y fiabilidad.
 Capacidad para realizar la separación del color dentro del RIP (in-RIP separation).
 Descompresión de imágenes.
 Soporte para tipografías asiáticas
 Soporte para tipos de letra compuestos.
 Mejora de los controladores de impresora.
 Mejora muy notable (aunque algo tardía) de los algoritmos de tramado de semitonos.

El nivel 2 de PostScript todavía no ha sido adoptado del todo por muchos fabricantes de software y hardware.

PostScript 3 
A partir de esta versión, Adobe abandonó la terminología de niveles, pasando a usar la de versiones. Esta versión fue liberada a finales de 1997. Esta nueva versión, introdujo las principales mejoras siguientes:
 Uso de 12 bits para describir las lineaturas de semitono.
 Control extremadamente mejorado de las separaciones de color.
 Soporte del formato PDF desarrollado para el programa Acrobat.
 Gestión del color mucho más avanzada
 Nuevas características de impresión relacionadas con las posibilidades que ofrece Internet que aún no han sido muy desarrolladas.
 Introducción de nuevos filtros de compresión de imágenes como son el FlateDecode y FlateEncode y para definición de datos como ReusableStreamDecode.

Lenguaje PostScript 

Una de las peculiaridades de PostScript es que usa Reverse Polish Notation (RPN) o notación polaca inversa, como las calculadoras de bolsillo de HP. En otras palabras, los parámetros de un comando se dan antes que el comando. Los comandos se separan con espacios en blanco. Usa operaciones de pila para procesar datos y ejecutar comandos.

Hay cuatro pilas disponibles en PostScript:
 Pila de operandos.
 Pila de diccionario.
 Pila de ejecución.
 Pila de estado gráfico.

La pila de operandos contiene objetos PostScript arbitrarios que son los operandos y resultados de los operadores PostScript que se están ejecutando. Un ejemplo de una operación aritmética es:  20 30 add 10 sub .

En el lenguaje PostScript se usa un sistema de coordenadas cartesianas con origen en la esquina inferior izquierda de la página. La unidad de medida es el DTP (ver punto tipográfico), cuyo valor se define en este caso como la septuagésimosegunda parte () de una pulgada. En el caso de una hoja de medidas de tamaño letter (8½ × 11 pulgadas, hay otros tamaños disponibles) las dimensiones son de 612 puntos de ancho por 792 de largo.

Ejemplo 
Un ejemplo de una pila de instrucciones para realizar un dibujo simple con PostScript se detalla a continuación:
 newpath
 % Inicialización del cursor
 100 100 moveto
 % Dibujo del rectángulo
 300 100 lineto
 300 250 lineto
 100 250 lineto
 100 100 lineto
 stroke

 newpath indica que se va dibujar una nueva figura.
 moveto sitúa el cursor para comenzar a dibujar la figura. En este caso dichas coordenadas son 100, 100.
 Los distintos lineto dibujan las líneas de la figura (en este caso todas son líneas rectas).
 Finalmente, el comando stroke indica la realización del dibujo al intérprete.

También existen comandos para dibujar líneas curvas. Por ejemplo, para un arco de circunferencia: 
 x y r a b arc

donde:
 x e y, son las coordenadas horizontal y vertical del centro del arco circular.
 r, es el radio del arco.
 a y b, los ángulos entre la parte positiva del eje horizontal y los radios al punto inicial y al del final del arco arc.

Herramientas de escritura en PostScript 

PostScript tiene varios tipos de letra que se usan como estándares para autoedición. Tiene también herramientas de edición tipográfica a las que se puede acceder definiendo pilas de diccionario donde los tipos están disponibles.

El siguiente programa en PostScript puede ser un ejemplo:
 /Times-Roman findfont
 15 scalefont
 setfont
 100 500 moveto
 (I love PostScript!) show
 /Times-Italic findfont
 20 scalefont
 setfont
 100 450 moveto
 (I love PostScript!) show
 /Times-Bold findfont
 25 scalefont
 setfont
 100 400 moveto
 (I love PostScript!) show
     showpage

Índice de operadores 

A continuación se listan los operadores más frecuentes en las descripciones de Postscript:

 add
 arc
 begin
 bind
 clip
 charpath
 closepath
 curveto
 def
 div
 dup

 end
 exch
 fill
 for
 findfont
 grestore
 gsave
 if
 ifelse
 index
 lineto

 moveto
 mul
 newpath
 pop
 restore
 rlineto
 rmoveto
 rotate
 save
 scale
 scalefont

 setfont
 setgray
 setlinewidth
 show
 showpage
 stroke
 sub
 translate

Referencias

Véase también 

 Lenguaje de programación orientado a pila
 Máquina de pila
 Portable Document Format

Enlaces externos 

 www.adobe.com/products/postscript/pdfs/PLRM.pdf Descripción de referencia del lenguaje Postscript 
 Lenguaje PostScript en LinuxFocus I,II y III.
 www.coolutils.com/es/Online/PDF-Converter/ Conversor Gratuito de Postscript en línea.

Lenguajes de marcado
Lenguajes interpretados
Lenguajes de programación orientados a pila
Gráficos vectoriales
Formatos de archivos de documentos
Impresión
Software de 1982
Formatos abiertos
Introducciones relacionadas a la ciencia de la computación de 1982