Efterskrift

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 28. januar 2022; checks kræver 2 redigeringer .
efterskrift
Sprog klasse multiparadigme , stakbaseret , proceduremæssig
Dukkede op i 1982
Forfatter John Warnock , Charles Geschke
Udvikler Adobe
Filtypenavn _ .ps
Frigøre PostScript 3 (1997)
Type system streng , dynamisk
Større implementeringer Adobe PostScript, TrueImage, Ghostscript , InterPress
Blev påvirket Frem
påvirket PDF , indkapslet PostScript

PostScript er et sidebeskrivelsessprog , der primært bruges i desktop publishing .

Ideologi

Postscript blev udviklet af John Warnock og Chuck Geschke fra Adobe Systems i begyndelsen af ​​1980'erne . Postscript blev oprindeligt brugt som kernen i Apple -computerens printmotor , men blev hurtigt udbredt på de fleste computersystemer. Postscript-tolke (i form af software- eller hardwarekomponenter) til udskrivning af dokumenter er til stede i næsten alle moderne computersystemer.

Postscript bruger en model til at vise tekst (eller billeder) på en tom side. Når siden er klar, udskrives den og "tegningen" af billedet af næste side begynder. Det er ikke andet end en kompileringsmetode. Hvert Postscript-dokument er normalt et program, der udskriver ( eller viser på en skærm ) fortløbende sider.

Historie

PostScript-sproget blev udtænkt i 1976 af John Warnock fra Evans og Sutherland Computer Corporation .. Hans kollega John Gaffney , som dengang var tolk for den store  New York Harbor 3D-grafikdatabase , skabte Design System-sproget (meget lig Forth ). Senere flyttede John Warnock til Xerox PARC forskningscenter i Palo Alto og i 1978 sammen med Martin Newellskabt et nyt JaM -system (John og Martin) baseret på Design System, brugt i printforskning og senere udviklet til InterPress- Xerox Printing Protocol .

I 1982 forlod John Warnock Xerox og grundlagde Adobe Systems Inc. sammen med Chuck Geschke . I første omgang var deres mål at skabe en specialiseret udskrivningsarbejdsstation, som skulle hedde PostScript, men de indså hurtigt, at det var bedre at koncentrere deres indsats om at udvikle værktøjer til styring af tredjepartsprintere.

I 1984 så PostScript dagens lys ( niveau 1 blev senere føjet til navnet for at skelne det fra niveau 2). Postscript havde en række fordele i forhold til andre systemer på den tid:

Adobe tog en risiko med PostScript, og det har måske ikke været i stand til at overbevise markedet om behovet for et sådant sprog, hvis det ikke var for Apple Computers Steve Jobs . I 1985 begyndte salget af Macintosh-computere at falde, og Apple havde brug for en "killer-app" - noget som kun dens computer kunne. Steve Jobs investerede 2,5 millioner dollars i Adobe, som skabte en PostScript-controller til Apple LaserWriter- printeren , og i Aldus , som skabte PageMaker , som udnyttede Macintosh og LaserWriter fuldt ud. Fremkomsten af ​​prepress på computeren reddede derefter Apple og gjorde Adobe og Aldus til store virksomheder. Andre fotosættere, startende med Linotype , satte pris på PostScript og udstyrede snart deres fotosættere med PostScript-fortolkere. PostScript er blevet standarden inden for prepress.

I 1991 udgav Adobe den næste revision af PostScript, PostScript Level 2. Dette var en betydelig revision, længe ventet af udgiversamfundet. De vigtigste forbedringer var:

Adobe begik den fejl at frigive PostScript Level 2-specifikationerne, før arbejdet med hardwareimplementeringen påbegyndtes. Konkurrenter kom uventet ind på markedet med PostScript Level 2- emulatorer foran Adobe selv. Som følge heraf tog det meget lang tid for programmer at begynde at bruge alle de nye PostScript niveau 2-funktioner.

I 1998 introducerede Adobe den nye PostScript 3-standard. Ændringer fra niveau 2 er mindre. Dette er forståeligt, da mange applikationer stadig ikke fuldt ud kan understøtte PostScript Level 2. De vigtigste fordele ved PostScript 3 er:

Omfang

Ligesom plottere leverer PostScript vektorgrafik af høj kvalitet og et enkelt kontrolsprog, der kan bruges af enhver printerproducent. Ligesom matrixprintere tilbyder PostScript praktiske muligheder for udskrivning af bitmapgrafik og tekst. I modsætning til begge kan PostScript kombinere alle disse typer output på én side, hvilket giver dig meget mere fleksibilitet end nogen printer eller plotter havde før.

PostScript er mere end et typisk printerkontrolsprog, det er et fuldt udstyret programmeringssprog. Mange applikationsprogrammer kan konvertere et dokument til et PostScript-program, der vil producere det originale dokument, når det udføres. Dette program kan sendes direkte til en PostScript-aktiveret printer eller konverteres af en PostScript-fortolker til et andet format (for ikke-PostScript-printere), eller resultatet af dets udførelse af fortolkeren kan vises på skærmen. Fordi det originale PostScript-program er det samme, kaldes PostScript enhedsuafhængig .

De fleste højtydende printere og plottere har en indbygget PostScript - fortolker . Samtidig understøtter simple hjemmeklasseprintere kun elementære grafikoperationer, så opgaven med at skabe et bitmapbillede er tildelt den centrale behandlingsenhed . Der findes PostScript-sprogfortolkere til forskellige operativsystemer , hvor den bedst kendte er det gratis program Ghostscript .

Der er en kommerciel version af TeX-systemet  - BaKoMa TeX, skrevet af den sovjetiske og russiske programmør V. Malyshev udelukkende i PostScript.

Sprog

PostScript er et fuldt udstyret Turing-komplet programmeringssprog . Selvom PostScript- programmer hovedsageligt ikke er skabt af mennesker, men af ​​andre programmer, er der i princippet intet til hinder for at skrive programmer på det [1] til beregning af grafik, implementering af numeriske metoder til løsning af matematiske problemer osv.

PostScript er et fortolket staksprog, der ligner Forth . Sprogets syntaks bruger omvendt polsk notation , hvilket gør brugen af ​​parenteser unødvendig, men kræver en vis øvelse for at læse programteksten på grund af behovet for at holde stakkens indhold i tankerne. De fleste operatører tager operander fra stakken og skubber resultatet af beregningen over på stakken. Bogstaver (strenge og tal) skubber en kopi af sig selv på stakken.

PostScript tegner ved hjælp af et todimensionalt rektangulært koordinatsystem , hvis oprindelse er nederst til venstre på siden ; standard x - aksen er vandret (det vil sige bredden af ​​siden), y - aksen  er lodret. Måleenheden for lineære koordinater er det typografiske punkt . Med hjælp fra sprogoperatører [6, s. 517-518] koordinatsystemets oprindelse kan flyttes til ethvert punkt (operator translate), og selve systemet kan roteres til en vilkårlig vinkel i sidens plan (operator rotate); scaleskalaen langs hver af de to akser kan også ændres ved hjælp af operatoren . For eksempel udføres "spejl" billedoutput til film (såkaldt " Emulsion down ") i PostScript - printere ved hjælp af en enkelt operator scale, der sætter en negativ skala langs en af ​​koordinatsystemets akser: f.eks -1.0 1.0 scale.

PostScript har funktionerne i en metafil, der kombinerer understøttelse af både vektor- og bitmapbilleder. Skrifttyper i PostScript er kun vektorer. Lidt fra hinanden er de såkaldte. Type3- skrifttyper, hvor enhver procedure formuleret i form af PostScript -sproget kan bruges til at tegne glyffer (procedure ) [6, s. 337-342]. Siden udgivelsen af ​​SP4 til Windows NT 4.0 i 1998 (se også http://support.microsoft.com/gp/lifesupsps ) med Adobe Type Manager 4.0 og AdobePS 5 -driveren installeret på systemet , er alle skrifttyper i ikke - romersk kodning, især kyrilliske tegn blev uploadet til en PostScript -fil i form af Type3 - skrifttyper, hvor hver glyf blev repræsenteret som et bitmapbillede af den passende opløsning. Aflastning af skrifttype som bitmaps skabte en masse problemer som forberedelse til fotosætning og prepress generelt. Denne fejl blev rettet i AdobePS 5.1 og Adobe Type Manager 4.1 , som derefter blev inkluderet i Windows 2000 -distributionen . /BuildGlyph

Dokumentstruktur

Strukturen af ​​en PostScript-fil er dannet af strukturelle kommentarer. Strukturelle kommentarer begynder med en sekvens af tegn " %%" i begyndelsen af ​​en linje.

En PostScript-fil består af fire dele: header, prolog, body og epilog.

Overskriften begynder med linjen " %!PS-Adobe-N.M", hvor NM er versionen af ​​specifikationen, efterfulgt af strukturelle kommentarer med generelle dokumentegenskaber, og overskriften slutter med linjen " %%EndComments".

%!PS-Adobe-2.0 %%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software %%Titel: rep.dvi %%Sider: 9%%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%EndComments

Prologen indeholder normalt underrutinebeskrivelser og data, der er nødvendige for at udskrive dokumentet, såsom procedurer og skrifttyper. Prologen slutter med kommentaren " %%EndProlog".

Brødteksten af ​​programmet indeholder kommandoer, der er ansvarlige for at gengive hver side, efter strengen " %%Page: <метка> <номер>", hvor <label> er etiketten på siden, der ikke er udskrevet, og <nummer> er serienummeret på siden i filen, for eksempel,%%Page: iii 3

Efter kommandoerne til gengivelse af alle sider er der en strukturel kommentar “ %%Trailer”, hvorefter epilogen begynder.

I epilogen kan du duplikere kommentarer fra overskriften (dette er implementeret i tilfælde af, at programmet endnu ikke kender, for eksempel antallet af sider i begyndelsen af ​​outputtet) - i dette tilfælde i stedet for de numeriske værdier af parametrene i overskriften, skal du skrive " (atend)".

Filen slutter med strengen " %%EOF".

Oversigt over sprogelementer

Stabler

PostScript bruger fire stakke til at gemme forskellige typer data: operandstakken, grafikkontekststakken, udførelsesstakken og ordbogsstakken.

Datatyper

De grundlæggende datatyper for PostScript-sproget er: heltal med fortegn, reelt tal, boolesk udtryk ( trueeller false), tegnstreng ( ( … ) ), array ( [ … ] ), procedure ( { … } ), ordbog, navn.

Operatører

Operatører i PostScript tager operander (parametre) ved at skubbe dem ud af stakken og skubbe resultaterne af handlingerne (hvis nogen) også ind på stakken. Denne programmeringsstil, hvor operanderne er specificeret før operationen på dem (operator), kaldes postfix-notation. For at tilføje to givne tal, skal du f.eks. først placere dem øverst på operand-stakken, derefter udføre kommandoen add, som vil poppe de sidste to elementer (det vil sige de givne tal) fra stakken, tilføje dem og skrive resultatet til stakken, hvorfra det kan poppes ved en anden operation som en operand. Det er skrevet sådan:4 5 add

PostScript-udsagn kan opdeles i flere grupper. Det er operatorer til at arbejde med indholdet af stakken (uanset type), aritmetiske operationer, operatorer til at arbejde med arrays, arbejde med ordbøger, arbejde med strenge, sammenligning, kommandoflowkontrol, arbejde med typen af ​​argumenter og konvertering, adgang og arbejde med filer, arbejde med virtuel hukommelse, grafiktilstand og andre.

En kort oversigt over billedtegningsmekanismen

Processen med at tegne (rasterisering), når et PostScript -program udføres ( fortolkes ) består i at beregne en (for monokrom) eller flere (for eksempel fire for en CMYK -enhed eller seks for CMYKOrGr ) parameterværdier for hver pixel på outputenheden (-s) i området fra 0 op til 1,0. Den beregnede værdi af parameteren (s) bruges som argument for en anden vigtig funktion  - overførselsfunktion (russisksproget synonym  - display ). Som standard er denne funktion i det overvældende flertal af tilfælde den enkleste funktion y(x)=x, og dens værdi er identisk lig med værdien af ​​argumentet. Men i en række tilfælde, for eksempel , bruges ret komplekse ikke-lineære afhængigheder y(x) til at kompensere for punktforstærkning , givet ved stykkevis eller tabelformet tilnærmelse . Stykkevis lineær tilnærmelse af overførselsfunktionen bruges for eksempel i Adobe Photoshop EPS- og PS - filer  - til tilnærmelse er definitionsområdet [0; 1.0] opdelt i fyrre sektioner med et trin på 0,025 (2,5% af rasterpunktet ) ; på hver af de fyrre sektioner har overførselsfunktionen formen y(x)=b x+a. Overførselsfunktionen af ​​formen y(x)=1-x (i form af PostScript-sproget ) vender billedet om, hvilket gør det til et negativt - det er sådan PostScript -printere  udskriver et negativ . {1 sub neg} settransfer

For monokrome enheder - for eksempel til fototypesetting , kan beslutningen om at udfylde (fremhæve) en pixel træffes som et resultat af at sammenligne overførselsfunktionsværdien beregnet for en given pixel og værdien af ​​den såkaldte. Spot -funktion eller to-dimensionel array Threshold array : hvis værdien af ​​overførselsfunktionen er større end værdien af ​​Spot - funktionen eller element i Threshold arrayet for denne pixel, overmales sidstnævnte (fremhævet).

Et særligt valg af overførselsfunktionen og Spot - funktionen eller Threshold-arrayet gør det muligt at opnå forholdet mellem antallet af skraverede og ufyldte pixels på outputenheden for hver pixel af kildebilledet (rasteret), således at den gennemsnitlige lysstyrke af tilsvarende billedareal på printet (print) er næsten proportionalt med værdien af ​​den beregnede parameter (se fig. ovenfor).

På lignende måde dannes prikker i forskellige størrelser, som udgør et halvtonebillede på typografiske udskrifter: i aviser, magasiner, bøger.

Programeksempel

%!ps-adobe-1.0 % Som standard bruger postscript måleenheden 1 point = 1/72 tomme . % og vi kan godt lide millimeter. 72 25,4 div % 1 mm = 72/25,4 point dup % dupliker værdien på toppen af ​​stakken skala % strække dette antal gange på begge koordinater 100 100 oversæt % indstillet oprindelse til (100 mm, 100 mm)   /Times-Roman findfont % få Times-Roman font 10 skalafont % stræk til størrelse 10 (vi har mm!) setfont % indstil den valgte skrifttype   0 30 330 { % cyklus for vinkler fra 0 til 330 i intervaller på 30 gsave % gem nuværende koordinattransformation drej % drej koordinatsystemet (vinklen i grader er taget fra toppen af ​​stakken) 15 0 flyt til % flyt til punkt (15 mm, 0 mm) (Wikipedia) vis % skrive ord i nuværende skrifttype grestore % returnere koordinat transformation } for % slutningen af ​​for loop   udstillingsside % vis side

Program output

Skrifttypehåndtering

Næsten lige så kompleks som PostScript selv er dens håndtering af skrifttyper . Skrifttypesystemet bruger PS-grafikprimitiver til at tegne glyffer med buede linjer, som derefter kan vises i enhver opløsning . En række typografiske problemer opstår med denne tilgang.

Et af problemerne - at skrifttyper ikke skaleres lineært ved små størrelser - løses ved at inkludere antydninger . På et tidspunkt, hvor teknologien til at inkludere tip i skrifttyper var stærkt beskyttet, blev "antydede" skrifttyper kodet og komprimeret til det, Adobe kaldte Font Type 1 (også kendt som PS1 , T1 eller Adobe Type 1 ). Type 1 var mere en lagringsfacilitet til rent karakter-konturoplysninger end et komplet sprog (PDF ligner i denne henseende). Adobe begyndte derefter at licensere Type 1-teknologi til dem, der ønskede at tilføje hints til deres skrifttyper. De, der ikke licenserede teknologien, stod tilbage med Type 3-skrifttypen. Type 3-skrifttyper tillod PostScript-sprogets fulde kompleksitet, men uden en standardtilgang til tip.

Type 2-skrifttypen, som er beregnet til brug med formatet Compact Font (CFF), er blevet implementeret for at reducere den samlede skrifttypefilstørrelse. Det blev senere grundlaget for håndtering af OpenType- skrifttyper.

For at kunne konkurrere med Adobes system udviklede Apple sine egne TrueType -systemer i 1991 . Umiddelbart efter TrueType blev annonceret, udgav Adobe specifikationer for Type 1 -formatet . Siden da er der dukket mange gratis Type 1-skrifttyper op. Eksempelvis er de skrifttyper, der bruges af TeX -layoutsystemet, tilgængelige i dette format.

I slutningen af ​​1990'erne sluttede Adobe sig til Microsoft i udviklingen af ​​OpenType . I det væsentlige var det en sammenlægning og udvidelse af Type 1- og TrueType-formaterne. Når der udskrives til output fra en PostScript-enhed, udelades redundante dele af OpenType-skrifttypen, og det, der sendes til printerdriveren, er ikke forskelligt fra det, der udskrives af TrueType- eller Type 1-skrifttyper.

CID-indekserede skrifttyper

Det CID-indekserede (en forkortelse for Character Identified) skrifttypeformatet blev udviklet til at løse problemet med at adressere glyffer på hieroglyfiske sprog med meget store tegnantal (kinesisk, koreansk, japansk). Dette format kan bruges med Type 1 til standard CID-indekserede skrifttyper eller Type 2 til CID-indekserede OpenType - skrifttyper.

Hver glyf af et element i en tegnsamling identificeres af et unikt tegnindeks (CID) i denne kodning, som muligvis ikke er den samme som koden for det tilsvarende tegn, f.eks. i Unicode .

Samlinger af tegn er entydigt navngivne store og små bogstaver, rækkefølge og polstring, såsom "Adobe-Japan1-6". Registeret angiver udvikleren (f.eks. Adobe). Rækkefølgen afslører formålet med tegnsættet (f.eks. "Japan1"). Et ekstra tal (f.eks. 6) angiver ofte samlingens størrelse. For eksempel er Adobe-Japan1-0-samlingen 8284 glyffer og Adobe-Japan1-6 er 23058 glyffer.

Skrifttyper med en CID-nøgle kan laves uden reference til en samling af tegn ved at bruge en "identitets"-kodning såsom Identity-H (til vandret skrift) eller Identity-V (til lodret skrift). Sådanne skrifttyper kan have et unikt tegnsæt, i hvilket tilfælde glyfens CID-nummer ikke er informativt; Normalt bruges Unicode- kodningen i stedet , muligvis med yderligere information.

Adobe ClearScan-teknologien skaber brugerdefinerede Type1-CID-skrifttyper, der matcher det visuelle udseende af et scannet dokument efter Optical Character Recognition (OCR). ClearScan (i Acrobat 9) erstatter ikke skrifttyper med systemskrifttyper eller Type1-MM (som i Acrobat 8 ​​og tidligere), men bruger disse nyoprettede brugerdefinerede skrifttyper. Brugerdefinerede skrifttyper er indlejret i PDF-filen.

Tendenser og udsigter

Ud over PostScript er Hewlett-Packards PCL - printerkontrolsprog blevet udbredt på laserprintermarkedet . PCL var oprindeligt rettet mod andre opgaver end PostScript (printerkontrol i stedet for sidebeskrivelse) og kan ikke levere portabilitet . Til kontorbrug er det dog i nogle tilfælde mere bekvemt. PCL bruger standard Windows TrueType-skrifttyper ( i modsætning til PostScript). Derudover er den seneste version (PCL6) udviklet af HP i tæt samarbejde med Microsoft og giver derfor hurtigere respons på applikationen, hurtig udskrivning af kompleks grafik, forbedret printkvalitet og øget nøjagtighed ved output af dokumenter.

Derudover er PostScript licenseret og royaltyfrit af Adobe per RIP (Raster Image Processor) controller, mens PCL kan bruges af tredjeparter gratis. Derfor koster licenseret RIP PostScript 3 til HP-plottere omkring $500, mens ulicenserede OKI "PS2 emulation"-controllere koster $30-70.

Stort set alle laserprintere i 1990'erne understøttede PostScript som deres primære sprog; siden 2000'erne er mange laserprintere i SOHO - klassen ikke blevet udstyret med PostScript-understøttelse for at reducere omkostningerne. Således bliver PostScript skubbet ud af kontoret af PCL, mens det ikke desto mindre forbliver en praktisk talt ubestridt standard inden for prepress.

Noter

  1. Evan Danaher. Livet i PostScript  . - Spillet "Life" i PostScript-sproget ( GPL ). - " Engelsk.  Jeg lærte, at Postscript er et rigtigt sprog, ikke kun til grafik. Så jeg brugte lidt tid på at lære det, og ville gerne gøre noget interessant i det. Så selvfølgelig var det oplagte valg John Conways livsspil. ". Hentet 9. april 2012. Arkiveret fra originalen 15. maj 2012.

Litteratur

  • Robert Shimonsky. Lær Unix på egen hånd. 10 minutter pr. lektion = Sams Teach Yourself Unix på 10 minutter. - M .: "Williams" , 2006. - S. 272. - ISBN 0-672-32764-3 .
  • S. Nemnyugin, M. Chaunin, A. Komolkin. Effektivt arbejde i UNIX. St. Petersborg: "Piter", 2001. ISBN 5-272-00197-4
  • Romanovsky I. V., Stolyar S. E. "Stakke og staksprog" . Tutorial. - St. Petersborg: "Informatisering af uddannelse", 2002. - 35 s.
  • Glenn C. Reid. Thinking in PostScript , Addison-Wesley, 1990.

Links