PostScript - PostScript

Posdata
Paradigma Multi-paradigma : basado en pila , procedimental
Diseñada por John Warnock , Chuck Geschke , Doug Brotz , Ed Taft , Bill Paxton
Desarrollador Adobe Systems
Apareció por primera vez 1982 ; Hace 39 años ( 1982 )
Lanzamiento estable
PostScript 3/1997 ; Hace 24 años ( 1997 )
Disciplina de mecanografía Dinámico, débil
Implementaciones importantes
Adobe PostScript, TrueImage , Ghostscript
Influenciado por
Mesa , Interpress , Lisp
Influenciado
PDF
PostScript (formato de archivo)
Extensión de nombre de archivo
.PD
Tipo de medio de Internet
aplicación / posdata
Identificador de tipo uniforme (UTI) com.adobe.postscript
número mágico %!
Desarrollado por Adobe Systems
Tipo de formato formato de archivo de impresión
Extendido a PostScript encapsulado

PostScript ( PS ) es un lenguaje de descripción de páginas en el negocio de la publicación electrónica y la autoedición . Es un tipo dinámico , lenguaje de programación por concatenación . Fue creado en Adobe Systems por John Warnock , Charles Geschke , Doug Brotz, Ed Taft y Bill Paxton de 1982 a 1984.

Historia

Los conceptos del lenguaje PostScript fueron sembrados en 1976 por John Gaffney en Evans & Sutherland , una compañía de gráficos por computadora . En ese momento, Gaffney y John Warnock estaban desarrollando un intérprete para una gran base de datos de gráficos tridimensionales del puerto de Nueva York .

Al mismo tiempo, los investigadores de Xerox PARC habían desarrollado la primera impresora láser y habían reconocido la necesidad de un medio estándar para definir imágenes de páginas. En 1975-76 Bob Sproull y William Newman desarrollaron el formato Press, que finalmente se utilizó en el sistema Xerox Star para impulsar impresoras láser. Pero Press, un formato de datos en lugar de un idioma, carecía de flexibilidad y PARC montó el esfuerzo de Interpress para crear un sucesor.

En 1978, John Gaffney y Martin Newell, entonces en Xerox PARC, escribieron J & M o JaM (para "John y Martin") que se utilizó para el diseño de VLSI y la investigación de la impresión de tipos y gráficos. Este trabajo luego evolucionó y se expandió al lenguaje Interpress.

Warnock se fue con Chuck Geschke y fundó Adobe Systems en diciembre de 1982. Ellos, junto con Doug Brotz, Ed Taft y Bill Paxton crearon un lenguaje más simple, similar a Interpress, llamado PostScript, que salió al mercado en 1984. Aproximadamente en este momento Fueron visitados por Steve Jobs , quien los instó a adaptar PostScript para usarlo como lenguaje para manejar impresoras láser.

En marzo de 1985, Apple LaserWriter fue la primera impresora que se envió con PostScript, lo que provocó la revolución de la autoedición (DTP) a mediados de la década de 1980. La combinación de méritos técnicos y una amplia disponibilidad hicieron de PostScript un lenguaje de elección para la salida gráfica para aplicaciones de impresión. Durante un tiempo, un intérprete (a veces denominado RIP para Procesador de imágenes rasterizadas) para el lenguaje PostScript fue un componente común de las impresoras láser en la década de 1990.

Sin embargo, el costo de implementación fue alto; Las computadoras generan un código PS sin procesar que la impresora interpretará en una imagen de trama con la resolución natural de la impresora. Esto requirió microprocesadores de alto rendimiento y amplia memoria . El LaserWriter usaba un Motorola 68000 de 12 MHz , lo que lo hacía más rápido que cualquiera de las computadoras Macintosh a las que se conectaba. Cuando los propios motores de las impresoras láser costaban más de mil dólares, el coste añadido de la impresión continua era marginal. Pero a medida que los mecanismos de la impresora bajaron de precio, el costo de implementar PS se convirtió en una fracción demasiado grande del costo total de la impresora; Además, con las computadoras de escritorio cada vez más potentes, ya no tenía sentido descargar el trabajo de rasterización en la impresora con recursos limitados. En 2001, pocos modelos de impresoras de gama baja venían con soporte para PostScript, en gran parte debido a la creciente competencia de impresoras de inyección de tinta que no son PostScript, mucho más baratas, y nuevos métodos basados ​​en software para renderizar imágenes PostScript en la computadora, haciéndolas adecuadas para cualquier impresora. ; PDF , un descendiente de PostScript, proporciona uno de esos métodos y ha reemplazado en gran medida a PostScript como estándar de facto para la distribución de documentos electrónicos.

En las impresoras de gama alta, los procesadores PostScript siguen siendo comunes y su uso puede reducir drásticamente el trabajo de la CPU involucrado en la impresión de documentos, transfiriendo el trabajo de renderizar imágenes PostScript de la computadora a la impresora.

PostScript nivel 1

La primera versión del lenguaje PostScript se lanzó al mercado en 1984. El sufijo Nivel 1 se agregó cuando se introdujo el Nivel 2.

PostScript nivel 2

PostScript Nivel 2 se introdujo en 1991 e incluyó varias mejoras: velocidad y confiabilidad mejoradas, soporte para separaciones en RIP, descompresión de imágenes (por ejemplo, las imágenes JPEG pueden ser renderizadas por un programa PostScript), soporte para fuentes compuestas y el formato mecanismo para almacenar en caché contenido reutilizable.

PostScript 3

PostScript 3 (Adobe abandonó la terminología de "nivel" en favor del control de versiones simple) llegó a fines de 1997 y, junto con muchas versiones nuevas de operadores más antiguos basadas en diccionarios, introdujo un mejor manejo del color y nuevos filtros (que permiten la compresión en el programa). / descompresión, fragmentación de programas y manejo avanzado de errores).

PostScript 3 fue significativo en términos de reemplazar los sistemas de preimpresión electrónicos de color patentados existentes, entonces ampliamente utilizados para la producción de revistas, mediante la introducción de operaciones de sombreado suave con hasta 4096 tonos de gris (en lugar de los 256 disponibles en PostScript Nivel 2), como así como DeviceN, un espacio de color que permitió la adición de colores de tinta adicionales (llamados colores planos ) en páginas de colores compuestos.

Utilizar en la impresión

Antes de PostScript

Antes de la introducción de PostScript, las impresoras se diseñaron para imprimir caracteres de salida dado el texto, generalmente en ASCII, como entrada. Había una serie de tecnologías para esta tarea, pero la mayoría compartía la propiedad de que los glifos eran físicamente difíciles de cambiar, ya que estaban estampados en teclas de máquina de escribir , bandas de metal o placas ópticas.

Esto cambió hasta cierto punto con la creciente popularidad de las impresoras matriciales de puntos . Los caracteres en estos sistemas se dibujaron como una serie de puntos, según lo definido por una tabla de fuentes dentro de la impresora. A medida que aumentaron en sofisticación, las impresoras matriciales empezaron a incluir varias fuentes integradas entre las que el usuario podía seleccionar, y algunos modelos permitían a los usuarios cargar sus propios glifos personalizados en la impresora.

Las impresoras de matriz de puntos también introdujeron la capacidad de imprimir gráficos rasterizados . Los gráficos fueron interpretados por la computadora y enviados como una serie de puntos a la impresora usando una serie de secuencias de escape . Estos lenguajes de control de impresoras variaban de una impresora a otra, lo que requería que los autores de programas crearan numerosos controladores .

La impresión de gráficos vectoriales se dejó en manos de dispositivos especiales, llamados trazadores . Casi todos los trazadores compartían un lenguaje de comandos común, HPGL , pero eran de uso limitado para cualquier otra cosa que no fuera la impresión de gráficos. Además, tendían a ser costosos y lentos y, por lo tanto, raros.

Impresión PostScript

Las impresoras láser combinan las mejores características tanto de las impresoras como de los trazadores. Al igual que los trazadores, las impresoras láser ofrecen dibujos de líneas de alta calidad y, al igual que las impresoras matriciales, pueden generar páginas de texto y gráficos de trama. A diferencia de las impresoras o trazadores, una impresora láser permite colocar gráficos y texto de alta calidad en la misma página. PostScript hizo posible aprovechar plenamente estas características al ofrecer un único lenguaje de control que se podía utilizar en cualquier marca de impresora.

PostScript fue más allá del típico lenguaje de control de impresora y era un lenguaje de programación completo en sí mismo. Muchas aplicaciones pueden transformar un documento en un programa PostScript: cuya ejecución da como resultado el documento original. Este programa se puede enviar a un intérprete en una impresora, lo que da como resultado un documento impreso, oa uno dentro de otra aplicación, que mostrará el documento en pantalla. Dado que el programa-documento es el mismo independientemente de su destino, se denomina independiente del dispositivo .

PostScript se destaca por implementar la rasterización 'sobre la marcha' en la que todo, incluso el texto, se especifica en términos de líneas rectas y curvas de Bézier cúbicas (que antes solo se encontraban en aplicaciones CAD ), lo que permite escalas arbitrarias, rotaciones y otras transformaciones. Cuando se interpreta el programa PostScript, el intérprete convierte estas instrucciones en los puntos necesarios para formar la salida. Por esta razón, los intérpretes de PostScript se denominan ocasionalmente procesadores de imágenes rasterizadas de PostScript o RIP.

Manejo de fuentes

Casi tan complejo como el propio PostScript es su manejo de fuentes . El sistema de fuentes utiliza las primitivas de gráficos PS para dibujar glifos como curvas, que luego se pueden renderizar en cualquier resolución . Con este enfoque, se tuvieron que considerar una serie de cuestiones tipográficas .

Un problema es que las fuentes no se escalan linealmente en tamaños pequeños y las características de los glifos se volverán proporcionalmente demasiado grandes o pequeñas y comenzarán a parecer desagradables. PostScript evitó este problema con la inclusión de sugerencias de fuentes , en las que se proporciona información adicional en bandas horizontales o verticales para ayudar a identificar las características de cada letra que son importantes para el rasterizador. El resultado fue fuentes de mejor apariencia incluso a baja resolución. Anteriormente se creía que para esta tarea se necesitaban fuentes de mapa de bits ajustadas a mano.

En ese momento, la tecnología para incluir estas sugerencias en las fuentes se protegió cuidadosamente, y las fuentes sugeridas se comprimieron y cifraron en lo que Adobe llamó una fuente Type 1 (también conocida como fuente PostScript Type 1 , PS1 , T1 o Adobe Type 1 ). El tipo 1 fue efectivamente una simplificación del sistema PS para almacenar solo información de esquema, en lugar de ser un lenguaje completo (PDF es similar en este sentido). Adobe luego vendería licencias para la tecnología Type 1 a aquellos que deseen agregar pistas a sus propias fuentes. Aquellos que no obtuvieron la licencia de la tecnología se quedaron con la fuente Type 3 (también conocida como fuente PostScript Type 3 , PS3 o T3 ). Las fuentes Type 3 permitieron toda la sofisticación del lenguaje PostScript, pero sin el enfoque estandarizado de las sugerencias.

El formato de fuente Type 2 se diseñó para usarse con cadenas de caracteres de formato de fuente compacto (CFF) y se implementó para reducir el tamaño general del archivo de fuente. El formato CFF / Type2 se convirtió más tarde en la base para el manejo de contornos PostScript en fuentes OpenType .

La fuente clave CID formato también fue diseñado para resolver los problemas en el OCF / Tipo de letra 0 , para abordar el complejo en idiomas asiáticos ( CJK ) que codifica y muy grandes temas de juego de caracteres. El formato de fuente con clave CID se puede usar con el formato de fuente Type 1 para fuentes estándar con clave CID, o Type 2 para fuentes OpenType con clave CID.

Para competir con el sistema de Adobe, Apple diseñó su propio sistema, TrueType , alrededor de 1991. Inmediatamente después del anuncio de TrueType, Adobe publicó la especificación para el formato de fuente Type 1. Las herramientas de venta minorista como Altsys Fontographer (adquirida por Macromedia en enero de 1995, propiedad de FontLab desde mayo de 2005) agregaron la capacidad de crear fuentes Type 1. Desde entonces, se han lanzado muchas fuentes Type 1 gratuitas; por ejemplo, las fuentes utilizadas con el sistema de composición tipográfica TeX están disponibles en este formato.

A principios de la década de 1990, había varios otros sistemas para almacenar fuentes basadas en contornos, desarrollados por Bitstream y Metafont, por ejemplo, pero ninguno incluía una solución de impresión de propósito general y, por lo tanto, no se usaban ampliamente.

A finales de la década de 1990, Adobe se unió a Microsoft para desarrollar OpenType , esencialmente un superconjunto funcional de los formatos Type 1 y TrueType. Cuando se imprime en un dispositivo de salida PostScript, se omiten las partes innecesarias de la fuente OpenType, y lo que el controlador envía al dispositivo es lo mismo que para una fuente TrueType o Type 1, según el tipo de contornos presente en la fuente OpenType.

Otras implementaciones

En la década de 1980, Adobe obtuvo la mayor parte de sus ingresos de las tarifas de licencia para su implementación de PostScript para impresoras, conocido como procesador de imágenes rasterizadas o RIP . A medida que varias plataformas nuevas basadas en RISC estuvieron disponibles a mediados de la década de 1980, algunos encontraron que faltaba el soporte de Adobe para las nuevas máquinas.

Esto y los problemas de costo llevaron a que las implementaciones de PostScript de terceros se volvieran comunes, particularmente en impresoras de bajo costo (donde la tarifa de licencia era el punto de fricción) o en equipos de composición tipográfica de alta gama (donde la búsqueda de velocidad exigía soporte para nuevas plataformas). más rápido de lo que Adobe podría proporcionar). En un momento dado, Microsoft otorgó la licencia a Apple para un intérprete compatible con PostScript que había comprado llamado TrueImage , y Apple otorgó la licencia a Microsoft para su nuevo formato de fuente, TrueType . Apple terminó llegando a un acuerdo con Adobe y con licencia PostScript genuino para sus impresoras, pero TrueType se convirtió en la tecnología de fuente de contorno estándar tanto para Windows como para Macintosh.

En la actualidad, los intérpretes de terceros compatibles con PostScript se utilizan ampliamente en impresoras y periféricos multifunción (MFP). Por ejemplo, el intérprete IPS PS3 de CSR plc , anteriormente conocido como PhoenixPage, es estándar en muchas impresoras y equipos multifunción, incluidos los desarrollados por Hewlett-Packard y vendidos bajo las líneas LaserJet y Color LaserJet. Otras soluciones PostScript de terceros que utilizan los fabricantes de impresoras y equipos multifunción incluyen Jaws y Harlequin RIP , ambos de Global Graphics . Una versión de software libre , con varias otras aplicaciones, es Ghostscript . Varios intérpretes compatibles se enumeran en el Wiki de impresión no documentada.

Algunas impresoras láser básicas y económicas no son compatibles con PostScript, sino que vienen con controladores que simplemente rasterizan los formatos gráficos nativos de la plataforma en lugar de convertirlos primero a PostScript. Cuando se necesita compatibilidad con PostScript para una impresora de este tipo, se puede utilizar Ghostscript. También hay varios intérpretes PostScript comerciales, como T-Script de TeleType Co.

Utilizar como sistema de visualización

PostScript se convirtió en un éxito comercial gracias a la introducción de la interfaz gráfica de usuario (GUI), que permite a los diseñadores diseñar páginas directamente para su eventual salida en impresoras láser. Sin embargo, los propios sistemas gráficos de la GUI eran en general mucho menos sofisticados que PostScript; QuickDraw de Apple , por ejemplo, solo admitía líneas y arcos básicos, no las complejas B-splines y las opciones avanzadas de relleno de regiones de PostScript. Para aprovechar al máximo la impresión PostScript, las aplicaciones en las computadoras tuvieron que volver a implementar esas funciones utilizando el propio sistema de gráficos de la plataforma host. Esto dio lugar a numerosos problemas en los que el diseño en pantalla no coincidía exactamente con la salida impresa, debido a las diferencias en la implementación de estas funciones.

A medida que aumentaba la potencia de las computadoras, se hizo posible alojar el sistema PS en la computadora en lugar de en la impresora. Esto condujo a la evolución natural de PS de un sistema de impresión a uno que también podría usarse como el propio lenguaje gráfico del anfitrión. Este enfoque tenía numerosas ventajas; no solo ayudó a eliminar la posibilidad de diferentes resultados en la pantalla y la impresora, sino que también proporcionó un potente sistema de gráficos para la computadora y permitió que las impresoras fueran "tontas" en un momento en que el costo de los motores láser estaba cayendo. En un entorno de producción, el uso de PostScript como sistema de visualización significaba que la computadora host podía mostrar una resolución baja a la pantalla, una resolución más alta a la impresora o simplemente enviar el código PS a una impresora inteligente para la impresión externa.

Sin embargo, PostScript se escribió pensando en la impresión y tenía numerosas características que lo hacían inadecuado para su uso directo en un sistema de visualización interactiva. En particular, PS se basó en la idea de recopilar comandos de PS hasta que showpagese vio el comando, momento en el que todos los comandos leídos hasta ese momento se interpretaron y emitieron. En un sistema interactivo, esto claramente no era apropiado. PS tampoco tenía ningún tipo de interactividad incorporada; por ejemplo, la compatibilidad con la detección de aciertos para la interactividad del mouse obviamente no se aplicaba cuando se usaba PS en una impresora.

Cuando Steve Jobs dejó Apple y comenzó NeXT , le propuso a Adobe la idea de usar PS como sistema de visualización para sus nuevas estaciones de trabajo. El resultado fue Display PostScript o DPS. DPS agregó funcionalidad básica para mejorar el rendimiento al cambiar muchas búsquedas de cadenas en enteros de 32 bits, agregar soporte para salida directa con cada comando y agregar funciones para permitir que la GUI inspeccione el diagrama. Además, se proporciona un conjunto de "Enlaces" para permitir que el código PS a ser llamados directamente desde el lenguaje de programación C . NeXT usó estos enlaces en su sistema NeXTStep para proporcionar un sistema de gráficos orientado a objetos . Aunque DPS se escribió junto con NeXT, Adobe lo vendió comercialmente y era una característica común de la mayoría de las estaciones de trabajo Unix en la década de 1990.

Sun Microsystems adoptó otro enfoque y creó NeWS . En lugar del concepto de DPS de permitir que PS interactúe con programas C, NeWS extendió PS a un lenguaje adecuado para ejecutar toda la GUI de una computadora. Sun agregó una serie de nuevos comandos para temporizadores, control del mouse, interrupciones y otros sistemas necesarios para la interactividad, y agregó estructuras de datos y elementos de lenguaje para permitir que esté completamente orientado a objetos internamente. Una GUI completa, tres de hecho, se escribieron en NeWS y se proporcionaron durante un tiempo en sus estaciones de trabajo. Sin embargo, los esfuerzos en curso para estandarizar el sistema X11 llevaron a su introducción y uso generalizado en los sistemas Sun, y NeWS nunca llegó a ser ampliamente utilizado.

El idioma

PostScript es un lenguaje de programación completo de Turing , que pertenece al grupo concatenativo . Normalmente, los programas PostScript no son producidos por humanos, sino por otros programas. Sin embargo, es posible escribir programas de computadora en PostScript como cualquier otro lenguaje de programación.

PostScript es un interpretado , basado en la pila un lenguaje similar al Forth pero con fuerte dinámica de escribir , estructuras de datos inspirados en las que se encuentran en Lisp , memoria de ámbito y, como lenguaje de nivel 2, la recolección de basura . La sintaxis del lenguaje usa notación polaca inversa , lo que hace que el orden de las operaciones sea inequívoco, pero leer un programa requiere algo de práctica, porque hay que tener en cuenta el diseño de la pila . La mayoría de los operadores (lo que otros lenguajes denominan funciones ) toman sus argumentos de la pila y colocan sus resultados en la pila. Los literales (por ejemplo, números) tienen el efecto de colocar una copia de sí mismos en la pila. Se pueden construir estructuras de datos sofisticadas en los tipos de matriz y diccionario , pero no se pueden declarar al sistema de tipos, que los ve a todos solo como matrices y diccionarios, por lo que se deja cualquier disciplina de escritura adicional que se aplique a tales "tipos" definidos por el usuario al código que los implementa.

El carácter "%" se utiliza para introducir comentarios en programas PostScript. Como convención general, cada programa PostScript debe comenzar con los caracteres "%! PS" como directiva de intérprete para que todos los dispositivos lo interpreten correctamente como PostScript.

"Hola Mundo"

Un programa Hello World , la forma habitual de mostrar un pequeño ejemplo de un programa completo en un lenguaje determinado, podría verse así en PostScript (nivel 2):

 %!PS
 /Courier             % name the desired font
 20 selectfont        % choose the size in points and establish 
                      % the font as the current one
 72 500 moveto        % position the current point at 
                      % coordinates 72, 500 (the origin is at the 
                      % lower-left corner of the page)
 (Hello world!) show  % stroke the text in parentheses
 showpage             % print all on the page

o si el dispositivo de salida tiene una consola

 %!PS
 (Hello world!) =

Unidades de longitud

PostScript usa el punto como su unidad de longitud. Sin embargo, a diferencia de algunas de las otras versiones del punto, PostScript usa exactamente 72 puntos por pulgada. Por lo tanto:

1 punto = 1/72 pulgada = 25,4/72 mm = 127/360 mm = 352,777… micrómetros

Por ejemplo, para trazar una línea vertical de 4 cm de longitud, basta con escribir:

0 0 moveto 
0 113.385827 lineto stroke

De manera más legible e idiomática, se podría usar el siguiente equivalente, que demuestra una definición de procedimiento simple y el uso de operadores matemáticos muly div:

/cm {72 mul 2.54 div} def               % 1 inch = 2.54 cm exactly
 0 0 moveto
 0 4 cm lineto stroke

La mayoría de las implementaciones de PostScript usan valores reales de precisión simple (mantisa de 24 bits), por lo que no tiene sentido usar más de 9 dígitos decimales para especificar un número real, y realizar cálculos puede producir errores de redondeo inaceptables.

Software

Lista de software que se puede utilizar para renderizar los documentos PostScript:

Ver también

Referencias

Otras lecturas

enlaces externos