PostScript — PostScript

Postscriptum
Paradygmat Wieloparadygmat : oparty na stosie , proceduralny
Zaprojektowany przez John Warnock , Chuck Geschke , Doug Brotz , Ed Taft , Bill Paxton
Deweloper Systemy Adobe
Po raz pierwszy pojawiły się 1982 ; 39 lat temu ( 1982 )
Wersja stabilna
PostScript 3 / 1997 ; 24 lata temu ( 1997 )
Dyscyplina pisania Dynamiczny, słaby
Główne wdrożenia
Adobe PostScript, TrueImage , Ghostscript
Wpływem
Mesa , Interpress , Lisp
Pod wpływem
PDF
PostScript (format pliku)
Rozszerzenie nazwy pliku
.ps
Rodzaj mediów internetowych
aplikacja/postscript
Jednolity identyfikator typu (UTI) com.adobe.postscript
magiczny numer %!
Opracowany przez Systemy Adobe
Rodzaj formatu format pliku do drukowania
Rozszerzony do Enkapsulowany PostScript

PostScript ( PS ) to język opisu strony w branży publikacji elektronicznych i DTP . Jest to dynamicznie typowany , konkatenacyjny język programowania . Został stworzony w Adobe Systems przez Johna Warnocka , Charlesa Geschke , Douga Brotza, Eda Tafta i Billa Paxtona w latach 1982-1984.

Historia

Koncepcje języka PostScript zostały zasiane w 1976 roku przez Johna Gaffneya w Evans & Sutherland , firmie zajmującej się grafiką komputerową . W tym czasie Gaffney i John Warnock pracowali nad interpreterem dużej trójwymiarowej graficznej bazy danych New York Harbor .

Jednocześnie naukowcy z Xerox PARC opracowali pierwszą drukarkę laserową i dostrzegli potrzebę standardowego sposobu definiowania obrazów stron. W latach 1975-76 Bob Sproull i William Newman opracowali format Press, który został ostatecznie wykorzystany w systemie Xerox Star do napędzania drukarek laserowych. Jednak Press, format danych, a nie język, nie był elastyczny, a PARC podjął wysiłki Interpress , aby stworzyć następcę.

W 1978 roku John Gaffney i Martin Newell w Xerox PARC napisali J & M lub JaM (od „John and Martin”), który był używany do projektowania VLSI oraz badania czcionek i drukowania grafiki. Ta praca później ewoluowała i rozszerzyła się na język Interpress.

Warnock odszedł z Chuckiem Geschke i założył Adobe Systems w grudniu 1982 roku. Razem z Dougiem Brotzem, Edem Taftem i Billem Paxtonem stworzyli prostszy język, podobny do Interpress, zwany PostScript, który wszedł na rynek w 1984 roku. odwiedził Steve Jobs , który wezwał ich do dostosowania PostScriptu do używania jako języka do obsługi drukarek laserowych.

W marcu 1985 r Jabłko LaserWriter była pierwsza drukarka dostarczana z PostScript, wywołując desktop publishing (DTP) rewolucję w połowie 1980 roku. Połączenie zalet technicznych i powszechnej dostępności sprawiło, że PostScript stał się preferowanym językiem do drukowania graficznego w zastosowaniach drukarskich. Przez pewien czas interpreter (czasami określany jako RIP dla procesora obrazu rastrowego) dla języka PostScript był powszechnym składnikiem drukarek laserowych, aż do lat 90. XX wieku.

Koszt wdrożenia był jednak wysoki; komputery wyprowadzają surowy kod PS, który zostałby zinterpretowany przez drukarkę jako obraz rastrowy w naturalnej rozdzielczości drukarki. Wymagało to wydajnych mikroprocesorów i dużej ilości pamięci . LaserWriter używał 12-MHz Motorola 68000 , co czyni go szybszym niż jakikolwiek komputer Macintosh, do którego był podłączony. Kiedy same silniki drukarek laserowych kosztowały ponad tysiąc dolarów, dodatkowy koszt PS był marginalny. Jednak wraz ze spadkiem ceny mechanizmów drukarki, koszt wdrożenia PS stał się zbyt dużą częścią całkowitego kosztu drukarki; ponadto, gdy komputery stacjonarne stają się coraz bardziej wydajne, nie ma już sensu przerzucać prac związanych z rasteryzacją na drukarkę o ograniczonych zasobach. Do 2001 r. kilka modeli drukarek z niższej półki obsługiwało PostScript, głównie ze względu na rosnącą konkurencję ze strony znacznie tańszych drukarek atramentowych innych niż PostScript oraz nowe, oparte na oprogramowaniu metody renderowania obrazów PostScript na komputerze, dzięki czemu są odpowiednie dla każdej drukarki ; PDF , potomek PostScriptu, zapewnia jedną z takich metod i w dużej mierze zastąpił PostScript jako de facto standard dystrybucji dokumentów elektronicznych.

W drukarkach wysokiej klasy procesory PostScript pozostają powszechne, a ich użycie może znacznie zmniejszyć obciążenie procesora związane z drukowaniem dokumentów, przenosząc pracę związaną z renderowaniem obrazów PostScript z komputera na drukarkę.

PostScript poziom 1

Pierwsza wersja języka PostScript została wypuszczona na rynek w 1984 roku. Sufiks Level 1 został dodany wraz z wprowadzeniem Level 2.

PostScript poziom 2

PostScript Level 2 został wprowadzony w 1991 roku i zawierał kilka ulepszeń: zwiększona szybkość i niezawodność, obsługa separacji w procesorze RIP, dekompresja obrazu (na przykład obrazy JPEG mogą być renderowane przez program PostScript), obsługa czcionek kompozytowych i formularz mechanizm buforowania treści wielokrotnego użytku.

PostScript 3

PostScript 3 (Adobe zrezygnował z terminologii „poziomowej” na rzecz prostego wersjonowania) pojawił się pod koniec 1997 roku i wraz z wieloma nowymi wersjami starszych operatorów opartych na słownikach, wprowadził lepszą obsługę kolorów i nowe filtry (umożliwiające kompresję w programie). /dekompresja, dzielenie programów i zaawansowana obsługa błędów).

PostScript 3 był istotny, jeśli chodzi o zastąpienie istniejących, zastrzeżonych, elektronicznych systemów przygotowania do druku kolorowego, które były wówczas szeroko stosowane w produkcji czasopism, poprzez wprowadzenie operacji płynnego cieniowania z maksymalnie 4096 odcieniami szarości (zamiast 256 dostępnych w PostScript Level 2), jako a także DeviceN, przestrzeń kolorów, która umożliwiała dodawanie dodatkowych kolorów atramentu (zwanych kolorami dodatkowymi ) do stron z kolorami złożonymi.

Użyj w druku

Przed PostScriptem

Przed wprowadzeniem PostScriptu drukarki były projektowane do drukowania znaków wyjściowych z tekstem — zwykle w ASCII — jako danymi wejściowymi. Istniało wiele technologii do tego zadania, ale większość podzielała tę właściwość, że glify były fizycznie trudne do zmiany, ponieważ były stemplowane na klawiszach maszyn do pisania , metalowych paskach lub płytach optycznych.

Zmieniło się to do pewnego stopnia wraz ze wzrostem popularności drukarek igłowych . Znaki w tych systemach zostały narysowane jako seria kropek, zgodnie z definicją w tabeli czcionek wewnątrz drukarki. Wraz ze wzrostem wyrafinowania drukarki igłowe zaczęły zawierać kilka wbudowanych czcionek, z których użytkownik mógł wybierać, a niektóre modele umożliwiały użytkownikom przesyłanie własnych glifów do drukarki.

Drukarki igłowe wprowadziły również możliwość drukowania grafiki rastrowej . Grafika została zinterpretowana przez komputer i wysłana jako seria kropek do drukarki przy użyciu serii sekwencji specjalnych . Te języki sterowania drukarką różniły się w zależności od drukarki, co wymagało od autorów programów tworzenia wielu sterowników .

Drukowanie grafiki wektorowej pozostawiono specjalnym urządzeniom, zwanym ploterami . Prawie wszystkie plotery miały wspólny język poleceń, HPGL , ale miały ograniczone zastosowanie do czegokolwiek innego niż drukowanie grafiki. Ponadto były one zwykle drogie i powolne, a przez to rzadkie.

Drukowanie PostScript

Drukarki laserowe łączą w sobie najlepsze cechy zarówno drukarek, jak i ploterów. Podobnie jak plotery, drukarki laserowe oferują wysokiej jakości grafikę liniową i podobnie jak drukarki igłowe są w stanie generować strony tekstu i grafiki rastrowej. W przeciwieństwie do drukarek lub ploterów, drukarka laserowa umożliwia umieszczenie wysokiej jakości grafiki i tekstu na tej samej stronie. PostScript umożliwił pełne wykorzystanie tych cech, oferując jeden język sterowania, który może być używany w drukarce dowolnej marki.

PostScript wyszedł poza typowy język sterowania drukarką i był sam w sobie kompletnym językiem programowania. Wiele aplikacji może przekształcić dokument w program PostScript, którego wykonanie skutkuje powstaniem oryginalnego dokumentu. Ten program można wysłać do tłumacza w drukarce, co skutkuje wydrukowaniem dokumentu, lub do jednego w innej aplikacji, która wyświetli dokument na ekranie. Ponieważ dokument-program jest taki sam niezależnie od miejsca przeznaczenia, nazywa się go niezależnym od urządzenia .

PostScript jest godny uwagi przy wdrażaniu rasteryzacji „ w locie”, w której wszystko, nawet tekst, jest określony za pomocą linii prostych i sześciennych krzywych Béziera (wcześniej spotykanych tylko w aplikacjach CAD ), co pozwala na dowolne skalowanie, obracanie i inne przekształcenia. Kiedy program PostScript jest interpretowany, interpreter konwertuje te instrukcje na kropki potrzebne do utworzenia danych wyjściowych. Z tego powodu interpretery PostScript są czasami nazywane procesorami obrazu rastrowego PostScript lub RIP.

Obsługa czcionek

Prawie tak złożona jak sam PostScript jest obsługa czcionek . System czcionek używa prymitywów graficznych PS do rysowania glifów jako krzywych, które można następnie renderować w dowolnej rozdzielczości . Przy takim podejściu trzeba było rozważyć szereg kwestii typograficznych .

Jednym z problemów jest to, że czcionki nie skalują się liniowo przy małych rozmiarach, a cechy glifów staną się proporcjonalnie za duże lub za małe i zaczną wyglądać nieprzyjemnie. PostScript ominął ten problem dzięki włączeniu podpowiedzi czcionek , w których dodatkowe informacje są podawane w poziomych lub pionowych paskach, aby pomóc zidentyfikować cechy każdej litery, które są ważne dla zachowania rasteryzatora. Rezultatem były znacznie lepiej wyglądające czcionki nawet w niskiej rozdzielczości. Dawniej uważano, że do tego zadania wymagane są ręcznie dostrajane czcionki bitmapowe.

W tamtym czasie technologia umieszczania tych wskazówek w czcionkach była starannie strzeżona, a czcionki z podpowiedziami zostały skompresowane i zaszyfrowane do postaci, którą Adobe nazywa czcionką Type 1 (znaną również jako czcionka PostScript Type 1 , PS1 , T1 lub Adobe Type 1 ). Typ 1 był w rzeczywistości uproszczeniem systemu PS do przechowywania tylko ogólnych informacji, w przeciwieństwie do kompletnego języka (PDF jest pod tym względem podobny). Firma Adobe sprzedawałaby następnie licencje na technologię Type 1 tym, którzy chcieliby dodawać wskazówki do własnych czcionek. Ci, którzy nie licencjonowali technologii, zostali z czcionką Type 3 (znaną również jako czcionka PostScript Type 3 , PS3 lub T3 ). Czcionki Type 3 pozwalały na pełne wyrafinowanie języka PostScript, ale bez ustandaryzowanego podejścia do podpowiedzi.

Type 2 czcionki Format został zaprojektowany do użytku z kompaktowe Font (CFF) charstrings i został wdrożony w celu zmniejszenia rozmiaru pliku czcionki. Format CFF/Type2 stał się później podstawą obsługi konturów PostScript w czcionkach OpenType .

Czcionki CID-wpust Format został również zaprojektowany, aby rozwiązać problemy w OCF / Typ 0 czcionek , za zajęcie się kompleksową azjatycki język ( CJK ) Kodowanie i bardzo duży zestaw znaków problemów. Format czcionki z kluczem CID może być używany z formatem Type 1 dla standardowych czcionek z kluczem CID lub Type 2 dla czcionek OpenType z kluczem CID.

Aby konkurować z systemem Adobe, firma Apple zaprojektowała swój własny system, TrueType , około 1991 roku. Natychmiast po ogłoszeniu TrueType firma Adobe opublikowała specyfikację formatu czcionki Type 1. Narzędzia detaliczne, takie jak Altsys Fontographer (nabyte przez Macromedia w styczniu 1995, należące do FontLab od maja 2005) dodały możliwość tworzenia czcionek Type 1. Od tego czasu wydano wiele darmowych czcionek Type 1; na przykład czcionki używane w systemie składu TeX są dostępne w tym formacie.

Na początku lat 90. istniało kilka innych systemów do przechowywania czcionek opartych na konturach, opracowanych na przykład przez Bitstream i Metafont , ale żaden z nich nie zawierał rozwiązania do drukowania ogólnego przeznaczenia i dlatego nie były szeroko stosowane.

Pod koniec lat 90. firma Adobe dołączyła do Microsoftu, opracowując OpenType , zasadniczo funkcjonalny nadzbiór formatów Type 1 i TrueType. Podczas drukowania na urządzeniu wyjściowym PostScript niepotrzebne części czcionki OpenType są pomijane, a to, co jest wysyłane do urządzenia przez sterownik, jest takie samo, jak w przypadku czcionki TrueType lub Type 1, w zależności od rodzaju konturów obecne w czcionce OpenType.

Inne realizacje

W latach 80. firma Adobe czerpała większość swoich dochodów z opłat licencyjnych za wdrożenie PostScriptu dla drukarek, znanego jako procesor obrazu rastrowego lub RIP . Ponieważ w połowie lat 80. pojawiło się wiele nowych platform opartych na architekturze RISC , niektórzy uznali, że brakuje wsparcia Adobe dla nowych maszyn.

To i kwestie związane z kosztami doprowadziły do ​​tego, że implementacje PostScriptu innych firm stały się powszechne, szczególnie w tanich drukarkach (gdzie sporną kwestią była opłata licencyjna) lub w wysokiej klasy sprzęcie do składu tekstu (gdzie dążenie do szybkości wymagało wsparcia dla nowych platform szybciej niż Adobe może zapewnić). W pewnym momencie Microsoft udzielił licencji Apple na zakupiony przez siebie interpreter zgodny z PostScript o nazwie TrueImage , a Apple udzielił licencji Microsoftowi na nowy format czcionki TrueType . W końcu Apple osiągnął porozumienie z Adobe i licencjonowany oryginalny PostScript dla swoich drukarek, ale TrueType stał się standardową technologią czcionek konturowych zarówno dla systemu Windows, jak i Macintosh.

Obecnie w drukarkach i wielofunkcyjnych urządzeniach peryferyjnych (MFP) powszechnie stosuje się interpretery zgodne z PostScript innych firm. Na przykład interpreter IPS PS3 firmy CSR plc , wcześniej znany jako PhoenixPage, jest standardem w wielu drukarkach i urządzeniach wielofunkcyjnych, w tym w tych opracowanych przez firmę Hewlett-Packard i sprzedawanych w ramach linii LaserJet i Color LaserJet. Inne rozwiązania PostScript innych firm używane przez producentów drukarek i urządzeń wielofunkcyjnych to Jaws i Harlequin RIP , oba firmy Global Graphics . Wolne oprogramowanie w wersji z kilkoma innymi aplikacjami, jest Ghostscript . Kilka kompatybilnych interpreterów jest wymienionych na Wiki drukowania nieudokumentowanego.

Niektóre podstawowe, niedrogie drukarki laserowe nie obsługują PostScriptu, zamiast tego są dostarczane ze sterownikami, które po prostu rasteryzują natywne formaty graficzne platformy, zamiast konwertować je najpierw na PostScript. Gdy taka drukarka wymaga obsługi PostScriptu, można użyć Ghostscript. Istnieje również szereg komercyjnych interpreterów PostScriptu, takich jak T-Script firmy TeleType Co.

Użyj jako system wyświetlania

PostScript odniósł komercyjny sukces dzięki wprowadzeniu graficznego interfejsu użytkownika (GUI), umożliwiającego projektantom bezpośrednie układanie stron do ostatecznego wydruku na drukarkach laserowych. Jednak własne systemy graficzne GUI były generalnie znacznie mniej wyrafinowane niż PostScript; Na przykład QuickDraw firmy Apple obsługiwał tylko podstawowe linie i łuki, a nie złożone B-splajny i zaawansowane opcje wypełniania regionów PostScript. Aby w pełni wykorzystać możliwości drukowania PostScript, aplikacje na komputerach musiały ponownie zaimplementować te funkcje przy użyciu własnego systemu graficznego platformy hosta. Doprowadziło to do wielu problemów, w których układ na ekranie nie odpowiadał dokładnie wydrukowi, ze względu na różnice w implementacji tych funkcji.

Wraz ze wzrostem mocy komputera stało się możliwe hostowanie systemu PS w komputerze, a nie w drukarce. Doprowadziło to do naturalnej ewolucji PS od systemu drukowania do takiego, który mógłby być również używany jako własny język graficzny hosta. Takie podejście miało wiele zalet; Nie tylko pomogło to wyeliminować możliwość różnych wyników na ekranie i drukarce, ale także zapewniło potężny system graficzny dla komputera i pozwoliło drukarkom być „głupie” w czasie, gdy koszt silników laserowych spadał. W środowisku produkcyjnym użycie PostScript jako systemu wyświetlania oznaczało, że komputer hosta mógł renderować niską rozdzielczość na ekranie, wyższą rozdzielczość na drukarkę lub po prostu wysyłać kod PS do inteligentnej drukarki w celu drukowania off-board.

Jednak PostScript został napisany z myślą o drukowaniu i miał wiele funkcji, które sprawiały, że nie nadawał się do bezpośredniego użycia w interaktywnym systemie wyświetlania. W szczególności PS opierało się na pomyśle gromadzenia poleceń PS do momentu, gdy showpagepolecenie było widoczne, w którym to momencie wszystkie polecenia odczytane do tego momentu były interpretowane i wyprowadzane. W systemie interaktywnym było to wyraźnie nieodpowiednie. PS nie miał też wbudowanej interaktywności; na przykład obsługa wykrywania trafień dla interaktywności myszy oczywiście nie miała zastosowania, gdy PS był używany na drukarce.

Kiedy Steve Jobs opuścił Apple i założył NeXT , podsunął Adobe pomysł wykorzystania PS jako systemu wyświetlania dla swoich nowych komputerów stacji roboczych. Rezultatem był Display PostScript lub DPS. DPS dodał podstawową funkcjonalność, aby poprawić wydajność, zmieniając wiele wyszukiwań ciągów na 32-bitowe liczby całkowite, dodając obsługę bezpośredniego wyjścia z każdym poleceniem i dodając funkcje umożliwiające GUI sprawdzanie diagramu. Dodatkowo, zestaw „wiązania” został dostarczony, aby umożliwić kod PS być wywoływane bezpośrednio z języka programowania C . NeXT użył tych powiązań w swoim systemie NeXTStep , aby zapewnić system graficzny zorientowany obiektowo . Chociaż DPS został napisany w połączeniu z NeXT, Adobe sprzedawał go komercyjnie i był powszechną cechą większości uniksowych stacji roboczych w latach 90-tych.

Sun Microsystems podjęło inne podejście, tworząc NewWS . Zamiast koncepcji DPS pozwalającej PS na interakcję z programami C, NeWS rozszerzył PS na język odpowiedni do uruchamiania całego GUI komputera. Firma Sun dodała szereg nowych poleceń dotyczących liczników czasu, sterowania myszą, przerwań i innych systemów potrzebnych do interaktywności, a także dodał struktury danych i elementy językowe, aby całkowicie zorientować się wewnętrznie na obiekt. Kompletny GUI, w rzeczywistości trzy, zostały napisane w NewWS i udostępnione przez pewien czas na ich stacjach roboczych. Jednak ciągłe wysiłki zmierzające do standaryzacji systemu X11 doprowadziły do ​​jego wprowadzenia i powszechnego stosowania w systemach Sun, a NeWS nigdy nie stał się powszechnie używany.

Język

PostScript to język programowania Turing-complete , należący do grupy konkatenatywnej . Zazwyczaj programy PostScript nie są tworzone przez ludzi, ale przez inne programy. Możliwe jest jednak pisanie programów komputerowych w PostScript, tak jak w każdym innym języku programowania.

PostScript to interpretowany , oparty na stosie język podobny do Forth , ale z silnym dynamicznym typowaniem , strukturami danych inspirowanymi tymi znalezionymi w Lispie , pamięcią o określonym zakresie i, od poziomu języka 2, wyrzucaniem śmieci . Składnia języka wykorzystuje notację odwróconą polską , dzięki czemu kolejność operacji jest jednoznaczna, ale czytanie programu wymaga pewnej wprawy, ponieważ trzeba pamiętać o układzie stosu . Większość operatorów (jakie inne języki nazywają funkcje ) pobiera swoje argumenty ze stosu i umieszcza ich wyniki na stosie. Literały (na przykład liczby) powodują umieszczenie kopii siebie na stosie. Wyrafinowane struktury danych mogą być budowane na typach tablic i słowników , ale nie mogą być deklarowane w systemie typów, który widzi je tylko jako tablice i słowniki, więc pozostawia się dalszą dyscyplinę typowania, która ma być zastosowana do takich zdefiniowanych przez użytkownika "typów" do kodu, który je implementuje.

Znak "%" jest używany do wprowadzania komentarzy w programach PostScript. Zgodnie z ogólną konwencją, każdy program PostScript powinien zaczynać się od znaków "%!PS" jako dyrektywy interpretera , aby wszystkie urządzenia poprawnie zinterpretowały go jako PostScript.

"Witaj świecie"

Program Hello World , zwyczajowy sposób pokazania małego przykładu kompletnego programu w danym języku, może wyglądać w PostScript (poziom 2) tak:

 %!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

lub jeśli urządzenie wyjściowe ma konsolę

 %!PS
 (Hello world!) =

Jednostki długości

PostScript używa punktu jako jednostki długości. Jednak w przeciwieństwie do niektórych innych wersji punktu, PostScript używa dokładnie 72 punktów na cal. Zatem:

1 punkt = 1/72 cal = 25,4/72 mm = 127/360 mm = 352,777… mikrometrów

Przykładowo, aby narysować pionową linię o długości 4 cm wystarczy wpisać:

0 0 moveto 
0 113.385827 lineto stroke

Bardziej czytelnie i idiomatycznie można użyć następującego odpowiednika, który demonstruje prostą definicję procedury i użycie operatorów matematycznych muloraz div:

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

Większość implementacji PostScriptu używa liczb rzeczywistych o pojedynczej precyzji (24-bitowa mantysa), więc używanie więcej niż 9 cyfr dziesiętnych do określania liczby rzeczywistej nie ma sensu, a wykonywanie obliczeń może powodować niedopuszczalne błędy zaokrąglania.

Oprogramowanie

Lista oprogramowania, które można wykorzystać do renderowania dokumentów PostScript:

Zobacz też

Bibliografia

Dalsza lektura

Zewnętrzne linki