Posdata

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 28 de enero de 2022; las comprobaciones requieren 2 ediciones .
posdata
clase de idioma multiparadigma , basado en pilas , procedimental
Apareció en mil novecientos ochenta y dos
Autor John WarnockCharles Geschke
Desarrollador Adobe
extensión de archivo .ps
Liberar Posdata 3 (1997)
sistema de tipos estricto , dinámico
Implementaciones principales Adobe PostScript, TrueImage, Ghostscript , InterPress
sido influenciado Adelante
influenciado PDF , Postscript encapsulado

PostScript es un lenguaje de descripción de páginas utilizado principalmente en autoedición .

Ideología

Postscript fue desarrollado por John Warnock y Chuck Geschke de Adobe Systems a principios de la década de 1980 . Postscript se usó originalmente como el núcleo del motor de impresión de la computadora Apple , pero pronto se generalizó en la mayoría de los sistemas informáticos. Los intérpretes de PostScript (en forma de componentes de software o hardware) para imprimir documentos están presentes en casi todos los sistemas informáticos modernos.

Postscript utiliza un modelo de visualización de texto (o imágenes) en una página en blanco. Cuando la página está lista, se imprime y comienza el “dibujo” de la imagen de la página siguiente. No es más que un método de compilación. Cada documento Postscript suele ser un programa que imprime ( o muestra en la pantalla de un monitor ) páginas consecutivas.

Historia

El lenguaje PostScript fue concebido en 1976 por John Warnock de Evans and Sutherland Computer Corporation .. Su colega John Gaffney , que entonces era el  intérprete de la gran base de datos de gráficos 3D del puerto de Nueva York , creó el lenguaje Design System (muy similar a Forth ). Posteriormente, John Warnock se trasladó al centro de investigación Xerox PARC en Palo Alto y en 1978, junto con Martin Newellcreó un nuevo sistema JaM (John y Martin) basado en Design System, utilizado en la investigación de impresión y luego desarrollado en InterPress- Protocolo de impresión Xerox .

En 1982, John Warnock dejó Xerox y fundó Adobe Systems Inc. con Chuck Geschke . Inicialmente, su objetivo era crear una estación de trabajo de impresión especializada, que se llamaría PostScript, pero pronto se dieron cuenta de que era mejor concentrar sus esfuerzos en desarrollar herramientas para administrar impresoras de terceros.

En 1984, PostScript vio la luz ( luego se agregó el Nivel 1 al nombre para distinguirlo del Nivel 2). Postscript tenía una serie de ventajas sobre otros sistemas de la época:

Adobe se arriesgó con PostScript, y es posible que no hubiera podido convencer al mercado de la necesidad de dicho lenguaje si no fuera por Steve Jobs de Apple Computer . En 1985, las ventas de computadoras Macintosh comenzaron a caer y Apple necesitaba una "aplicación asesina", algo que solo su computadora podía hacer. Steve Jobs invirtió 2,5 millones de dólares en Adobe, que creó un controlador PostScript para la impresora Apple LaserWriter , y en Aldus , que creó PageMaker , que aprovechó al máximo Macintosh y LaserWriter. El advenimiento de la preimpresión en la computadora salvó a Apple y convirtió a Adobe y Aldus en grandes empresas. Otros fotocomponedores, comenzando con Linotype , apreciaron PostScript y pronto equiparon sus fotocomponedores con intérpretes de PostScript. PostScript se ha convertido en el estándar en preimpresión.

En 1991 , Adobe lanzó la siguiente revisión de PostScript, PostScript Nivel 2. Esta fue una revisión importante, largamente esperada por la comunidad editorial. Las principales mejoras fueron:

Adobe cometió el error de publicar las especificaciones de PostScript Nivel 2 antes de comenzar a trabajar en su implementación de hardware. Los competidores ingresaron inesperadamente al mercado con emuladores PostScript Nivel 2 antes que Adobe. Como resultado, las aplicaciones tardaron mucho tiempo en empezar a utilizar todas las nuevas funciones de nivel 2 de PostScript.

En 1998, Adobe introdujo el nuevo estándar PostScript 3. Los cambios desde el nivel 2 son menores. Esto es comprensible dado que muchas aplicaciones aún no pueden admitir completamente PostScript Nivel 2. Los principales beneficios de PostScript 3 son:

Alcance

Al igual que los trazadores, PostScript proporciona una salida de gráficos vectoriales de alta calidad y un único lenguaje de control que puede utilizar cualquier fabricante de impresoras. Al igual que las impresoras de matriz de puntos, PostScript ofrece opciones convenientes para imprimir gráficos y texto en mapas de bits. A diferencia de ambos, PostScript puede combinar todos estos tipos de salida en una página, brindándole mucha más flexibilidad que cualquier impresora o trazador anterior.

PostScript es más que un lenguaje de control de impresora típico, es un lenguaje de programación con todas las funciones. Muchos programas de aplicación pueden convertir un documento en un programa PostScript que producirá el documento original cuando se ejecute. Este programa puede enviarse directamente a una impresora habilitada para PostScript, o convertirse mediante un intérprete de PostScript a otro formato (para impresoras que no sean PostScript), o el resultado de su ejecución por parte del intérprete puede mostrarse en la pantalla. Debido a que el programa PostScript original es el mismo, PostScript se denomina independiente del dispositivo .

La mayoría de las impresoras y trazadores de alto rendimiento tienen un intérprete de PostScript incorporado. Al mismo tiempo, las impresoras domésticas simples solo admiten operaciones gráficas elementales, por lo que la tarea de crear una imagen de mapa de bits se asigna a la unidad central de procesamiento . Existen intérpretes de lenguaje PostScript para varios sistemas operativos , el más conocido de los cuales es el programa gratuito Ghostscript .

Hay una versión comercial del sistema TeX  : BaKoMa TeX, escrita por el programador soviético y ruso V. Malyshev completamente en PostScript.

Idioma

PostScript es un lenguaje de programación completo de Turing con todas las funciones . Aunque los programas PostScript no son creados principalmente por personas, sino por otros programas, en principio, nada impide escribir programas en él [1] para calcular gráficos, implementar métodos numéricos para resolver problemas matemáticos, etc.

PostScript es un lenguaje de pila interpretado similar a Forth . La sintaxis del lenguaje usa notación polaca inversa , lo que hace innecesario el uso de paréntesis, pero requiere algo de práctica para leer el texto del programa debido a la necesidad de tener en cuenta el contenido de la pila. La mayoría de los operadores toman operandos de la pila y empujan el resultado del cálculo a la pila. Los literales (cadenas y números) empujan una copia de sí mismos a la pila.

PostScript dibuja utilizando un sistema de coordenadas rectangulares bidimensionales , cuyo origen se encuentra en la esquina inferior izquierda de la página ; el eje x predeterminado es horizontal (es decir, el ancho de la página), el eje y  es vertical. La unidad de medida de las coordenadas lineales es el punto tipográfico . Con la ayuda de operadores de lenguaje [6, pp. 517-518] el origen del sistema de coordenadas se puede mover a cualquier punto (operador translate), y el sistema mismo se puede rotar a un ángulo arbitrario en el plano de la página (operador rotate); scalela escala a lo largo de cada uno de los dos ejes también se puede cambiar usando el operador . Por ejemplo, la salida de la imagen "espejo" a la película (llamada " emulsión hacia abajo ") en las impresoras PostScript se lleva a cabo utilizando un solo operador scaleque establece una escala negativa a lo largo de uno de los ejes del sistema de coordenadas: por ejemplo, -1.0 1.0 scale.

PostScript tiene las características de un metarchivo, combinando soporte para imágenes vectoriales y de mapa de bits. Las fuentes en PostScript son solo vectoriales. Un poco separados están los llamados. Tipos de letra Type3 en los que se puede utilizar cualquier procedimiento formulado en términos del lenguaje PostScript para dibujar glifos (procedimiento ) [6, págs. 337-342]. Desde el lanzamiento de SP4 para Windows NT 4.0 en 1998 (consulte también http://support.microsoft.com/gp/lifesupsps ) con Adobe Type Manager 4.0 y el controlador AdobePS 5 instalado en el sistema , todas las fuentes están en caracteres no romanos . La codificación, en particular, los caracteres cirílicos se cargaron en un archivo PostScript en forma de fuentes Type3 , donde cada glifo se representó como una imagen de mapa de bits de la resolución adecuada. La descarga de fuentes como mapas de bits creaba muchos problemas en la preparación para la fotocomposición y la preimpresión en general. Este error se solucionó en AdobePS 5.1 y Adobe Type Manager 4.1 , que luego se incluyeron en la distribución de Windows 2000 . /BuildGlyph

Estructura del documento

La estructura de un archivo PostScript está formada por comentarios estructurales. Los comentarios estructurales comienzan con una secuencia de caracteres " %%" al comienzo de una línea.

Un archivo PostScript consta de cuatro partes: encabezado, prólogo, cuerpo y epílogo.

El encabezado comienza con la línea " %!PS-Adobe-N.M" donde NM es la versión de la especificación, seguido de comentarios estructurales con las propiedades generales del documento, y el encabezado termina con la línea " %%EndComments".

%!PS-Adobe-2.0 %%Creador: dvips(k) 5.78 Copyright 1998 Radical Eye Software %%Título: rep.dvi %%Páginas: 9%%Orden de página: Ascend %%BoundingBox: 0 0 596 842 %%EndComments

El prólogo suele contener descripciones de subrutinas y datos necesarios para imprimir el documento, como procedimientos y fuentes. El prólogo termina con el comentario " %%EndProlog".

El cuerpo del programa contiene comandos encargados de representar cada página, precedidos por la cadena " %%Page: <метка> <номер>", donde <etiqueta> es la etiqueta de la página que no se imprime y <número> es el número de serie de la página en el archivo, por ejemplo,%%Page: iii 3

Después de los comandos para renderizar todas las páginas, hay un comentario estructural " %%Trailer", después del cual comienza el epílogo.

En el epílogo, puede duplicar los comentarios del encabezado (esto se implementa en caso de que el programa aún no sepa, por ejemplo, la cantidad de páginas al comienzo de la salida), en este caso, en lugar de los valores numéricos de los parámetros en el encabezado, debe escribir " (atend)".

El archivo termina con la cadena " %%EOF".

Descripción general de los elementos del lenguaje

pilas

PostScript utiliza cuatro pilas para almacenar diferentes tipos de datos: la pila de operandos, la pila de contexto de gráficos, la pila de ejecución y la pila de diccionario.

Tipos de datos

Los tipos de datos básicos del lenguaje PostScript son: entero con signo, número real, expresión booleana ( trueo false), cadena de caracteres ( ( … ) ), matriz ( [ … ] ), procedimiento ( { … } ), diccionario, nombre.

Operadores

Los operadores en PostScript toman operandos (parámetros) sacándolos de la pila y empujan los resultados de las acciones (si los hay) también a la pila. Este estilo de programación, en el que los operandos se especifican antes de la operación sobre ellos (operador), se denomina notación postfix. Por ejemplo, para sumar dos números dados, primero debe colocarlos en la parte superior de la pila de operandos, luego ejecutar el comando add, que extraerá los dos últimos elementos (es decir, los números dados) de la pila, sumarlos y escribir el resultado a la pila, desde donde puede ser extraído por otra operación como un operando. Está escrito así:4 5 add

Las declaraciones de PostScript se pueden dividir en varios grupos. Estos son operadores para trabajar con el contenido de la pila (independientemente del tipo), operaciones aritméticas, operadores para trabajar con matrices, trabajar con diccionarios, trabajar con cadenas, comparación, control de flujo de comandos, trabajar con el tipo de argumentos y conversión, acceder y trabajar con archivos, trabajar con memoria virtual, estado de gráficos y otros.

Una breve descripción del mecanismo de dibujo de imágenes

El proceso de dibujo (rasterización) al ejecutar ( interpretar ) un programa PostScript consiste en calcular para cada píxel del dispositivo de salida uno (para monocromo) o varios (por ejemplo, cuatro para un dispositivo CMYK o seis para CMYKOrGr ) valores de parámetros (-s) en el rango de 0 a 1.0. El valor calculado de los parámetros se utiliza como argumento para otra función importante : la función  de transferencia ( sinónimo en ruso  : visualización ). Por defecto, en la gran mayoría de los casos, esta función es la función más simple y(x)=x y su valor es idéntico al valor del argumento. Sin embargo, en varios casos, por ejemplo , se utilizan dependencias no lineales bastante complejas y(x) para compensar la ganancia de punto , dada por aproximación por partes o tabular . La aproximación lineal por partes de la función de transferencia se utiliza, por ejemplo, en archivos Adobe Photoshop EPS y PS  : para la aproximación, el área de definición [0; 1,0] se divide en cuarenta secciones con un paso de 0,025 (2,5 % del punto de trama ) ; en cada una de las cuarenta secciones, la función de transferencia tiene la forma y(x)=b x+a. La función de transferencia de la forma y(x)=1-x (en términos del lenguaje PostScript ) invierte la imagen, convirtiéndola en un negativo ; así es como las impresoras PostScript  imprimen un negativo . {1 sub neg} settransfer

Para dispositivos monocromáticos, por ejemplo, para fotocomposición , la decisión de llenar (resaltar) un píxel se puede tomar como resultado de comparar el valor de la función de transferencia calculado para un píxel dado y el valor del llamado. Spot -function o matriz bidimensional Threshold array : si el valor de la función de transferencia es mayor que el valor de la Spot -función o elemento de la matriz Threshold para este píxel, este último se pinta encima (resaltado).

Una selección especial de la función de transferencia y la función Spot o la matriz Threshold hace posible obtener la proporción del número de píxeles sombreados y vacíos del dispositivo de salida para cada píxel de la imagen de origen (rasterizada) de modo que el brillo promedio de la el área de imagen correspondiente en la impresión (impresión) es casi proporcional al valor del parámetro calculado (ver Fig. arriba).

De manera similar, se forman puntos de varios tamaños, que forman una imagen de medios tonos en impresiones tipográficas: en periódicos, revistas, libros.

Ejemplo de programa

%!ps-adobe-1.0 % Por defecto, postscript usa la unidad de medida 1 punto = 1/72 pulgada . % y nos gustan los milímetros. 72 25,4 div % 1 mm = 72/25,4 puntos dup % duplica el valor en la parte superior de la pila escala % estirar este número de veces en ambas coordenadas 100 100 traducir % establecer origen a (100 mm, 100 mm)   /Times-Roman findfont % obtener fuente Times-Roman 10 scalefont % estirar a tamaño 10 (¡tenemos mm!) setfont % establece la fuente seleccionada   0 30 330 { % ciclo para ángulos de 0 a 330 en incrementos de 30 gsave % guardar transformación de coordenadas actual rotar % rotar el sistema de coordenadas (el ángulo en grados se toma de la parte superior de la pila) 15 0 mover a % mover a punto (15 mm, 0 mm) (Wikipedia) mostrar % escribir palabra en la fuente actual grestore % retorno transformación de coordenadas } para % final del bucle for   mostrar página % mostrar página

Salida del programa

Manejo de fuentes

Casi tan complejo como el propio PostScript es el manejo de las fuentes . El sistema de fuentes utiliza primitivas de gráficos PS para dibujar glifos con líneas curvas, que luego se pueden mostrar en cualquier resolución . Con este enfoque surgen varios problemas tipográficos .

Uno de los problemas, que las fuentes no se escalan linealmente en tamaños pequeños, se resuelve al incluir sugerencias . En un momento en que la tecnología para incluir sugerencias en las fuentes estaba fuertemente protegida, las fuentes "insinuadas" se codificaron y comprimieron en lo que Adobe llamó Font Type 1 (también conocido como PS1 , T1 o Adobe Type 1 ). El Tipo 1 era más una instalación de almacenamiento para información puramente delineada de caracteres que un lenguaje completo (el PDF es similar en este aspecto). Luego, Adobe comenzó a otorgar licencias de tecnología Tipo 1 a aquellos que querían agregar sugerencias a sus fuentes. Aquellos que no obtuvieron la licencia de la tecnología se quedaron con la fuente Tipo 3. Las fuentes Tipo 3 permitieron la complejidad total del lenguaje PostScript, pero sin un enfoque estándar para las sugerencias.

La fuente Tipo 2, que está diseñada para usarse con el formato de fuente compacta (CFF), se ha implementado para reducir el tamaño total del archivo de fuente. Más tarde se convirtió en la base para el manejo de fuentes OpenType .

Para competir con el sistema de Adobe, Apple desarrolló sus propios sistemas TrueType en 1991 . Inmediatamente después de que se anunciara TrueType, Adobe publicó las especificaciones para el formato Tipo 1 . Desde entonces, han aparecido muchas fuentes gratuitas Tipo 1. Por ejemplo, las fuentes utilizadas por el sistema de diseño TeX están disponibles en este formato.

A fines de la década de 1990, Adobe se unió a Microsoft en el desarrollo de OpenType . Esencialmente, fue una fusión y extensión de los formatos Type 1 y TrueType. Cuando se imprime en la salida de un dispositivo PostScript, se omiten las partes redundantes de la fuente OpenType y lo que se envía al controlador de impresora no es diferente de lo que se envía con las fuentes TrueType o Type 1.

Fuentes indexadas por CID

El formato de fuente indexado por CID (abreviatura de Carácter identificado) se desarrolló para resolver el problema de abordar los glifos en idiomas jeroglíficos con un gran número de caracteres (chino, coreano, japonés). Este formato se puede utilizar con Tipo 1 para fuentes indexadas CID estándar o Tipo 2 para fuentes OpenType indexadas CID .

Cada glifo de un elemento en una colección de caracteres se identifica mediante un índice de carácter único (CID) en esa codificación, que puede no ser el mismo que el código del carácter correspondiente, como en Unicode .

Las colecciones de caracteres tienen un nombre exclusivo de mayúsculas y minúsculas, ordenación y relleno, como "Adobe-Japan1-6". El registro denota al desarrollador (por ejemplo, Adobe). El orden revela el propósito del conjunto de caracteres (por ejemplo, "Japón1"). Un número adicional (por ejemplo, 6) suele indicar el tamaño de la colección. Por ejemplo, la colección Adobe-Japan1-0 tiene 8284 glifos y Adobe-Japan1-6 tiene 23058 glifos.

Las fuentes con una clave CID se pueden crear sin hacer referencia a una colección de caracteres, utilizando una codificación de "identidad" como Identity-H (para escritura horizontal) o Identity-V (para escritura vertical). Tales fuentes pueden tener un juego de caracteres único, en cuyo caso el número CID del glifo no es informativo; por lo general, se usa la codificación Unicode en su lugar , potencialmente con información adicional.

La tecnología Adobe ClearScan crea fuentes Type1-CID personalizadas para que coincidan con la apariencia visual de un documento escaneado después del reconocimiento óptico de caracteres (OCR). ClearScan (en Acrobat 9) no reemplaza las fuentes con fuentes del sistema o Type1-MM (como en Acrobat 8 ​​​​y versiones anteriores), sino que utiliza estas fuentes personalizadas recién creadas. Las fuentes personalizadas están incrustadas en el archivo PDF.

Tendencias y perspectivas

Además de PostScript , el lenguaje de control de impresoras PCL de Hewlett-Packard se ha generalizado en el mercado de las impresoras láser . PCL originalmente estaba destinado a tareas distintas de PostScript (control de impresora en lugar de descripción de página) y no puede proporcionar portabilidad . Sin embargo, para uso de oficina es en algunos casos más conveniente. PCL utiliza fuentes TrueType estándar de Windows ( a diferencia de PostScript). Además, la última versión (PCL6) fue desarrollada por HP en estrecha colaboración con Microsoft y, por lo tanto, brinda una respuesta más rápida a la aplicación, impresión rápida de gráficos complejos, calidad de impresión mejorada y mayor precisión al generar documentos.

Además, PostScript tiene licencia y está libre de regalías por parte de Adobe por controlador RIP (Procesador de imágenes de trama), mientras que PCL puede ser utilizado por terceros de forma gratuita. Por lo tanto, RIP PostScript 3 con licencia para plotters HP cuesta alrededor de $ 500, mientras que los controladores de "emulación PS2" de OKI sin licencia cuestan entre $ 30 y $ 70.

Prácticamente todas las impresoras láser de la década de 1990 admitían PostScript como idioma principal; desde la década de 2000, muchas impresoras láser de clase SOHO no han sido equipadas con soporte PostScript para reducir costos. Por lo tanto, PostScript está siendo expulsado de la oficina por PCL, sin dejar de ser, sin embargo, un estándar prácticamente indiscutible en el campo de la preimpresión.

Notas

  1. Evan Danaher. La vida en PostScript  . - El juego "Life" en el lenguaje PostScript ( GPL ). - " Inglés.  Aprendí que Postscript es un lenguaje real, no solo para gráficos. Así que pasé un poco de tiempo aprendiendo y quería hacer algo interesante en él. Así que, por supuesto, la elección obvia fue el juego de la vida de John Conway. ". Consultado el 9 de abril de 2012. Archivado desde el original el 15 de mayo de 2012.

Literatura

Enlaces