Posdata
PostScript (PS) es un lenguaje de descripción de páginas en el ámbito de la publicación electrónica y la autoedición. Es un lenguaje de programación concatenativo de tipo dinámico. 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 empresa 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.
Simultáneamente, 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ágina. 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 lenguaje, 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 (por "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 esta vez fueron visitados por Steve Jobs, quien los instó a adaptar PostScript para ser utilizado como lenguaje para el manejo de impresoras láser.
En marzo de 1985, Apple LaserWriter fue la primera impresora que se entregó 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 los méritos técnicos y la amplia disponibilidad hizo 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 ráster) para el lenguaje PostScript fue un componente común de las impresoras láser, hasta 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ía en una imagen de trama con la resolución natural de la impresora. Esto requería 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 estaba conectado. Cuando los motores de las impresoras láser costaban más de mil dólares, el costo adicional de PS 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 poderosas, 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 eran compatibles con PostScript, en gran parte debido a la creciente competencia de las impresoras de inyección de tinta que no eran PostScript, mucho más baratas, y a los nuevos métodos basados en software para representar imágenes PostScript en la computadora, lo que las hacía adecuadas para cualquier impresora.; PDF, 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 procesamiento de imágenes PostScript de la computadora a la impresora.
Nivel PostScript 1
La primera versión del lenguaje PostScript se lanzó al mercado en 1984. El calificador 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, compatibilidad con separaciones de procesamiento de imágenes de trama (RIP), descompresión de imágenes (por ejemplo, las imágenes JPEG podrían ser procesadas por un programa PostScript), compatibilidad con fuentes compuestas y el mecanismo de formulario para almacenar en caché contenido reutilizable.
Postscript 3
PostScript 3 (Adobe abandonó la terminología de "nivel" a favor de un control de versiones simple) llegó a fines de 1997 y, junto con muchas versiones nuevas basadas en diccionarios de operadores anteriores, introdujo un mejor manejo del color y nuevos filtros (que permiten la compresión/descompresión en el programa, la fragmentación del programa y el manejo avanzado de errores).
PostScript 3 fue importante en cuanto a la sustitución de los sistemas de preimpresión electrónicos en color patentados, entonces ampliamente utilizados para la producción de revistas, a través de la introducción de operaciones de sombreado suave con hasta 4096 tonos de gris (en lugar de los 256 disponibles en PostScript Nivel 2), así como DeviceN, un espacio de color que permitía agregar colores de tinta adicionales (llamados colores directos) en páginas de color compuestas.
Uso en impresión
Antes de PostScript
Antes de la introducción de PostScript, las impresoras estaban diseñadas para imprimir salida de caracteres dado el texto, normalmente en ASCII, como entrada. Existí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 se estampaban 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. Los caracteres de estos sistemas se dibujaban como una serie de puntos, según lo definido por una tabla de fuentes dentro de la impresora. A medida que crecían en sofisticación, las impresoras de matriz de puntos comenzaron 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 de trama. 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 tenían un uso limitado para cualquier cosa que no fuera la impresión de gráficos. Además, tendían a ser costosos y lentos y, por lo tanto, escasos.
Impresión PostScript
Las impresoras láser combinan las mejores funciones de impresoras y plotters. Al igual que los trazadores, las impresoras láser ofrecen líneas de arte 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 los plotters, una impresora láser permite colocar gráficos y texto de alta calidad en la misma página. PostScript hizo posible aprovechar al máximo estas características al ofrecer un único lenguaje de control que podía utilizarse en cualquier marca de impresora.
PostScript fue más allá del típico lenguaje de control de impresoras y fue 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 documento-programa es el mismo independientemente de su destino, se denomina independiente del dispositivo.
PostScript se destaca por implementar 'sobre la marcha' rasterización en la que todo, incluso el texto, se especifica en términos de líneas rectas y curvas cúbicas de Bézier (que anteriormente solo se encontraban en aplicaciones CAD), lo que permite escalar, rotar y otras transformaciones arbitrarias. 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 de trama PostScript o RIP.
Manejo de fuentes
Casi tan complejo como el propio PostScript es el manejo de las fuentes. El sistema de fuentes utiliza las primitivas de gráficos PS para dibujar glifos como curvas, que luego se pueden representar en cualquier resolución. Una serie de problemas tipográficos tuvieron que ser considerados con este enfoque.
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 verse 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 en cada letra que son importantes para el rasterizador. El resultado fueron fuentes significativamente más atractivas, incluso a baja resolución. Anteriormente se creía que para esta tarea se requerían 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 PostScript Fuente 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 (el PDF es similar en este sentido). Adobe luego vendería licencias de la tecnología Tipo 1 a aquellos que quisieran agregar sugerencias a sus propias fuentes. Aquellos que no licenciaron la tecnología se quedaron con la Tipo 3 de fuente (también conocida como PostScript Tipo 3 de fuente, 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 total del archivo de fuente. Posteriormente, el formato CFF/Type2 se convirtió en la base para manejar contornos PostScript en fuentes OpenType.
El formato de fuente con clave CID también se diseñó para resolver los problemas de las fuentes OCF/Tipo 0, para abordar la codificación compleja de idiomas asiáticos (CJK) y los problemas de conjuntos de caracteres muy grandes. El formato de fuente con clave CID se puede utilizar con el formato de fuente Tipo 1 para fuentes con clave CID estándar, o Tipo 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 Tipo 1. Las herramientas minoristas como Altsys Fontographer (adquirida por Macromedia en enero de 1995, propiedad de FontLab desde mayo de 2005) agregaron la capacidad de crear fuentes Tipo 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 mucho.
A fines 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, las partes innecesarias de la fuente OpenType se omiten y lo que el controlador envía al dispositivo es lo mismo que sería para una fuente TrueType o Type 1, según el tipo de contornos que se hayan utilizado. presentes en la fuente OpenType.
Otras implementaciones
En la década de 1980, Adobe obtenía la mayor parte de sus ingresos de los derechos de licencia por la implementación de PostScript para impresoras, conocido como procesador de imágenes de trama o RIP. A medida que una serie de nuevas plataformas basadas en RISC estuvieron disponibles a mediados de la década de 1980, algunos descubrieron 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 hicieran comunes, particularmente en impresoras de bajo costo (donde la tarifa de licencia era el punto conflictivo) 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, Microsoft otorgó la licencia a Apple de un intérprete compatible con PostScript que había comprado llamado TrueImage, y Apple otorgó la licencia a Microsoft de su nuevo formato de fuente, TrueType. Apple terminó llegando a un acuerdo con Adobe y obtuvo la licencia de 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.
Hoy en día, los intérpretes compatibles con PostScript de terceros 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 MFP, incluidas las desarrolladas por Hewlett-Packard y vendidas bajo las líneas LaserJet y Color LaserJet. Otras soluciones PostScript de terceros utilizadas por los fabricantes de impresoras e impresoras multifunción incluyen Jaws y Harlequin RIP, ambas de Global Graphics. Una versión de software libre, con varias otras aplicaciones, es Ghostscript. Varios intérpretes compatibles se enumeran en Undocumented Printing Wiki.
Algunas impresoras láser básicas y económicas no son compatibles con PostScript, sino que vienen con controladores que simplemente rasterizan los formatos de 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 comerciales de PostScript, 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 permitía a los diseñadores diseñar páginas directamente para su posterior salida en impresoras láser. Sin embargo, los propios sistemas de gráficos de la GUI eran generalmente 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 de las computadoras tenían que volver a implementar esas funciones usando el propio sistema de gráficos de la plataforma anfitriona. Esto generó 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 crecía el poder 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 podía usarse como el propio lenguaje de gráficos del host. Había numerosas ventajas en este enfoque; no solo ayudó a eliminar la posibilidad de una salida diferente en la pantalla y en la impresora, sino que también proporcionó un poderoso 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 en la pantalla, una resolución más alta en 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 funciones que lo hacían inadecuado para su uso directo en un sistema de visualización interactivo. En particular, PS se basó en la idea de recopilar comandos de PS hasta que se viera el comando showpage
, momento en el cual todos los comandos leídos hasta ese momento se interpretaron y generaron. 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 fundó NeXT, le propuso a Adobe la idea de utilizar PS como sistema de visualización para sus nuevas estaciones de trabajo. El resultado fue Display PostScript o DPS. DPS agregó una funcionalidad básica para mejorar el rendimiento cambiando muchas búsquedas de cadenas en enteros de 32 bits, agregando soporte para salida directa con cada comando y agregando funciones para permitir que la GUI inspeccione el diagrama. Además, un conjunto de "bindings" se proporcionó para permitir llamar al código PS 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ó varios comandos nuevos 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.
Formato de documento portátil
El PDF y el PostScript comparten el mismo modelo de imagen y ambos documentos se pueden convertir mutuamente. Ambos documentos producen el mismo resultado cuando se imprimen. La diferencia entre PDF y PostScript es que el PDF carece del marco de lenguaje de programación de propósito general del lenguaje PostScript. Un documento PDF es una estructura de datos estática hecha para un acceso eficiente e incrusta información de navegación adecuada para una visualización interactiva.
El idioma
PostScript es un lenguaje de programación completo de Turing, perteneciente al grupo concatenativo. Por lo general, 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 lenguaje interpretado, basado en pilas, similar a Forth, pero con escritura dinámica fuerte, estructuras de datos inspiradas en las que se encuentran en Lisp, memoria de alcance y, desde el nivel 2 del lenguaje, recolección de elementos no utilizados. La sintaxis del lenguaje usa notación polaca inversa, lo que hace que el orden de las operaciones no sea ambiguo, pero leer un programa requiere algo de práctica, porque uno tiene 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. 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 array y dictionary, pero no se pueden declarar al sistema de tipos, que los ve a todos solo como matrices y diccionarios, por lo que cualquier tipeo adicional disciplina que se aplicará a dichos "tipos" definidos por el usuario. se deja al código que los implementa.
El carácter "%" se utiliza para introducir comentarios en los programas PostScript. Como convención general, todos los programas PostScript deben comenzar con los caracteres "%!PS" como una 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 idioma determinado, podría verse así en PostScript (nivel 2):
¡ %! PS /Courier % nombre la fuente deseada 20 selectfont % elegir el tamaño en puntos y establecer % la fuente como la actual 72 500 Muévete % posición el punto actual en % coordenadas 72, 500 (el origen está en el % esquina inferior izquierda de la página) ¡Hola mundo! show % trazo el texto entre paréntesis showpage % imprimir todo en la página
o si el dispositivo de salida tiene una consola
¡ %! PS ¡Hola mundo! =
Unidades de longitud
PostScript utiliza el punto como unidad de longitud. Sin embargo, a diferencia de 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... micrometros
Por ejemplo, para dibujar una línea vertical de 4 cm de longitud, basta con escribir:
0 0 Muévete 0 113.385827 linea accidente
Más legible e idiomáticamente, se podría usar el siguiente equivalente, que demuestra una definición de procedimiento simple y el uso de los operadores matemáticos mul
y div
:
/cm {}72 mul 2.54 div} def % 1 pulgada = 2,54 cm exactamente 0 0 Muévete 0 4 cm linea accidente
La mayoría de las implementaciones de PostScript usan 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:
- Ghostscript
- pstoedit
- Zathura
Contenido relacionado
Serie GE-600
Amanda (software)
MATLAB