PostScript - PostScript

PostScript
Парадигма Мультипарадигма : основанная на стеке , процедурная
Разработано Джон Варнок , Чак Гешке , Дуг Бротц , Эд Тафт , Билл Пакстон
Разработчик Adobe Systems
Впервые появился 1982 ; 39 лет назад ( 1982 )
Стабильный выпуск
PostScript 3/1997 ; 24 года назад ( 1997 )
Печатная дисциплина Динамичный, слабый
Основные реализации
Adobe PostScript, TrueImage , Ghostscript
Под влиянием
Меса , Интерпресс , Лисп
Под влиянием
PDF
PostScript (формат файла)
Расширение имени файла
.ps
Тип интернет-СМИ
приложение / постскриптум
Единый идентификатор типа (UTI) com.adobe.postscript
Магическое число %!
Разработано Adobe Systems
Тип формата формат файла для печати
Расширен до Инкапсулированный PostScript

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

История

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

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

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

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

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

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

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

PostScript Уровень 1

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

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

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

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

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

Печать PostScript

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

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

PostScript примечателен реализацией растеризации «на лету», в которой все, даже текст, задается в виде прямых линий и кубических кривых Безье (ранее присутствующих только в приложениях САПР ), что позволяет произвольное масштабирование, вращение и другие преобразования. Когда программа 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-ключом также был разработан для решения проблем, связанных со шрифтами OCF / Type 0 , для решения сложной кодировки азиатского языка ( 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; Например, QuickDraw от Apple поддерживает только базовые линии и дуги, а не сложные B-сплайны и расширенные параметры заполнения области PostScript. Чтобы в полной мере использовать преимущества печати PostScript, приложениям на компьютерах пришлось повторно реализовать эти функции с использованием собственной графической системы хост-платформы. Это привело к многочисленным проблемам, из-за которых макет на экране не полностью соответствовал печатному изданию из-за различий в реализации этих функций.

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

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

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

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

Язык

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

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

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

"Привет, мир"

Программа Hello World , обычный способ показать небольшой пример полной программы на данном языке, может выглядеть в PostScript (уровень 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

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

 %!PS
 (Hello world!) =

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

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

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

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

0 0 moveto 
0 113.385827 lineto stroke

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

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

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

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

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

Смотрите также

использованная литература

дальнейшее чтение

внешние ссылки