PostScript

редактировать
Формат файла
PostScript
Парадигма Многопарадигма : на основе стека, процедурный
Разработан Джон Варнок, Чак Гешке, Билл Пэкстон
Разработчик Adobe Systems
Первое появление1982; 38 лет назад (1982 г.)
Стабильный выпуск PostScript 3/1997; 23 года назад (1997)
Дисциплина набора текста Динамичный, сильный
Основные реализации
Adobe PostScript, TrueImage, Ghostscript
Под влиянием
Mesa, Interpress, Lisp
Influenced
PDF
PostScript (формат файла)
Расширение имени файла .ps
Тип Интернет-носителя application / postscript
Uniform Type Identifier (UTI) com.adobe.postscript
Magic number %!
РазработаноAdobe Systems
Тип форматаформат файла печати
Расширен доEncapsulated PostScript

PostScript (PS) - это язык описания страниц в электронных публикациях и настольных издательских системах бизнес. Это динамически типизированный, конкатенативный язык программирования, созданный в Adobe Systems Джоном Варноком, Чарльзом Гешке, Дуг Бротц, Эд Тафт и Билл Пэкстон с 1982 по 1984 год.

Содержание
  • 1 История
    • 1.1 PostScript уровня 1
    • 1.2 PostScript уровня 2
    • 1.3 PostScript 3
  • 2 Использование при печати
    • 2.1 До PostScript
    • 2.2 Печать PostScript
    • 2.3 Обработка шрифтов
    • 2.4 Другие реализации
  • 3 Использование в качестве системы отображения
  • 4 Язык
    • 4.1 "Hello world"
    • 4.2 Единицы длины
  • 5 Программное обеспечение
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки
История

концепции языка PostScript были заложены в 1976 году Джоном Гаффни в Evans Sutherland, компании компьютерной графики. В то время Гаффни и Джон Уорнок разрабатывали интерпретатор для большой базы данных трехмерной графики Гавани Нью-Йорка.

. Одновременно исследователи из Xerox PARC разработали первый лазерный принтер и осознал необходимость стандартных средств определения изображений страниц. В 1975-76 гг. Боб Спроул и Уильям Ньюман разработали формат Press, который в конечном итоге был использован в системе Xerox Star для управления лазерными принтерами. Но Press, формату данных, а не языку, не хватало гибкости, и PARC приложил усилия для создания преемника Interpress.

В 1978 году Джон Гаффни и Мартин Ньюэлл затем в Xerox PARC написали JM или JaM (для «Джон и Мартин»), которые использовались для СБИС и исследование шрифтовой и графической печати. Позднее эта работа получила развитие и расширилась до языка Интерпресс.

Уорнок ушел с Чаком Гешке и основал Adobe Systems в декабре 1982 года. Они вместе с Дугом Бротцем, Эд Тафт и Биллом Пакстоном создали более простой язык, похожий на Interpress, под названием PostScript, который появился на рынке в 1984 году. Примерно в это время их посетил Стив Джобс, который призвал их адаптировать PostScript для использования в качестве языка для вождения лазерные принтеры.

В марте 1985 года Apple LaserWriter был первым принтером, поставляемым с PostScript, что вызвало революцию настольных издательских систем (DTP) в середина 1980-х гг. Сочетание технических достоинств и широкой доступности сделали PostScript предпочтительным языком для графического вывода для приложений печати. Какое-то время интерпретатор (иногда называемый RIP для Raster Image Processor) для языка PostScript был обычным компонентом лазерных принтеров в 1990-х годах.

Однако стоимость внедрения была высокой; компьютеры выводят необработанный код PS, который будет интерпретироваться принтером в растровое изображение с естественным разрешением принтера. Для этого требовались высокопроизводительные микропроцессоры и большой объем памяти. LaserWriter использует 12 МГц Motorola 68000, что делает его быстрее, чем любой из компьютеров Macintosh, к которым он подключен. Когда сами двигатели для лазерных принтеров стоили более тысячи долларов, добавленная стоимость PS была незначительной. Но по мере того, как механизмы принтера упали в цене, стоимость внедрения PS стала слишком большой частью общей стоимости принтера; Вдобавок, когда настольные компьютеры становились все более мощными, больше не имело смысла переложить работу по растеризации на принтер с ограниченными ресурсами. К 2001 году несколько моделей принтеров начального уровня имели поддержку PostScript, в основном из-за растущей конкуренции со стороны гораздо более дешевых струйных принтеров, отличных от PostScript, и новых программных методов для рендеринга изображений PostScript на компьютере, что сделало их подходящими для любого принтера ; PDF, потомок PostScript, предоставляет один из таких методов и в значительной степени заменил PostScript как де-факто стандарт для распространения электронных документов.

На принтерах высокого класса процессоры PostScript остаются обычным явлением, и их использование может значительно снизить нагрузку на ЦП, связанную с печатью документов, перенося работу по визуализации изображений PostScript с компьютера на принтер.

PostScript Level 1

Первая версия языка PostScript была выпущена на рынок в 1984 году. Суффикс Level 1 был добавлен, когда был представлен Level 2.

PostScript Level 2

PostScript Level 2 был представлен в 1991 году и включал несколько улучшений: повышенная скорость и надежность, поддержка разделения в RIP, распаковка изображений (для Например, изображения JPEG могут быть визуализированы с помощью программы PostScript), поддержка составных шрифтов и механизм форм для кэширования повторно используемого содержимого.

PostScript 3

PostScript 3 (Adobe отказался от терминологии «уровня» в пользу простого управления версиями) появился в конце 1997 года, и вместе со многими новыми версиями старых операторов на основе словарей, представила улучшенную обработку цвета и новые фильтры (которые позволяют выполнять сжатие / распаковку в программе, фрагменты программы и расширенную обработку ошибок).

PostScript 3 имел важное значение с точки зрения замены существующих проприетарных систем цветной электронной допечатной подготовки, которые затем широко использовались для производства журналов, благодаря введению операций плавного затенения с использованием до 4096 оттенков серого (вместо 256, доступных в PostScript Level 2), а также DeviceN, цветовое пространство , которое позволяло добавлять дополнительные цвета чернил (так называемые плашечные цвета ) в составные цветные страницы.

Использование при печати

До PostScript

До появления PostScript принтеры были разработаны для печати символьного вывода с учетом текста - обычно в ASCII - в качестве ввода. Для этой задачи использовалось несколько технологий, но большинство из них разделяли то свойство, что глифы было физически трудно изменить, поскольку они были отпечатаны на клавишах пишущей машинки, металлических полосках или оптических элементах. тарелки.

Это в некоторой степени изменилось с ростом популярности матричных принтеров. Символы в этих системах были нарисованы в виде серии точек, как это определено таблицей font внутри принтера. По мере того, как они усложнялись, матричные принтеры начали включать несколько встроенных шрифтов, из которых пользователь мог выбирать, а некоторые модели позволяли пользователям загружать свои собственные пользовательские глифы в принтер.

В матричных принтерах также появилась возможность печати растровой графики. Графика интерпретировалась компьютером и отправлялась на принтер в виде серии точек с использованием серии управляющих последовательностей . Эти языки управления принтером варьировались от принтера к принтеру, требуя от авторов программ создания множества драйверов.

Векторная графика печать была оставлена ​​для специальных устройств, называемых плоттерами. Почти все плоттеры использовали общий командный язык, HPGL, но имели ограниченное применение для чего-либо, кроме печати графики. Кроме того, они были дорогими и медленными, а потому редкими.

Печать PostScript

Лазерные принтеры сочетают в себе лучшие функции принтеров и плоттеров. Как и плоттеры, лазерные принтеры предлагают высококачественную штриховую графику, и, как матричные принтеры, они могут создавать страницы с текстом и растровой графикой. В отличие от принтеров или плоттеров, лазерный принтер позволяет размещать высококачественную графику и текст на одной странице. PostScript позволяет полностью использовать эти характеристики, предлагая единый язык управления, который можно использовать на принтерах любой марки.

PostScript вышел за рамки обычного языка управления принтером и был полноценным языком программирования. Многие приложения могут преобразовать документ в программу PostScript: результатом выполнения будет исходный документ. Эту программу можно отправить в интерпретатор на принтере, что приведет к печати документа, или в одно приложение в другом приложении, которое отобразит документ на экране. Поскольку программа-документ одинакова независимо от места назначения, она называется независимой от устройства.

PostScript заслуживает внимания тем, что реализует «на лету» растеризацию, в которой все, даже текст, задается в виде прямых линий и кубических кривых Безье (ранее встречается только в приложениях CAD ), что позволяет произвольное масштабирование, поворот и другие преобразования. Когда программа PostScript интерпретируется, интерпретатор преобразует эти инструкции в точки, необходимые для формирования вывода. По этой причине интерпретаторы PostScript иногда называют обработчиками растровых изображений PostScript или RIP.

Обработка шрифтов

Обработка шрифтов почти так же сложна, как и сам PostScript. Система шрифтов использует примитивы графики PS для рисования глифов в виде кривых, которые затем могут отображаться с любым разрешением. При таком подходе необходимо было рассмотреть ряд типографских вопросов.

Одна проблема заключается в том, что шрифты не масштабируются линейно при малых размерах, а элементы глифов становятся пропорционально слишком большими или маленькими и начинают выглядеть неприятно. PostScript избежал этой проблемы за счет включения хинтинга шрифта , в котором дополнительная информация предоставляется в горизонтальных или вертикальных полосах, чтобы помочь идентифицировать особенности каждой буквы, которые важны для работы растеризатора. В результате шрифты выглядели значительно лучше даже при низком разрешении. Раньше считалось, что для этой задачи требуются настроенные вручную растровые шрифты.

В то время технология включения этих подсказок в шрифты тщательно охранялась, а шрифты с подсказками были сжаты и зашифрованы в то, что Adobe назвала шрифтом Type 1 (также известным как PostScript Type 1 шрифт, PS1, T1 или Adobe Type 1). Тип 1 был фактически упрощением системы PS для хранения только контурной информации, в отличие от полного языка (PDF аналогичен в этом отношении). Затем Adobe будет продавать лицензии на технологию Type 1 тем, кто хочет добавить подсказки к своим собственным шрифтам. Тем, кто не лицензировал технологию, оставался шрифт Type 3 (также известный как шрифт PostScript Type 3, PS3 или T3). Шрифты Type 3 позволили использовать всю сложность языка PostScript, но без стандартизированного подхода к хинтингу.

Формат шрифта Type 2 был разработан для использования со строками символов Compact Font Format (CFF) и реализован для уменьшения общего размера файла шрифта. Формат CFF / Type2 позже стал основой для обработки контуров PostScript в шрифтах OpenType.

Формат шрифта с CID-ключом также был разработан для решения проблем, связанных со сложной кодировкой азиатского языка (CJK ) и очень большими символами. ставить вопросы. Формат шрифта с CID-ключом может использоваться с форматом шрифта Type 1 для стандартных шрифтов с CID-ключом или Type 2 для шрифтов OpenType с CID-ключом.

Чтобы конкурировать с системой Adobe, Apple разработала свою собственную систему TrueType примерно в 1991 году. Сразу после объявления TrueType Adobe опубликовала спецификацию для формата шрифта Type 1. В инструменты для розничной торговли, такие как Altsys Fontographer (приобретенная Macromedia в январе 1995 г., с мая 2005 г. принадлежит FontLab ), добавлена ​​возможность создания шрифтов Type 1. С тех пор было выпущено много бесплатных шрифтов Type 1; например, в этом формате доступны шрифты, используемые в системе набора TeX.

В начале 1990-х было несколько других систем для хранения контурных шрифтов, разработанных, например, Bitstream и METAFONT, но ни одна из них не включала универсальную печать. решение, и поэтому они не получили широкого распространения.

В конце 1990-х годов Adobe присоединилась к Microsoft в разработке OpenType, по сути функционального надмножества форматов Type 1 и TrueType. При печати на устройство вывода PostScript ненужные части шрифта OpenType опускаются, а то, что отправляется на устройство драйвером, такое же, как и для шрифта TrueType или Type 1, в зависимости от того, какие контуры были присутствует в шрифте OpenType.

Другие реализации

В 1980-х годах Adobe получала большую часть своих доходов от лицензионных сборов за реализацию PostScript для принтеров, известную как процессор растровых изображений или RIP.. Когда в середине 1980-х годов стал доступен ряд новых платформ на основе RISC, некоторые обнаружили, что поддержка новых машин со стороны Adobe отсутствует.

Это, а также проблемы со стоимостью привели к тому, что сторонние реализации PostScript стали обычным явлением, особенно в недорогих принтерах (где плата за лицензию была камнем преткновения) или в высокопроизводительном наборном оборудовании (где скорость требовала поддержки новых платформ быстрее, чем могла предоставить Adobe). В какой-то момент Microsoft предоставила Apple купленный PostScript-совместимый интерпретатор под названием TrueImage, а Apple передала Microsoft лицензию на новый формат шрифта TrueType. В итоге Apple заключила соглашение с Adobe и лицензировала подлинный PostScript для своих принтеров, но TrueType стал стандартной технологией контурного шрифта как для Windows, так и для Macintosh.

Сегодня сторонние PostScript-совместимые интерпретаторы широко используются в принтерах и многофункциональных периферийных устройствах (МФУ). Например, интерпретатор IPS PS3 от CSR plc, ранее известный как PhoenixPage, входит в стандартную комплектацию многих принтеров и МФУ, в том числе разработанных Hewlett-Packard и продаваемых под LaserJet и линии Color LaserJet. Другие сторонние решения PostScript, используемые производителями принтеров и МФУ, включают Jaws и Harlequin RIP, оба от Global Graphics. Версия бесплатного программного обеспечения с несколькими другими приложениями - это Ghostscript. Несколько совместимых интерпретаторов перечислены на вики-странице недокументированной печати. ​​

Некоторые базовые недорогие лазерные принтеры не поддерживают PostScript, вместо этого поставляются с драйверами, которые просто растрируют собственные графические форматы платформы, а не сначала конвертируют их в PostScript. Когда для такого принтера требуется поддержка PostScript, можно использовать Ghostscript. Существует также ряд коммерческих интерпретаторов PostScript, например T-Script от TeleType Co..

Использование в качестве системы отображения

PostScript стал коммерчески успешным благодаря внедрению графического пользовательского интерфейса (GUI), позволяющего дизайнерам напрямую размещать страницы для конечного вывода на лазерных принтерах. Однако собственные графические системы графического интерфейса в целом были намного менее сложными, чем PostScript; Apple QuickDraw, например, поддерживает только базовые линии и дуги, а не сложные B-сплайны и расширенные параметры заполнения области PostScript. Чтобы в полной мере использовать преимущества печати PostScript, приложениям на компьютерах пришлось повторно реализовать эти функции с использованием собственной графической системы хост-платформы. Это приводило к многочисленным проблемам, из-за которых макет на экране не совпадал в точности с напечатанным из-за различий в реализации этих функций.

По мере роста мощности компьютеров появилась возможность размещать систему PS на компьютере, а не на принтере. Это привело к естественной эволюции PS от системы печати к системе, которая может также использоваться как собственный графический язык хоста. У этого подхода было множество преимуществ; Это не только помогло исключить возможность различного вывода на экран и принтер, но также обеспечило мощную графическую систему для компьютера и позволило принтерам быть «немыми» в то время, когда стоимость лазерных двигателей падала. В производственных условиях использование PostScript в качестве системы отображения означало, что главный компьютер мог отображать изображение с низким разрешением на экране, с более высоким разрешением на принтере или просто отправлять код PS на интеллектуальный принтер для внешней печати.

Однако PostScript был написан с расчетом на печать и имел множество функций, которые делали его непригодным для прямого использования в интерактивной системе отображения. В частности, PS был основан на идее сбора команд PS до тех пор, пока не будет видна команда showpage, после чего все команды, прочитанные до этого момента, были интерпретированы и выведены. В интерактивной системе это явно не подходило. В PS также не было встроенной интерактивности; например, поддержка обнаружения попадания для интерактивности мыши явно не применялась, когда PS использовался на принтере.

Когда Стив Джобс покинул Apple и основал NeXT, он подал Adobe идею использования PS в качестве системы отображения для своих новых компьютеров рабочих станций. В результате получилось Display PostScript или DPS. В DPS добавлены базовые функции для повышения производительности за счет преобразования многих поисков строк в 32-битные целые числа, добавления поддержки прямого вывода для каждой команды и добавления функций, позволяющих графическому интерфейсу пользователя проверять диаграмму. Кроме того, был предоставлен набор «привязок», позволяющих вызывать код PS непосредственно из языка программирования C. NeXT использовал эти привязки в своей системе NeXTStep для предоставления объектно-ориентированной графической системы. Хотя DPS был написан совместно с NeXT, Adobe продавала его на коммерческой основе, и это было общей чертой большинства рабочих станций Unix в 1990-х годах.

Sun Microsystems применила другой подход, создав NeWS. Вместо концепции DPS, позволяющей PS взаимодействовать с программами на C, NeWS расширил PS до языка, подходящего для запуска всего графического интерфейса пользователя компьютера. Sun добавила ряд новых команд для таймеров, управления мышью, прерываний и других систем, необходимых для интерактивности, а также добавила структуры данных и языковые элементы, чтобы сделать его полностью объектно-ориентированным внутри. Полный графический интерфейс, фактически три, были написаны на NeWS и какое-то время предоставлялись на их рабочих станциях. Однако продолжающиеся усилия по стандартизации системы X11 привели к ее внедрению и широкому использованию в системах Sun, а NeWS так и не получил широкого распространения.

Язык

PostScript - это язык программирования, полный по Тьюрингу, принадлежащий к группе конкатенативной. Обычно программы PostScript создаются не людьми, а другими программами. Однако можно писать компьютерные программы на PostScript, как и на любом другом языке программирования.

PostScript - это интерпретируемый, стековый язык, аналогичный Forth, но с сильной динамической типизацией, структуры данных, вдохновленные теми, что находятся в Lisp, с ограниченной памятью и, начиная с уровня языка 2, мусором Коллекция. В синтаксисе языка используется обратная польская запись , что делает порядок операций однозначным, но чтение программы требует некоторой практики, потому что нужно помнить о структуре стека . Большинство операторов (которые в других языках называют функциями) берут свои аргументы из стека и помещают свои результаты в стек. Литералы (например, числа) имеют эффект размещения своей копии в стеке. Сложные структуры данных могут быть построены на типах массивов и словарей, но не могут быть объявлены в системе типов, которая видит их все только как массивы и словари, поэтому любые дальнейшие правила ввода, которые будут применяться к таким определяемым пользователем "типам", остаются к коду, который их реализует.

Символ «%» используется для введения комментариев в программах PostScript. По общему соглашению, каждая программа PostScript должна начинаться с символов «%! PS» в качестве директивы интерпретатора, чтобы все устройства правильно интерпретировали ее как PostScript.

«Hello world»

A Программа Hello World, обычный способ показать небольшой пример полной программы на данном языке, может выглядеть в PostScript (уровень 2) следующим образом:

%! PS / Courier% назовите желаемый шрифт 20 selectfont% выберите размер в пунктах и ​​установите% шрифт как текущий 72 500 moveto% поместите текущую точку в% координаты 72, 500 (начало координат находится на% ниже -левый угол страницы) (Привет, мир!) показать% обводку текста в скобках showpage% напечатать все на странице

или если на устройстве вывода есть консоль

%! PS (Привет, мир!) =

Единицы длины

PostScript использует точку в качестве единицы длины. Однако, в отличие от некоторых других версий точки, PostScript использует ровно 72 точки на дюйм. Таким образом:

1 точка = 1/72 дюйма = 25,4 / 72 мм = 127/360 мм = 352,777… микрометров

Например, чтобы нарисовать вертикальную линию длиной 4 см, достаточно ввести:

0 0 moveto 0 113.385827 lineto stroke

Более читабельно и идиоматично, можно было бы использовать следующий эквивалент, который демонстрирует простое определение процедуры и использование математических операторов mulи div:

/ см {72 mul 2.54 div} def% 1 дюйм = 2,54 см ровно 0 0 переместить в 0 4 см линейно обводка

В большинстве реализаций PostScript используется одинарная точность реалов (24-битная мантисса), поэтому не имеет смысла использовать более 9 десятичных цифр для указания действительного числа, а выполнение вычислений может привести к недопустимым ошибкам округления.

Программное обеспечение

Список программного обеспечения, которое можно использовать для визуализации документов PostScript:

См. Также
Ссылки
Дополнительная литература
Внешние ссылки
В Викиучебниках есть книга по теме: Часто задаваемые вопросы по PostScript
Последняя правка сделана 2021-06-02 12:28:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте