Postskriptum

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 28 januari 2022; kontroller kräver 2 redigeringar .
postskriptum
Språkklass multi- paradigm , stack -based , procedural
Framträdde i 1982
Författare John Warnock , Charles Geschke
Utvecklaren Adobe
Filtillägg _ .ps
Släpp PostScript 3 (1997)
Typ system strikt , dynamisk
Stora implementeringar Adobe PostScript, TrueImage, Ghostscript , InterPress
Blivit påverkad Vidare
påverkas PDF , inkapslad PostScript

PostScript är ett sidbeskrivningsspråk som främst används i desktop publishing .

Ideologi

Postscript utvecklades av John Warnock och Chuck Geschke från Adobe Systems i början av 1980 -talet . Postscript användes ursprungligen som kärnan i Apple -datorns utskriftsmotor , men blev snart utbredd på de flesta datorsystem. Postscript-tolkar (i form av mjukvara eller hårdvarukomponenter) för utskrift av dokument finns i nästan alla moderna datorsystem.

Postscript använder en modell för att visa text (eller bilder) på en tom sida. När sidan är klar skrivs den ut och "ritningen" av bilden på nästa sida börjar. Det är inget annat än en sammanställningsmetod. Varje Postscript-dokument är vanligtvis ett program som skriver ut ( eller visar på en bildskärm ) på varandra följande sidor.

Historik

PostScript-språket skapades 1976 av John Warnock från Evans och Sutherland Computer Corporation .. Hans kollega John Gaffney , som då var tolk för den stora  New York Harbor 3D-grafikdatabasen , skapade språket Design System (mycket likt Forth ). Senare flyttade John Warnock till Xerox PARC forskningscenter i Palo Alto och 1978 tillsammans med Martin Newellskapat ett nytt JaM- system (John och Martin) baserat på Design System, använt i tryckforskning och senare utvecklat till InterPress- Xerox Printing Protocol .

1982 lämnade John Warnock Xerox och grundade Adobe Systems Inc. tillsammans med Chuck Geschke . Deras mål var från början att skapa en specialiserad utskriftsarbetsstation, som skulle heta PostScript, men de insåg snart att det var bättre att koncentrera sina ansträngningar på att utveckla verktyg för att hantera tredjepartsskrivare.

1984 såg PostScript dagens ljus ( nivå 1 lades senare till namnet för att skilja det från nivå 2). Postscript hade ett antal fördelar jämfört med andra system på den tiden:

Adobe tog en risk med PostScript, och det kanske inte har lyckats övertyga marknaden om behovet av ett sådant språk om inte Apple Computers Steve Jobs . 1985 började försäljningen av Macintosh-datorer minska och Apple behövde en "killer app" - något som bara dess dator kunde göra. Steve Jobs investerade 2,5 miljoner dollar i Adobe, som skapade en PostScript-kontroller för Apple LaserWriter- skrivaren , och i Aldus , som skapade PageMaker , som drog full nytta av Macintosh och LaserWriter. Tillkomsten av prepress på datorn räddade sedan Apple och gjorde Adobe och Aldus till stora företag. Andra fotosättare, som började med Linotype , uppskattade PostScript och utrustade snart sina fotosättare med PostScript-tolkar. PostScript har blivit standarden inom prepress.

1991 släppte Adobe nästa version av PostScript, PostScript Level 2. Detta var en betydande översyn, efterlängtad av förlagsgemenskapen. De viktigaste förbättringarna var:

Adobe gjorde misstaget att släppa PostScript Level 2-specifikationerna innan arbetet med hårdvaruimplementeringen påbörjades. Konkurrenter kom oväntat in på marknaden med PostScript Level 2 -emulatorer före Adobe själva. Som ett resultat tog det mycket lång tid för applikationer att börja använda alla de nya PostScript nivå 2-funktionerna.

1998 introducerade Adobe den nya PostScript 3-standarden. Ändringar från nivå 2 är mindre. Detta är förståeligt med tanke på att många applikationer fortfarande inte fullt ut kan stödja PostScript Level 2. De främsta fördelarna med PostScript 3 är:

Omfattning

Precis som plottrar ger PostScript vektorgrafik av hög kvalitet och ett enda kontrollspråk som kan användas av alla skrivartillverkare. Precis som matrisskrivare erbjuder PostScript praktiska alternativ för utskrift av bitmappsgrafik och text. Till skillnad från båda kan PostScript kombinera alla dessa typer av utskrifter på en sida, vilket ger dig mycket mer flexibilitet än någon skrivare eller plotter hade tidigare.

PostScript är mer än ett typiskt skrivarkontrollspråk, det är ett fullfjädrat programmeringsspråk. Många applikationsprogram kan konvertera ett dokument till ett PostScript-program som producerar originaldokumentet när det körs. Detta program kan skickas direkt till en PostScript-aktiverad skrivare eller konverteras av en PostScript-tolk till ett annat format (för icke-PostScript-skrivare), eller så kan resultatet av dess exekvering av tolken visas på skärmen. Eftersom det ursprungliga PostScript-programmet är detsamma kallas PostScript enhetsoberoende .

De flesta högpresterande skrivare och plottrar har en inbyggd PostScript - tolk . Samtidigt stöder enkla skrivare i hemklass endast elementära grafikoperationer, så uppgiften att skapa en bitmappsbild tilldelas den centrala bearbetningsenheten . Det finns PostScript-språktolkar för olika operativsystem , varav det mest kända är gratisprogrammet Ghostscript .

Det finns en kommersiell version av TeX-systemet  - BaKoMa TeX, skriven av den sovjetiska och ryska programmeraren V. Malyshev helt i PostScript.

Språk

PostScript är ett fullt utrustat Turing-komplett programmeringsspråk . Även om PostScript- program huvudsakligen inte skapas av människor, utan av andra program, hindrar i princip ingenting att skriva program på det [1] för att beräkna grafik, implementera numeriska metoder för att lösa matematiska problem, etc.

PostScript är ett tolkat stackspråk som liknar Forth . Språkets syntax använder omvänd polsk notation , vilket gör användningen av parenteser onödig, men kräver lite övning för att läsa programtexten på grund av behovet av att ha stackens innehåll i åtanke. De flesta operatörer tar operander från stacken och skjuter upp resultatet av beräkningen till stacken. Bokstaver (strängar och siffror) skjuter en kopia av sig själva på högen.

PostScript ritar med hjälp av ett tvådimensionellt rektangulärt koordinatsystem , vars ursprung finns i det nedre vänstra hörnet på sidan ; standard x - axeln är horisontell (det vill säga sidans bredd), y - axeln  är vertikal. Måttenheten för linjära koordinater är den typografiska punkten . Med hjälp av språkoperatörer [6, s. 517-518] origo för koordinatsystemet kan flyttas till vilken punkt som helst (operator translate), och själva systemet kan roteras till en godtycklig vinkel i sidans plan (operator rotate); scaleskalan längs var och en av de två axlarna kan också ändras med operatören . Till exempel utförs "spegelbild" till film (så kallad " Emulsion down ") i PostScript - skrivare med en enda operator scalesom ställer in en negativ skala längs en av koordinatsystemets axlar: till exempel -1.0 1.0 scale.

PostScript har funktionerna hos en metafil, som kombinerar stöd för både vektor- och bitmappsbilder. Teckensnitt i PostScript är endast vektorer. Lite isär ligger de sk. Typ3- teckensnitt där alla förfaranden formulerade i termer av PostScript- språket kan användas för att rita glyfer (procedur ) [6, s. 337-342]. Sedan SP4 för Windows NT 4.0 släpptes 1998 (se även http://support.microsoft.com/gp/lifesupsps ) med Adobe Type Manager 4.0 och AdobePS 5- drivrutinen installerad på systemet , är alla teckensnitt i icke- romerska kodning, i synnerhet kyrilliska tecken laddades upp till en PostScript -fil i form av Type3- teckensnitt, där varje glyf representerades som en bitmappsbild med lämplig upplösning. Att ladda ner teckensnitt som bitmappar skapade många problem som förberedelser för fotosättning och prepress i allmänhet. Denna bugg fixades i AdobePS 5.1 och Adobe Type Manager 4.1 , som sedan inkluderades i Windows 2000 -distributionen . /BuildGlyph

Dokumentstruktur

Strukturen för en PostScript-fil bildas av strukturella kommentarer. Strukturella kommentarer börjar med en sekvens av tecken " %%" i början av en rad.

En PostScript-fil består av fyra delar: sidhuvud, prolog, brödtext och epilog.

Rubriken börjar med raden " %!PS-Adobe-N.M" där NM är versionen av specifikationen, följt av strukturella kommentarer med allmänna dokumentegenskaper, och rubriken slutar med raden " %%EndComments".

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

Prologen innehåller vanligtvis subrutinbeskrivningar och data som behövs för att skriva ut dokumentet, såsom procedurer och typsnitt. Prologen avslutas med kommentaren " %%EndProlog".

Brödtexten i programmet innehåller kommandon som är ansvariga för att rendera varje sida, föregås av strängen " %%Page: <метка> <номер>", där <label> är etiketten på sidan som inte skrivs ut, och <number> är serienumret på sidan i filen, till exempel,%%Page: iii 3

Efter kommandona för att rendera alla sidor finns det en strukturell kommentar " %%Trailer", varefter epilogen börjar.

I epilogen kan du duplicera kommentarer från rubriken (detta implementeras om programmet ännu inte känner till, till exempel antalet sidor i början av utgången) - i det här fallet istället för de numeriska värdena av parametrarna i rubriken måste du skriva " (atend)".

Filen slutar med strängen " %%EOF".

Översikt över språkelement

Stackar

PostScript använder fyra stackar för att lagra olika typer av data: operandstacken, grafikkontextstacken, exekveringsstacken och ordboksstacken.

Datatyper

De grundläggande datatyperna för PostScript-språket är: heltal med tecken, reellt tal, booleskt uttryck ( trueeller false), teckensträng ( ( … ) ), array ( [ … ] ), procedur ( { … } ), ordbok, namn.

Operatörer

Operatörer i PostScript tar operander (parametrar) genom att ta bort dem från stacken och skjuta upp resultatet av åtgärderna (om några) också till stacken. Denna programmeringsstil, där operanderna specificeras före operationen på dem (operator), kallas postfix-notation. Till exempel, för att lägga till två givna siffror måste du först lägga dem överst i operandstacken, sedan köra kommandot add, vilket kommer att poppa de sista två elementen (det vill säga de givna talen) från stacken, lägga till dem och skriva resultatet till stacken, varifrån det kan poppas av en annan operation som en operand. Det är skrivet så här:4 5 add

PostScript-satser kan delas in i flera grupper. Det här är operatorer för att arbeta med innehållet i stacken (oavsett typ), aritmetiska operationer, operatorer för att arbeta med arrayer, arbeta med ordböcker, arbeta med strängar, jämförelse, kommandoflödeskontroll, arbeta med typen av argument och konvertering, komma åt och arbeta med filer, arbeta med virtuellt minne, grafikstatus och annat.

En kort översikt över bildritningsmekanismen

Processen att rita (rastreras) när ett PostScript- program körs ( tolkas ) består i att för varje pixel i utenheten beräkna ett (för monokrom) eller flera (till exempel fyra för en CMYK - enhet eller sex för CMYKOrGr ) parametervärden (-s) i intervallet från 0 upp till 1,0. Det beräknade värdet av parametern (s) används som ett argument för en annan viktig funktion  - överföringsfunktion (ryskspråkig synonym  - display ). Som standard, i den överväldigande majoriteten av fallen, är denna funktion den enklaste funktionen y(x)=x och dess värde är identiskt lika med värdet på argumentet. Men i ett antal fall, till exempel , används ganska komplexa olinjära beroenden y(x) för att kompensera för punktförstärkning , som ges av bitvis eller tabellformad approximation . Styckvis linjär approximation av överföringsfunktionen används till exempel i Adobe Photoshop EPS- och PS- filer  - för approximation är definitionsområdet [0; 1.0] uppdelat i fyrtio sektioner med ett steg på 0,025 (2,5% av rasterpunkten ) ; på var och en av de fyrtio sektionerna har överföringsfunktionen formen y(x)=b x+a. Överföringsfunktionen för formen y(x)=1-x (i termer av PostScript-språket ) vänder bilden, vilket gör den till ett negativ - det är så PostScript- skrivare  skriver ut ett negativ . {1 sub neg} settransfer

För monokroma enheter - till exempel för fototypsättning , kan beslutet att fylla (markera) en pixel tas som ett resultat av att jämföra överföringsfunktionsvärdet som beräknats för en given pixel och värdet på den så kallade. Spot -funktion eller tvådimensionell array Threshold array : om värdet på överföringsfunktionen är större än värdet på Spot -funktionen eller elementet i Threshold-arrayen för denna pixel, målas den senare över (markeras).

Ett speciellt val av överföringsfunktionen och Spot- funktionen eller Threshold-arrayen gör det möjligt att erhålla förhållandet mellan antalet skuggade och ofyllda pixlar i utenheten för varje pixel i källbilden (rastrerad) så att den genomsnittliga ljusstyrkan för motsvarande bildyta på utskriften (utskriften) är nästan proportionell mot värdet på den beräknade parametern (se fig. ovan).

På liknande sätt bildas prickar av olika storlekar, som utgör en halvtonsbild på typografiska utskrifter: i tidningar, tidskrifter, böcker.

Programexempel

%!ps-adobe-1.0 % Som standard använder postscript måttenheten 1 punkt = 1/72 tum . % och vi gillar millimeter. 72 25,4 div % 1 mm = 72/25,4 poäng dup % duplicera värdet på toppen av stacken skala % sträck detta antal gånger på båda koordinaterna 100 100 översätt % satt ursprung till (100 mm, 100 mm)   /Times-Roman findfont % få Times-Roman-font 10 scalefont % stretch till storlek 10 (vi har mm!) setfont % ställ in det valda teckensnittet   0 30 330 { % cykel för vinklar från 0 till 330 i steg om 30 gsave % spara aktuell koordinattransformation rotera % rotera koordinatsystemet (vinkeln i grader tas från toppen av stapeln) 15 0 flytta till % flytta till punkt (15 mm, 0 mm) (Wikipedia) visa % skrivord i aktuellt teckensnitt grestore % returnera koordinattransformation } för % slutet av för loop   showpage % visa sida

Programutgång

Teckensnittshantering

Nästan lika komplicerad som PostScript i sig är dess hantering av typsnitt . Teckensnittssystemet använder PS-grafikprimitiver för att rita glyfer med böjda linjer, som sedan kan visas i vilken upplösning som helst . Ett antal typografiska problem uppstår med detta tillvägagångssätt.

Ett av problemen - att teckensnitt inte skalas linjärt vid små storlekar - löses genom att inkludera antydningar . I en tid då tekniken för att inkludera ledtrådar i teckensnitt var hårt skyddad, kodades "antydda" teckensnitt och komprimerades till vad Adobe kallade Font Type 1 (även känd som PS1 , T1 eller Adobe Type 1 ). Typ 1 var mer en lagringsmöjlighet för rent tecken-konturinformation än ett komplett språk (PDF är liknande i detta avseende). Adobe började sedan licensiera typ 1-teknik till de som ville lägga till tips till sina typsnitt. De som inte licensierat tekniken fick typ 3-teckensnittet. Typ 3-teckensnittet tillät PostScript-språkets fulla komplexitet, men utan en standardinställning till tips.

Typ 2-teckensnittet, som är avsett att användas med formatet Compact Font (CFF), har implementerats för att minska den totala teckensnittsfilstorleken. Det blev senare grunden för att hantera OpenType -teckensnitt.

För att kunna konkurrera med Adobes system utvecklade Apple sina egna TrueType- system 1991 . Omedelbart efter att TrueType tillkännagavs publicerade Adobe specifikationer för typ 1 -formatet . Sedan dess har det dykt upp många gratis typsnitt av typ 1. Till exempel finns typsnitten som används av layoutsystemet TeX i detta format.

I slutet av 1990-talet gick Adobe med Microsoft i utvecklingen av OpenType . I huvudsak var det en sammanslagning och förlängning av formaten Type 1 och TrueType. Vid utskrift till utdata från en PostScript-enhet utelämnas redundanta delar av OpenType-teckensnittet, och det som skickas till skrivardrivrutinen skiljer sig inte från det som matas ut av TrueType- eller Type 1-teckensnitt.

CID-indexerade teckensnitt

Teckensnittsformatet CID-indexerad (förkortning för Character Identified) utvecklades för att lösa problemet med att adressera glyfer på hieroglyfiska språk med mycket stora tecken (kinesiska, koreanska, japanska). Det här formatet kan användas med typ 1 för vanliga CID-indexerade teckensnitt eller typ 2 för CID-indexerade OpenType - teckensnitt.

Varje glyf för ett element i en teckensamling identifieras av ett unikt teckenindex (CID) i den kodningen, som kanske inte är samma som koden för motsvarande tecken, till exempel i Unicode .

Samlingar av tecken är unika namngivna skiftläge, ordning och utfyllnad, som "Adobe-Japan1-6". Registret anger utvecklaren (till exempel Adobe). Ordningen avslöjar syftet med teckenuppsättningen (till exempel "Japan1"). Ett ytterligare nummer (till exempel 6) indikerar ofta samlingens storlek. Till exempel är Adobe-Japan1-0-samlingen 8284 glyfer och Adobe-Japan1-6 är 23058 glyfer.

Teckensnitt med en CID-nyckel kan skapas utan hänvisning till en samling tecken, med hjälp av en "identitets"-kodning som Identity-H (för horisontell skrift) eller Identity-V (för vertikal skrivning). Sådana typsnitt kan ha en unik teckenuppsättning, i vilket fall glyfens CID-nummer inte är informativt; vanligtvis används Unicode -kodningen istället , eventuellt med ytterligare information.

Adobe ClearScan-tekniken skapar anpassade Type1-CID-teckensnitt för att matcha det visuella utseendet på ett skannat dokument efter Optical Character Recognition (OCR). ClearScan (i Acrobat 9) ersätter inte teckensnitt med systemteckensnitt eller Type1-MM (som i Acrobat 8 ​​och tidigare), utan använder dessa nyskapade anpassade teckensnitt. Anpassade teckensnitt är inbäddade i PDF-filen.

Trender och framtidsutsikter

Förutom PostScript har Hewlett-Packards PCL -skrivarkontrollspråk blivit utbrett på laserskrivarmarknaden . PCL var ursprungligen inriktat på andra uppgifter än PostScript (skrivarkontroll snarare än sidbeskrivning) och kan inte tillhandahålla portabilitet . Men för kontorsbruk är det i vissa fall bekvämare. PCL använder vanliga Windows TrueType-teckensnitt ( till skillnad från PostScript). Dessutom har den senaste versionen (PCL6) utvecklats av HP i nära samarbete med Microsoft och ger därför snabbare respons på applikationen, snabb utskrift av komplex grafik, förbättrad utskriftskvalitet och ökad noggrannhet vid utskrift av dokument.

Dessutom är PostScript licensierad och royaltyfri av Adobe per RIP (Raster Image Processor)-kontroller, medan PCL kan användas av tredje part utan kostnad. Därför kostar licensierad RIP PostScript 3 för HP-plotter cirka $500, medan olicensierade OKI "PS2 emulation"-kontroller kostar $30-70.

Praktiskt taget alla laserskrivare på 1990-talet stödde PostScript som sitt primära språk; sedan 2000-talet har många laserskrivare i SOHO -klassen inte utrustats med PostScript-stöd för att minska kostnaderna. Således trycks PostScript ut från kontoret av PCL, samtidigt som det fortfarande är en praktiskt taget obestridd standard inom prepress-området.

Anteckningar

  1. Evan Danaher. Livet i PostScript  . - Spelet "Life" på PostScript-språket ( GPL ). - " Engelska.  Jag lärde mig att Postscript är ett riktigt språk, inte bara för grafik. Så jag spenderade lite tid på att lära mig det och ville göra något intressant i det. Så självklart var det självklara valet John Conways spel om livet. ". Hämtad 9 april 2012. Arkiverad från originalet 15 maj 2012.

Litteratur

Länkar