100 советов по допечатной подготовке

Устинова Н. Р.

С разрешения автора публикуем одну главу из книги

ЧТО ТАКОЕ POSTSCRIPT И ОТКУДА ОШИБКА?

5 «ГРЕХОВ» POSTSCRIPT 1

Язык PostScript был со­здан в 1982 го­ду Джо­ном Уо­р­но­ком в фир­ме Adobe как язык управ­ле­ния ла­зер­ны­ми прин­те­ра­ми под мар­кой Apple. Вме­сте они долж­ны бы­ли обес­пе­чить ка­че­ствен­ный вы­вод гра­фи­ки и шриф­то­вых на­чер­та­ний в та­ком ви­де, как их ви­дит поль­зо­ва­тель в сво­ем гра­фи­че­ском ре­дак­то­ре или на­столь­ной из­да­тель­ской си­сте­ме (НИС). На­до ска­зать, не пер­вый язык та­ко­го ро­да. Од­на­ко, пре­крас­но справ­ля­ясь с за­да­ча­ми пе­ча­ти из офис­ных при­ло­же­ний, язы­ки управ­ле­ния прин­те­ра­ми «до PostScript’ов­ско­го» вре­ме­ни (ти­па PCL) пло­хо под­хо­ди­ли для ра­бо­ты в за­рож­дав­ших­ся на­столь­ных из­да­тель­ских си­сте­мах.

PostScript существенно отличается от предшествующих языков следующим:

  1. Ба­зой опи­са­ния кри­вых, как в сим­во­лах шриф­та, так и в век­тор­ной гра­фи­ке ста­ли кри­вые Безье 2.
  2. PostScript-прин­тер не раз­де­ля­ет па­мять для хра­не­ния шриф­тов и ра­бо­чую об­ласть для фор­ми­ро­ва­ния кар­тин­ки, уве­ли­чи­вая эф­фек­тив­ность ис­поль­зо­ва­ния па­мя­ти и раз­ре­шая за­груз­ку про­из­воль­но­го чис­ла шриф­тов с про­из­воль­ным ко­ли­че­ством сим­во­лов в каж­дом.
  3. PostScript яв­ля­ет­ся пол­но­цен­ным язы­ком про­грам­ми­ро­ва­ния, в от­ли­чие от пред­ше­ству­ю­щих язы­ков управ­ле­ния, пред­став­ляв­ших со­бой ли­ней­ные по­сле­до­ва­тель­но­сти ко­манд. За счет это­го эф­фек­тив­ность ис­пол­не­ния по­вы­ша­ет­ся в несколь­ко раз.
  4. Чтобы обес­пе­чить неза­ви­си­мость опи­са­ния стра­ни­цы от все­го раз­но­об­ра­зия внеш­них раст­ро­вых устройств в язы­ке PostScript вве­де­но по­ня­тие те­ку­щей стра­ни­цы. Те­ку­щая стра­ни­ца – «иде­аль­ная» стра­ни­ца в па­мя­ти, на ко­то­рой «ри­су­ет» PostScript. Она не за­ви­сит от физи­че­ских ха­рак­те­ри­стик прин­те­ра, на ко­то­рый стра­ни­ца бу­дет вво­дить­ся. В на­ча­ле ра­бо­ты про­грам­мы – это со­вер­шен­но чи­стая стра­ни­ца. Ко­гда те­ку­щая стра­ни­ца пол­но­стью опи­са­на, она по­сы­ла­ет­ся на прин­тер, ко­то­рый рас­пе­ча­ты­ва­ет ее с та­ким ка­че­ством, ко­то­рое спо­со­бен обес­пе­чить.

При­ве­ден­ный пе­ре­чень пре­иму­ществ и осо­бен­но­стей язы­ка PostScript объ­яс­ня­ет его быст­рый успех. Фир­ма Adobe сде­ла­ла PostScript ба­зой внут­рен­не­го ко­да про­грам­мы Adobe Illustrator и со­зда­ла на его ос­но­ве фор­мат дан­ных EPS – encapsulated PostScript, став­ший ве­ду­щим фор­ма­том меж­про­грамм­но­го и меж­плат­фор­мен­но­го пе­ре­но­са век­тор­ной ин­фор­ма­ции в из­да­тель­ских си­сте­мах. EPS-файл пред­став­ля­ет со­бой про­сто под­про­грам­му, ко­то­рую мож­но по­ста­вить в PostScript-код для вы­во­да «как есть».

С по­яв­ле­ни­ем ла­зер­ных устройств вы­со­ко­го раз­ре­ше­ния PostScript есте­ствен­ным об­ра­зом стал ос­нов­ным язы­ком для вы­во­да ин­фор­ма­ции через эти устрой­ства. Вер­сия Level 2 предо­ста­ви­ла воз­мож­ность вклю­че­ния в PostScript ин­фор­ма­ции управ­ле­ния вы­вод­ны­ми устрой­ства­ми (цве­то­де­ле­ние с уча­сти­ем сме­се­вых кра­сок, вклю­че­ние ICC-про­фи­лей цве­то­де­ле­ния и т. д.) и рас­ши­ре­ния под­дер­жи­ва­е­мых фор­ма­тов гра­фи­ки, вклю­чен­ной в PostScript (сна­ча­ла был раз­ре­шен TIFF, за­тем JPEG, цвет­ные изо­бра­же­ния в мо­де­ли RGB и т. д.). Но в ос­но­ве сво­ей PostScript, как язык опи­са­ния гра­фи­че­ских объ­ек­тов, не пре­тер­пел ни­ка­ких из­ме­не­ний.

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

Для лю­бо­го язы­ка про­грам­ми­ро­ва­ния ре­зуль­тат ра­бо­ты на раз­ных плат­фор­мах и раз­ных ком­пи­ля­то­рах (или ин­тер­пре­та­то­рах) мо­жет и, как пра­ви­ло, бу­дет раз­ли­чать­ся. Не очень силь­но, но бу­дет. А в слу­чае язы­ка PostScript, про­грам­ма – это сам файл, под­ле­жа­щий вы­во­ду. Ис­пол­не­ние – это вы­вод фай­ла. Несмот­ря на то, что PostScript об­ла­да­ет свой­ством неза­ви­си­мо­сти от ти­па устрой­ства, с фо­то­на­бор­ным ав­то­ма­том и устрой­ством CTP си­ту­а­ция не так од­но­знач­на.

В об­щем слу­чае, PostScript-устрой­ство (прин­тер, ФНА, СТР) – это устрой­ство, в ко­то­ром име­ет­ся ин­тер­пре­та­тор язы­ка PostScript – RIP (Raster Image Interpretator). Ин­тер­пре­та­тор PostScript при­ни­ма­ет из ком­пью­те­ра файл с опи­са­ни­ем стра­ни­цы и пре­об­ра­зу­ет его в раст­ро­вую фор­му, ко­то­рая и вы­во­дит­ся на пе­чать. Фо­то­на­бор­ный ав­то­мат (ФНА, устрой­ство экс­по­ни­ро­ва­ния рас­т­ра на плен­ку или оф­сет­ную пла­сти­ну) – устрой­ство ку­да бо­лее слож­ное неже­ли прин­тер, и ра­бо­та­ет оно с гораздо боль­шим раз­ре­ше­ни­ем, а зна­чит и объ­е­мом ин­фор­ма­ции, чем прин­тер, по­это­му его RIP бо­лее тре­бо­ва­те­лен к фай­лу PostScript. RIP в свою оче­редь пре­об­ра­зо­вы­ва­ет дан­ные из PostSсript-фай­ла в би­то­вую кар­ту, ко­то­рая за­пи­сы­ва­ет­ся в TIFF-файл вы­со­ко­го раз­ре­ше­ния и в та­ком ви­де от­прав­ля­ет­ся на устрой­ство экс­по­ни­ро­ва­ния (ФНА, CTP).

Вто­рой «грех» PostScript – пло­хая ди­а­гно­сти­ка под­ста­нов­ки шриф­тов. В PostScript опре­де­ле­ны три воз­мож­но­сти ра­бо­ты со шриф­та­ми: ис­поль­зо­ва­ние встро­ен­но­го шриф­та прин­те­ра; ис­поль­зо­ва­ние шриф­та, встро­ен­но­го в PostScript-файл; за­ме­на шриф­та на дру­гой в со­от­вет­ствии с таб­ли­цей под­ста­нов­ки прин­те­ра и/или таб­ли­цей под­ста­нов­ки, за­пи­сан­ной в PostScript-файл. Шан­сы по­лу­чить пра­виль­ный фо­то­вы­вод есть толь­ко во вто­ром слу­чае. Неко­то­рые про­грам­мы мо­гут некор­рект­но за­пи­сать в PostScript ин­фор­ма­цию о под­ста­нов­ке или встра­и­ва­нии шриф­та. А сла­бая ди­а­гно­сти­ка не поз­во­ля­ет опре­де­лить, что при ге­не­ра­ции PostScript-фай­ла про­пу­щен необ­хо­ди­мый шрифт. Как след­ствие, под­го­тов­лен­ный на ос­но­ва­нии од­них и тех же ис­ход­ных дан­ных файл бу­дет успеш­но вы­ве­ден на од­ном RIP, на дру­гом «съе­дет» верст­ка, на тре­тьем вме­сто тек­ста вы­ле­зут «зюк­вы». И лишь чет­вер­тый, вме­сто то­го, чтобы за­ни­мать­ся ерун­дой, вы­даст вам лю­без­ное со­об­ще­ние «font Helvetica Сyrillic not found».

Тре­тий «грех» кро­ет­ся в кри­вых Безье. Кри­вая Безье при слиш­ком близ­ко рас­по­ло­жен­ных опор­ных точ­ках ста­но­вит­ся чрез­мер­но чув­стви­тель­ной к по­греш­но­стям округ­ле­ния, что по­рож­да­ет ис­ка­же­ния фор­мы кон­ту­ра при из­ме­не­нии раз­ре­ше­ния. От­сю­да из­вест­ные боль­шин­ству и «непо­нят­но от­ку­да взяв­ши­е­ся» тон­кие бе­лые ли­нии, пе­ре­се­ка­ю­щие век­тор­ный объ­ект.

Чет­вер­тый «грех» – это свое­об­раз­ная ра­бо­та с дан­ны­ми. PostScript го­тов за­пи­сать в се­бя все, в том чис­ле и лиш­нее, по­это­му, да­же ес­ли изо­бра­же­ния на экране пе­ре­кры­ва­ют­ся, по­дав­ля­ю­щее боль­шин­ство про­грамм за­пи­шет в PostScript все ил­лю­стра­ции це­ли­ком, взва­лив на RIP труд уда­ле­ния неви­ди­мой ча­сти. С од­ной сто­ро­ны, это хо­ро­шо, по­сколь­ку со­хра­ня­ет тео­ре­ти­че­скую воз­мож­ность «от­крыть» PostScript-файл для ре­дак­ти­ро­ва­ния. С дру­гой сто­ро­ны, это при­во­дит к яв­ной из­бы­точ­но­сти за счет хра­не­ния неви­ди­мых ча­стей изо­бра­же­ния. Та­кая из­бы­точ­ность, в свою оче­редь, при­во­дит к неоправ­дан­но­му уве­ли­че­нию вре­ме­ни на рас­три­ро­ва­ние, а на ма­ло­мощ­ных раст­ро­вых про­цес­со­рах – к сбою ин­тер­пре­та­то­ра из-за нехват­ки па­мя­ти.

Пя­тый «грех» PostScript – его «нечи­та­е­мость». Для то­го чтобы уви­деть ожи­да­е­мый ре­зуль­тат вы­во­да до по­яв­ле­ния фор­мы из про­явоч­ной ма­ши­ны, опе­ра­то­ру при­хо­дит­ся ли­бо рас­три­ро­вать PostScript ка­кой-ли­бо вспо­мо­га­тель­ной про­грам­мой ти­па Acrobat Distiller, со­хра­няя из­вест­ную до­лю со­мне­ния в до­сто­вер­но­сти ре­зуль­та­та про­вер­ки, ли­бо про­смат­ри­вать «preview» на RIP, тра­тя дра­го­цен­ное вре­мя вы­вод­но­го устрой­ства.

Loading

Notes:

  1. Теоретическая часть данного подраздела написана на основе статьи Алексея Моисеева «PostScript умер да здравствует PDF?!»  с любезного разрешения редакции журнала «Publish»
  2. Кри­вая Безье, на­зван­ная в честь ее со­зда­те­ля, Пье­ра Безье яв­ля­ет­ся на се­го­дня стан­дар­том для опи­са­ния век­тор­ных объ­ек­тов в на­столь­ных из­да­тель­ских си­сте­мах. По­пуляр­ность она за­слу­жи­ла бла­го­да­ря сво­е­му ори­ги­наль­но­му спо­со­бу опи­са­ния. Кон­тур кри­вой фор­ми­ру­ет­ся меж­ду дву­мя опор­ны­ми точ­ка­ми – уз­ла­ми и ис­хо­дя­щи­ми из них дву­мя на­прав­ля­ю­щи­ми. От­ре­зок меж­ду дву­мя уз­ла­ми на­зы­ва­ет­ся сег­мент. На­прав­ля­ю­щие, в свою оче­редь, мо­гут из­ме­нять свое на­прав­ле­ние и раз­мер. Фор­ма сег­мен­та за­ви­сит от вза­и­мо­рас­по­ло­же­ния на­прав­ля­ю­щих со­от­вет­ству­ю­щих уз­лов и от раз­ме­ра са­мих на­прав­ля­ю­щих. Са­ма кри­вая мо­жет со­сто­ять из сколь­ко угод­но боль­шо­го ко­ли­че­ства сег­мен­тов, быть за­мкну­той или разо­мкну­той, а так­же иметь та­кие свой­ства как за­лив­ка и аб­рис (об­вод­ка).
    Опи­са­ние век­тор­но­го объ­ек­та с по­мо­щью кри­вой Безье, по­ми­мо су­ще­ствен­но­го со­кра­ще­ния вре­ме­ни на об­ра­бот­ку его гра­фи­ки, пред­став­ля­ет из се­бя очень мощ­ный и удоб­ный ин­стру­мент для ра­бо­ты с век­тор­ным объ­ек­том.
1
2
3
4
5
6
7
8
9
10
11
Предыдущая статьяРискни разделить неделимое
Следующая статьяИльяс Калиев