123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>History of Ghostscript versions 5.n</title>
- <!-- $Id: History5.htm,v 1.15.2.2 2002/02/01 05:31:25 raph Exp $ -->
- <!--
- WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
- re-create the table of contents here, because it will replace the
- hand-edited TOC subheads with a separate subhead for each H2 in
- the body of the file. Or if you do, first look at the original
- TOC to see how to edit it for visual conciseness.
- -->
- <link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
- </head>
- <body>
- <!-- [1.0 begin visible header] ============================================ -->
- <!-- [1.1 begin headline] ================================================== -->
- <h1>History of Ghostscript versions 5.n</h1>
- <!-- [1.1 end headline] ==================================================== -->
- <!-- [1.2 begin table of contents] ========================================= -->
- <h2>Table of contents</h2>
- <blockquote><ul>
- <li><a href="#Version5.99">Version 5.99 (beta) (1999-12-18)</a>
- <ul>
- <li><a href="#5.99_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.99_Documentation">Documentation</a>,
- <a href="#5.99_Procedures">Procedures</a>,
- <a href="#5.99_Utilities">Utilities</a>,
- <a href="#5.99_Drivers">Drivers</a>,
- <a href="#5.99_Platforms">Platforms</a>,
- <a href="#5.99_Fonts">Fonts</a>,
- <a href="#5.99_PDF_writer">PDF writer</a>,
- <a href="#5.99_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.99_Interpreter">Interpreter</a>,
- <a href="#5.99_Streams">Streams</a>,
- <a href="#5.99_Library">Library</a>
- </ul>
- <li><a href="#Version5.98">Version 5.98 (beta) (1999-12-01)</a>
- <ul>
- <li><a href="#5.98_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.98_Documentation">Documentation</a>,
- <a href="#5.98_Procedures">Procedures</a>,
- <a href="#5.98_Utilities">Utilities</a>,
- <a href="#5.98_Drivers">Drivers</a>,
- <a href="#5.98_Fonts">Fonts</a>,
- <a href="#5.98_PDF_writer">PDF writer</a>,
- <a href="#5.98_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.98_Interpreter">Interpreter</a>,
- <a href="#5.98_Streams">Streams</a>,
- <a href="#5.98_Library">Library</a>
- </ul>
- <li><a href="#Version5.97">Version 5.97 (beta) (11/22/99)</a>
- <ul>
- <li><a href="#5.97_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.97_Documentation">Documentation</a>,
- <a href="#5.97_Procedures">Procedures</a>,
- <a href="#5.97_Utilities">Utilities</a>,
- <a href="#5.97_Drivers">Drivers</a>,
- <a href="#5.97_Platforms">Platforms</a>,
- <a href="#5.97_PDF_writer">PDF writer</a>,
- <a href="#5.97_Interpreter">Interpreter</a>,
- <a href="#5.97_Library">Library</a>
- </ul>
- <li><a href="#Version5.96">Version 5.96 (beta) (11/12/99)</a>
- <ul>
- <li><a href="#5.96_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.96_Documentation">Documentation</a>,
- <a href="#5.96_Procedures">Procedures</a>,
- <a href="#5.96_Utilities">Utilities</a>,
- <a href="#5.96_Drivers">Drivers</a>,
- <a href="#5.96_Platforms">Platforms</a>,
- <a href="#5.96_PDF_writer">PDF writer</a>,
- <a href="#5.96_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.96_Interpreter">Interpreter</a>,
- <a href="#5.96_Streams">Streams</a>,
- <a href="#5.96_Library">Library</a>
- </ul>
- <li><a href="#Version5.95">Version 5.95 (beta) (11/1/99)</a>
- <ul>
- <li><a href="#5.95_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.95_Documentation">Documentation</a>,
- <a href="#5.95_Procedures">Procedures</a>,
- <a href="#5.95_Utilities">Utilities</a>,
- <a href="#5.95_Drivers">Drivers</a>,
- <a href="#5.95_Platforms">Platforms</a>,
- <a href="#5.95_Fonts">Fonts</a>,
- <a href="#5.95_PDF_writer">PDF writer</a>,
- <a href="#5.95_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.95_Interpreter">Interpreter</a>,
- <a href="#5.95_Library">Library</a>
- </ul>
- <li><a href="#Version5.94">Version 5.94 (beta) (9/30/99)</a>
- <ul>
- <li><a href="#5.94_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.94_Documentation">Documentation</a>,
- <a href="#5.94_Procedures">Procedures</a>,
- <a href="#5.94_Utilities">Utilities</a>,
- <a href="#5.94_Drivers">Drivers</a>,
- <a href="#5.94_Platforms">Platforms</a>,
- <a href="#5.94_Fonts">Fonts</a>,
- <a href="#5.94_PDF_writer">PDF writer</a>,
- <a href="#5.94_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.94_Interpreter">Interpreter</a>,
- <a href="#5.94_Streams">Streams</a>,
- <a href="#5.94_Library">Library</a>
- </ul>
- <li><a href="#Version5.93">Version 5.93 (beta) (9/11/99)</a>
- <ul>
- <li><a href="#5.93_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.93_Documentation">Documentation</a>,
- <a href="#5.93_Procedures">Procedures</a>,
- <a href="#5.93_Utilities">Utilities</a>,
- <a href="#5.93_Drivers">Drivers</a>,
- <a href="#5.93_Platforms">Platforms</a>,
- <a href="#5.93_PDF_writer">PDF writer</a>,
- <a href="#5.93_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.93_Interpreter">Interpreter</a>,
- <a href="#5.93_Streams">Streams</a>,
- <a href="#5.93_Library">Library</a>
- </ul>
- <li><a href="#Version5.92">Version 5.92 (beta) (9/2/99)</a>
- <ul>
- <li><a href="#5.92_Documentation">Documentation</a>,
- <a href="#5.92_Procedures">Procedures</a>,
- <a href="#5.92_Utilities">Utilities</a>,
- <a href="#5.92_Drivers">Drivers</a>,
- <a href="#5.92_PDF_writer">PDF writer</a>,
- <a href="#5.92_Interpreter">Interpreter</a>,
- <a href="#5.92_Streams">Streams</a>
- </ul>
- <li><a href="#Version5.91">Version 5.91 (beta) (8/30/99)</a>
- <ul>
- <li><a href="#5.91_Documentation">Documentation</a>,
- <a href="#5.91_Utilities">Utilities</a>,
- <a href="#5.91_Drivers">Drivers</a>,
- <a href="#5.91_Platforms">Platforms</a>,
- <a href="#5.91_Fonts">Fonts</a>,
- <a href="#5.91_PDF_writer">PDF writer</a>,
- <a href="#5.91_Library">Library</a>
- </ul>
- <li><a href="#Version5.90">Version 5.90 (beta) (8/20/99)</a>
- <ul>
- <li><a href="#5.90_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.90_Documentation">Documentation</a>,
- <a href="#5.90_Procedures">Procedures</a>,
- <a href="#5.90_Utilities">Utilities</a>,
- <a href="#5.90_Drivers">Drivers</a>,
- <a href="#5.90_Platforms">Platforms</a>,
- <a href="#5.90_Fonts">Fonts</a>,
- <a href="#5.90_PDF_writer">PDF writer</a>,
- <a href="#5.90_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.90_Interpreter">Interpreter</a>,
- <a href="#5.90_Streams">Streams</a>,
- <a href="#5.90_Library">Library</a>
- </ul>
- <li>(Version 5.89 deliberately omitted.)
- <li><a href="#Version5.88">Version 5.88 (tester) (8/3/99)</a>
- <ul>
- <li><a href="#5.88_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.88_Documentation">Documentation</a>,
- <a href="#5.88_Procedures">Procedures</a>,
- <a href="#5.88_Drivers">Drivers</a>,
- <a href="#5.88_Platforms">Platforms</a>,
- <a href="#5.88_Fonts">Fonts</a>,
- <a href="#5.88_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.88_Interpreter">Interpreter</a>,
- <a href="#5.88_Streams">Streams</a>,
- <a href="#5.88_Library">Library</a>
- </ul>
- <li><a href="#Version5.87">Version 5.87 (tester) (6/29/99)</a>
- <ul>
- <li><a href="#5.87_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.87_Documentation">Documentation</a>,
- <a href="#5.87_Procedures">Procedures</a>,
- <a href="#5.87_Drivers">Drivers</a>,
- <a href="#5.87_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.87_Interpreter">Interpreter</a>,
- <a href="#5.87_Library">Library</a>
- </ul>
- <li><a href="#Version5.86">Version 5.86 (tester) (6/14/99)</a>
- <ul>
- <li><a href="#5.86_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.86_Documentation">Documentation</a>,
- <a href="#5.86_Procedures">Procedures</a>,
- <a href="#5.86_Utilities">Utilities</a>,
- <a href="#5.86_Drivers">Drivers</a>,
- <a href="#5.86_Platforms">Platforms</a>,
- <a href="#5.86_Fonts">Fonts</a>,
- <a href="#5.86_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.86_Interpreter">Interpreter</a>,
- <a href="#5.86_Streams">Streams</a>,
- <a href="#5.86_Library">Library</a>
- </ul>
- <li><a href="#Version5.85">Version 5.85 (tester) (5/29/99)</a>
- <ul>
- <li><a href="#5.85_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.85_Documentation">Documentation</a>,
- <a href="#5.85_Procedures">Procedures</a>,
- <a href="#5.85_Utilities">Utilities</a>,
- <a href="#5.85_Drivers">Drivers</a>,
- <a href="#5.85_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.85_Interpreter">Interpreter</a>,
- <a href="#5.85_Library">Library</a>
- </ul>
- <li><a href="#Version5.84">Version 5.84 (tester) (5/19/99)</a>
- <ul>
- <li><a href="#5.84_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.84_Procedures">Procedures</a>,
- <a href="#5.84_Utilities">Utilities</a>,
- <a href="#5.84_Drivers">Drivers</a>,
- <a href="#5.84_Platforms">Platforms</a>,
- <a href="#5.84_Interpreter">Interpreter</a>,
- <a href="#5.84_Streams">Streams</a>,
- <a href="#5.84_Library">Library</a>
- </ul>
- <li><a href="#Version5.83">Version 5.83 (tester) (5/13/99)</a>
- <ul>
- <li><a href="#5.83_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.83_Documentation">Documentation</a>,
- <a href="#5.83_Procedures">Procedures</a>,
- <a href="#5.83_Utilities">Utilities</a>,
- <a href="#5.83_Interpreter">Interpreter</a>,
- <a href="#5.83_Library">Library</a>
- </ul>
- <li><a href="#Version5.82">Version 5.82 (tester) (4/24/99)</a>
- <ul>
- <li><a href="#5.82_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.82_Documentation">Documentation</a>,
- <a href="#5.82_Procedures">Procedures</a>,
- <a href="#5.82_Utilities">Utilities</a>,
- <a href="#5.82_Drivers">Drivers</a>,
- <a href="#5.82_Platforms">Platforms</a>,
- <a href="#5.82_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.82_Interpreter">Interpreter</a>,
- <a href="#5.82_Library">Library</a>
- </ul>
- <li><a href="#Version5.81">Version 5.81 (tester) (4/14/99)</a>
- <ul>
- <li><a href="#5.81_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.81_Procedures">Procedures</a>,
- <a href="#5.81_Utilities">Utilities</a>,
- <a href="#5.81_Drivers">Drivers</a>,
- <a href="#5.81_Fonts">Fonts</a>,
- <a href="#5.81_Platforms">Platforms</a>,
- <a href="#5.81_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.81_Interpreter">Interpreter</a>,
- <a href="#5.81_Library">Library</a>
- </ul>
- <li><a href="#Version5.80">Version 5.80 (tester) (4/6/99)</a>
- <ul>
- <li><a href="#5.80_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.80_Procedures">Procedures</a>,
- <a href="#5.80_Utilities">Utilities</a>,
- <a href="#5.80_Drivers">Drivers</a>,
- <a href="#5.80_Fonts">Fonts</a>,
- <a href="#5.80_Platforms">Platforms</a>,
- <a href="#5.80_Interpreter">Interpreter</a>,
- <a href="#5.80_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.80_Streams">Streams</a>,
- <a href="#5.80_Library">Library</a>
- </ul>
- <li>(Versions 5.74 - 5.79 deliberately omitted.)
- <li><a href="#Version5.73">Version 5.73 (tester) (3/19/99)</a>
- <ul>
- <li><a href="#5.73_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.73_Documentation">Documentation</a>,
- <a href="#5.73_Procedures">Procedures</a>,
- <a href="#5.73_Drivers">Drivers</a>,
- <a href="#5.73_Interpreter">Interpreter</a>,
- <a href="#5.73_Library">Library</a>
- </ul>
- <li><a href="#Version5.72">Version 5.72 (tester) (3/17/99)</a>
- <ul>
- <li><a href="#5.72_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.72_Documentation">Documentation</a>,
- <a href="#5.72_Procedures">Procedures</a>,
- <a href="#5.72_Utilities">Utilities</a>,
- <a href="#5.72_Drivers">Drivers</a>,
- <a href="#5.72_Fonts">Fonts</a>,
- <a href="#5.72_Interpreter">Interpreter</a>,
- <a href="#5.72_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.72_Streams">Streams</a>,
- <a href="#5.72_Library">Library</a>
- </ul>
- <li><a href="#Version5.71">Version 5.71 (tester) (3/3/99)</a>
- <ul>
- <li><a href="#5.71_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.71_Documentation">Documentation</a>,
- <a href="#5.71_Procedures">Procedures</a>,
- <a href="#5.71_Utilities">Utilities</a>,
- <a href="#5.71_Drivers">Drivers</a>,
- <a href="#5.71_Fonts">Fonts</a>,
- <a href="#5.71_Interpreter">Interpreter</a>,
- <a href="#5.71_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.71_Streams">Streams</a>,
- <a href="#5.71_Library">Library</a>
- </ul>
- <li><a href="#Version5.70">Version 5.70 (internal) (2/20/99)</a>
- <ul>
- <li><a href="#5.70_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.70_Documentation">Documentation</a>,
- <a href="#5.70_Procedures">Procedures</a>,
- <a href="#5.70_Utilities">Utilities</a>,
- <a href="#5.70_Drivers">Drivers</a>,
- <a href="#5.70_Fonts">Fonts</a>,
- <a href="#5.70_Interpreter">Interpreter</a>,
- <a href="#5.70_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.70_Streams">Streams</a>,
- <a href="#5.70_Library">Library</a>
- </ul>
- <li><a href="#Version5.69">Version 5.69 (internal) (2/4/99)</a>
- <ul>
- <li><a href="#5.69_Procedures">Procedures</a>,
- <a href="#5.69_Utilities">Utilities</a>,
- <a href="#5.69_Drivers">Drivers</a>,
- <a href="#5.69_Interpreter">Interpreter</a>,
- <a href="#5.69_Streams">Streams</a>,
- <a href="#5.69_Library">Library</a>
- </ul>
- <li><a href="#Version5.68">Version 5.68 (internal) (1/29/99)</a>
- <ul>
- <li><a href="#5.68_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.68_Documentation">Documentation</a>,
- <a href="#5.68_Procedures">Procedures</a>,
- <a href="#5.68_Utilities">Utilities</a>,
- <a href="#5.68_Drivers">Drivers</a>,
- <a href="#5.68_Fonts">Fonts</a>,
- <a href="#5.68_Platforms">Platforms</a>,
- <a href="#5.68_Interpreter">Interpreter</a>,
- <a href="#5.68_Streams">Streams</a>,
- <a href="#5.68_Library">Library</a>
- </ul>
- <li><a href="#Version5.67">Version 5.67 (internal) (1/8/99)</a>
- <ul>
- <li><a href="#5.67_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.67_Documentation">Documentation</a>,
- <a href="#5.67_Procedures">Procedures</a>,
- <a href="#5.67_Utilities">Utilities</a>,
- <a href="#5.67_Drivers">Drivers</a>,
- <a href="#5.67_Fonts">Fonts</a>,
- <a href="#5.67_Interpreter">Interpreter</a>,
- <a href="#5.67_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.67_Streams">Streams</a>,
- <a href="#5.67_Library">Library</a>
- </ul>
- <li><a href="#Version5.66">Version 5.66 (internal) (11/25/98)</a>
- <ul>
- <li><a href="#5.66_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.66_Documentation">Documentation</a>,
- <a href="#5.66_Procedures">Procedures</a>,
- <a href="#5.66_Utilities">Utilities</a>,
- <a href="#5.66_Drivers">Drivers</a>,
- <a href="#5.66_Platforms">Platforms</a>,
- <a href="#5.66_Interpreter">Interpreter</a>,
- <a href="#5.66_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.66_Streams">Streams</a>,
- <a href="#5.66_Library">Library</a>
- </ul>
- <li><a href="#Version5.65">Version 5.65 (internal) (11/13/98)</a>
- <ul>
- <li><a href="#5.65_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.65_Documentation">Documentation</a>,
- <a href="#5.65_Procedures">Procedures</a>,
- <a href="#5.65_Utilities">Utilities</a>,
- <a href="#5.65_Drivers">Drivers</a>,
- <a href="#5.65_Platforms">Platforms</a>,
- <a href="#5.65_Interpreter">Interpreter</a>,
- <a href="#5.65_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.65_Library">Library</a>
- </ul>
- <li><a href="#Version5.64">Version 5.64 (internal) (11/5/98)</a>
- <ul>
- <li><a href="#5.64_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.64_Documentation">Documentation</a>,
- <a href="#5.64_Procedures">Procedures</a>,
- <a href="#5.64_Drivers">Drivers</a>,
- <a href="#5.64_Library">Library</a>
- </ul>
- <li><a href="#Version5.63">Version 5.63 (internal) (11/4/98)</a>
- <ul>
- <li><a href="#5.63_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.63_Documentation">Documentation</a>,
- <a href="#5.63_Procedures">Procedures</a>,
- <a href="#5.63_Drivers">Drivers</a>,
- <a href="#5.63_Interpreter">Interpreter</a>,
- <a href="#5.63_Library">Library</a>
- </ul>
- <li><a href="#Version5.62">Version 5.62 (internal) (10/31/98)</a>
- <ul>
- <li><a href="#5.62_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.62_Documentation">Documentation</a>,
- <a href="#5.62_Drivers">Drivers</a>,
- <a href="#5.62_Interpreter">Interpreter</a>,
- <a href="#5.62_Library">Library</a>
- </ul>
- <li><a href="#Version5.61">Version 5.61 (internal) (10/28/98)</a>
- <ul>
- <li><a href="#5.61_Documentation">Documentation</a>,
- <a href="#5.61_Procedures">Procedures</a>,
- <a href="#5.61_Utilities">Utilities</a>,
- <a href="#5.61_Drivers">Drivers</a>,
- <a href="#5.61_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.61_Streams">Streams</a>,
- <a href="#5.61_Library">Library</a>
- </ul>
- <li><a href="#Version5.60">Version 5.60 (internal) (10/18/98)</a>
- <ul>
- <li><a href="#5.60_Incompatible_changes">Incompatible changes</a>,
- <a href="#5.60_Documentation">Documentation</a>,
- <a href="#5.60_Procedures">Procedures</a>,
- <a href="#5.60_Utilities">Utilities</a>,
- <a href="#5.60_Drivers">Drivers</a>,
- <a href="#5.60_Platforms">Platforms</a>,
- <a href="#5.60_Interpreter">Interpreter</a>,
- <a href="#5.60_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.60_Streams">Streams</a>,
- <a href="#5.60_Library">Library</a>
- </ul>
- <li>(Versions 5.51 - 5.59 deliberately omitted.)
- <li><a href="#Version5.50">Version 5.50 (9/16/98)</a>
- <ul>
- <li><a href="#5.50_Documentation">Documentation</a>,
- <a href="#5.50_Procedures">Procedures</a>,
- <a href="#5.50_Utilities">Utilities</a>,
- <a href="#5.50_Drivers">Drivers</a>,
- <a href="#5.50_Platforms">Platforms</a>,
- <a href="#5.50_Interpreter">Interpreter</a>,
- <a href="#5.50_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.50_Library">Library</a>
- </ul>
- <li><a href="#Version5.40">Version 5.40 (beta) (9/10/98)</a>
- <ul>
- <li><a href="#5.40_Documentation">Documentation</a>,
- <a href="#5.40_Procedures">Procedures</a>,
- <a href="#5.40_Utilities">Utilities</a>,
- <a href="#5.40_Drivers">Drivers</a>,
- <a href="#5.40_Platforms">Platforms</a>,
- <a href="#5.40_Library">Library</a>
- </ul>
- <li><a href="#Version5.39">Version 5.39 (beta) (9/8/98)</a>
- <ul>
- <li><a href="#5.39_Drivers">Drivers</a>,
- <a href="#5.39_Library">Library</a>
- </ul>
- <li><a href="#Version5.38">Version 5.38 (beta) (9/3/98)</a>
- <ul>
- <li><a href="#5.38_Documentation">Documentation</a>,
- <a href="#5.38_Drivers">Drivers</a>,
- <a href="#5.38_Interpreter">Interpreter</a>,
- <a href="#5.38_Library">Library</a>
- </ul>
- <li><a href="#Version5.37">Version 5.37 (beta) (8/31/98)</a>
- <ul>
- <li><a href="#5.37_Documentation">Documentation</a>,
- <a href="#5.37_Procedures">Procedures</a>,
- <a href="#5.37_Utilities">Utilities</a>,
- <a href="#5.37_Drivers">Drivers</a>,
- <a href="#5.37_Fonts">Fonts</a>,
- <a href="#5.37_Interpreter">Interpreter</a>,
- <a href="#5.37_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.37_Streams">Streams</a>,
- <a href="#5.37_Library">Library</a>
- </ul>
- <li><a href="#Version5.36">Version 5.36 (beta) (8/25/98)</a>
- <ul>
- <li><a href="#5.36_Documentation">Documentation</a>,
- <a href="#5.36_Utilities">Utilities</a>,
- <a href="#5.36_Drivers">Drivers</a>,
- <a href="#5.36_Platforms">Platforms</a>,
- <a href="#5.36_Fonts">Fonts</a>,
- <a href="#5.36_Interpreter">Interpreter</a>,
- <a href="#5.36_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.36_Streams">Streams</a>,
- <a href="#5.36_Library">Library</a>
- </ul>
- <li><a href="#Version5.35">Version 5.35 (beta) (8/18/98)</a>
- <ul>
- <li><a href="#5.35_Documentation">Documentation</a>,
- <a href="#5.35_Drivers">Drivers</a>,
- <a href="#5.35_Fonts">Fonts</a>,
- <a href="#5.35_Interpreter">Interpreter</a>,
- <a href="#5.35_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#5.35_Library">Library</a>
- </ul>
- <li><a href="#Version5.34">Version 5.34 (beta) (8/16/98)</a>
- <ul>
- <li><a href="#V5.34_Documentation">Documentation</a>,
- <a href="#V5.34_Procedures">Procedures</a>,
- <a href="#V5.34_Drivers">Drivers</a>,
- <a href="#V5.34_Interpreter">Interpreter</a>,
- <a href="#V5.34_Library">Library</a>
- </ul>
- <li><a href="#Version5.33">Version 5.33 (beta) (8/14/98)</a>
- <ul>
- <li><a href="#V5.33_Platforms">Platforms</a>,
- <a href="#V5.33_Fonts">Fonts</a>,
- <a href="#V5.33_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.33_Library">Library</a>
- </ul>
- <li><a href="#Version5.32">Version 5.32 (beta) (8/13/98)</a>
- <ul>
- <li><a href="#V5.32_Procedures">Procedures</a>,
- <a href="#V5.32_Interpreter">Interpreter</a>,
- <a href="#V5.32_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.32_Library">Library</a>
- </ul>
- <li><a href="#Version5.31">Version 5.31 (limited) (8/11/98)</a>
- <ul>
- <li><a href="#V5.31_Drivers">Drivers</a>,
- <a href="#V5.31_Interpreter">Interpreter</a>,
- <a href="#V5.31_Library">Library</a>
- </ul>
- <li><a href="#Version5.30">Version 5.30 (limited) (8/10/98)</a>
- <ul>
- <li><a href="#V5.30_Documentation">Documentation</a>,
- <a href="#V5.30_Procedures">Procedures</a>,
- <a href="#V5.30_Drivers">Drivers</a>,
- <a href="#V5.30_Platforms">Platforms</a>,
- <a href="#V5.30_Fonts">Fonts</a>,
- <a href="#V5.30_Interpreter">Interpreter</a>,
- <a href="#V5.30_Streams">Streams</a>,
- <a href="#V5.30_Library">Library</a>
- </ul>
- <li><a href="#Version5.28">Version 5.28 (limited) (8/3/98)</a>
- <ul>
- <li><a href="#V5.28_Documentation">Documentation</a>,
- <a href="#V5.28_Procedures">Procedures</a>,
- <a href="#V5.28_Utilities">Utilities</a>,
- <a href="#V5.28_Drivers">Drivers</a>,
- <a href="#V5.28_Platforms">Platforms</a>,
- <a href="#V5.28_Interpreter">Interpreter</a>,
- <a href="#V5.28_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.28_Streams">Streams</a>,
- <a href="#V5.28_Library">Library</a>
- </ul>
- <li><a href="#Version5.27">Version 5.27 (limited) (7/18/98)</a>
- <ul>
- <li><a href="#V5.27_Documentation">Documentation</a>,
- <a href="#V5.27_Procedures">Procedures</a>,
- <a href="#V5.27_Drivers">Drivers</a>,
- <a href="#V5.27_Platforms">Platforms</a>,
- <a href="#V5.27_Interpreter">Interpreter</a>,
- <a href="#V5.27_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.27_Library">Library</a>
- </ul>
- <li><a href="#Version5.26">Version 5.26 (limited) (7/7/98)</a>
- <ul>
- <li><a href="#V5.26_Procedures">Procedures</a>,
- <a href="#V5.26_Drivers">Drivers</a>,
- <a href="#V5.26_Fonts">Fonts</a>,
- <a href="#V5.26_Interpreter">Interpreter</a>,
- <a href="#V5.26_Library">Library</a>
- </ul>
- <li><a href="#Version5.25">Version 5.25 (limited) (7/1/98)</a>
- <ul>
- <li><a href="#V5.25_Documentation">Documentation</a>,
- <a href="#V5.25_Procedures">Procedures</a>,
- <a href="#V5.25_Platforms">Platforms</a>,
- <a href="#V5.25_Fonts">Fonts</a>,
- <a href="#V5.25_Interpreter">Interpreter</a>,
- <a href="#V5.25_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.25_Drivers">Drivers</a>,
- <a href="#V5.25_Library">Library</a>
- </ul>
- <li><a href="#Version5.24">Version 5.24 (limited) (6/17/98)</a>
- <ul>
- <li><a href="#V5.24_Documentation">Documentation</a>,
- <a href="#V5.24_Procedures">Procedures</a>,
- <a href="#V5.24_Utilities">Utilities</a>,
- <a href="#V5.24_Drivers">Drivers</a>,
- <a href="#V5.24_Platforms">Platforms</a>,
- <a href="#V5.24_Fonts">Fonts</a>,
- <a href="#V5.24_Interpreter">Interpreter</a>,
- <a href="#V5.24_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.24_Streams">Streams</a>,
- <a href="#V5.24_Library">Library</a>
- </ul>
- <li><a href="#Version5.23">Version 5.23 (limited) (5/14/98)</a>
- <ul>
- <li><a href="#V5.23_Documentation">Documentation</a>,
- <a href="#V5.23_Procedures">Procedures</a>,
- <a href="#V5.23_Utilities">Utilities</a>,
- <a href="#V5.23_Drivers">Drivers</a>,
- <a href="#V5.23_Platforms">Platforms</a>,
- <a href="#V5.23_Fonts">Fonts</a>,
- <a href="#V5.23_Interpreter">Interpreter</a>,
- <a href="#V5.23_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.23_Streams">Streams</a>,
- <a href="#V5.23_Library">Library</a>
- </ul>
- <li><a href="#Version5.22">Version 5.22 (limited) (2/19/98)</a>
- <ul>
- <li><a href="#V5.22_Documentation">Documentation</a>,
- <a href="#V5.22_Procedures">Procedures</a>,
- <a href="#V5.22_Utilities">Utilities</a>,
- <a href="#V5.22_Drivers">Drivers</a>,
- <a href="#V5.22_Interpreter">Interpreter</a>,
- <a href="#V5.22_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.22_Streams">Streams</a>,
- <a href="#V5.22_Library">Library</a>
- </ul>
- <li><a href="#Version5.21">Version 5.21 (limited) (1/19/98)</a>
- <ul>
- <li><a href="#V5.21_Documentation">Documentation</a>,
- <a href="#V5.21_Procedures">Procedures</a>,
- <a href="#V5.21_Drivers">Drivers</a>,
- <a href="#V5.21_Fonts">Fonts</a>,
- <a href="#V5.21_Interpreter">Interpreter</a>,
- <a href="#V5.21_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.21_Library">Library</a>
- </ul>
- <li><a href="#Version5.20">Version 5.20 (limited) (1/8/98)</a>
- <ul>
- <li><a href="#V5.20_Documentation">Documentation</a>,
- <a href="#V5.20_Procedures">Procedures</a>,
- <a href="#V5.20_Utilities">Utilities</a>,
- <a href="#V5.20_Drivers">Drivers</a>,
- <a href="#V5.20_Platforms">Platforms</a>,
- <a href="#V5.20_Fonts">Fonts</a>,
- <a href="#V5.20_Interpreter">Interpreter</a>,
- <a href="#V5.20_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.20_Streams">Streams</a>,
- <a href="#V5.20_Library">Library</a>
- </ul>
- <li><a href="#Version5.10">Version 5.10 (11/23/97)</a>
- <ul>
- <li><a href="#V5.10_Documentation">Documentation</a>,
- <a href="#V5.10_Procedures">Procedures</a>,
- <a href="#V5.10_Utilities">Utilities</a>,
- <a href="#V5.10_Drivers">Drivers</a>,
- <a href="#V5.10_Interpreter">Interpreter</a>,
- <a href="#V5.10_Library">Library</a>
- </ul>
- <li><a href="#Version5.07">Version 5.07 (limited) (10/31/97)</a>
- <ul>
- <li><a href="#V5.07_Documentation">Documentation</a>,
- <a href="#V5.07_Drivers">Drivers</a>,
- <a href="#V5.07_Library">Library</a>
- </ul>
- <li><a href="#Version5.06">Version 5.06 (limited) (10/7/97)</a>
- <ul>
- <li><a href="#V5.06_Documentation">Documentation</a>,
- <a href="#V5.06_Procedures">Procedures</a>,
- <a href="#V5.06_Utilities">Utilities</a>,
- <a href="#V5.06_Drivers">Drivers</a>,
- <a href="#V5.06_Interpreter">Interpreter</a>,
- <a href="#V5.06_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.06_Library">Library</a>
- </ul>
- <li><a href="#Version5.05">Version 5.05 (limited) (9/24/97)</a>
- <ul>
- <li><a href="#V5.05_Platforms">Platforms</a>,
- <a href="#V5.05_Drivers">Drivers</a>,
- <a href="#V5.05_Interpreter">Interpreter</a>,
- <a href="#V5.05_Interpreter_PDF">Interpreter (PDF)</a>
- </ul>
- <li><a href="#Version5.04">Version 5.04 (limited) (9/21/97)</a>
- <ul>
- <li><a href="#V5.04_Documentation">Documentation</a>,
- <a href="#V5.04_Procedures">Procedures</a>,
- <a href="#V5.04_Utilities">Utilities</a>,
- <a href="#V5.04_Drivers">Drivers</a>,
- <a href="#V5.04_Interpreter">Interpreter</a>,
- <a href="#V5.04_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.04_Library">Library</a>
- </ul>
- <li><a href="#Version5.03">Version 5.03 (8/8/97)</a>
- <ul>
- <li><a href="#V5.03_Documentation">Documentation</a>,
- <a href="#V5.03_Procedures">Procedures</a>,
- <a href="#V5.03_Drivers">Drivers</a>,
- <a href="#V5.03_Platforms">Platforms</a>,
- <a href="#V5.03_Fonts">Fonts</a>,
- <a href="#V5.03_Interpreter">Interpreter</a>,
- <a href="#V5.03_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.03_Library">Library</a>
- </ul>
- <li><a href="#Version5.02">Version 5.02 (7/28/97)</a>
- <ul>
- <li><a href="#V5.02_Documentation">Documentation</a>,
- <a href="#V5.02_Procedures">Procedures</a>,
- <a href="#V5.02_Utilities">Utilities</a>,
- <a href="#V5.02_Drivers">Drivers</a>,
- <a href="#V5.02_Platforms">Platforms</a>,
- <a href="#V5.02_Fonts">Fonts</a>,
- <a href="#V5.02_Interpreter">Interpreter</a>,
- <a href="#V5.02_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.02_Library">Library</a>
- </ul>
- <li><a href="#Version5.01">Version 5.01 (6/22/97)</a>
- <ul>
- <li><a href="#V5.01_Documentation">Documentation</a>,
- <a href="#V5.01_Procedures">Procedures</a>,
- <a href="#V5.01_Utilities">Utilities</a>,
- <a href="#V5.01_Drivers">Drivers</a>,
- <a href="#V5.01_Platforms">Platforms</a>,
- <a href="#V5.01_Interpreter">Interpreter</a>,
- <a href="#V5.01_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V5.01_Library">Library</a>
- </ul>
- <li><a href="#Version5.0">Version 5.0 (6/6/97)</a>
- <ul>
- <li><a href="#V5.0_Documentation">Documentation</a>,
- <a href="#V5.0_Procedures">Procedures</a>,
- <a href="#V5.0_Interpreter">Interpreter</a>,
- <a href="#V5.0_Library">Library</a>
- </ul>
- </ul></blockquote>
- <!-- [1.2 end table of contents] =========================================== -->
- <!-- [1.3 begin hint] ====================================================== -->
- <p>
- This document is a record of changes in Ghostscript releases numbered 5.n.
- For earlier versions, see the the history documents:
- <blockquote>
- <a href="History4.htm">History of Ghostscript versions 4.n</a><br>
- <a href="History3.htm">History of Ghostscript versions 3.n</a><br>
- <a href="History2.htm">History of Ghostscript versions 2.n</a><br>
- <a href="History1.htm">History of Ghostscript versions 1.n</a>
- </blockquote>
- <p>For other information, see the <a href="Readme.htm">Ghostscript
- overview</a>.
- <!-- [1.3 end hint] ======================================================== -->
- <hr>
- <!-- [1.0 end visible header] ============================================== -->
- <!-- [2.0 begin contents] ================================================== -->
- <p>
- Within each release, news appears in the following order: Incompatible
- changes, Documentation, Procedures, Utilities, Drivers, Platforms, Fonts,
- Interpreter, Streams (included under Interpreter through release 2.9.9),
- Library. Changes marked with a * were made available as patches to a
- previous release.
- <hr>
- <h2><a name="Version5.99"></a>Version 5.99 (beta) (1999-12-18)</h2>
- <h3><a name="5.99_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - All platform-specific makefiles must now define the Q macro.
- - Ghostscript now exits with an error status if an error occurs in a
- file named on the command line, a -c command, or piped input.
- (Utilities)
- - ps2epsi now disables setpagedevice: the bounding box of the EPSI
- output file is recorded only in the %%BoundingBox comment.
- (Drivers)
- - The return type of gdev_vector_close_file is changed from void
- to int.
- (Interpreter)
- - The name of the predefined stochastic halftone is changed to
- StochasticDefault. (This change was actually made in 5.98.)
- - The compht feature is replaced by stocht.
- - Font searching now looks in FontResourceDir.
- - The ASCIIHexEncode filter now produces upper-case output.
- (Library)
- - The type returned by compiled halftone resource access procedures
- is changed.
- </pre><h3><a name="5.99_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - A stray character had gotten added to the beginning of a file.
- (doc/Use.htm)
- - Many minor HTML errors had crept in. (doc/*.htm, doc/gsdoc.el)
- Updates the docmentation on the mswinpr2 driver. (doc/Devices.htm)
- Notes that GNU make currently does not work on OpenVMS. (doc/Make.htm)
- Documents the fact that x/y_pixels_per_inch are deprecated. (gxdevcli.h)
- Documents certain bugs in ps2pdf. (doc/Ps2pdf.htm)
- Documents the addition of FontResourceDir to the font search process.
- (doc/Use.htm)
- Documents the new arrangement for B paper sizes. (doc/Psfiles.htm,
- doc/Use.htm, doc/gs-vms.hlp, man/gs.1)
- Removes the "under development" warning from the text API and
- get_bits_rectangle documentation, and adds a little more detail.
- (doc/Drivers.htm)
- Adds new user-contributed documentation for installing and using Ghostscript
- fonts with X Windows. (doc/Fonts.htm, doc/Readme.htm, doc/Use.htm)
- Adds building with the Watcom compiler to the release process.
- (doc/Release.htm)
- Adds an "Improving performance" section to the user documentation.
- (doc/Use.htm)
- Adds a note to the C style guide about order of evaluation.
- (doc/C-style.htm)
- Documents the new stocht.ps file. (doc/Psfiles.htm)
- </pre><h3><a name="5.99_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - A missing dependency caused builds on certain platforms to fail.
- (int.mak)
- - $(EXP) was missing before various utility invocations. (int.mak)
- - VMS converts all unquoted arguments to lower case. In order to
- work around this, we have added a platform-specific makefile macro Q, which
- is defined as a quote mark on VMS and as an empty string on all other
- platforms, and used it to quote the few mixed-case values in the makefiles.
- We removed the obsolete QQ macro from os2.mak as well. (cfonts.mak,
- dvx-head.mak, int.mak, openvms.mak, openvms.mmk, os2.mak, unixhead.mak,
- wccommon.mak, winlib.mak)
- - PSRCDIR was incorrectly referenced as PNGSRCDIR in one place.
- (all-arch.mak)
- - winint.mak had a conditional that Watcom's make program didn't
- accept. (winint.mak)
- Adds a makefile entry to allow compilation with libpng 1.0.5. (libpng.mak)
- Updates the Borland C++ makefile to work with C++Builder 4. (bcwin32.mak)
- Updates the Unix installation makefile to install stocht.ps. (unixinst.mak)
- </pre><h3><a name="5.99_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - ps2epsi didn't disable setpagedevice. (lib/ps2epsi)
- - geninit needed <stdlib.h> for 'exit'. (geninit.c)
- - Some invocations of utilities didn't deal with VMS's habit of
- converting arguments to lower case. (geninit.c, cfonts.mak)
- - The ps2pdf*.bat files didn't produce a usage message if no
- arguments were provided. (lib/ps2pdf.bat, lib/ps2pdf12.bat,
- lib/ps2pdf13.bat)
- - Removes some warnings from the Windows uninstaller.
- (dwuninst.cpp)
- Upgrades the halftone compiler to handle Type 5 halftones. (genht.c)
- Makes the initialization string compiler recognize sections of the code
- where binary tokens are allowed, and convert literal hex strings within such
- sections to binary-token strings, which take less space and load faster.
- (geninit.c)
- Adds a utility file to define b0 ... b6 as selecting JIS B paper sizes.
- (unixinst.mak, lib/jispaper.ps)
- Modifies the font printing utility to sort unencoded characters.
- (lib/prfont.ps)
- Adds a small utility to help use the StochasticDefault halftone.
- (lib/stocht.ps)
- </pre><h3><a name="5.99_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The output of the epswrite driver couldn't be embedded in another
- file, because it assumed it was invoked with an empty operand stack.
- (gdevps.c)
- - "Vector" drivers didn't detect I/O errors such as filling up the
- disk. (gdevvec.h, gdevpdf.c, gdevps.c, gdevpx.c, gdevvec.c)
- - The bookkeeping for image color spaces when banding was incorrect,
- possibly causing memory access errors. (gxclist.h, gxclimag.c, gxclist.c)
- - The cljet5 driver didn't place the image on the page correctly.
- (gdevclj.c)
- - 16-bit X11 devices with R/G/B widths other than 5/6/5 sometimes
- failed to map colors correctly. (gdevxcmp.h, gdevxcmp.c)
- - The cljet5c driver omitted a needed cast. (gdevcljc.c)
- Adds new x11rg16x and x11rg32x devices to test X Windows with unusual pixel
- layout. (devs.mak, gdevxalt.c)
- Works around a bug in Acrobat Distiller 4 (and perhaps some other PostScript
- interpreters) that causes an error if CCITTFaxDecode with /EndOfBlock = true
- is given data with no EOB (terminated by the end of the data stream
- instead). (gdevps.c)
- </pre><h3><a name="5.99_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The absence of mktemp on the Watcom platform caused a linking
- error under Windows. (watc.mak, watcw32.mak, gp_iwatc.c, gp_mktmp.c)
- </pre><h3><a name="5.99_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - findfont, /Font resourcestatus, and /Font resourceforall weren't
- consistent. (lib/gs_fonts.ps, lib/gs_res.ps)
- - Very large TrueType fonts caused a stackoverflow. (lib/gs_ttf.ps)
- </pre><h3><a name="5.99_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - Errors in pdfmark and setdistillerparams were ignored (!).
- (lib/gs_pdfwr.ps)
- - The PUT pdfmark didn't allow adding dictionaries to stream-type
- objects. (The pdfmark documentation says this isn't allowed, but we think
- this is an oversight, since it is reasonable and unambiguous and Acrobat
- Distiller allows it.) (gdevpdfm.c)
- - The token scanner used to substitute object names in pdfmark
- parameters sometimes added an extra character on the end. (gdevpdfr.c)
- - ashow and [a]widthshow produced incorrect text spacing. (bug
- introduced by an optimization in 5.97) (gdevpdft.c)
- - setdistillerparams left its argument on the stack.
- (lib/gs_pdfwr.ps)
- - 0-height images caused errors either at conversion or at rendering
- time. (gdevpdfi.c)
- - If the FontMatrix included a translation component, text was
- positioned incorrectly. NOTE: this fix may not handle x/y/xyshow.
- (gdevpdft.c)
- - Out-of-range user-space coordinates could get generated for
- rectangles. NOTE: they can still get generated for general paths.
- (gdevpdfd.c)
- - Widths weren't written for renamed built-in fonts. We fixed this
- partly by improving the algorithm for recognizing built-in fonts.
- (gdevpdff.h, gdevpdff.c, gdevpdft.c)
- Works around the Acrobat limitation that user-space coordinates must not
- exceed 32K. (fix from Artifex) (gdevpdfp.c)
- Works around an Acrobat Reader 3 bug with printing files including Type 3
- fonts: with the "Download Fonts Once" option, AR3 only emits the font subset
- referenced on the first page where the font appears. (gdevpdfx.h,
- gdevpdf.c, gdevpdft.c)
- </pre><h3><a name="5.99_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Type 3 fonts weren't handled properly as a marking context, so if
- a CharProc referenced a resource in the font, an error would occur.
- (lib/pdf_fonts.ps)
- - 0-height images caused an error. (lib/pdf_draw.ps)
- </pre><h3><a name="5.99_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Errors weren't propagated properly. (bug introduced in 5.98 by
- enhanced error recovery code) (imainarg.h, gs.c, imainarg.c)
- - Errors in -c commands or in files named on the command line
- sometimes allowed execution to continue, and did not terminate with an
- abnormal status. (lib/gs_init.ps)
- Changes the binary token scanner so that if the stream buffer is in foreign
- space, binary-token strings will not be copied, but will be referenced
- directly in the buffer. This parallels what is done for name strings.
- (iscanbin.c)
- Changes the stochastic halftone from multiple Type 3s to a Type 5.
- (lib/ht_ccsto.ps, int.mak)
- Replaces the compht feature with a new feature called stocht. If this
- feature is selected, the StochasticDefault halftone resource will be
- pre-loaded into Ghostscript. If COMPILE_INITS=1, all the halftone data
- (threshold array, order and bits arrays) will be efficiently compiled into
- the executable. (int.mak)
- Replaces (...\n) print with (...) = everywhere. (lib/gs_cmdl.ps,
- lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_setpd.ps, lib/pdf_base.ps,
- lib/pdf_font.ps, lib/pdf_main.ps, lib/pdf_sec.ps)
- Adds support for JIS B paper sizes: statusdict will now include isob0..6 and
- jisb0..6 operators, with b0..6 normally aliased to the former.
- (lib/gs_statd.ps, lib/jispaper.ps)
- Adds a b5tray procedure; limits the valid arguments for setpagetype to the
- Adobe-defined values 0 and 1. (lib/gs_statd.ps)
- Updates clients for the change in the gs_image_* API. (zimage.c)
- Makes the default halftone lookup procedure more reasonable.
- (lib/gs_init.ps, lib/gs_ll3.ps)
- </pre><h3><a name="5.99_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - An error condition when closing a file stream wasn't reported
- properly. (sfxfd.c, sfxstdio.c)
- For greater Adobe compatibility, changes the ASCIIHexEncode filter to
- produce upper-case output. (sstring.c)
- </pre><h3><a name="5.99_Library"></a>Library</h3><pre>
- Fixes problems:
- - The gs_image_* API didn't work for ImageType 3 images. Fixing
- this required a small (but backward-compatible) API change. (fix mostly
- provided by Artifex) (gsimage.h, gsimage.c)
- - The change in the bbox device in 5.95 broke it for the case where
- it was being used in a pipeline. (gdevbbox.c)
- - A possible overflow wasn't detected when stroking lines with very
- large coordinates. (gxstroke.c)
- - A mask was sized incorrectly. (gsdcolor.h)
- Updates the runtime support for compiled halftones. (gxdhtres.h, gscdefs.h,
- gconf.c, gxclrast.c, gxhtbit.c)
- Replaces all references to the now-deprecated x/y_pixels_per_inch with
- HWResolution[0/1]. (gsdevice.c, gxclist.c, gxpcmap.c)
- </pre>
- <hr>
- <h2><a name="Version5.98"></a>Version 5.98 (beta) (1999-12-01)</h2>
- <h3><a name="5.98_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - The return type of init_proc is changed from void to int.
- - The return types of gs_lib_init* are changed from void to int.
- (Interpreter)
- - The return types of gs_[main_]init*, gs_[main_]add_lib_path,
- gs_[main_]set_lib_paths, and a number of internal initialization-related
- procedures are changed from void to int.
- </pre><h3><a name="5.98_Documentation"></a>Documentation</h3><pre>
- Improves the documentation of the clist_render_rectangle procedure.
- (gxclist.h)
- Makes it clear that pre-public-release filesets should not be redistributed.
- (doc/Tester.htm)
- Clarifies that the parameters for the X driver are command line switches,
- not X resources. (doc/Use.htm)
- Improves the documentation of ps2pdf in response to some user comments.
- (doc/Ps2pdf.htm)
- Documents the initial settings of the distiller parameters.
- (doc/Ps2pdf.htm)
- Documents the UniqueIDs assigned to Aladdin. (lib/gs_fonts.ps)
- Updates the documentation for the stochastic halftone mask. (doc/Make.htm)
- Removes some obsolete material. (doc/Release.htm)
- </pre><h3><a name="5.98_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The new ps2pdf* scripts weren't included in the Unix install list.
- (unixinst.mak)
- - The directory names were missing in BEGINFILES. (openvms.mak)
- - The .pl and .sh scripts weren't included in the Unix install list.
- (unixinst.mak)
- Updates all-arch.mak with a newer version from its contributor.
- (all-arch.mak)
- Updates the makefiles for a change in eexec modularization. (devs.mak,
- int.mak, lib.mak)
- </pre><h3><a name="5.98_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - The dvipdf usage message was incorrect. (lib/dvipdf)
- Adds a utility for mechanically adding the Adobe extended Latin characters
- (primarily Central European accented letters) to a font. Eventually we
- would like to integrate this into the font loader and/or make extended
- versions of the standard 35 fonts. (lib/addxchar.ps)
- </pre><h3><a name="5.98_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - psdf_sorted_glyphs_include didn't handle empty lists correctly.
- (gdevpsdf.c)
- - A reference to a #defined constant hadn't been converted to upper
- case. (gdevpsdf.h)
- - Acrobat Reader couldn't handle <> as the definition of
- Notice in an embedded font's FontInfo dictionary: it requires a ()
- string. (gdevpsd1.c)
- - The [e]pswrite driver didn't take stroked paths into account when
- computing the bounding box. (gdevps.c)
- Updates gdevwpr2.c with a new version from its most recent author.
- (gdevwpr2.c)
- </pre><h3><a name="5.98_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - The FONTPATH file scanner wasn't protected against errors.
- (lib/gs_fonts.ps)
- - Some badly designed Chinese TrueType fonts, whose 'post' table
- gives the name .null to all glyphs, didn't work properly. (lib/gs_ttf.ps)
- - The shareware Katakana font had an incorrect UniqueID.
- (fonts/fkarw.gsf)
- Adds all of the PostScript 3 fonts to the intelligent substitution tables.
- (lib/gs_fonts.ps)
- Changes the FONTPATH scanner to allow a %%BeginFont: line as the first line
- of a font. Nothing in Adobe's documentation suggests that this is
- acceptable, but some fonts have it. (lib/gs_fonts.ps)
- Releases an updated set of the URW fonts, fixing the braceleftbt problem in
- the Symbol font and a couple of missing characters in the ZapfDingbats
- fonts, and adding the Euro glyph to the alphabetic fonts. The new archive
- also includes fonts.scale and fonts.dir files for use with X Windows
- (mkfontdir and xfs).
- Centralizes the definition of Aladdin's XUIDs. (lib/gs_fonts.ps,
- lib/gs_ttf.ps)
- </pre><h3><a name="5.98_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - The algorithm for making font names unique didn't take subset
- prefixes into account. (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
- - Computing character bounding boxes was taking an inordinate amount
- of time. (performance problem only) (gdevpdff.c)
- - The pdf_image_writer and pdf_image_enum structures didn't have GC
- descriptors, possibly causing memory corruption. (gdevpdfi.c)
- - PostScript files containing images with premature end-of-data were
- converted to PDF files with premature end-of-data, which Acrobat doesn't
- accept. (gdevpdfo.h, gdevpdfx.h, gdevpdfi.c, gdevpdfo.c, gdevpdfu.c)
- - Pattern resources whose image was written in-line omitted a needed
- gsave (q). (bug introduced in 5.94) (gdevpdfi.c)
- - The similarity between a font and a base font wasn't computed
- correctly, leading to some unnecessary writing of Widths for standard fonts.
- (gdevpdft.c)
- - Embedding a stream in the psdf_binary_writer caused garbage
- collector problems, because there could be pointers to that stream from
- elsewhere. (gdevpsdf.h, gdevpsdf.c)
- - The algorithms for deciding whether a font was script or serif
- were very inaccurate. (The revised ones are only somewhat better.)
- (gdevpdff.c)
- - Re-encoded characters in subset fonts weren't handled correctly.
- We work around this by writing the entire font if the character doesn't
- appear in the font's encoding. This is inefficient but will always produce
- correct output. (gdevpdff.h, gdevpdff.c, gdevpdft.c, gdevpdfw.c)
- - The meaning of bit 6 in the Flags was supposed to have changed in
- PDF 1.2, but didn't. (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
- - The Widths array didn't get written out for embedded subsets of
- the built-in fonts. (gdevpdfw.c)
- - Planar images weren't handled correctly, and could cause memory
- corruption. (gdevpdfi.c)
- - Patterns still weren't scaled correctly; in fact, the "fix" in
- 5.94 can't possibly have worked, and we don't understand why it seemed to.
- (gdevpdfi.c)
- Recants the belief that the default encoding for embedded fonts is
- StandardEncoding (see 5.95): the appearance of this was a symptom of having
- multiple fonts with the same name. (gdevpdft.c)
- Removes FONT_EMBED_UNKNOWN, which is meaningless (a decision is always made
- about whether to embed a font). (gdevpdff.h, gdevpdff.c, gdevpdft.c)
- Changes the algorithm for picking the base font so that it produces more
- efficient output for certain cases of re-encoded fonts. (gdevpdft.c)
- </pre><h3><a name="5.98_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Fonts were getting renamed unnecessarily. (performance and PDF
- output size problem only) (lib/pdf_font.ps)
- - Fonts with Widths but no FontDescriptor caused an error.
- (lib/pdf_font.ps)
- - TrueType fonts processed the Encoding key in the font the same way
- as other font types, which is not correct. (lib/pdf_font.ps)
- - For embedded Type 3 fonts, the Widths entry in a font didn't
- override the width in the CharProc. (lib/pdf_font.ps, lib/pdf_ops.ps)
- - If a page had multiple Contents streams, and one of the streams
- ended with values on the operand stack, an error might occur.
- (lib/pdf_main.ps)
- - Ts and Tz within a text object didn't take effect immediately.
- (lib/pdf_ops.ps)
- - sc[n] and SC[N] could cause an error because Do left an extra item
- on the stack temporarily. (lib/pdf_draw.ps)
- </pre><h3><a name="5.98_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Getting the unscaled outline for a Type 1 font didn't disable
- hinting. (mostly a performance problem) (zchar1.c)
- - Error conditions during initialization weren't recognized. Fixing
- this required changing various return types from void to int. (ialloc.h,
- iinit.h, imain.h, interp.h, ialloc.c, iinit.c, imain.c)
- - HalftoneMode didn't affect setscreen or setcolorscreen.
- (lib/gs_init.ps, lib/gs_ll3.ps)
- Makes the interpreter quit with a message, rather than a stack dump, if it
- can't open the initial device and DEBUG is not set. (lib/gs_init.ps)
- Adds .setlimitclamp and .currentlimitclamp operators to access the limit
- clamp flag in the graphics state. (zgstate.c)
- Changes the names of the stochastic halftone mask to be more descriptive.
- (lib/ht_ccsto.ps, int.mak, unixinst.mak)
- </pre><h3><a name="5.98_Streams"></a>Streams</h3><pre>
- Adds the ability to forbid using hex encoding when writing strings.
- (spsdf.h, spsdf.c)
- </pre><h3><a name="5.98_Library"></a>Library</h3><pre>
- Fixes problems:
- - Computing the width of a glyph unnecessarily constructed the
- entire outline. (performance problem only) (gxtype1.c)
- - Getting the unscaled width of a glyph in a Type 1 font didn't
- disable hinting. (mostly a performance problem) (gxtype1.c.)
- - The "unknown device" GC descriptor is no longer used. (gsdevice.c)
- - Some compilers *still* complained about end-of-loop code not being
- reached. (gxpath2.c)
- - Mixing float and double values sometimes caused spurious lines to
- be drawn when stroking very short lines with large widths. (fix from
- Artifex) (gxpdash.c)
- - The code for handling crossing lines in the path filling algorithm
- sometimes computed line crossings incorrectly, causing excessive
- computation. (gxfill.c)
- - When oversampling for anti-aliasing, the flatness parameter was
- not scaled, leading to unnecessarily accurate curve rendering. (gspaint.c)
- - An extra grestore in a Pattern PaintProc could cause a crash.
- (gxpcmap.c)
- - Error conditions during initialization weren't recognized. Fixing
- this required changing the return type of init_proc, and various other
- internal procedures, from void to int. (std.h, gslib.h, gscdefs.h,
- gshtscr.c, gsiodev.c, gslib.c, gsutil.c)
- Splits off the Type 1 encryption/decryption code into a separate file for
- sharing with the eexec streams. (gscrypt1.c, gxtype1.c)
- </pre>
- <hr>
- <h2><a name="Version5.97"></a>Version 5.97 (beta) (11/22/99)</h2>
- <p>
- This is the next beta for 6.0. We believe the pdfwrite driver (ps2pdf) now
- finally produces Acrobat-acceptable output, with reasonable handling of
- fonts, and have also fixed the problem with high-level image banding. We
- are cautiously hopeful that this is a "real" beta candidate.
- <h3><a name="5.97_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Drivers)
- - The default CompatibilityLevel in the pdfwrite driver is now back
- to 1.3.
- (Library)
- - The seac_data procedure of a Type 1 font must now be able to
- return the glyph and/or the actual outline data.
- </pre><h3><a name="5.97_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - A <br> was missing. (doc/Release.htm)
- - The final step of copying releases to www.aladdin.com was missing.
- (doc.Release.htm)
- Documents the new situation with the ps2pdf* scripts. (doc/Ps2pdf.htm)
- Documents the simplification of the pthreads code. (doc/Helpers.htm,
- doc/Make.htm)
- Adds a requirement to the license that modifications include the name and
- e-mail address of the author, and the date and purpose of the modification.
- (doc/Public.htm)
- Adds a link to the documentation for setdistillerparams. (doc/Ps2pdf.htm)
- </pre><h3><a name="5.97_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - On OpenVMS, the test for whether the bin and obj subdirectories
- already existed was incorrect. (openvms.mak, openvms.mmk)
- - The recently updated Borland/Inprise makefile deleted some temp
- files prematurely. (bcwin32.mak)
- - The dependencies for the Unix install-scripts and install-data
- targets were incorrect. (unixinst.mak)
- Updates the RPM spec files. (gs.rps, gs-fonts.rps, rpm-conf.dif)
- Adds support for compilation with Borland/Inprise C++Builder 3.
- (bcwin32.mak, winint.mak)
- Adds a note on font installation under Red Hat Linux 6. (doc/Install.htm)
- </pre><h3><a name="5.97_Utilities"></a>Utilities</h3><pre>
- Adds ps2pdf12 and ps2pdf13 scripts to select the PDF output level
- explicitly; makes ps2pdf a wrapper for ps2pdf12. (lib/ps2pdf,
- lib/ps2pdf.bat, lib/ps2pdf12, lib/ps2pdf12.bat, lib/ps2pdf13,
- lib/ps2pdf13.bat, lib/ps2pdfwr, lib/ps2pdfwr.bat)
- Updates the Windows install/setup program to display the Aladdin start menu
- folder on a successful install, so that the user gets some feedback that all
- went well. (dwinst.cpp, dwsetup.cpp)
- </pre><h3><a name="5.97_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The lj5{mono,gray} drivers didn't send the page size to the
- printer. (gdevpxut.h, gdevlj56.c, gdevpx.c, gdevpxut.c)
- - The pxl drivers didn't handle out-of-range points properly.
- (gdevvec.c, gdevpx.c)
- - The bmpa drivers didn't produce multi-page output files correctly
- -- all pages but the first were blank. (The bmp format is supposed to be
- single-page, but at least some readers handle multi-page files correctly.)
- (gdevbmpa.c)
- - The code for writing embedded TrueType fonts was broken. (bug
- probably introduced in 5.9x) (gdevpsdt.c)
- Removes an unused variable. (gdevbmpa.c)
- </pre><h3><a name="5.97_Platforms"></a>Platforms</h3><pre>
- Replaces the 4 pthreads files, which included a dependence on the non-POSIX
- <semaphore.h>, with a single file that uses only pthreads procedures.
- (gp_psync.c, gp_posem.c [deleted], gp_pthr.c [deleted], gp_ptsem.c
- [deleted], gp_semon.c [deleted])
- </pre><h3><a name="5.97_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - Whether or not to write the Widths array was implicit in the data
- structures rather than explicit, so it was sometimes written unnecessarily.
- (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
- - Fonts based on the 14 built-in fonts didn't set BaseFont to the
- name of the built-in font. (gdevpdff.c)
- - The determination of whether a glyph was available was incorrect
- for embedded fonts, leading some glyphs to be turned into bitmaps
- unnecessarily. (gdevpdft.c)
- - Apparently Acrobat Reader gets confused if different subsets of
- the same font have different FirstChar and LastChar values, so we have to
- write the full Widths array each time. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
- - A structure member wasn't initialized when processing pdfmark
- annotations, possibly causing a memory access error. (gdevpdfm.c)
- - The typedef for gx_device_pdf had a typo. (gdevpdfx.h)
- - Each embedded font subset had its own FontDescriptor and its own
- font data, confusing Acrobat Reader. Fixing this required sharing
- FontDescriptors among multiple fonts and making FontDescriptors
- pseudo-resources. (gdevpdff.h, gdevpdfx.h, gdevpdf.c, gdevpdff.c,
- gdevpdft.c, gdevpdfw.c)
- - Incrementally defined embedded Type 1 fonts didn't write out
- correct Widths. (gdevpdff.c)
- - PDF resources didn't consistently record the gs_id of the
- structure they represented, possibly causing resources to be duplicated
- unnecessarily. (gdevpdff.c, gdevpdfu.c)
- Reinstates PDF text output. (gdevpdf.c)
- Changes the default CompatibilityLevel in the pdfwrite device back to 1.3,
- since the ps2pdf scripts now make it easy to choose the PDF level.
- (gdevpdf.c)
- When possible, uses the widths obtained from the font, rather than the
- default implementation of text_process, to complete the text_process
- operation. This greatly speeds up the conversion process. (gdevpdft.c)
- Allows character remapping (but not reencoding) of TrueType fonts.
- (gdevpdft.c)
- Factors the definitions for cos objects and font-related objects into header
- files more thoroughly. (gdevpdff.h, gdevpdfo.h, gdevpdfx.h, gdevpdf.c,
- gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
- Makes the names of some structure elements correspond more directly to keys
- in PDF directories. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
- Splits off the font-writing code, since a source file was getting too big.
- (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
- Adds CharSet information to embedded Type 1 font descriptors. (gdevpdfw.c)
- Makes all font names in the output unique, selected by static bool
- MAKE_FONT_NAMES_UNIQUE. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
- Reinstates support for one special case of composite fonts (8/8 mapping with
- the high order byte always zero) that is used by the AdobePS4 Windows
- driver. (gdevpdft.c)
- Changes the assumption about the default encoding for embedded TrueType
- fonts from StandardEncoding to no known encoding. (gdevpdft.c)
- Changes FONT_EMBED_BASE14 to FONT_EMBED_STANDARD for greater
- descriptiveness. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
- </pre><h3><a name="5.97_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The same-font test for Type 1 fonts didn't correctly identify
- re-encoded fonts with unchanged metrics. (zfont1.c)
- - If a save level was split into multiple internal save objects,
- some changes could get undone before objects were finalized. (isave.c)
- - When releasing all of memory, stable allocators weren't finalized.
- (isave.c)
- - Some compilers gave annoying and needless warnings about integer
- overflow. (store.h)
- - There was a signed/unsigned char * mismatch. (iccfont.c)
- Adds a debugging procedure. (idebug.h, idebug.c)
- Changes the Type 1 font seac_data procedure to match the new API.
- (zchar1.c)
- </pre><h3><a name="5.97_Library"></a>Library</h3><pre>
- Fixes problems:
- - The GC didn't know about the pointers to the tables for Indexed
- color spaces when banding, occasionally causing the tables to be written as
- garbage. This is the real fix for the problem discovered in 5.96.
- (gsiparam.h, gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxclpath.c)
- - With 'async' drivers, multi-page files didn't render properly
- (they got a rangecheck error on every page after the first one).
- (gdevprna.c)
- - Some compilers still complained about end-of-loop code not being
- reached. (gxpath2.c)
- - The scaled font cache required that a font have a UID in order to
- be a candidate for caching. (gsfont.c)
- - An obsolete check caused slight discrepancies between banded and
- non-banded output. (gxstroke.c)
- - The glyph_outline procedure for TrueType fonts transformed the
- width by the scaling matrix twice. (gstype42.c)
- Removes some now-unnecessary extern_st declarations. (gdevbbox.c,
- gdevplnx.c, gximage3.c)
- Removes some initializations that read uninitialized locations and are
- logically unnecessary. (gsalloc.c, gscolor.c)
- Adds makefile rules for compiling the MD5 implementation. (lib.mak)
- Makes the seac_data of a Type 1 font return the glyph and/or the actual
- outline data. This is necessary because some Type 1 fonts don't have the
- accents in the same positions as StandardEncoding, but use seac anyway.
- (gxfont1.h)
- Changes the Type 1 font interpreter to match the new seac_data API.
- (gxtype1.c)
- </pre>
- <hr>
- <h2><a name="Version5.96"></a>Version 5.96 (beta) (11/12/99)</h2>
- <p>
- This is the next beta for 6.0. To meet a need of our commercial licensing
- partner for a PostScript LL3 release, we are releasing this fileset with all
- font handling in the PDF writer disabled, as well as high-level image
- banding. This is a temporary measure: we will reinstate PDF text in 5.97,
- and high-level image banding as soon as we can straighten out its memory
- management problems.
- <h3><a name="5.96_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - All Unix 'make' programs must now predefine MAKE as the name of
- the program.
- (Interpreter)
- - zcolor_remap_one now returns o_push_estack rather than 0 in the
- case where it doesn't actually have to sample the procedure.
- (Library)
- - Multi-plane halftones (when needed) are now used for all CMYK
- devices, not only if setcolorscreen was executed.
- - Font implementors must now provide a same_font procedure.
- </pre><h3><a name="5.96_Documentation"></a>Documentation</h3><pre>
- Makes it clear that gsnup.ps is very simple and naive. (doc/Psfiles.htm,
- lib/gsnup.ps)
- Documents the new -Z_ switch. (doc/Use.htm)
- Documents that SYNC=nosync allows building on systems that don't support
- multi-threading. (doc/Make.htm)
- Adds documentation for building on Macintosh Rhapsody systems.
- (doc/Make.htm)
- Adds a reference to the new all-arch.mak file. (doc/Helpers.htm,
- doc/Make.htm)
- Notes that ps2pdf does preserve the color space for images.
- (doc/Ps2pdf.htm)
- Documents the new self-extracting archive for MS Windows. (doc/Install.htm,
- doc/Release.htm)
- Further improves the documentation of the PDF text machinery. (gdevpdfx.h)
- Reorganizes the build information for Unix. (doc/Make.htm)
- Adds information on building Ghostscript under BSDI. (doc/Make.htm)
- Notes that versions of zlib before 1.1.3 may cause an error on rare
- occasions. (zlib.mak)
- Fixes a few other minor problems. (doc/Current.htm, doc/Devices.htm,
- doc/DLL.htm, doc/Install.htm, doc/Language.htm, doc/Make.htm,
- doc/New-user.htm, doc/Ps2pdf.htm, doc/Source.htm, doc/Use.htm)
- </pre><h3><a name="5.96_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - dctd.dev and dcte.dev were defined in $(PSD), but referenced in
- $(GLD). (devs.mak, int.mak, lib.mak)
- - pipe.dev was defined in $(GLD), but referenced in $(PSD).
- (bcwin32.mak, dvx-gcc.mak, msvc32.mak, unix-gcc.mak, unixansi.mak,
- unixtrad.mak)
- - XLIBDIRS was included in the linker command even if none of the
- X drivers were used. (devs.mak, dvx-tail.mak, ugcclib.mak, unixlink.mak)
- - The OpenVMS makefile didn't create the obj and bin directories
- properly. (openvms.mak)
- - 'make debug' and 'make pg' didn't work on Unix systems where the
- make program was named something other than make. (unix-end.mak)
- Introduces a new top-level makefile macro, STDLIBS, that is -lm for all
- reasonable platforms but null for Rhapsody. (dvx-gcc.mak, dvx-tail.mak,
- ugcclib.mak, unix-gcc.mak, unixansi.mak, unixlink.mak, unixtrad.mak)
- Adds Nelson Beebe's contributed multi-architecture Unix makefile.
- (all-arch.mak)
- Makes it theoretically possible in theory to build the new Windows
- install/uninstall program with the Borland compiler. However, since this
- requires Borland C++ 4.52 and we only have 4.5, this is disabled in
- bcwin32.mak. (bcwin32.mak, winint.mak)
- </pre><h3><a name="5.96_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - The default for gsnup.ps was 3x2 landscape, rather than 2x2
- portrait. (lib/gsnup.ps)
- - gslp.ps was broken (by the changes made to support gsnup.ps).
- (lib/gslp.ps)
- Adds a -link switch to genconf, to allow verbatim copying of commands into
- the linker command line. (genconf.c)
- Edits files to add missing $Id lines and module summary comments, and to
- delimit module summary comments from further material. (dwinst.h,
- dwsetup.h, dwuninst.h, bench.c, dwuninst.cpp)
- Makes it possible to build the new Windows install/uninstall program with
- the Borland compiler. (dwinst.cpp, dwsetup.cpp, dwsetup.def, dwsetup.rc,
- dwuninst.cpp, dwuninst.def)
- </pre><h3><a name="5.96_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - Embedded Type 1 fonts lacked some 'def' commands. (gdevpsd1.c)
- - Multiple Master Font instances weren't written out correctly.
- (gdevpsd1.c)
- Edits files to add missing $Id lines and module summary comments, and to
- delimit module summary comments from further material. (gdev8bcm.h,
- gdevht.h, gdevpccm.h, gdevpcl.h, gdevsvga.h, gdevx.h, gdev3852.c,
- gdev8510.c, gdevadmp.c, gdevcd8.c, gdevcif.c, gdevclj.c, gdevhl7x.c,
- gdevifno.c, gdevimgn.c, gdevl31s.c, gdevmeds.c, gdevmswn.c, gdevos2p.c,
- gdevpe.c, gdevpm.c, gdevsj48.c, gdevtknk.c, gdevupd.c, gdevwddb.c,
- gdevwpr2.c, gdevwprn.c)
- </pre><h3><a name="5.96_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The pthreads wrapper had a procedure type mismatch. We fixed this
- by making it allocate and free a wrapper object, as the Windows wrapper
- does. (gp_pthr.c)
- Edits files to add missing $Id lines and module summary comments, and to
- delimit module summary comments from further material. (dwimg.h, dwmain.h,
- gsdll.h, gp_msio.c, gp_mswin.c)
- Removes an unnecessary #include <semaphore.h>. (gp_semon.c)
- Adds a module that implements semaphores using the pthreads mutex
- facilities, as an alternative to gp_posem.c. Unfortunately, using this
- module causes immediate crashes on both Linux and BSDI, and we don't know
- why. (Let us know if you figure it out.) (gp_ptsem.c)
- </pre><h3><a name="5.96_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - The character and word spacing weren't recognized as being reset
- by a PDF grestore. (gdevpdfx.h, gdevpdfu.c)
- - Fonts that couldn't be embedded were always converted to bitmaps,
- rather than becoming candidates for non-embedded representation (if
- EmbedAllFonts is false and the font doesn't appear on the AlwaysEmbed list).
- (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
- - Stream-type Cos objects were written with no (0-length) data.
- (gdevpdfm.c)
- - Reencoded base 14 fonts were not recognized as such, leading to
- excessive font embedding. (gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdft.c)
- - Fonts were embedded by default even if EmbedAllFonts was false.
- (gdevpdft.c)
- Changes MaxSubsetPct to 35 to match Acrobat Distiller. (gdevpsdf.h)
- Adds some tracing output (-Z_). (gdevpdff.c, gdevpdft.c)
- Temporarily disables font handling in the PDF writer, to meet a need of our
- commercial licensing partner. All text will be converted to code-scrambled
- Type 3 bitmap fonts. (gdevpdf.c)
- </pre><h3><a name="5.96_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - The sh operator caused an invalidaccess error for shadings that
- required a DataSource. (lib/pdf_draw.ps)
- - The test for whether a Widget appearance was a Form or a
- collection of sub-appearances was incorrect, causing an /undefined error in
- the latter case. (lib/pdf_draw.ps)
- - If the FontName in a Font descriptor differed from the BaseFont
- name in the Font object, the interpreter used the two inconsistently,
- sometimes causing the wrong font to be used. (lib/pdf_font.ps)
- - ICCBased color spaces caused an error. (lib/pdf_draw.ps)
- Works around the fact that Acrobat Distiller produces files in which a
- Widget's Form appearance lacks Type and Subtype keys. (lib/pdf_draw.ps)
- </pre><h3><a name="5.96_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Failure in allocating the name table would cause a crash.
- (iname.c)
- - Shadings with procedure-based filters didn't work.
- (lib/gs_ll3.ps, ifilter.h, zfileio.c, zfproc.c)
- - Some compilers complained about arithmetic on an enum. (iparam.c)
- - Setting a transfer or similar function to the identity function
- didn't set the cached values, so the setting didn't consistently take
- effect. (icolor.h, zcolor.c)
- - If the C library's implementation of sprintf with a %g format ever
- produced a number with an exponent but no decimal point, a crash would
- occur. (iutil.c)
- - The PageDeviceName page device parameter wasn't supported.
- (lib/gs_lev2.ps, lib/gs_setpd.ps)
- - A public procedure wasn't declared extern if DEBUG wasn't set.
- (igc.h)
- - Because of a typo, loading resources automatically from a file
- always failed. (bug introduced in 5.94) (lib/gs_res.ps)
- Edits files to add missing $Id lines and module summary comments, and to
- delimit module summary comments from further material. (files.h, iastate.h,
- ibnum.h, ichar.h, ifilter.h, iimage.h, iimage2.h, iparam.h, isave.h,
- iscan.h, isstate.h, istream.h, iutil.h, opcheck.h, scanchar.h)
- Adds a font similarity testing procedure for Type 1/2/4 fonts. (zfont1.c)
- </pre><h3><a name="5.96_Streams"></a>Streams</h3><pre>
- Edits files to add missing $Id lines and module summary comments, and to
- delimit module summary comments from further material. (sbhc.h, sbtx.h,
- sbwbs.h, sdct.h, scfdgen.c, scfdtab.c, shcgen.h, siscale.h, sjpeg.h,
- slzwx.h, smtf.h, spdiffx.h, spngpx.h, srlx.h)
- </pre><h3><a name="5.96_Library"></a>Library</h3><pre>
- Fixes problems:
- - Making a transformed font inappropriately copied the font's
- notification list. (gsfont.c)
- - Some compilers complained about end-of-loop code not being
- reached. (gxpath2.c)
- - The first two arguments of scale_delta was swapped, causing
- anomalous output for certain Type 1 fonts with curves where the starting and
- ending points had the same X or Y coordinate. (gxhint3.c)
- - Large smoothness values produced blocky output. (gxshade.c)
- - When banding, in a region where a CMYK halftone had no K at all,
- the output was likely to be black rather than the correct color. (gxcht.c)
- - Interpolated images with mirrored X scaling weren't mirrored.
- (gxiscale.c)
- - Interpolated images were truncated. (gxiscale.c)
- - Halftone caches could have a dangling pointer to a transfer map in
- the halftone order. (gxht.c)
- - The next-character code returned for kshow was the same as the
- current character. (bug probably introduced in 5.86) (gstext.c)
- - The GC didn't know about the pointers to the tables for Indexed
- color spaces when banding, occasionally causing the tables to be written as
- garbage. In the process of investigating this, we discovered that the GC
- didn't know about *any* of the pointers in the structures used to track
- banded images. ****** NOT FIXED, TOO MUCH RISK OF INTRODUCING FURTHER
- BUGS. ****** Instead, we disabled high-level image banding in this fileset.
- (gxclimag.c)
- Changes the name of a variable from ppc to ppcr, because an Apple compiler
- inappropriately defines the name ppc when compiling on a PowerPC.
- (gxshade6.c)
- Edits files to add missing $Id lines and module summary comments, and to
- delimit module summary comments from further material. (gdevbbox.h,
- gscoord.h, gscpixel.h, gsfname.h, gsfont.h, gsimage.h, gslib.h, gsmdebug.h,
- gspaint.h, gspath.h, gspath2.h, gxalloc.h, gxclipm.h, gxclpage.h,
- gxclpath.h, gxcmap.h, gxcoord.h, gxcpath.h, gxdda.h, gxdevmem.h, gxfcache.h,
- gxfont.h, gximage.h, gxiodev.h, gxpaint.h, gxpath.h, gxpcolor.h, gzacpath.h,
- gzcpath.h, gzht.h, gzpath.h, md5.h, gxdither.c, md5.c)
- Adds a prototype for debug_find_pointers. (gxalloc.h)
- Adds a font procedure for testing whether two fonts are the same in various
- ways. This is needed so that the PDF writer can do a reasonable job of
- identifying reencoded and renamed versions of the base 14 fonts. (gxfont.h,
- gsfont.c)
- Changes a macro to a procedure and improves some commenting. (gxhint3.c)
- Changes the halftoning code so that multi-plane halftones are always used on
- CMYK devices, even if only a single halftone is set (setscreen or
- HalftoneType 1). (gxcht.c, gxdither.c)
- </pre>
- <hr>
- <h2><a name="Version5.95"></a>Version 5.95 (beta) (11/1/99)</h2>
- <p>
- There were several new problems in 5.94, some of them severe. We hope this
- beta candidate fixes them without introducing any new ones. It also fixes
- some minor problems not reported in 5.93.
- <p>
- We think we have finally found the right workarounds for Acrobat and
- specification problems so that pdfwrite output (with CompatibilityLevel
- either 1.2 or 1.3) both conforms as closely as possible to the published PDF
- specification and works with Acrobat Reader (3 or 4 respectively) for both
- displaying and printing.
- <p>
- NOTE: The default level of output from the pdfwrite device (ps2pdf) has been
- changed back to PDF 1.2 (Acrobat 3 compatible), because this is what the
- majority of users want. For PDF 1.3 output, use -dCompatibilityLevel=1.3.
- <p>
- Note: some post-6.0 code is included under an #ifdef POST60.
- <h3><a name="5.95_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Drivers)
- - The default CompatibilityLevel in the pdfwrite device (ps2pdf) is
- now 1.2 rather than 1.3.
- - pdfwrite now discards information after the last showpage rather
- than producing an additional page.
- (Library)
- - The is_monotonic procedure of a function now returns a result that
- indicates the direction of monotonicity of each value separately.
- - The coordinate system used internally by the bbox device is now
- upright (lower left corner = (0,0) rather than upper left corner). (This
- should not make any difference to clients, who should always have been using
- default user space coordinate.)
- </pre><h3><a name="5.95_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - A couple of URLs were incorrect or out of date. (doc/Readme.htm,
- doc/Use.htm)
- - There was a typo in a comment. (gxfont.h)
- - An old bug had been fixed, but the documentation had not been
- updated to reflect this. (doc/Current.htm)
- Documents the requirement to change SYNC from posync to fbsdsync on FreeBSD.
- (doc/Make.htm)
- Adds references to Adobe's on-line documentation. (doc/Readme.htm)
- Updates the release procedure to mention adding .ps files.
- (doc/Release.htm)
- Adds documentation for the bbox device. (doc/Use.htm)
- Documents the new gsnup.ps utility. (doc/Psfiles.htm)
- Modifies the gslp utility for greater page independence and smaller output
- files. (lib/gslp.ps)
- Documents the fact that the default output from pdfwrite is PDF 1.2.
- (doc/Ps2pdf.htm)
- Adds Inprise (as the new name of the Borland tools) in a few places.
- (doc/Make.htm)
- Updates the release documentation slightly. (doc/Release.htm)
- </pre><h3><a name="5.95_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - FreeBSD uses a different name for the pthreads implementation.
- (lib.mak, unixansi.mak, unix-gcc.mak, unixtrad.mak)
- Encapsulates gsnogc.$(OBJ) in a gsnogc.dev module, to make it more sharable.
- (lib.mak)
- </pre><h3><a name="5.95_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - guilsinglleft and guilsinglright were misspelled.
- (lib/ps2ascii.ps)
- - The ps2pdf script didn't handle the -I switch correctly. We fixed
- this by including the options twice, both before and after the automatically
- supplied options. (lib/ps2pdf, lib/ps2pdf.bat)
- Adds an install/uninstall program for Windows 9x, including optional
- generation of a self-extracting executable, written by Ghostgum Software Pty
- Ltd. This program is not actually used yet. (msvc32.mak, winint.mak,
- dwinst.*, dwsetup.*, dwuninst.*)
- Adds a new environment parameter to arch.h, ARCH_DIV_NEG_POS_TRUNCATES.
- (genarch.c)
- Adds a utility for N-up printing. (unixinst.mak, lib/gsnup.ps)
- Changes ps2pdf so that if showpage has ever been executed, any partial page
- after the last showpage is discarded rather than made into an additional
- page. This is consistent with printers, and correctly handles BeginPage
- procedures that draw backgrounds. (gdevpdf.c)
- </pre><h3><a name="5.95_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The TIFF drivers could produce incorrectly sorted tag tables.
- (gdevtifs.c)
- - The OS/2 PM driver had an incorrect #include. (gdevpm.c)
- - Embedded Type 1 fonts that used seac didn't automatically include
- the constituent glyphs. (gdevpsd1.c)
- - Embedded Type 1 fonts wrote the wrong font name in the first
- (comment) line. (gdevpsd1.c)
- - Deleting elements from the AlwaysEmbed or NeverEmbed list could
- cause a memory access error. (gdevpsdp.c)
- - The string and string array members of psdf_distiller_params were
- omitted from the GC descriptor, causing memory corruption. (gdevpsdf.h,
- gdevpsdf.c, gdevpsdp.c)
- - When using "async" printing, the buffer device was destroyed too
- soon. (fix from Artifex) (gdevbmpa.c)
- Adds (partial) parsing for the new Acrobat Distiller 4.0 parameters, under
- #ifdef POST60. The put_params code isn't finished. (gdevpsdf.h,
- gdevpsdp.c)
- </pre><h3><a name="5.95_Platforms"></a>Platforms</h3><pre>
- Changes product to productfamily as the Windows registry key. (gp_wgetv.c)
- </pre><h3><a name="5.95_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - guilsinglleft and guilsinglright were misspelled in
- MacRomanEncoding and MacGlyphEncoding. (lib/gs_mro_e.ps)
- - plusminus was misspelled in MacGlyphEncoding. (lib/gs_mgl_e.ps)
- - braceleftbt was misspelled as bracelefttbt in the Symbol font.
- (fonts/s050000l.pfb) ****** NOT DISTRIBUTED YET ******
- - euro was incorrectly included at position 240 in the Symbol
- encoding. (lib/gs_sym_e.ps)
- - Zcaron and zcaron weren't included in WinAnsiEncoding (this is new
- for PDF 1.3). (lib/gs_wan_e.ps)
- - Euro replaced currency in MacRomanEncoding. We had to change this
- back, even though the Mac does use code 219 for Euro, for compatibility with
- Adobe documentation. (lib/gs_mro_e.ps)
- - TrueType fonts with more glyphencoding entries than glyphs could
- cause errors. (lib/gs_ttf.ps)
- Adds the Adobe Central European encoding. (lib/gs_ce_e.ps, unixinst.mak)
- Adds more tracing to the TrueType font loader. (lib/gs_ttf.ps)
- Adds the remaining PDF Encodings to the predefined set. (lib/gs_lgo_e.ps,
- lib/gs_lgx_e.ps, lib/gs_mex_e.ps, lib/gs_mgl_e.ps, lib/gs_mro_e.ps)
- </pre><h3><a name="5.95_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - When printing an error message, a pointer/length string was
- incorrectly treated as a C string. (gdevpdfm.c)
- - The treatment of text was completely broken by "improvements" made
- in 5.94. We think we've put things back to a state that at least isn't any
- worse than 5.93. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
- - The test for whether a glyph was present in a glyph set was wrong,
- possibly causing an infinite loop. (This never happened, because the code
- was masked by other bugs.) (gdevpdft.c)
- - Testing the PDF compatibility level didn't work correctly, because
- of float/double mismatches. (gdevpdfx.h, gdevpdfp.c)
- - Embedded TrueType fonts were still written in binary even if
- ASCII85EncodePages was true. (gdevpdff.c)
- - Embedded TrueType subsets didn't use Flags to indicate that they
- had a non-standard cmap. (gdevpdff.c)
- - Contrary to the obvious reading of the PDF specification, it
- appears that the default encoding for embedded fonts, if no BaseEncoding is
- specified, is StandardEncoding, *not* the built-in encoding of the font
- itself; and that any differences from StandardEncoding must be listed
- explicitly. (gdevpdft.c)
- Adds parsing for the new Acrobat Distiller 4.0 parameters, under #ifdef
- POST60. (lib/gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
- Ensures that the Mac encodings are loaded when writing PDF. (devs.mak)
- Works around an Acrobat 3 bug: The only cmap table that works in TrueType
- fonts is format 0, which can only reference glyphs up to 255. Consequently,
- a TrueType font whose Encoding references glyphs above 255 cannot be
- embedded (as a font). (gdevpdft.c)
- Changes the default CompatibilityLevel from 1.3 to 1.2. The majority of
- users are running Acrobat 3. (gdevpdf.c)
- </pre><h3><a name="5.95_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - The T* operator was changed incorrectly to use the negative of the
- leading value. (lib/pdf_ops.ps)
- - The Tz value scaled the X offset for Td and TD (which it
- shouldn't), occasionally causing strings to be displaced horizontally.
- (lib/pdf_ops.ps)
- - sc[n]/SC[N] didn't work with 1-value color spaces, because the
- code incorrectly assumed the operand stack contained only the values on the
- PDF operand stack. (bug introduced by Annotation rendering in 5.94)
- (lib/pdf_base.ps, lib/pdf_draw.ps, lib/pdf_main.ps, lib/pdf_ops.ps)
- - The HTP key in the graphics state caused an error if the
- interpreter didn't implement sethalftonephase. (lib/pdf_draw.ps)
- - If there was no Names tree, invalid links (string Dest values)
- caused an error instead of being ignored. (lib/pdf_main.ps)
- - An annotation with a Thread action caused an error.
- (lib/pdf_main.ps)
- Adds table entries, but not implementation, for the op and OPM keys in
- ExtGState dictionaries. (lib/pdf_draw.ps)
- Works around a bug in Adobe Acrobat Distiller 4.0 for Windows: it uses the
- value /Default with the BG, UCR, and TR keys in an ExtGState.
- (lib/pdf_draw.ps, lib/pdf_main.ps)
- Adds additional tracing for Functions. (lib/pdf_draw.ps)
- Implements the BG2, UCR2, and TR2 keys in ExtGStates. (lib/pdf_draw.ps)
- </pre><h3><a name="5.95_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - There was a (harmless) signed/unsigned mismatch. (imainarg.c)
- - If build_gs_simple_font had to add any elements to the font
- dictionary, a temporary pointer to the CharStrings could become invalid,
- causing crashes or confusion. (zbfont.c)
- - The check for known Encodings included some pseudo-Encodings.
- (zbfont.c)
- - The error object wasn't reset to null before each call of the
- interpreter, possibly causing the garbage collector to mark it even if it no
- longer existed. (interp.c)
- Adds productfamily as a new predefined name, for the benefit of the Windows
- registry. (iinit.c)
- Changes the default color smoothness to 0.02 to match Adobe RIPs.
- (lib/gs_ll3.ps)
- Adds using the glyph_info procedure for Type 1 fonts, needed to fix the
- problem with seac and Type 1 embedded fonts. (zfont1.c)
- </pre><h3><a name="5.95_Library"></a>Library</h3><pre>
- Fixes problems:
- - Memory devices that may execute RasterOp must be initialized with
- an allocator (for temporary bitmaps), but sometimes they weren't.
- (gdevdrop.c)
- - The computation of colors_used for images could cause arithmetic
- exceptions and/or produce incorrect results. (fix from Artifex)
- (gxclimag.c)
- - A dead variable was getting incremented in a loop. (Small
- performance bug only.) (gsfunc0.c)
- - The cached is_monotonic value in a function head was incorrectly
- declared bool rather than int. (gsfunc.h)
- - The clip operators didn't always recognize empty clipping regions:
- sometimes they retained a 1-pixel-wide region. (gxcpath.c)
- - The bbox device could get into a recursion loop if it had a
- non-null target with a non-standard fill_path procedure. (gdevbbox.c)
- - The procedure u32 was defined in two places. (gsutil.h,
- gdevpsdt.c, gsutil.c, gstype42.c)
- - The DataSource member of a sampled function wasn't reported to the
- garbage collector. (gsfunc0.h, gsfunc0.c) ****** MUST DO THE SAME FOR
- SHADINGS ******
- - All name-type parameters (device and other) were converted as
- strings rather than names. (gsparam.c)
- - Using a mask Pattern with an anti-aliased device could make
- invalid memory accesses and cause a crash. (gxpcmap.c)
- - math_.h was included unnecessarily. (gxfill.c, gxhint3.c)
- - In a few places, (fixed-point) coordinates were truncated towards
- zero rather than taking the floor. (It's likely that this had no effect.)
- (gxfill.c, gxpcopy.c)
- - The join and cap values weren't taken into account when dividing a
- stroked path into bands, possibly causing some caps or joins to be dropped
- if they fell exactly at band boundaries. (gxclpath.c)
- - An arithmetic overflow in gx_adjust_if_empty could produce
- incorrect output. (gxfill.c)
- - Because the bbox device used a Y-inverted coordinate system, it
- could produce incorrect results for out-of-bounds coordinates. (gdevbbox.c)
- - The default font_info procedure didn't compute MISSING_WIDTH if
- IS_FIXED_WIDTH wasn't requested. (gsfont.c)
- - space_params wasn't managed properly, causing problems if the
- device altered the default values. (fix from Artifex) (gdevprn.c)
- - The Macintosh cmap table for embedded TrueType fonts was written
- incorrectly. (gdevpsdt.c)
- - The OS/2 table for embedded TrueType fonts could be inconsistent
- with the cmap table. (gdevpsdt.c)
- - In embedded subset TrueType fonts, loca entries beyond the last
- occupied glyph contained garbage. (gdevpsdt.c)
- - Embedded TrueType subsets didn't include the components of
- composite glyphs. (gdevpsdf.h, gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
- Changes the is_monotonic procedure of Functions so that it reports the
- direction of monotonicity of each value independently. This allows a larger
- class of functions to be detected as monotonic. (gsfunc.h, gsfunc0.c,
- gsfunc3.c)
- Works around a bug in Fontographer that causes it to produce (or at least
- allow users to produce) Type 1 fonts using seac in which the side bearing of
- the accented character differs from the side bearing of the base glyph. The
- published Type 1 specification and Adobe's engineers agree that such fonts
- are invalid, but the authors of Fontographer don't seem to care (this is the
- 4th Fontographer bug that we have had to patch around so far). (gxtype1.h,
- gstype1.c, gxtype1.c)
- Adds gs_productfamily, for the benefit of the Windows registry. (gscdefs.h,
- gscdef.c)
- Adds a glyph_info procedure for Type 1 fonts, needed to fix the problem with
- seac and Type 1 embedded fonts. (gxfont1.h, gxtype1.c)
- Adds a gs_resize_struct_array procedure that either allocates or resizes an
- object. We have wanted this for quite a while. (gsmemory.h, gsmemory.c)
- Adds the remaining PDF Encodings to the predefined set. Also adds string
- names for the "real" encodings. (gsccode.h)
- Adjusts the format of embedded TrueType fonts to be closer to that produced
- by Acrobat Distiller, in the hope of making Acrobat Reader accept them.
- (gdevpsdf.h, gdevpsdt.c)
- </pre>
- <hr>
- <h2><a name="Version5.94"></a>Version 5.94 (beta) (9/30/99)</h2>
- <p>
- This is (intended to be) the last beta candidate for the 6.0 release. Most
- changes other than added documentation are bug fixes. In order to address a
- last-minute problem report, we implemented a subset of Annotation rendering
- for PDF files.
- <p>
- At the request of the Free Software Foundation, we removed support for GNU
- readline from the Aladdin Ghostscript fileset. See <a
- href="Make.htm#GNU_readline">here</a> for more information.
- <p>
- We suspect that Acrobat's bugs and limitations still prevent embedded
- TrueType fonts in files created by the pdfwrite device from working
- properly, but we have neither the time nor the means to test this properly.
- <h3><a name="5.94_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - For OpenVMS with MMK or MMS, the third-party libraries are now
- located in [.<lib>] rather than [-.<lib>].
- - The OpenVMS makefiles now select the same set of devices as the
- Unix makefiles.
- - The MS Windows and MS-DOS default installation directory is now
- c:\Aladdin\gs#.# rather than c:\gs.
- - All top-level makefiles now need a definition of BUILD_TIME_GS.
- (Drivers)
- - The cljet5 driver is renamed cljet5pr; there is a new cljet5
- driver that doesn't attempt (and fail) to handle page rotation.
- (Interpreter)
- - .getiodevice may return null.
- (Library)
- - IODevices may now have a null name.
- </pre><h3><a name="5.94_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The documentation of font searching was still wrong in both
- places. (doc/Fonts.htm, doc/Use.htm)
- Notes that certain CodeWarrior code generation options produce incorrect
- code. (doc/Make.htm)
- Removes an inaccurate and obsolete comment. (lib/pdf_font.ps)
- Notes that newer versions of the SGI compiler use a different switch for
- setting the optimization limit. (doc/Make.htm)
- Notes that there may be code generation bugs in MSVC5 and later.
- (doc/Make.htm)
- Documents the new Fontmap.SGI file. (doc/Use.htm)
- Updates the documentation on installing Ghostscript on MS Windows.
- (doc/Install.htm)
- Documents the removal of the GNU readline interface. (doc/Current.htm,
- doc/Make.htm)
- </pre><h3><a name="5.94_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The instcopy script, supposed to handle incompatibilities between
- Unix `install' commands, didn't work. (instcopy, unixinst.mak)
- - The Windows makefiles had an extra occurrence of `.' at the
- beginning of the default search path. (bcwin32.mak, msvc32.mak,
- msvclib.mak, watc*.mak)
- - The OpenVMS makefile didn't automatically create the bin and obj
- directories if needed. (openvms.mak)
- Changes the OpenVMS MMK/MMS makefile to expect the third-party libraries in
- a subdirectory of the current directory, rather than a subdirectory of the
- parent. This makes it compatible with all the other makefiles.
- (openvms.mmk)
- Changes the OpenVMS makefiles to select the same set of devices as the Unix
- makefiles. (openvms.mak, openvms.mmk, unixansi.mak)
- Changes the Windows and OS/2 default search paths to match the new
- convention of installation rooted at c:\Aladdin. (bcwin32.mak, msvc32.mak,
- msvclib.mak, os2.mak, watc.mak, watclib.mak, watcw32.mak)
- </pre><h3><a name="5.94_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - The Type 1/2 CharString printer didn't handle undefined opcodes
- correctly. (lib/type1ops.ps)
- - There was no Unix script for pf2afm. (lib/pf2afm)
- - The Type 1/2 font printing utilities didn't default lenIV to -1
- for Type 2, and didn't handle lenIV = -1 correctly in some places.
- (lib/type1ops.ps)
- - The font2c utility used the version of font2c.ps from whatever
- existing Ghostscript executable was in the search path. Fixing this
- required adding a new parameter in all top-level makefiles, BUILD_TIME_GS.
- (cfonts.mak, bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak, openvms.mmk,
- os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watcw32.mak)
- - The pfbtopfa usage message was incorrect. (lib/pfbtopfa.ps)
- </pre><h3><a name="5.94_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The pswrite driver didn't reset the clipping path when writing
- low-level images, possibly causing output to be clipped incorrectly.
- (gdevps.c)
- - The PNG drivers implicitly declared png_init_io. Fixing this is
- only possible in libpng versions 1.0.3 and later. (gdevpng.c)
- - The cljet5 driver (now cljet5pr) set rotated = true if the page
- was rotated, but didn't set it to false if the page wasn't rotated.
- (gdevclj.c)
- - Embedded Type 1 fonts didn't include any FontInfo elements.
- (gdevpsd1.c)
- - Specifying the DCTEncode filter for compressing images caused a
- crash. This problem is hard to fix correctly because of the complicated
- initialization requirements of the JPEG encoder. We patched around it by
- substituting FlateEncode (when available) for DCTEncode. (gdevpsdi.c)
- Renames the cljet5 driver, which has special (and incorrect) hacks to handle
- page rotation for the PCL interpreter, as cljet5pr; adds a new cljet5 driver
- without the hacks. (gdevclj.c)
- </pre><h3><a name="5.94_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
- up as an instance of the IODevice resource category, causing problems.
- (gp_msio.c, gp_os2.c)
- Adds a set of XBM/XPM icons in 4 sizes, contributed by Gintautas Grigelionis
- (eragigr@ki.ericsson.se). (lib/gs*.xbm, lib/gs*.xpm, unixinst.mak)
- Brings the Windows and OS/2 code up to date, fixing some minor problems.
- (gdevpm.c, gp_os2.c, gsos2.rc, gspmdrv.rc, os2.mak, pcwin.mak)
- </pre><h3><a name="5.94_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - The font directory scanner (FONTPATH) didn't recognize TrueType
- fonts tagged as 'true' rather than 0x00010000. (lib/gs_ttf.ps)
- Changes the TrueType font loader to use ISOLatin1Encoding for constructing
- the CharStrings if there is a Microsoft Unicode cmap and no glyph names in
- the post table. This seems like a hack, but we aren't sure what the right
- approach would be. (lib/gs_ttf.ps)
- Adds a Fontmap for SGI IRIX. This just comments out those fonts that are
- provided by DPS. (lib/Fontmap.SGI)
- </pre><h3><a name="5.94_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - Writing Patterns could cause a memory access error. (bug
- introduced recently) (gdevpdfi.c)
- - Filling with a pattern didn't reset the clipping path, possibly
- causing output to be clipped incorrectly. (gdevpdfi.c)
- - Patterns weren't scaled correctly. (gdevpdfi.c)
- - The data for large Patterns could exceed Acrobat Reader's limit on
- the length of a string. (gdevpdfi.c)
- - copy_color did an extra gsave and concat. (gdevpdfi.c)
- - Repeated color images weren't detected (performance bug only).
- (gdevpdfi.c)
- - Names including control characters or spaces produced invalid
- output. (gdevpdfx.h, gdevpdfu.c)
- - A matrix multiply was in the wrong order, causing fonts with
- non-zero translation in the FontMatrix to render at incorrect coordinates
- (sometimes off the page).
- - If a font had one of the 14 standard names but had some characters
- defined by PostScript procedures, the output file would be invalid.
- (gdevpdft.c)
- - The graphics state line parameters were kept in two different
- copies, causing bookkeeping errors. (gdevpdfx.h, gdevpdf.c, gdevpdfd.c,
- gdevpdfu.c)
- - If a page's BeginPage procedure did anything other than erase the
- page to white, the resulting PDF file was invalid. (gdevpdf.c)
- - Articles with the same title weren't merged properly.
- (gdevpdfm.c)
- - The Threads element of the catalog wasn't an indirect object.
- (gdevpdf.c)
- - Thread actions incorrectly converted the destination (thread
- title) to a name, rather than leaving it as a string. (gdevpdfm.c)
- - Fonts with the same name as the built-in ones, but not the
- standard definitions, produced possibly incorrect output. (gdevpdff.c)
- - The writer didn't recognize attempts to use Encodings with the
- standard fonts that mentioned characters not present in the font's glyph
- set. (gdevpdft.c)
- Ensures that the WinAnsiEncoding is loaded when writing PDF. (devs.mak)
- </pre><h3><a name="5.94_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - The default (identity) CMap didn't map CID 0 to glyph 0.
- (pdf_fonts.ps)
- - TrueType fonts with an explicit Encoding didn't work properly.
- (lib/gs_ttf.ps)
- - If an embedded Type 1 font executed definefont more than once,
- the wrong thing would happen. (lib/pdf_font.ps)
- - The T* operator used the negative of the leading value.
- (lib/pdf_ops.ps)
- Implements a subset of Annotation rendering: only Widget annotations, only
- Normal appearance, only S and D borders, no rounded-corner borders. We did
- this at the very last minute before the release, in order to respond to a
- bug report, and it probably has some bugs. (lib/pdf_draw.ps,
- lib/pdf_main.ps)
- </pre><h3><a name="5.94_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - If an input buffer boundary fell at exactly the wrong place, an
- image whose input was coming from a stream could fail to read the stream EOD
- marker. (This is quite an old bug.) (zimage.c)
- - On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
- up as an instance of the IODevice resource category, causing problems.
- (lib/gs_res.ps, ziodev.c)
- - errorinfo in $error was undefined, rather than null, initially and
- after errors that didn't set it deliberately. (lib/gs_init.ps)
- - The InkParams resource category was defined even in systems that
- didn't support in-RIP trapping. (lib/gs_ll3.ps, lib/gs_res.ps,
- lib/gs_trap.ps)
- - CID fonts with 0-length data caused an error. (lib/gs_cidfn.ps)
- - Type 10 halftone dictionaries were broken -- perhaps they never
- had worked. (lib/gs_ll3.ps)
- Makes FontInfo entries available through the extended font API, needed to
- allow embedded Type 1 fonts to include those entries. (zfont1.c)
- Makes it possible to determine whether the current file is a resource file,
- needed to allow distinguishing between built-in and input-embedded fonts.
- (lib/gs_ccfnt.ps, lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_res.ps,
- lib/gs_type1.ps, zfont.c)
- Moves support for GNU readline from the main Ghostscript fileset to the
- GNU-specific fileset. (unix-gcc.mak, int.mak, gp_gnrdl.c =>
- src/gnu/gp_gnrdl.c, gnu/src/gnudevs.mak)
- </pre><h3><a name="5.94_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - The CCITTFaxDecode filter didn't correctly handle the case where
- the last code of a 1-D row was a black code and occurred less than 7 or 8
- bits before the end of the input stream. (We thought we fixed this in 5.86,
- but we missed one case.) (scfd.c)
- - If an input buffer boundary fell at exactly the wrong place, an
- image whose input was coming from a stream could fail to read the stream EOD
- marker. (This is quite an old bug.) Fixing this involved a possibly risky
- change to the definition of sbuf_min_left and the already fragile logic in
- sreadbuf: the fix does solve this problem, but we aren't at all certain it
- didn't introduce new ones. (stream.h, stream.c)
- </pre><h3><a name="5.94_Library"></a>Library</h3><pre>
- Fixes problems:
- - The default implementation of copy_tile didn't pass the bitmap id
- for complete tiles, missing potential optimizations (performance bug only).
- (gdevdbit.c)
- - The patch edges of ShadingType 7 shadings were ordered
- incorrectly, producing incorrect output in some cases where the surface
- folds over itself. (gxshade6.c)
- - Flushing internal buffers when rendering an image didn't clip the
- flushed data, producing incorrect output. (gxidata.c)
- - Non-zero data_x values for banded images produced incorrect band
- list data. (It's astounding that this problem hasn't shown up before.)
- (gxclimag.c)
- - Banded images rotated by 90 degrees could produce "seams" or
- garbage if they crossed band boundaries. (This is at least the third time
- we have "fixed" this problem.) (gxclimag.c, gxifast.c)
- - Circles or ellipses defined by pairs of 180-degree arcs produced
- incorrect output when banding. (gxclpath.c, gxclrast.c)
- - setgray et al simply cleared the Pattern pointer in the client
- color rather than adjusting its reference count. (gscolor.c, gscolor1.c)
- - The saved graphics state for bitmap/pixmap patterns contained a
- reference to the Pattern color, causing Patterns to be retained when they
- shouldn't be and causing unwanted recursion when freeing them. (gsptype1.c)
- - Patterns containing halftoned CMYK colors rendered as all black.
- (bug probably introduced in 5.6x) (gxcht.c)
- - Because of a typo, CMYK halftoning with only a single plane could
- put too much yellow into the output. This appears to be quite an old bug.
- (gxdither.c)
- - The error code from running out of band list memory wasn't
- propagated if the condition was detected in cmd_put_drawing_color, causing
- low-memory recovery not to be invoked. (gxclpath.c)
- - (Same error code problem) in clist_change_tile. (gxclbits.c)
- Adds more font attributes to the set available through a standard API.
- (gxfont.h)
- Adds more statistics to the filling algorithm. (gxfill.c)
- Adds an is_resource flag to fonts, to indicate that they originated from a
- resource rather than being embedded in an input file. (gxfont.h, gsfont.c)
- </pre>
- <hr>
- <h2><a name="Version5.93"></a>Version 5.93 (beta) (9/11/99)</h2>
- <p>
- This is the next candidate for the 6.0 release. As with 5.92, all changes
- other than added documentation are bug fixes.
- <h3><a name="5.93_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - Every stream whose state includes any GC-traceable pointers must
- now have a set_defaults procedure that clears those pointers.
- </pre><h3><a name="5.93_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - There was an extra /ul tag. (doc/Release.htm)
- - Fontmap.GS wasn't mentioned as needing to be installed.
- (doc/Install.htm)
- - Some documentation for the handling of seac was incorrect.
- (gxtype1.c)
- Removes references to installbsd, which are no longer relevant.
- (doc/Install.htm)
- Updates the information on building with NeXTSTEP. (doc/Make.htm)
- </pre><h3><a name="5.93_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The install command had unpredictably different syntax from one
- "standard" Unix system to another, causing `make install' to fail. We
- replaced the install command with our own script. (instcopy, dvx-gcc.mak,
- unix-gcc.mak, unixansi.mak, unixtrad.mak)
- </pre><h3><a name="5.93_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - pcharstr.ps loaded type1ops.ps with run rather than runlibfile,
- causing an error. (lib/pcharstr.ps)
- </pre><h3><a name="5.93_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - Attempting to embed a font whose Encoding included characters not
- present in the font produced invalid output. (gdevpsd1.c)
- - Allocating a stream state didn't (automatically) clear all its
- internal pointers, possibly causing GC memory access errors. (gdevpsds.c)
- - An #include of string_.h should have been memory_.h. (gdevpsdf.c)
- Disables compression for very small images. (gdevpsdi.c)
- </pre><h3><a name="5.93_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - Compiling gp_msio with MSVC's /MD switch caused a compile-time
- error. (gp_msio.c)
- </pre><h3><a name="5.93_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - A bookkeeping object was allocated with the wrong allocator,
- possibly causing access errors or garbage output. (gdevpdfu.c)
- - Certain Patterns weren't treated as such, leading to very large
- output files. (gdevpdfi.c)
- - If one of the base 14 fonts had a non-standard FontMatrix, the
- output disregarded this fact. This could cause double obliquing.
- (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
- - Articles never got an object ID assigned. (bug introduced in
- 5.91) (gdevpdfm.c)
- </pre><h3><a name="5.93_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Changes the PDF interpreter to allow abbreviated filter names like /Fl for
- all streams, not just in-line images. This directly contradicts the
- published PDF specification, but Acrobat Reader allows it.
- (lib/pdf_base.ps)
- </pre><h3><a name="5.93_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Compiled fonts were broken by the introduction of i_ctx_p.
- (lib/font2c.ps, ccfont.h, iccfont.c)
- - Allocating a stream state didn't (automatically) clear all its
- internal pointers, possibly causing GC memory access errors. (zfproc.c)
- </pre><h3><a name="5.93_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - Allocating a stream state didn't (automatically) clear all its
- internal pointers, possibly causing GC memory access errors. (scfx.h,
- slzwx.h, spngpx.h, strimpl.h, sbwbs.c, sdctc.c, seexec.c, sfilter1.c,
- siscale.c, szlibc.c)
- - The PNG predictor streams could fail to process some data at the
- end of the input. (spngp.c)
- </pre><h3><a name="5.93_Library"></a>Library</h3><pre>
- Fixes problems:
- - Some obsolete definitions for Turbo C could produce references to
- an undefined procedure (setmem) at link time. (memory_.h, string_.h)
- </pre>
- <hr>
- <h2><a name="Version5.92"></a>Version 5.92 (beta) (9/2/99)</h2>
- <p>
- This is the next candidate for the 6.0 release. All changes other than
- added documentation are bug fixes.
- <h3><a name="5.92_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The News for 5.91 didn't include a summary. (doc/News.htm)
- - The documentation for Microsoft platforms didn't mention that you
- must add the Ghostscript bin and lib directories to the PATH. (doc/Use.htm)
- Adds a file describing Aladdin's process for building, testing, and
- releasing Ghostscript. (doc/Readme.htm, doc/Release.htm)
- </pre><h3><a name="5.92_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - Fontmap.GS is now required, but wasn't installed. (unixinst.mak)
- - A couple of documentation files weren't installed. (unixinst.mak)
- </pre><h3><a name="5.92_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - The ps2pdf script for MS Windows used the wrong name for the
- executable. (lib/ps2pdf.bat)
- </pre><h3><a name="5.92_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - An uninitialized variable annoyed some compilers. (gdevpsdt.c)
- - The PostScript-writing driver used the wrong allocator, causing
- possible memory access errors. (gdevps.c)
- - The PostScript-writing driver didn't clear a pointer, causing
- possible GC errors. (gdevps.c)
- - The PostScript-writing driver didn't have a correct GC descriptor,
- causing pointers to be corrupted. (gdevpsdf.h, gdevps.c, gdevpsdf.c)
- - Embedded Type 1 fonts unnecessarily filled individual Encoding
- slots with /.notdef. (gdevpsd1.c)
- - A large constant produced warnings on some compilers. (gdevpsdt.c)
- </pre><h3><a name="5.92_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - Once again, gcc didn't complain about an ANSI-illegal extra
- semicolon in a declaration list. (gdevpdfo.h)
- - Adds a cast to work around the fact that some compilers declare
- the return type of memchr as char * rather than void *. (gdevpdfr.c)
- - The bookkeeping for whether a font had been written and freed was
- inverted, causing some fonts to be written many times and other fonts not to
- be written at all. (gdevpdf.c)
- </pre><h3><a name="5.92_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - More places needed workarounds for the alignment aliasing gcc bug.
- The bug only occurs if a pointer variable is dereferenced through a cast to
- a stricter alignment and then dereferenced later in its original form, so it
- doesn't affect very many places. (igc.c, igcref.c, isave.c)
- </pre><h3><a name="5.92_Streams"></a>Streams</h3><pre>
- Makes the stream GC descriptor public for subclassing. (stream.h, stream.c)
- </pre>
- <hr>
- <h2><a name="Version5.91"></a>Version 5.91 (beta) (8/30/99)</h2>
- <p>
- This is the next beta for 6.0. It includes a major rewrite of the parts of
- the PDF writer that deal with resources and pdfmarks, as well as the usual
- bug fixes. There are still problems with embedded fonts, both TrueType
- (which sometimes don't show up at all) and Type 1 (which sometimes confuse
- Acrobat Reader 3).
- <h3><a name="5.91_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - An HTML tag was misplaced in the News file. (doc/News.htm)
- Notes that the Solaris FONTPATH scanning problem may be fixed.
- (doc/Use.htm)
- </pre><h3><a name="5.91_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - Many of the margin and width computations in ps2epsi.ps (not
- written by Aladdin) were wrong -- off by 1. It's only because the bugs
- masked each other or cancelled each other out that the code didn't produce
- errors more of the time. (lib/ps2epsi.ps)
- </pre><h3><a name="5.91_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - Font subset glyphs weren't sorted early enough, causing Type 1
- embedded fonts to be written with inconsistent lengths. (gdevpsd1.c)
- Changes the BMP drivers so that they set the resolution in the BMP header
- rather than leaving it at 0. This solves some problems reported by users,
- but may cause others. (gdevbmpc.c)
- </pre><h3><a name="5.91_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - A change made in 5.90 was incorrect (we couldn't test it, because
- MS Windows and OS/2 systems can't be used over a network). (gp_msio.c,
- gp_os2.c)
- Adds some conditionalization to work around a bug in some recent versions of
- gcc/egcs. (stdpre.h, interp.c)
- </pre><h3><a name="5.91_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - If the extension of a font file name on GS_FONTPATH included any
- upper-case characters, the font would not be found. (lib/gs_fonts.ps)
- Allows fontmaps to contain <string> run or .runlibfile, to get rid of the
- Fontmap -> Fontmap.GS link that VMS can't handle. (lib/gs_fonts.ps)
- </pre><h3><a name="5.91_PDF_writer"></a>PDF writer</h3><pre>
- Fixes problems:
- - Very long arguments for pdfmark caused an ioerror, because the
- buffer used for converting them was fixed-length. (lib/gs_pdfwr.ps)
- - pdfmarks couldn't refer to objects that hadn't been defined yet.
- (gdevpdfx.h, gdevpdfo.c)
- - When a DOCVIEW pdfmark added an OpenAction key to the Catalog,
- it omitted the / before the name. (gdevpdfm.c)
- - Font resources could be written in the middle of a page contents
- stream. (bug introduced in 5.90) (gdevpdff.c, gdevpdfu.c)
- - As usual, there were some signed/unsigned char * mismatches that
- gcc didn't detect. (gdevpdff.c, gdevpdfm.c, gdevpdfo.c)
- - Fonts used on a page but freed before the end of the page were
- omitted from the page's resource dictionary. (gdevpdfx.h, gdevpdf.c,
- gdevpdff.c, gdevpdft.c)
- - /D or /Dest keys in Action pdfmark dictionaries dropped the first
- character of their value. (gdevpdfm.c)
- - If a pdfmark added annotations to a page after the end of that
- page had been reached, those annotations would be lost. (gdevpdf.c)
- - ANN, LNK, DEST, and PS pdfmarks ignored the object name, if any.
- (Only OBJ and BP processed the name.) Unfortunately, fixing this required a
- complete overhaul of the way that resources and PDF objects were represented
- internally. The result is both simpler and more general, but it involved a
- major upheaval in the PDF writer code. (lib/gs_pdfwr.ps, gdevpdfo.h,
- gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c,
- gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
- - EP pdfmarks didn't close any open text context. (gdevpdfm.c)
- Adds debugging code to check the consistency of the embedded Type 1 font
- writer. (gdevpdff.c)
- Makes /A and /F at the top level of an annotation or outline pdfmark
- equivalent to /Action and /File respectively. See the code for more
- information. (gdevpdfm.c)
- </pre><h3><a name="5.91_Library"></a>Library</h3><pre>
- Fixes problems:
- - Degenerate Bezier curves could cause a division by zero.
- (gxpcopy.c)
- - Some macros used in non-FPU configurations were missing some
- needed uses of const, and in one case an additional cast. (gxfarith.h,
- gxfixed.h)
- Changes the discard macro to upper-case. (stdpre.h)
- </pre>
- <hr>
- <h2><a name="Version5.90"></a>Version 5.90 (beta) (8/20/99)</h2>
- <p>
- This is the first real candidate for the 6.0 release. It does not fix all
- known bugs, but it includes all planned functionality. New in this fileset:
- <ul>
- <li> - FunctionType 4 for PDF files.
- <li> - Alternate printer images for PDF files (-dUsePrinterImages
- switch).
- <li> - pdfwrite support for PDF "Cos objects" (without compression for
- streams).
- <li> - pdfwrite support for graphics objects named with BP/EP/SP
- (without compression for the object definition).
- <li> - pdfwrite font subsetting and embedded TrueType fonts.
- </ul>
- <h3><a name="5.90_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - ref_stack_init now takes an additional argument.
- - no_time_slice_proc is removed -- use 0 instead.
- (Library)
- - Notification client procedures and the gs_notify_ procedures
- take different arguments.
- - The common part of a gs_function_t structure has changed.
- - gs_text_enum_init now returns a value that can indicate an error.
- - The font font_info procedure now takes an additional argument.
- - The IODevice open_device procedure is now defined as returning
- 0 or 1 under specific circumstances.
- - gxp1fill.h is renamed gxp1impl.h.
- - Allocators now have an additional procedure they must implement,
- and a state member they must initialize.
- - Most of the gs..basic.. structure definition macros have been
- renamed. The ptrs1_stringsN structure definition macros are removed.
- - Implementations of the text API now must provide a resync
- procedure rather than a restart procedure.
- </pre><h3><a name="5.90_Documentation"></a>Documentation</h3><pre>
- Documents the new -dUsePrinterImages switch, and the expanded meaning of
- -Z~. (doc/Use.htm)
- Updates FSF's address in documentation. (lib/Fontmap.GS, lib/Fontmap.Sol,
- gdevcd8.c)
- Brings the PDF writer (ps2pdf) documentation up to date. (doc/Ps2pdf.htm)
- Updates the current-release documentation. (doc/Current.htm,
- doc/Readme.htm)
- Updates the problem-reporting procedure for contributed drivers, and some
- other new-user information. (doc/New-user.htm)
- </pre><h3><a name="5.90_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - Because of a typo, the file gs_mgl_e.ps wasn't installed (on Unix
- systems) by 'make install'. (unixinst.mak)
- - The .dev files for drivers didn't depend on devs.mak. (devs.mak)
- - The X driver didn't include a needed dependency on the bbox
- device. (devs.mak)
- Incorporates the pdfmin package into the pdf package, since pdfmin was only
- provided for very small-memory environments and is no longer useful.
- (int.mak)
- Adds additional prototype-checking switches, which are important on 64-bit
- platforms and useful on all platforms, to the gcc compilation line.
- (unix-gcc.mak)
- </pre><h3><a name="5.90_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - A backquote was misplaced in the Unix ps2pdf script. (lib/ps2pdf)
- - Some example files didn't have %! headers. (examples/alphabet.ps,
- examples/waterfal.ps)
- - ansi2knr didn't handle preprocessor directives within a function
- header. (ansi2knr.c)
- Cleans up some minor compiler complaints. (genarch.c, genconf.c, echogs.c)
- </pre><h3><a name="5.90_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The PostScript writer sometimes failed to reset the clip path,
- causing parts of the output to be omitted or to appear incorrectly.
- (gdevvec.c)
- - There was a type mismatch in a conditional. (gdevxini.c)
- - A constant array wasn't declared as static. (gdevpsdt.c)
- - Once again, there were some signed / unsigned char mismatches that
- gcc apparently can't be forced to detect. (gdevpsdt.c)
- - The alternative X drivers didn't have GC descriptors, which could
- lead to memory corruption. (gdevxalt.c)
- - The alternative X drivers didn't handle the closing of the
- underlying X driver correctly, leading to a dangling pointer. (gdevxalt.c)
- - Font subsetting didn't eliminate duplicate glyphs (glyphs
- referenced more than once from the Encoding vector.) (gdevpsd1.c,
- gdevpsdt.c)
- - Type 1 font subsetting didn't ensure the presence of .notdef.
- (gdevpsd1.c)
- - The embedded TrueType font writer wrote all 16-bit values
- incorrectly. This could explain a lot! (gdevpsdt.c)
- Cleans up public functions with no previous prototype. (gdevtfax.h,
- gdevx.h, gdevdfax.c, gdevtfax.c, gdevx.c, gdevxini.c, gdevxxf.c)
- Adds some procedures to support font subsetting. (gdevpsdf.h, gdevpsdf.c)
- Adds an alternate font name for writing TrueType fonts. (gdevpsdt.c)
- Makes the TrueType font writer generate an OS/2 table, a Macintosh cmap, and
- a name table (for the font name), as well as a Windows cmap and post, if
- necessary. (gdevpsdf.h, gdevpsdt.c)
- </pre><h3><a name="5.90_Platforms"></a>Platforms</h3><pre>
- Updates a couple of clients for the change in the IODevice open_device
- procedure, eliminating some undesirable externs. (gp_msio.c, gp_os2.c)
- </pre><h3><a name="5.90_Fonts"></a>Fonts</h3><pre>
- Adds OS/2 and maxp to the list of tables that must be preserved when loading
- TrueType fonts. (lib/gs_ttf.ps)
- Registers the complete lists of glyphs in the Adobe Latin fonts as
- pseudo-encodings. (lib/gs_lgo_e.ps, lib/gs_lgx_e.ps, unixinst.mak)
- </pre><h3><a name="5.90_PDF_writer"></a>PDF writer</h3><pre>
- Fixes bugs:
- - One built-in font was sometimes substituted for another.
- (gdevpdff.c)
- - Use of composite fonts often produced a rangecheck error.
- (gdevpdft.c)
- - The structures for named objects were freed twice. (gdevpdfx.h,
- gdevpdf.c, gdevpdfo.c)
- - The code to avoid writing a blank between a Td command and
- following text was fragile and still incorrect after being "fixed" twice.
- We removed this minor optimization, at a small cost in file size when not
- compressing. (gdevpdft.c)
- - No Names tree was generated for named destinations specified as
- strings. Rather than do this, we now convert string destinations to names.
- This doesn't scale up well, but it is simple and also is compatible with all
- PDF versions from 1.1 on. (gdevpdfm.c)
- - Fonts that define characters incrementally, such as the TrueType
- fonts written by some versions of the AdobePS Windows driver, could omit
- characters if embedded. Fixing this required delaying writing out fonts
- until the font was about to be freed or the writer was closed. (gdevpdfx.h,
- gdevpdff.c, gdevpdft.c)
- Cleans up public functions with no previous prototype. (gdevpdfx.h,
- gdevpdf.c, gdevpdfm.c)
- Updates client code for the change in gs_text_enum_init. (gdevpdft.c)
- Makes some changes towards handling show operations that must be split up
- internally into multiple operations using different fonts. (gdevpdfx.h,
- gdevpdff.c, gdevpdft.c)
- Implements the PUT pdfmark for the built-in objects (Catalog, DocInfo,
- Page<#>, ThisPage, PrevPage, NextPage). This required deferring writing out
- page objects until the end of the document. (lib/gs_pdfwr.ps, gdevpdfx.h,
- gdevpdf.c, gdevpdff.c, gdevpdfm.c, gdevpdfo.c, gdevpdfu.c)
- Adds table entries, but not parsing, checking, or functionality, for the new
- Acrobat 4 pdfmarks related to document logical structure. (gdevpdfm.c)
- Implements stream-type Cos objects. (lib/gs_pdfwr.ps, gdevpdfx.h,
- gdevpdf.c, gdevpdfm.c, gdevpdfo.c, gdevpdfp.c, gdevpdfu.c)
- Implements BP/EP/SP pdfmarks. (gdevpdfx.h, gdevpdf.c, gdevpdfi.c,
- gdevpdfm.c)
- Changes enumeration and #defined names to upper case, and adds _t to type
- names. (gdevpdfx.h, gdevpdf*.c)
- Adds an OS/2 table for embedded fonts if missing. (gdevpdff.c)
- Makes the allocator for the PDF device's internal structures be the stable
- allocator of the device's allocator, not the C heap. This required
- correcting a number of GC descriptors. (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
- Replaces the text restart procedure with the new resync procedure.
- (gdevpdft.c)
- </pre><h3><a name="5.90_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Failure to find a font in the Resources dictionary signalled an
- /undefinedfont error (which does not exist) rather than /invalidfont.
- (lib/pdf_font.ps)
- Implements FunctionType 4 functions. (lib/pdf_draw.ps, zfunc4.c)
- Implements the -dUsePrinterImages switch to use "alternate" printer images
- when rendering. (lib/pdf_draw.ps)
- </pre><h3><a name="5.90_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Some pointers were declared as ref * that actually could be
- ref_packed *, potentially confusing compilers that follow the new, stricter
- ANSI C rules about alignment aliasing. (idebug.h, idebug.c, igc.c,
- igcref.c, zmisc.c)
- - cshow didn't restore the root font after executing the procedure,
- producing incorrect results if the procedure did a setfont. (ichar.h,
- zcfont.c, zchar.c)
- - A needed const-breaking cast was omitted. (zmisc.c)
- - The memory validator could cause an unaligned access. (ilocate.c)
- - restore could free parts of the stacks that were still in use. We
- fixed this long-standing problem using the new concept of stable allocators.
- (interp.c)
- Moves the implementation of the abs operator to C, required for FunctionType
- 4 support. (lib/gs_init.ps, zarith.c)
- Makes more operator procedures public, required for FunctionType 4 support.
- (zarith.c, zmath.c, zrelbit.c, ztype.c)
- Adds an additional parameter to ref_stack_init, to allow creating a
- temporary stack without having an allocator. (istkparm.h, istack.h,
- interp.c, istack.c)
- Cleans up public functions with no previous prototype. (files.h, ichar.h,
- icstate.h, ifilter2.h, ifrpred.h, ifwpred.h, igcstr.h, iimage.h, iimage2.h,
- iinit.h, imain.h, interp.h, iscanbin.h, ivmem2.h, oparc.h, opextern.h,
- icontext.c, igc.c, iinit.c, imain.c, inobtokn.c, interp.c, iscan.c,
- iscanbin.c, zchar.c, zcharout.c, zcolor.c, zcolor1.c, zcontrol.c, zdevice.c,
- zdpnext.c, zdps.c, zfdecode.c, zfile.c, zfilter2.c, zfont0.c, zfunc0.c,
- zfunc3.c, zfzlib.c, zgeneric.c, zht1.c, zht2.c, zimage.c, zimage2.c,
- ziodev.c, zmath.c, zpath1.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
- Updates client code for the tweak in the definition of the IODevice
- open_device procedure. (ziodev.c)
- Implements stable local and global VM allocators. This required changing
- more places than we would have liked. (ialloc.c, igc.c, ilocate.c, imain.c,
- interp.c, ireclaim.c, isave.c, zcontext.c)
- Removes the global member of gs_ref_memory_t, since it isn't used.
- (gxalloc.h, ialloc.c, zcontext.c)
- Adds more tracing to the relocation phase of the garbage collector.
- (igcref.c)
- </pre><h3><a name="5.90_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - jpeg_open_backing_store no longer had the correct arguments.
- (This had no effect in practice, since the procedure was never called.)
- (sjpegc.c)
- Cleans up public functions with no previous prototype. (scfdgen.c,
- scfetab.c, sjpegc.c, slzwce.c, slzwd.c, stream.c)
- Adds some tracing to the image scaling stream. (siscale.c)
- </pre><h3><a name="5.90_Library"></a>Library</h3><pre>
- Fixes bugs:
- - A null OutputFile name could cause an error. (gxdevice.h,
- gsdevice.c, gsfname.c)
- - Shading with non-monotonic Functions produced incorrect output.
- (gxshade1.c)
- - An #undef didn't match the #define it was supposed to cancel.
- (gxchar.c)
- - The default next_char_glyph procedure didn't handle FROM_CHARS or
- FROM_SINGLE_CHAR data sources. (gstext.c)
- - When finalizing a forwarding device, the target pointer in the
- device wasn't cleared, leading to an incorrect attempt to access it later.
- (gdevnfwd.c)
- - Interpolated images were broken, probably since 5.81.
- (gxiscale.c)
- - Some color space implementation procedures hadn't been updated to
- add 'const' to the color space argument. (gscie.c)
- - A constant had a signed/unsigned ambiguity on systems where
- sizeof(long) > 4. (gsccode.h)
- - The font font_info procedure didn't provide for scaling.
- (gxfont.h)
- Simplifies the notification mechanism to remove the concept of client and
- generating object. Registration now just takes a closure (procedure +
- opaque data); events pass the closure data and event data. (gsnotify.h,
- gsfont.c, gsnotify.c)
- Changes gs_notify_unregister so that it can unregister all registrations of
- a particular client rather than only one. (gsnotify.h, gsnotify.c)
- Adds support for "vanilla" Functions at the library level. (gsfunc.h,
- gsfunc.c)
- Adds some tracing for Functions. (gsfunc3.c)
- Redefines function monotonicity to indicate whether the function is
- increasing or decreasing, and implements monotonicity correctly for all
- FunctionTypes except 4. (gsfunc.h, gxfunc.h, gsfunc0.c, gsfunc3.c)
- Makes Type 0 fonts check that they are being used with a string, not a
- character or (a) glyph(s). (gxtext.h, gschar.c, gschar0.c, gstext.c,
- gxchar.c)
- Cleans up public functions with no previous prototype. (gdevmem.h,
- gpcheck.h, gscie.h, gserror.h, gsmemory.h, gxcie.h, gxcldev.h, gxclpath.h,
- gxcmap.h, gxcspace.h, gxfixed.h, gxfont0.h, gxp1fill.h [deleted],
- gxp1impl.h, math_.h, std.h, gconf.c, gdevdrop.c, gdevm1.c, gdevm2.c,
- gdevm4.c, gdevm8.c, gdevm24.c, gdevmr1.c, gdevmr2n.c, gdevprn.c, gsbittab.c,
- gscdef.c, gscie.c, gsciemap.c, gscspace.c, gscscie.c, gsdevmem.c,
- gsdparam.c, gshtscr.c, gsimpath.c, gsiodev.c, gsmisc.c, gsnorop.c, gspath.c,
- gspcolor.c, gsptype1.c, gsropc.c, gsutil.c, gxacpath.c, gxclist.c,
- gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c, gxiscale.c,
- gxp1fill.c, gxpath2.c)
- Gets rid of some remaining vestiges of 16-bit ints. (gdevm1.c, gsbitops.c)
- Adds procedures to register clients for notification when a font is freed.
- (gxfont.h, gsfont.c)
- Defines the IODevice open_device procedure as returning 1 if it opened a new
- stream, 0 if it returned an existing stream. This eliminates some awkward
- externs.
- Adds the concept of a stable allocator -- an allocator that allocates from
- the same heap and in the same VM space as another allocator, but is not
- subject to save and restore. (gsmemory.h, gsmemraw.h, gsalloc.c,
- gsmalloc.c, gsmemlok.c, gsmemret.c, gsnogc.c)
- Adds some new macros to make defining new kinds of fixed-format structures
- simpler. (gsstruct.h)
- Replaces the text processing restart procedure with a more general resync
- procedure, which can be used to restart partway through a string. We retain
- gs_text_restart for backward compatibility and general usefulness.
- (gstext.h, gxtext.h, gdevbbox.c, gstext.c, gxchar.c)
- Adds the Adobe Latin glyph sets as pseudo-encodings. (gsccode.h)
- </pre>
- <hr>
- <h2><a name="Version5.88"></a>Version 5.88 (tester) (8/3/99)</h2>
- <p>
- This fileset adds the ability to reference and embed TrueType fonts in PDF
- output. Unfortunately, even though the resulting PDF files work fine with
- Ghostscript itself, Acrobat Reader apparently can't handle embedded TrueType
- fonts with non-standard Encodings. We hope to fix this problem during the
- 6.0 beta test period.
- <p>
- This fileset also adds the ability to buffer X Windows output in a
- client-side bitmap. This is typically more efficient than trying to push
- many small commands through the X client/server knothole, especially if
- bitmap images or RasterOp are involved.
- <p>
- Some reported problems have been deliberately left unfixed: we will need
- every minute of the 13 days before the start of the 6.0 beta test period to
- implement the last few items of functionality scheduled for the 6.0 release,
- and we can fix problems (but not add functionality) during the beta test
- period.
- <h3><a name="5.88_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - The box_device member of the bbox device is replaced by the
- box_data member, with a different meaning.
- - The x_rect structure is removed; all uses are changed to
- gs_int_rect.
- - gdevpstr.h is renamed spprint.h.
- - The parameter printing procedures are moved from gdevpsdf.[hc] to
- spsdf.[hc].
- - Clients must now allocate gs_font* objects using gs_font_alloc or
- gs_font_base_alloc, not directly with gs_alloc_struct.
- - The first (vptr) argument of enum_ptrs procedures is now const *.
- EV_CONST is no longer defined.
- - The pep argument of enum_ptrs procedures is now enum_ptr_t *
- rather than const void **.
- - The font glyph_pieces procedure is replaced with an option for
- glyph_info.
- - The font encode_char procedure now takes an additional glyph_space
- argument.
- - The o_large flag in object headers is renamed o_alone; o_lmark and
- o_lsize no longer exist. The DO_LARGE and DO_SMALL macros for enumerating
- objects in a chunk are also removed.
- </pre><h3><a name="5.88_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - News entries since 5.72 had a missing <li> in the table of
- contents entry. (doc/News.htm)
- - gs_text_params_t still referred to REPLACE_X_WIDTHS and
- REPLACE_Y_WIDTHS rather than REPLACE_WIDTHS. (gstext.h)
- Clarifies that the font glyph_outline procedure must append a final moveto
- for the advance width. (gxfont.h)
- Clarifies that the font enumerate_glyph procedure enumerates glyphs in an
- unpredictable order. (gxfont.h)
- Documents that reference counted freeing procedures for structures with
- finalization must free the structure itself first rather than last.
- (gsrefct.h)
- Updates documentation on building Ghostscript on MS-DOS and MS Windows.
- (doc/Make.htm)
- Adds some documentation on how the makefiles are / should be structured.
- (doc/Source.htm)
- Documents the new parameters for the X driver. (doc/Use.htm)
- Updates the language documentation to refer properly to PostScript
- LanguageLevel 3 and PDF 1.3. (doc/Language.htm)
- </pre><h3><a name="5.88_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - An omitted space in a makefile caused an incompatibility with the
- VMS build utilities. (lib.mak)
- - The gsindent script was omitted from the fileset. (gsindent)
- - The core library didn't include stream.c, which is now required.
- (lib.mak)
- - The workaround for the peculiarities of the Watcom compiler's
- command line syntax didn't work. (zlib.mak)
- - A DOS command line overflowed in the makefile. We patched this by
- deleting the bmpgray device from the Borland Windows platform.
- (bcwin32.mak)
- Provides a .lnk file required by the revised linking procedures on MS
- Windows. (gsdll32w.lnk)
- Straightens out the Watcom makefiles so that it is possible to build a
- Windows executable and DLL using the Watcom compiler. This required moving
- some parameters around in the other PC makefiles. (bcwin32.mak,
- msvccmd.mak, watc.mak, watcw32.mak, wccommon.mak, winint.mak, winlib.mak)
- </pre><h3><a name="5.88_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The X driver reported the wrong parameter name for errors in the
- value of the WindowID or .IsPageDevice parameter. (gdevxini.c)
- - The X driver calculated the Y window dimension incorrectly when
- resizing the window if X and Y resolutions were different. (Never happens
- in practice.) (gdevxini.c)
- - The bmpasep8 device was defined as gx_device_printer rather than
- gx_device_async. (gdevbmpa.c)
- - Some casts between signed and unsigned char * were missing.
- (gdevpdff.c, gdevpdft.c)
- - The PDF writer didn't handle reencoded characters properly in
- non-embedded fonts. (gdevpdfx.h)
- - The PDF writer allocated new structures while being closed,
- causing memory corruption if the close procedure was called for
- finalization. (gdevpdff.c, gdevpsd1.c)
- - The PDF writer tried to close the resource file twice. (bug
- introduced since 5.50) (gdevpdf.c)
- - The PDF writer failed to work around a bug in Acrobat 3 Reader's
- Print function related to re-encoded fonts. (gdevpdft.c)
- - The PDF writer incorrectly specified ASCII85Encode rather than
- ASCII85Decode for non-binary embedded fonts. (gdevpdff.c)
- - The PDF writer didn't handle embedded fonts with a non-standard
- FontMatrix correctly. (gdevpdft.c)
- - The PDF writer didn't handle reassigned characters correctly.
- (gdevpdft.c)
- - When embedding a Type 1 font, the PDF writer didn't check that the
- font contains only CharStrings (no PostScript procedures), no non-standard
- OtherSubrs, and no CDevProc. (gdevpsd1.c)
- - There was an unused label in the mswinpr2 driver. (gdevwpr2.c)
- - The X driver didn't flush buffered output before reading back
- bits from the display. (gdevx.c)
- - The X driver still didn't set up the color mapping tables
- correctly -- in particular, it didn't initialize cman.color_to_rgb before
- setting up the dither ramp or cube. This is at least the third time we have
- "fixed" this problem. (gdevxcmp.c)
- Removes the remaining uses of gs_malloc, gs_free, and gs_memory_default from
- Aladdin's non-display drivers. (gdevbit.c, gdevbmp.c, gdevbmpa.c,
- gdevcgm.c, gdevclj.c, gdevcljc.c, gdevdjet.c, gdevlj56.c, gdevmiff.c,
- gdevpbm.c, gdevpcx.c, gdevpng.c, gdevpsim.c, gdevtfax.c, gdevtfnx.c,
- gdevxalt.c)
- Adds a MaxBitmap parameter to the X driver: the driver will maintain a
- full-window pixmap in memory if it requires no more space than MaxBitmap.
- The default value of this parameter is 0, meaning never use a client-side
- bitmap. (gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
- Moves the X device closing and get/put parameters procedures from gdevx.c to
- gdevxini.c. (gdevx.c, gdevxini.c)
- Removes some remaining uses of gs_malloc and gs_free from the X driver.
- Note that this requires making the X device structure properly
- garbage-collectable. (gdevx.h, gsstruct.h, gdevxini.c)
- Removes the remaining uses of 'register' from the X driver. (gdevx.c,
- gdevxini.c)
- Removes the remaining uses of the obsolete far_data keyword from Aladdin's
- non-PC drivers. (gdevbmp.c, gdevbmpa.c, gdevcgm.c, gdevlj56.c, gdevmiff.c,
- gdevp2up.c)
- Improves the X driver's algorithm for deciding when to update the screen,
- and makes its parameters available for reading and setting. (gdevx.h,
- gdevx.c, gdevxini.c)
- In the X driver's color mapper, improves performance slightly by replacing
- multiplies and divides with shifts and table lookups in the normal case of
- standard color maps. (gdevxcmp.h, gdevxcmp.c)
- Moves some filter-related code from the driver level to the stream level.
- (gdevpsdf.c)
- Moves some utilities for printing values in ASCII form from the driver level
- to the stream level. (devs.mak, gdevpdfx.h, gdevpstr.h [deleted], gdevps.c,
- gdevpsde.c, gdevpsdf.c, gdevpsdp.c, gdevpstr.c [deleted])
- Upgrades the PDF writer to handle TrueType fonts as well as Type 1.
- (gdevpdfx.h, gdevpsdf.h, gdevpdff.c, gdevpdft.c, gdevpsde.c => gdevpsd1.c,
- gdevpsdt.c)
- Starts to implement font subsetting in the PDF writer. (gdevpdfx.h,
- gdevpsdf.h, gdevpdff.c, gdevpsd1.c, gdevpsdt.c)
- Partially implements WMode when writing font descriptors. (gdevpdff.c)
- Changes psdf_binary_writer so that adding the ASCII85 filter in
- psdf_begin_binary doesn't require allocating any memory. (gdevpsdf.h,
- gdevpsdf.c)
- Makes the PDF writer guess the Ascent and StemV values for embedded fonts
- when it can't determine them by examining the font. (gdevpdff.c)
- Makes the PDF writer able to handle xshow and yshow (TEXT_REPLACE_WIDTHS).
- (gdevpdft.c)
- Updates code to reflect the addition of glyph_space to the font encode_char
- and enumerate_glyph procedures. (gdevpsdf.h, gdevpdff.c, gdevpdft.c,
- gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
- Removes some unnecessary #includes. (gdevxres.c)
- Removes the sample driver-based CRD from the variant X drivers, since this
- created a pointless dependency. (The `bit' drivers still provide this
- feature, for testing.) (gdevxalt.c)
- Changes the default compatibility level of PDF output from 1.2 (Acrobat 3)
- to 1.3 (Acrobat 4). (gdevpdf.c)
- </pre><h3><a name="5.88_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - A comment included an extra /*. (gp_mswin.c)
- - The definitions for min and max in a couple of files disagreed
- with the ones typically provided in system header files. (dwimg.cpp,
- dwtext.cpp)
- Removes some unnecessary code related to generating temporary file names.
- (gp_iwatc.c)
- </pre><h3><a name="5.88_Fonts"></a>Fonts</h3><pre>
- Changes the loader for TrueType fonts to keep the 'instructions', which are
- required if the font is going to be written out in a PDF file.
- (lib/gs_ttf.ps)
- Adds some more debugging output to the TrueType font loader.
- (lib/gs_ttf.ps)
- Registers the MacGlyphEncoding so it can be made available to the PDF
- writer. (lib/gs_mgl_e.ps, lib/gs_ttf.ps, unixinst.mak, gsccode.h, ifont.h)
- </pre><h3><a name="5.88_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - The serif and small-caps flags in the FontDescriptor were ignored
- when doing font substitution. (lib/gs_fonts.ps, lib/pdf_font.ps)
- - The ri operator was undefined. We added a dummy definition.
- (lib/pdf_ops.ps)
- - The redefinitions of restore could cause a recursion loop.
- (lib/gs_fform.ps, lib/gs_lev2.ps)
- - There was an extra gsave executed for each page, causing the
- graphics state stack to grow deeper and deeper, which caused problems when
- wrapping up at the end of execution. (lib/pdf_main.ps)
- Implements the sh operator. (lib/pdf_draw.ps)
- Works around a bug in some PDF files generated by Adobe's PDF library (?),
- which attempt to create a font Encoding array with more than 256 elements.
- (lib/pdf_font.ps)
- </pre><h3><a name="5.88_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The GNU readline completion code (which Aladdin did not write) was
- completely wrong. (gp_gnrdl.c)
- - The top-level restore sometimes tried to restore global VM an
- extra time, leading to memory corruption. (bug probably introduced in 5.85)
- (isave.c)
- - The glyph_ref procedure was defined in two different places
- (inconsistently). (ichar.h, zchar.c, zchar1.c)
- Restructures the name table to improve cache coherence and to make it
- possible to store initial name strings in ROM. (iname.h, inamedef.h,
- inames.h, inamestr.h, igc.c, iname.c, isave.c)
- Changes the scanner so it doesn't copy name strings when scanning a compiled
- init string. This reduces RAM requirements by about 20K when using compiled
- initialization. (iscan.c)
- Removes redundant FontBBox correction code, since this is now handled by the
- library. (zfont42.c)
- Updates the Type 1 and Type 42 font code to implement the new font
- procedures. (icharout.h, zcharout.c, zchar1.c, zchar42.c, zfont1.c,
- zfont42.c)
- Simplifies the code that checks whether a grestore needs to do a
- setpagedevice. (zdevice2.c)
- Updates code to reflect the change of the vptr argument of enum_ptrs
- procedures to const *. (igcref.c)
- Updates code to reflect the change in the pep argument of enum_ptrs
- procedures to enum_ptr_t *. (igc.h, iscan.h, istruct.h, igc.c, igcref.c,
- ilocate.c, iscan.c)
- Updates code to reflect the addition of glyph_space to the font encode_char
- and enumerate_glyph procedures. (bfont.h, ifont.h, zbfont.c, zfont1.c,
- zfont32.c, zfont42.c)
- Cleans up some code details. (idebug.h, ifunc.h, iparray.h, istream.h,
- zfunc.c)
- Removes some no longer needed test code. (zfont1.c)
- Updates memory manager code to reflect the change from o_large to o_alone.
- (igc.c, igcref.c, ilocate.c, isave.c)
- Changes the printed font substitution message to be closer to what some
- Adobe products print if SHORTERRORS is defined. (Thanks to Andrew Chilvers
- for the suggestion.) (lib/gs_fonts.ps)
- </pre><h3><a name="5.88_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - The fix in 5.85 for ASCII85Encode EOLs was wrong and caused a word
- of data to be dropped occasionally. (sfilter2.c)
- Moves some filter-related code from the driver level to the stream level.
- (stream.h, stream.c)
- Moves some utilities for printing values in ASCII form from the driver level
- to the stream level. (lib.mak, spprint.h, spsdf.h, spprint.c, spsdf.c)
- Adds some more tracing output for image scaling. (siscale.c)
- </pre><h3><a name="5.88_Library"></a>Library</h3><pre>
- Fixes problems:
- - The bbox device's check for whether a rectangle filled the entire
- page was wrong. (gdevbbox.c)
- - The bbox device didn't correctly handle parallelograms, triangles,
- or thin lines with points specified in other than ascending order.
- (gdevbbox.c)
- - The bbox device smashed the reference count of the text enumerator
- it created, causing a memory leak. (gdevbbox.c)
- - The bbox device didn't copy back all the dynamic information from
- a subsidiary text enumerator, with unpredictable results. (gxtext.h,
- gdevbbox.c, gstext.c)
- - The default implementation of glyph_info for fonts incorrectly
- reported that it returned values for all members, not just the ones it knew
- about. (gsfont.c)
- - The profiling implementation of memset was incorrect, leading to
- memory smashing. (gsmisc.c)
- - The default implementation of glyph_info had a memory leak.
- (gsfont.c)
- - The default implementation of character rendering didn't correctly
- handle the case where the character was in the cache and only the character
- width was requested. (gxchar.c)
- - Text processing didn't correctly handle REPLACE_WIDTHS if the X
- and Y width arrays were different. (The PostScript interpreter never does
- this.) (gstext.h, gstext.c, gxchar.c)
- - Compositing devices weren't initialized properly, leading to
- invalid accesses. This is the last (?) bit of the device reference counting
- bug tail. (gsalphac.c, gsropc.c)
- Changes the bbox device to make the procedures for managing the bounding box
- virtual, so the X device can be a subclass. (gdevbbox.h, gdevbbox.c)
- Changes the bbox device so it always adds the bounding box after doing the
- drawing operation rather than before, for the benefit of the buffering X
- device. (gdevbbox.c)
- Removes some remaining uses of gs_memory_default. (gdevdrop.c)
- Removes all uses of the obsolete far_data keyword from the library.
- (gconf.c, gdevbbox.c)
- Changes the bbox device so it doesn't run drawing algorithms twice if it has
- a target that uses the default implementation. (gdevbbox.c)
- Speeds up the implementation of fill_rectangle for 16-bit memory devices.
- (gdevm16.c)
- Makes TrueType fonts implement the new font procedures. (gxfont42.h,
- gxmatrix.h, gsmatrix.c, gstype42.c)
- Adds a gs_id to gs_font objects, so that fonts with the same name can be
- distinguished reliably without relying on the address. (gxfont.h, gsfont.c)
- Makes the vptr argument of enum_ptrs procedures be const *. This is a
- long-overdue change. (gsstype.h, gxxfont.h, gsalloc.c, gsfont.c,
- gsmemory.c) ****** REDO THE CONST-BREAKING CASTS IN gsfont.c ******
- Changes the pep argument of enum_ptrs from const void ** to enum_ptr_t *, to
- get rid of some hacks in enum_ptrs implementations that had to construct
- temporary gs_strings. (gsstruct.h, gsstype.h, gstext.h, gsalloc.c,
- gscolor2.c, gsfont.c, gsmemory.c, gstext.c)
- Adds a general mechanism that provides for an arbitrary number of clients to
- be notified when an event occurs. For the moment, we only use it to notify
- PDF writers when a font is about to be freed. (gsnotify.h, gsnotify.c)
- Makes fonts use the new notification mechanism to notify clients when the
- font is about to be freed. (gxfont.h, gsfont.c)
- Adds a gs_text_set_cache procedure to parallel restart and retry.
- (gstext.h, gxtext.h, gstext.c)
- Adds a glyph_space argument to the font encode_char and enumerate_glyph
- procedures, so that clients can choose between glyph names and glyph indices
- in environments that use both. (gsccode.h, gxchar.h, gxfont.h, gxfont42.h,
- gsfont.c, gstype42.c, gxchar.c)
- Changes the bbox device so it optionally considers white to be opaque.
- (gdevbbox.h, gdevbbox.c)
- Cleans up some code details. (gshsb.h)
- Adds a hack to suppress warning messages from the Watcom compiler about
- testing constant values. (stdpre.h)
- Replaces the glyph_pieces font procedure with a GLYPH_INFO_PIECES option for
- glyph_info. (gxfont.h, gxfont42.h, gsfont.c, gstype42.c)
- Adds a font_info font procedure, similar to glyph_info but giving
- information about the font as a whole. (gxfont.h)
- In order to fix a bug in resizing large objects, gets rid of the concept of
- large objects entirely, replacing it with the concept of an 'alone' object
- that is guaranteed to be the only object in its chunk. (gxalloc.h, gxobj.h,
- gsalloc.c)
- Adds some more tracing output for interpolated images. (gxiscale.c)
- Adds a _long parameter setting procedure to parallel _bool, _enum, and _int.
- (gsparamx.h, gsparamx.c)
- </pre>
- <hr>
- <h2><a name="Version5.87"></a>Version 5.87 (tester) (6/29/99)</h2>
- <p>
- In this fileset, the pdfwrite device finally handles general Type 1 fonts,
- and can write them in both embedded and non-embedded form. This fileset
- also contains a few more changes to the text API, and some incompatible
- changes to the gs_font procedure vector: more such changes are likely. It
- also fixes a couple of long-standing pdfmark bugs.
- <p>
- NOTE: there are known problems in PDF output with non-embedded fonts (fonts
- represented only by a descriptor): some characters will be missing, and
- because of bugs in Acrobat's Print function, even more characters will be
- missing or wrong when printing from Acrobat. We will fix our problems, and
- work around Acrobat's bugs, in the next couple of filesets.
- <h3><a name="5.87_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - Text enumerators now have a release procedure.
- - gx_device_text_begin no longer stores its arguments into the
- enumerator: the driver text_begin procedure must do this.
- - The argument list for the font encode_char procedure no longer
- includes the enumerator, and the second argument is now a gs_char rather
- than a gs_char *.
- - The font next_char procedure is removed. (It has been obsolete
- for a while.) The next_glyph procedure is renamed next_char_glyph.
- - The first argument of the font init_fstack, build_char, and
- next_glyph procedures is changed from gs_show_enum * to gs_text_enum_t *.
- - gx_font_stack[_item] is renamed gx_font_stack[_item]_t.
- - New font procedures have been added, of which two (enumerate_glyph
- and glyph_outline) are required. The font procedure vector has been
- reorganized.
- - The Type 1 font next_glyph procedure is replaced by the gs_font
- enumerate_glyph procedure.
- - psdf_embed_type1_font is renamed psdf_write_type1_font, and has
- an additional argument.
- - psdf_alloc_param_printer takes slightly different arguments;
- print_binary_ok and print_ASCII85_ok are now upper-case.
- </pre><h3><a name="5.87_Documentation"></a>Documentation</h3><pre>
- Reorganizes the driver API documentation slightly, documents the fact that
- get_alpha_bits and draw_line are obsolete, and documents the driver text
- API. (doc/Drivers.htm)
- Documents an additional Irix configuration where the compiler doesn't work.
- (doc/Make.htm)
- </pre><h3><a name="5.87_Procedures"></a>Procedures</h3><pre>
- Moves the %pipe% IODevice into lib.mak, since it is now included on Windows
- as well as Unix. (lib.mak, unix-aux.mak)
- Adds the bmpgray driver to all platforms that include the other BMP drivers.
- (bcwin32.mak, msvc32.mak, os2.mak, unix-gcc.mak, watc.mak, watcw32.mak)
- </pre><h3><a name="5.87_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The PS and PDF writers didn't maintain the font embedding lists
- correctly. (gdevpsdp.c)
- - The CreationDate in PDF output was always set to the current date,
- and couldn't be set with a pdfmark. We now don't set CreationDate at all,
- since it is supposed to be the creation date of the original document, not
- of the PDF file. (gdevpdfm.c, gdevpdfu.c)
- - The Producer in PDF output couldn't be set with a pdfmark.
- (gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfu.c)
- - pdfmarks with /Action /GoTo incorrectly retained the Action key.
- (gdevpdfm.c)
- - pdfmarks didn't substitute /Dest => /D or /File => /F correctly.
- (gdevpdfm.c)
- Updates the PDF writer to use the new text API rather than the show
- pseudo-parameter. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
- Changes pdf_open_document so that it opens the document even if some
- resources have been allocated. (gdevpdf.c)
- Splits off pdfwrite utilities from top-level control, since the file was
- getting too big. (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
- When writing PDF, avoids resetting the word spacing parameter if the string
- doesn't contain any spaces, and the character spacing parameter if the
- string has no more than 1 character. (gdevpdft.c)
- Splits off PDF font handling from text handling, since the file was getting
- too big. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
- Implement both embedded and non-embedded fonts beyond the base 14 in the PDF
- writer. This code doesn't work very reliably yet. (gdevpdfx.h, gdevpdff.c,
- gdevpdft.c)
- Adds a bmpgray driver that produces 8-bit gray-scale output. (devs.mak,
- gdevbmp.c)
- Updates the PDF writer for changes in the gs_font procedure vector.
- (gdevpdff.c, gdevpdft.c)
- Updates the Type 1 font writer for changes in the gs_font procedure vector,
- and adds some output options. (gdevpsdf.h, gdevpsde.c)
- Changes the printing parameter list implementation to take all of its
- parametric arguments in the params structure, and changes the names of the
- options. (gdevpsdf.h, gdevpsde.c, gdevpsdf.c, gdevpdff.c, gdevpdfi.c,
- gdevpdfu.c)
- </pre><h3><a name="5.87_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Indexed color spaces didn't allow the base space to be an indirect
- reference. (lib/pdf_draw.ps)
- - The CS and cs operators didn't accept a literal color space name
- (as opposed to a color space resource name). (lib/pdf_draw.ps)
- - Some PDF 1.2 files had a SM entry in graphics state dictionaries,
- even though this is not documented and requires a LL3 interpreter.
- (lib/pdf_draw.ps)
- - Generated font names included a % character, which could cause
- problems for ps2pdf. (lib/pdf_font.ps)
- </pre><h3><a name="5.87_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The calculation of the final index when enumerating the pointers
- in a context state was incorrect. (source bug only, no effect on execution)
- (icontext.c)
- Updates the interpreter's glue code for the changes in the PDF writer.
- (lib/gs_pdfwr.ps)
- Updates a client to use gs_font_alloc. (zbfont.c)
- Updates clients for changes in the gs_font procedure vector. (zbfont.c,
- zchar1.c, zfont0.c, zfont1.c, zfont32.c)
- Updates a client for the change to psdf_write_type1_font. (zfont1.c)
- </pre><h3><a name="5.87_Library"></a>Library</h3><pre>
- Fixes problems:
- - Some code used rc_decrement_only instead of gx_device_retain.
- (Stylistic bug only.) (gschar.c)
- - The finalize procedure for the character cache device could get
- unset and/or the retained flag cleared, leading to a reference count not
- getting decremented. (gxccman.c)
- - Allocating a show enumerator didn't clear the show_gstate member.
- (Probably no effect in practice.) (gschar.c)
- - Cleaning up at the end of text processing was not consistent and
- sometimes didn't get done. The old API used explicit and separate client
- allocation (gs_show_enum_alloc), release (gs_show_enum_release), and freeing
- (gs_free_object); release, but not free, was automatic at the end of
- processing (in show_finish). The new API has allocation in gs_text_begin or
- gx_device_text_begin, no implicit release or free, and a single
- gs_text_release call to handle both release and free. Reconciling these
- required adding an auto_release flag in the gs_show_enum structure to
- indicate which API was used to create it, and a release procedure. (The
- auto_release flag is only needed for backward compatibility with clients
- that use the old API. Ghostscript itself no longer has such clients, but
- the PCL interpreters do.) (gxchar.h, gxtext.h, gdevbbox.c, gschar.c,
- gstext.c, gxchar.c)
- - We were burned once again by gcc's acceptance of private/public
- procedure mismatches. (gxchar.c)
- - A line break was missing between the return type and a procedure
- name. (gsstate.c)
- - Show enumerators had an incorrect GC descriptor. (gxchar.c)
- - Text enumerators didn't terminate their list properly. (gstext.c)
- Adds a debugging procedure that finds all the pointers to an object. This
- uses the GC's pointer enumeration procedures, so it will only work if all
- structures have correct GC descriptors. (Of course, we think this is true
- of all of Ghostscript.) The current implementation doesn't trace refs.
- (gsalloc.c)
- Removes remaining references from gxchar.c to procedures defined in
- gschar.c. The standard Ghostscript build now no longer needs gschar.c,
- although we will keep it for the moment for backward compatibility.
- (gschar.c, gxchar.c)
- Removes an obsolete reference to gs_show_enum. (gstype1.h)
- Adds definitions for the built-in encoding indices. (gsccode.h, gxfont.h,
- gxxfont.h)
- To make text_begin implementations callable, requires them, rather than
- gx_device_text_begin, to save their parameters in the enumerator structure.
- (gxtext.h, gstext.c, gxchar.c)
- Adds a TEXT_DO_CHARWIDTH alternative to the text operation, to just advance
- the current point by the character width (stringwidth rmoveto). (gscpm.h,
- gstext.h, gxchar.c, gxpath.c)
- Adds procedures to allocate and initialize fonts. (gxfont.h, gsfont.c)
- Starts to revise the gs_font procedure vector to create a real "font socket"
- API, adding several new procedures. This is a NON-BACKWARD-COMPATIBLE
- change, and there probably are more to come. (gxchar.h, gxfont.h, gsfont.c,
- gstext.c, gxchar.c)
- Moves the Type 0 font stack from gs_show_enum to gs_text_enum_t, and renames
- its types to gx_font_stack_[item_]t. Also moves cmap_code. (gxchar.h,
- gxtext.h, gschar0.c, gstext.c, gxchar.c)
- Moves the glyph enumeration procedure from Type 1 fonts to general fonts,
- changing its name to enumerate_glyph. (gxfont1.h)
- Changes the debugging code for reference counting to call procedures, to
- allow better breakpointing. (gsrefct.h, gsmemory.c)
- </pre>
- <hr>
- <h2><a name="Version5.86"></a>Version 5.86 (tester) (6/14/99)</h2>
- <p>
- This fileset includes the first batch of changes for the new driver-based
- text API. Unfortunately, a few of them are non-backward-compatible.
- WARNING: This API is UNSTABLE and should not be used yet. This includes the
- APIs and structures in gxtext.h, and to a lesser extent those in gstext.h.
- <h3><a name="5.86_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - The default initialization of fonts now sets next_glyph rather
- than next_char.
- (Library)
- - The font argument of the driver text_begin procedure is no
- longer declared as const.
- - Text enumerators now have a is_width_only and current_width
- procedures; the restart procedure is renamed retry, and there is a new
- restart procedure that does something different.
- - The scale member of gs_text_enum_t is renamed log2_scale.
- - gs_show_restore_font is removed.
- - The current_char, current_glyph, width, and log2_current_scale
- members of gs_show_enum are removed (replaced by members of gs_text_enum_t).
- - The current_width member of gs_text_enum_t is removed.
- - Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single
- TEXT_REPLACE_WIDTHS.
- </pre><h3><a name="5.86_Documentation"></a>Documentation</h3><pre>
- Fixes a number of outdated URLs. (doc/Devices.htm, doc/Fonts.htm,
- doc/Install.htm, doc/Language.htm, doc/Make.htm, doc/New-user.htm)
- Documents the name change from gs_iso_e.ps to gs_il1_e.ps.
- (doc/Psfiles.htm)
- Documents the fact that a double % may be needed on MS systems.
- (doc/Use.htm)
- Documents that reversepath discards a trailing moveto, for compatibility
- with Adobe implementations. (gxpath2.c)
- </pre><h3><a name="5.86_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - Some punctuation was omitted that affects builds on VMS systems.
- (gs.mak)
- - 'make install' didn't install doc/History5.htm. (unixinst.mak)
- - The Borland makefile put some generated files in the top-level
- directory rather than the build directory. (bcwin32.mak)
- Updates the Unix install script for the name change of gs_iso_e.ps.
- (unixinst.mak)
- Moves the GNU-licensed drivers to a separate makefile. (contrib.mak,
- gnu/src/gnudevs.mak)
- Adds pipe.dev to the BC++, MSVC++, and OS/2 (GCC/EMX) platforms.
- (bcwin32.mak, dvx-gcc.mak, msvc32.mak, msvclib.mak)
- </pre><h3><a name="5.86_Utilities"></a>Utilities</h3><pre>
- Fixes problems: - The usage message for pdf2ps was incorrect. (lib/pdf2ps,
- lib/pdf2ps.bat)
- </pre><h3><a name="5.86_Drivers"></a>Drivers</h3><pre>
- Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
- and RELOC_PTRS procedures. (gdevpdf.c, gdevpdfo.c)
- Adds a user-contributed driver for the Oki Data OkiPage 4w+ LED printer.
- This is a GPL'ed driver. (contrib.mak, gnu/src/gdevop4w.c)
- </pre><h3><a name="5.86_Platforms"></a>Platforms</h3><pre>
- Adds a %handle% IODevice (mshandle.dev) to recognize file names of the form
- %handle%NNNNNNNN under MS Windows. GSview uses this feature in place of
- pipes, which are an open industry standard not supported by MS Windows.
- (msvc32.mak, winlib.mak, gp_mshdl.c)
- </pre><h3><a name="5.86_Fonts"></a>Fonts</h3><pre>
- Adds the ISO 8859-2 encoding to the stock of built-in encodings.
- (lib/gs_il2_e.ps, lib/gs_iso_e.ps => lib/gs_il1_e.ps)
- </pre><h3><a name="5.86_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Using a colored pattern with an uncolored Pattern color space
- caused an error. (lib/pdf_draw.ps)
- - Embedded CIDFontType 2 fonts didn't work, and embedded TrueType
- fonts did an extra definefont. (lib/gs_ttf.ps, lib/pdf_font.ps,
- lib/pdf_ops.ps) ****** IN PROGRESS ******
- </pre><h3><a name="5.86_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Some files hadn't been updated for the removal of the gs_imemory
- static. (int.mak, gp_gnrdl.c, imain.c, ztrap.c)
- - %statementedit could append a spurious character if the last
- character of the statement was not whitespace. (bug probably introduced in
- 5.8x) (ziodev.c)
- - The show operators didn't properly handle the special case of
- executing within a cshow procedure for a non-CID font. (zchar.c)
- - cshow applied to a composite font didn't scale the current font
- correctly (in fact, at all). (zcfont.c)
- - If an error occurred within the procedure called by
- resourceforall, it wasn't reported. (lib/gs_res.ps)
- - flushfile and closefile didn't correctly handle filters that only
- write a fixed amount of data. (zfileio.c)
- - cshow didn't restore the font reliably after executing the
- procedure. (ichar.h, zcfont.c, zchar.c)
- - An execstackoverflow error might temporarily leave the execution
- stack in an invalid state. (interp.c)
- Cleans up some macros. (iname.c, isave.c, iscan.c)
- Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
- and RELOC_PTRS procedures. (icontext.c, iname.c, isave.c, iscan.c,
- istack.c, zcontext.c, zfproc.c)
- Adds a run-time warning message if gp_gnrdl.c is included in a non-GNU
- build. (gp_gnrdl.c)
- Converts clients to use the gs_text procedures that replace the gs_show
- procedures, and to use gs_text_enum_t rather than gs_show_enum as the
- enumerator type. (ichar.h, zbfont.c, zcfont.c, zchar.c, zchar1.c,
- zchar32.c, zchar42.c, zcharout.c, zcharx.c, zfont.c, zfont0.c, zfont1.c,
- zfont32.c, zimage.c, zimage2.c)
- Updates the initialization code for the name change of gs_iso_e.ps.
- (lib/gs_init.ps)
- Splits off the definitions relating to name indices, in anticipation of
- defining some name indices statically. (inamedef.h, inameidx.h, iname.c)
- </pre><h3><a name="5.86_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - The pixel-difference filters didn't initialize the previous sample
- to 0 at the beginning of each row. (spdiff.c)
- - The CCITTFaxDecode filter didn't correctly handle the case where
- the last code of a row occurred less than 7 or 8 bits before the end of the
- input stream. (scf.h, shc.h, scfd.c)
- - Flushing filters didn't work. (stream.c)
- - The DCTEncode filter gave an error if asked to write to a string
- with less than 100 bytes of free space left when the end of the input data
- was reached. (sdct.h, sdcte.c)
- Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
- and RELOC_PTRS procedures. (stream.c)
- Changes the ASCII85Encode stream to reliably insert a newline at least once
- every 80 characters, rather than unreliably after at most 80 characters of
- data. (sfilter2.c)
- Cleans up some formatting. (stream.c)
- </pre><h3><a name="5.86_Library"></a>Library</h3><pre>
- Fixes problems:
- - A client wasn't updated for the change in the declaration of
- gx_dht_proc. (bug introduced in 5.84) (genht.c)
- - When rendering a 12-bit-per-sample color image, the device color
- wasn't initialized, possibly causing a memory access error when comparing
- the current color with the previous one. (gxi12bit.c)
- - arch_floats_are_IEEE was incorrectly defined as
- arch_floats_are_ieee. (bug introduced in 5.83) (std.h)
- - Decoding of IEEE floats on non-IEEE systems was wrong. (ibnum.c)
- - The fast case of masked images in Pattern color spaces didn't
- work. (bug introduced since 5.50) (gxifast.c)
- - cshow gave an error if there was no current point. (gxchar.c)
- Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single TEXT_REPLACE_WIDTHS.
- (gstext.h, gstext.c)
- Cleans up some macros. (gdevddrw.c, gsfont.c, gsht1.c)
- Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
- and RELOC_PTRS procedures. (gdevddrw.c, gdevplnx.c, gsalloc.c, gschar.c,
- gscolor.c, gscolor2.c, gscrd.c, gscsepr.c, gscspace.c, gsdevice.c, gsdsrc.c,
- gsfcmap.c, gsfont.c, gsfont0.c, gsht1.c, gshtscr.c, gsimage.c, gspcolor.c,
- gsptype1.c, gsstate.c, gstext.c, gxcmap.c, gxht.c, gxipixel.c, gxmclip.c,
- gxtype1.c)
- Adds gs_c_param_list_write_more, to switch a C parameter list back to write
- mode without clearing it. (gsparam.h, gscparam.c)
- Adds gs_grestore_only, to do a grestore without requiring 2 entries on the
- graphics state stack. (gsstate.h, gsstate.c)
- Completes a first bridge between the new driver text_begin procedure and the
- existing text API defined in gschar.h. The changes are backward-compatible
- for both clients of the APIs and (the few) implementors of text_begin,
- except that the font argument of text_begin is no longer const. Note that
- gschar.h is no longer used by any client, and in fact is deprecated.
- (gschar.h, gstext.h, gxfcache.h, gxtext.h, gzstate.h, gdevbbox.c,
- gdevnfwd.c, gschar.c, gsfont.c, gsfont0.c, gstext.c)
- Mostly splits off the existing text procedures from the default
- implementation of the new text facilities. (lib.mak, gxchar.h, gschar.c,
- gxchar.c)
- Makes the structure descriptor for gs_state public, for testing in gxchar.c.
- (gzstate.h, gsstate.c)
- Adds is_width_only and current_width procedures to the text enumerator;
- renames restart as retry, and adds a restart procedure for restarting with
- different parameters. (gstext.h, gxtext.h, gdevbbox.c, gschar.c, gstext.c,
- gxchar.c)
- Makes the masks for the subgroups of text operation parameters public.
- (gstext.h)
- Removes members of gs_show_enum that are superseded by members of
- gs_text_enum_t: current_char, current_glyph, width, and log2_current_scale.
- (gxchar.h, gxchar.c)
- Adds aliases for popen and pclose under WIN32. (pipe_.h)
- Moves gs_incachedevice from gschar.h to gsstate.h. (gschar.h, gsstate.h)
- </pre>
- <hr>
- <h2><a name="Version5.85"></a>Version 5.85 (tester) (5/29/99)</h2>
- <p>
- This fileset removes a few more writable statics, and adds uniform support
- for %filedevice%filename syntax in OutputFile. Unfortunately, removing the
- static that held the interpreter's allocator group was almost as much of an
- upheaval as removing the statics for the interpreter stacks.
- <h3><a name="5.85_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - context_state_alloc now takes an additional parameter, as do
- obj_cvp, make_packed_array, parse_real_file_name, ref_stack_store,
- sread/write_proc, terminate_file_name, and a number of other internal
- interpreter procedures.
- - scan_number now does not mark the result as new.
- - The _param_list_read/write procedures now take an additional
- gs_ref_memory_t * parameter.
- - It is no longer possible to store pointers to the interpreter's
- allocator group (gs_dual_memory_t) in structures or variables across a
- garbage collection.
- - The save_level instance variable is moved from gs_dual_memory_t
- to gs_ref_memory_t.
- - op_show_finish_setup can now fail.
- - fname.h is renamed gsfname.h; the procedure names and parameters
- for %device%name file names are changed.
- - gx_imager_stroke_add now takes an additional argument; a NULL
- value for the device argument of gx_stroke_path_only is no longer valid.
- - gx_make_clip_translate_device now takes a memory parameter, and no
- container parameter; gx_make_clip_device no longer takes a container
- parameter; gx_mask_clip_initialize and tile_clip_initialize now take a
- memory parameter.
- </pre><h3><a name="5.85_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The language documentation still referred to outside clipping.
- (doc/Language.htm)
- Documents the new curve join graphics state parameter. (doc/Language.htm)
- Documents the fact that the OutputFile device parameter now supports the
- %device%file syntax. (gp.h, doc/Use.htm)
- Documents the licensing problems related to GNU readline. (int.mak,
- unix-gcc.mak, gp_gnrdl.c)
- </pre><h3><a name="5.85_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The bmpa devices needed gdevppla. (bug introduced in 5.84)
- (devs.mak)
- - The bmpa devices were accidentally included in the DEVICE_DEVS
- setting in the distributed fileset. (unix-gcc.mak)
- - msvclib.mak was missing some definitions. (msvclib.mak)
- Adds a CC_NO_WARN macro for those few files that produce tons of warnings
- that we can't work around. (bcwin32.mak, dvx-gcc.mak, msvccmd.mak,
- openvms.mak, openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
- unixtrad.mak, watcw32.mak, wccommon.mak, devs.mak, lib.mak, zlib.mak)
- Adds version.mak to msvclib.mak, so library clients can track the version.
- (msvclib.mak)
- </pre><h3><a name="5.85_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - -replace didn't work if it was the last item of a module
- description. (genconf.c)
- </pre><h3><a name="5.85_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - CCITTFax-compressed bitmaps sometimes used both a Rows value and
- an end-of-block indicator, which some PostScript implementations don't
- handle properly. (gdevpsdf.h, gdevps.c, gdevpsdf.c)
- Removes an unused procedure and macro. (gdevlj56.c)
- </pre><h3><a name="5.85_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - The interpreter cached objects even if the reference had the wrong
- generation number, causing errors if a correct reference occurred later.
- (lib/pdf_base.ps)
- - Embedded TrueType fonts using the Macintosh encoding sometimes
- caused an error. (lib/gs_ttf.ps)
- </pre><h3><a name="5.85_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Multiple contexts were broken (probably since 5.80). Fixing this
- required adding a parameter to context_state_alloc, to provide systemdict.
- (icontext.h, icontext.c, interp.c)
- - setpagedevice didn't accept the 4-element PageSize values that
- appear in the InputAttributes dictionary. (zmedia2.c)
- - BuildChar/BuildGlyph was "short circuited" even in some cases
- where it wasn't safe to do so. (ichar.h, zchar.c, zcharout.c)
- - The show operators didn't properly handle the special case of
- executing within a cshow procedure. (ichar.h, zcfont.c, zchar.c, zcharx.c)
- - The -dDOINTERPOLATE switch had gotten broken somehow.
- (lib/gs_init.ps)
- - The is_identity flag wasn't properly cleared when loading cached
- CIE mapping values, causing incorrect output. (zcie.c)
- Removes the writable static for the context scheduler. (zcontext.c)
- Removes the writable static for the interpreter's group of allocators
- (gs_imemory). This too turned out to be a massive change with many
- NON-BACKWARD-COMPATIBLE changes required in internal procedures. (bfont.h,
- files.h, fname.h, ialloc.h, ifunc.h, imemory.h, interp.h, iparam.h,
- iparray.h, ipcolor.h, isave.h, iscannum.h, istack.h, istream.h, iutil.h,
- store.h, ialloc.c, icontext.c, idebug.c, idict.c, iinit.c, imain.c,
- imainarg.c, interp.c, iparam.c, ireclaim.c, isave.c, iscan.c, iscanbin.c,
- iscannum.c, isstate.h, istack.c, iutil.c, zarray.c, zbfont.c, zcontext.c,
- zdict.c, zfname.c, zdps.c, zdps1.c, zfcmap.c, zdict.c, zfile.c, zfilter.c,
- zfont.c, zfont0.c, zfproc.c, zfreuse.c, zfunc.c, zfunc0.c, zfunc3.c,
- zgeneric.c, zht2.c, ziodev.c, ziodev2.c, zpacked.c, zpcolor.c, zshade.c,
- zupath.c, zvmem.c)
- Adds a gs_memory_t * argument to obj_cvp. This is part of the work for
- removing the gs_imemory static: we note it separately because it affects
- code beyond the interpreter. (iutil.h, gp_gnrdl.c, iutil.c, zfileio.c)
- Updates interpreter code for the addition of new_mask, test_mask, and
- save_level to gs_ref_memory_t, and the removal of save_level from
- gs_dual_memory_t. (ialloc.h, ialloc.c, isave.c)
- Adds a gs_ref_memory_t * argument to all the _param_list_read/write
- procedures. (iparam.h, iparam.c, zcrd.c, zdevice.c, zfdctd.c, zfdcte.c,
- zfdecode.c, zfilter2.c, ziodev2.c, zusparam.c)
- Changes the hack in file_alloc_stream that determines whether a gs_memory_t
- * is actually a gs_ref_memory_t *. The former code tested specifically
- whether the allocator was one of the current interpreter allocators; the new
- code simply tests the procedure vector. We aren't 100% sure that this
- change will work reliably. (zfile.c)
- Factors common code out of isave.h and store.h. (idosave.h, isave.h,
- store.h)
- Removes the reclaim_data member of gs_dual_memory_t, since it is no longer
- useful. (imemory.h, ialloc.c, ireclaim.c)
- Makes the default InputAttributes and OutputAttributes elements of page
- device dictionaries writable and (if possible) allocated in local VM, to
- work around bugs in the output of Word Perfect. (lib/gs_setpd.ps)
- Modifies the interpreter's error printout to indicate whether dictionaries
- on the stack(s) are writable. (lib/gs_init.ps)
- Moves support for %device%name file naming into the library. (fname.h,
- zfile.c, zfname.c [deleted])
- Adds interpreter support for the new curve join graphics state parameter.
- (zgstate.c)
- </pre><h3><a name="5.85_Library"></a>Library</h3><pre>
- Fixes problems:
- - bbox_fill_path device didn't interact with compositors correctly.
- (This problem had no practical effect.) (gdevbbox.c)
- - kshow didn't check for CID fonts. (gschar.c)
- - The bbox and ImageType 3 image enumerators had incorrect GC
- descriptors, possibly causing memory-related crashes. (gsstruct.h,
- gdevbbox.c, gximage3.c)
- - gx_make_clip_[translate_]device took an obsolete container
- parameter. (gxcpath.h, gsshade.c, gxccache.c, gxfill.c, gxstroke.c)
- - Non-transient clipping devices were used for image clipping, but
- the API didn't support creating them. (gxcpath.h, gxclip.c, gximage3.c,
- gxipixel.c)
- - Some devices were created without setting their memory member,
- which caused the GC not to trace pointers to them. (gxmclip.h, gxclip2.h,
- gxclip2.c, gximage3.c, gxmclip.c, gxp1fill.c)
- - The bbox device didn't handle ImageType 3 images correctly.
- (gdevbbox.c)
- - When the bbox device passed a stroke operation to the library, it
- didn't pass the device, causing absolute-length dots to render incorrectly.
- Fixing this required adding a device parameter to the gx_imager_stroke_add
- procedure. (gxpaint.h, gdevbbox.c, gxpaint.c)
- - The counter control OtherSubrs (12 and 13) weren't implemented.
- (This probably had no effect.) (gstype1.c)
- - Type 1 stem hints with negative widths didn't work properly.
- (gxhint2.c)
- - The debugging output for hintmask and cntrmask printed the vstem
- and hstem counts in the wrong order. (gstype2.c)
- - If the value of the OutputFile device parameter was too long,
- the result could be memory corruption rather than a rangecheck error.
- (gsdevice.c)
- - The dash pattern pointer in the saved imager state of a band list
- writer could point inside the writer structure, confusing the garbage
- collector. (gxclist.h, gxclpath.c)
- Adds new_mask, test_mask, and save_level instance variables to
- gs_ref_memory_t. This too is part of the gs_imemory work: we note it
- separately because it is the only piece of this work that affects the
- library. (gxalloc.h, gsalloc.c)
- Makes cntrmask at the beginning of a charstring act like vstemhm + cntrmask,
- as with hintmask. This is not documented, but we see it used this way in
- Type 2 CharStrings. (gstype2.c)
- Cleans up formatting and macros. (gp.h)
- Speeds up the bounding box device by skipping path filling if the entire
- path falls within the already-accumulated bounding box, and by defining the
- device as 8-bit gray to avoid halftone computation. (gdevbbox.c)
- Adds a procedure, gs_show_use_glyph, for implementing the show-in-cshow
- hack. (gschar.h, gschar.c)
- Moves support for %device%file file naming into the library. (lib.mak,
- gsfname.h, gxiodev.h, gdevpipe.c, gsfname.c)
- Makes the OutputFile device parameter recognize %device%file syntax, as well
- as "-" and (on platforms that support pipes) |command. (gp.h, gxdevice.h,
- gdevprn.c, gsdevice.c, gp_unix.c)
- Adds a separate graphics state parameter to indicate how to treat joins
- between segments of a flattened curve, for compatibility with Adobe
- interpreters (which apparently always use bevel joins). (gsline.h,
- gxclpath.h, gxline.h, gsline.c, gsstate.c, gxclpath.c, gxclrast.c,
- gxstroke.c)
- Changes code slightly, introducing an unnecessary assignment, in order to
- suppress a compiler warning. (gxclpath.c)
- Tweaks the CIE_LOAD_CACHE_BODY macro slightly. (gscie.c)
- </pre>
- <hr>
- <h2><a name="Version5.84"></a>Version 5.84 (tester) (5/19/99)</h2>
- <p>
- This fileset completes the implementation of planar rendering, and fixes a
- few more bugs, some of them surprisingly old.
- <h3><a name="5.84_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Drivers)
- - The dopath vector device implementation procedure was changed to
- take an optional matrix argument.
- (Library)
- - The internal memory__need_ macros are changed to upper case.
- </pre><h3><a name="5.84_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - There was a duplicate entry for GENINIT_XE in the Watcom makefile.
- (wctail.mak)
- Adds the duplex-capable LaserJet drivers (ljet3d and ljet4d) to all standard
- configurations. (bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak,
- openvms.mmk, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak,
- watcw32.mak)
- Adds a PROFILE compilation switch, similar to DEBUG, to work around the fact
- that gprof under Linux doesn't count time in memset, memcpy, or other C
- library procedures. PROFILE will substitute our own versions of memset,
- memcpy, and memmove. Currently, this switch is supported only on Unix.
- (unix-end.mak)
- Defines a new makefile macro, SYNC, that gives the module name for thread /
- synchronization facilities; makes async.dev include this module. This is
- posync on Unix and VMS platforms, winsync on MS Windows and OS/2 platforms.
- (bcwin32.mak, dvx-gcc.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
- openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
- watc.mak, watclib.mak, watcw32.mak)
- Splits off the rules common to the 3 Windows makefiles (watc, watclib,
- winlib) into a separate file, defining new modules winplat.dev and
- winsync.dev. (watc.mak, watclib.mak, winlib.mak, winplat.mak)
- Removes -Wcast-align from the gcc switches, since this produces huge numbers
- of warnings that we will certainly never get rid of. (unix-gcc.mak)
- </pre><h3><a name="5.84_Utilities"></a>Utilities</h3><pre>
- Enhances the ps2pdf script with a patch contributed by Jim Avera
- (avera@fjst.com) so that it can be used as a pipe by specifying "-" for the
- input and/or output file. (lib/ps2pdf)
- Modifies ps2ascii to handle landscape pages better. (lib/ps2ascii.ps)
- </pre><h3><a name="5.84_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - PDF output that used Pattern colors on more than one page failed
- to include the color space resource in the resource dictionaries of pages
- other than the first. (gdevpdf.c)
- - The PDF writer emitted bitmap patterns inverted in Y.
- (gdevpdfi.c)
- - The PCL XL driver's GC descriptor had become incorrect, causing
- crashes. (gdevpx.c)
- - The pdfwrite driver could still emit coordinates too large for
- Acrobat Reader to handle, for stroked lines with an unusual CTM.
- (gdevpdfd.c)
- - The pxl drivers emitted invalid output for dashed lines.
- (gdevpx.c)
- - The [e]pswrite and pxl drivers scaled line widths and dash
- patterns incorrectly. Fixing this properly involved refactoring the
- handling of scaling for paths, and removing gdev_vector_stroke_path.
- (gdevpsdf.h, gdevvec.h, gdevpdfd.c, gdevps.c, gdevpsdf.c, gdevpx.c,
- gdevvec.c)
- - The lj5 drivers didn't pad images to a multiple of 4 bytes per
- scan line, producing invalid PCL XL output. (We don't see how they could
- ever have worked, in fact.) (gdevpcl.h, gdevlj56.c, gdevpcl.c)
- Adds a user-contributed driver for the DEClaser 2100. This is a GPL'ed
- driver. (contrib.mak, gnu/src/gdevln03.c)
- Makes the UsePlanarBuffer parameter, and planar buffering capability, from
- the PPM devices available to general printer devices, but in a separate
- module to avoid making all printer devices require gdevmpla.c. (gdevppla.h,
- gdevpbm.c, gdevppla.c)
- Adds a UsePlanarBuffer parameter to the async BMP drivers, for testing.
- (gdevbmpa.c)
- Removes the comment about the instability of the "vector" driver interface.
- (gdevvec.h, gdevvec.c)
- </pre><h3><a name="5.84_Platforms"></a>Platforms</h3><pre>
- Splits off the Windows thread and synchronization primitives into a new file
- and a new module, winsync.dev. (watc.mak, watclib.mak, winlib.mak,
- gp_win32.c, gp_wsync.c)
- </pre><h3><a name="5.84_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - As usual, gcc failed to flag some signed/unsigned char mismatches.
- (gp_gnrdl.c, iutil.c)
- Moves the indexed color space cache lookup procedure from the interpreter to
- the library. (zcsindex.c)
- </pre><h3><a name="5.84_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - If a 2-D CCITTFax stream ended with 1 or 2 "vertical 0" codes,
- those codes would be ignored. (scfd.c)
- </pre><h3><a name="5.84_Library"></a>Library</h3><pre>
- Fixes problems:
- - gsnogc.h contained an extern for gs_gc_reclaim rather than for
- gs_nogc_reclaim. (gsnogc.h)
- - Banded images in Indexed color spaces rendered incorrectly.
- (gximage.c)
- - A function declared some arguments as float rather than floatp.
- (gshtx.h, gshtx.c)
- - As usual, gcc failed to flag some public/private mismatches.
- (gdevmrun.c)
- - The tracing output for monobit images printed 8 bits per pixel
- rather than 1 bit per pixel. (gxidata.c)
- - A Pn macro was used in a header file that didn't include stdpre.h.
- (gscdefs.h, gconf.c, genht.c, gxhtbit.c, gxclrast.c)
- - get_bits_rectangle for the planar memory device didn't flush the
- last byte of each row. (gdevmpla.c)
- - When banding, Indexed color spaces using a procedure rather than a
- lookup table caused a crash. (gxcolor2.h, gscolor2.c, gxclrast.c)
- - When filling a region with a Pattern with a rotated matrix, some
- parts of the region could be missed. (bug introduced by a fix in 5.38)
- (gxp1fill.c)
- When compiling with gcc, replaces inline with __inline__ to get rid of a
- potential warning. (stdpre.h)
- Adds our own implementations of memset, memcpy, and memmove, to work around
- the fact that gprof under Linux doesn't count time in C library procedures.
- (memory_.h, string_.h, gsmisc.c)
- Finishes implementing planar rendering for printer / banded devices.
- (gdevprn.h, gxclist.h, gxdevbuf.h, gdevprn.c, gxclread.c)
- </pre>
- <hr>
- <h2><a name="Version5.83"></a>Version 5.83 (tester) (5/13/99)</h2>
- <p>
- This fileset was driven mostly by commercial licensee demands; it doesn't
- fix most of the problems reported in 5.82. It features smaller threshold
- halftones, the ability to store halftones in ROM, and a nearly complete
- implementation of a planar memory device.
- <p>
- Items pushed off to the next fileset:
- <ul>
- <li> - Finish multi-planar band buffers (requires changing
- gdev_prn_render_lines to be based on memory devices rather than buffer
- pointers).
- <li> - For Adobe compatibility, change stroking so that it always
- uses
- bevel joins between the segments of a curve (this directly contradicts the
- Red Book, but it's what Adobe interpreters do).
- <li> - Implement an IdiomSet for Corel Draw fountain fills?
- (idioms.ps)
- <li> - Change shading so it doesn't install a clip device (make this
- a
- driver procedure instead), because that prevents clist_fill_path from being
- called.
- </ul>
- <h3><a name="5.83_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - The spaces.indexed member of a vm_spaces structure has been
- renamed spaces_indexed (a macro).
- - The gs_reclaim procedure is changed to a macro, GS_RECLAIM.
- (Library)
- - The bits member of a halftone order is now called bit_data, and is
- opaque; halftone orders are now "objects"; gx_ht_alloc_[ht_]order now take
- an additional argument.
- - The architectural values in arch.h are now all upper-case.
- (std.h defines lower-case synonyms for backward compatibility.)
- - The buffer device procedures for printer devices are now collected
- in a structure; this also changes the parameters of clist_init_params.
- - The parameters of the buffered device setup_buf_device procedure
- are changed.
- - gx_path_copy_reducing now takes an additional argument, an imager
- state, for flattening stroked paths.
- - Memory devices now must be created by copying a prototype device,
- rather than by initializing individual members, even if they are only being
- used for limited purposes.
- </pre><h3><a name="5.83_Documentation"></a>Documentation</h3><pre>
- Documents the new facility for compiled halftones, and the old one for
- compiling initialization files. (doc/Make.htm)
- </pre><h3><a name="5.83_Utilities"></a>Utilities</h3><pre>
- Adds a utility for compiling halftones into the executable. Also defines
- the dependency lists for the auxiliary programs in lib.mak and int.mak,
- rather than replicating them for every platform. (bcwin32.mak,
- dvx-tail.mak, gs.mak, int.mak, lib.mak, msvctail.mak, openvms.mak,
- openvms.mmk, os2.mak, unix-aux.mak, wctail.mak, genht.c)
- Adds support for halftone "resources" in the makefile. (genconf.c)
- Adds code to determine the primary and secondary CPU cache sizes
- empirically. (genarch.c)
- Changes the architecture definition macros from lower to upper case, with
- lower-case synonyms in std.h for backward compatibility. (gsjconf.h, std.h,
- genarch.c)
- Changes the ps2ai utility so that jtxt3 can be set from the command line, to
- allow pstoedit to generate AI3-compatible output. (lib/ps2ai.ps)
- </pre><h3><a name="5.83_Procedures"></a>Procedures</h3><pre>
- Adds some optional library modules to the base library compilation list, so
- that compilation errors won't slip through. (lib.mak)
- </pre><h3><a name="5.83_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - A change from char to byte needed to be undone (gcc didn't catch
- this). (iutil.c)
- Adds a 167x167 stochastic halftone that CalComp put in the public domain.
- (lib/ht_ccbnm.ps, int.mak, unixinst.mak)
- Updates the interpreter for the change to per-VM-spaces garbage collection.
- (igc.h, ialloc.c, icontext.c, igc.c, ilocate.c, imain.c, interp.c,
- ireclaim.c, isave.c, zfile.c, zht.c, zht1.c, zht2.c)
- Updates places that only use gsstruct.h for extern_st to use gsstype.h
- instead. (icontext.h, ifont.h)
- </pre><h3><a name="5.83_Library"></a>Library</h3><pre>
- Fixes problems:
- - Some types needed updating to reflect the change in the string
- freelists. (gsalloc.c, gsnogc.c)
- - clip_copy_color didn't initialize some variables in the fastest
- case. (bug probably introduced in 5.83) (gxclip.c)
- - The fit_fill_ and fit_copy_ macros didn't always parenthesize
- their dev argument. (gxdevice.h)
- - The sample_load macros returned the wrong results for depth 1 and
- 2. Amazingly enough, it appears that this case had never been used.
- (gsbitops.h)
- - The standard allocator would free chunks even if is_controlled was
- true. (gsalloc.c)
- - Stroking drew semicircles rather than full circles for round
- joins. (gxstroke.c)
- - The calculation of how finely to sample a curve to achieve a
- particular flatness didn't take line width into account when stroking (the
- flatness has to apply to the outside of the stroked curve). (gxpath.h,
- gxpcopy.c, gxstroke.c)
- Speeds up the bbox device a little. (gdevbbox.c)
- Speeds up the most common cases of clipping a little. (gxclip.h,
- gxacpath.c, gxclip.c)
- Makes halftone orders more "object-oriented", so we can use an alternate
- representation that trades time for space. This requires a
- NON-BACKWARD-COMPATIBLE CHANGE in the gx_ht_order structure and the
- arguments of gx_ht_alloc_[ht_]order. (gxcldev.h, gxdht.h, gzht.h, gsht.c,
- gsht1.c, gshtscr.c, gshtx.c, gsistate.c, gxcht.c, gxclimag.c, gxclrast.c,
- gxht.c, gxhtbit.c)
- Makes it possible to compile-in halftone threshold arrays and orders (e.g.,
- in ROM) so they don't take up RAM at execution time. (gscdefs.h, gxdht.h,
- gxdhtres.h, gzht.h, gconf.c, gsht.c, gsht1.c, gxclrast.c, gxhtbit.c)
- Adds some statistics to the 24-bit memory device (in DEBUG mode only, as
- usual). (gdevm24.c)
- Makes the 24-bit memory device optionally use memcpy for wide rectangle
- fills. We thought this got us a factor of 3 speedup on a Pentium with gcc's
- library, but it turned out to be a profiler artifact. (gdevm24.c)
- Cleans up some formatting. (gxclip.h)
- Dusts off the run-length-encoded memory device, changing it so it reverts to
- the unencoded representation when necessary. This code hasn't been tested,
- and is not currently used. (gdevmrun.h, gdevrun.c [deleted], gdevmrun.c)
- Adds more statistics to the clipping device. (gxclip.c)
- Adds an implementation of the MD5 Algorithm defined in RFC 1321, derived
- directly from the text of the RFC and not from the reference implementation.
- This code uses the zlib license, which is more liberal than the Aladdin or
- GNU licenses. (md5.h, md5.c)
- Finishes implementing the planar memory device, including generalizing it to
- store varying numbers of bits per plane rather than 1 bit per plane.
- (gdevmem.h, gdevmpla.h, gxdevmem.h, gdevmem.c, gdevmpla.c)
- Updates clients to initialize memory devices more fully, now required to
- distinguish chunky from planar devices. (gxpcmap.c)
- Mostly implements enhancing printer / banded devices so they can use a
- planar memory device for rendering and/or band buffering. The code
- currently works only in the non-banded case. (gdevprn.h, gxclist.h,
- gxdevbuf.h, gxdevcli.h, gdevprn.c, gxclist.c, gxclread.c)
- For testing, adds a -dUsePlanarBuffer=<boolean> parameter to the PPM devices
- to make them use a planar memory device. (gdevpbm.c)
- Cleans up some code formatting. (gdevmem.c)
- Makes the garbage collection procedure separately settable for each group of
- VM spaces. (In an environment with "async" rendering, the renderer has its
- owm VM space group.) Unfortunately, this involved a NON-BACKWARD-COMPATIBLE
- change in the vm_spaces structure. (gsgc.h, gsnogc.h, gsnogc.c)
- Updates a client for the change in gs_reclaim; also makes the renderer
- thread use the non-tracing garbage collector. (gdevprna.c)
- Updates the non-tracing GC to reflect its role as a garbage collection
- procedure in a vm_spaces. (gsnogc.c)
- Enhances the non-tracing GC so that if a chunk ever contains no strings, the
- string marking area reserved for the tracing GC is added to free space.
- (gxalloc.h, gsalloc.c, gsnogc.c)
- Changes the font cache allocator to use a different structure descriptor for
- its data so that memory dumps will show "font cache bytes" rather than just
- "bytes". (gxccman.c)
- Splits gsstruct.h into gsstype.h, which contains enough of the definition of
- structure type descriptors to support extern_st, and gsstruct.h, which is
- needed to actually define structure types. (gsstruct.h, gsstype.h,
- gxfmap.h)
- Updates places that only use gsstruct.h for extern_st to use gsstype.h
- instead. (gsbitmap.h, gsccolor.h, gscie.h, gxfont.h, gzpath.h, scommon.h,
- gscdevn.c, gscrd.c, gscrdp.c, gsshade.c, gxpath2.c)
- </pre>
- <hr>
- <h2><a name="Version5.82"></a>Version 5.82 (tester) (4/24/99)</h2>
- <p>
- This fileset fixes a few odds and ends, removes a couple more writable
- statics, and improves performance in a couple of areas.
- <h3><a name="5.82_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - dict_uid_param now takes an additional argument, the interpreter
- context pointer.
- - obj_cvp now takes a stream rather than a string.
- </pre><h3><a name="5.82_Documentation"></a>Documentation</h3><pre>
- Documents the -dGraphicsAlphaBits and -dTextAlphaBits switches; reorganizes
- the documentation of the -d/-s switches by function. (doc/Use.htm)
- </pre><h3><a name="5.82_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - Building with MSVC didn't work if COMPILE_INITS was selected.
- (msvctail.mak)
- - The cp script didn't work on all MS-DOS systems, since the systems
- are incompatible with each other in undocumented ways. (cp.bat)
- - Using ^ in a command line failed on Windows 98. (wccommon.mak)
- - Watcom compilation under Windows NT didn't include some needed
- headers. (wccommon.mak)
- - The Watcom compiler's quoting requirements were inconsistent.
- (gs.mak)
- - GLCCWIN was used without being defined. The MS DOS/Windows
- makefiles really are a tangled mess.... (watc.mak)
- - The build directories didn't get created automatically when
- compiling with the Watcom compiler. (watc.mak)
- Adds more optimization switches for Watcom compilation. (wccommon.mak)
- </pre><h3><a name="5.82_Utilities"></a>Utilities</h3><pre>
- Adds a pfbtopfa script. (unixinst.mak, lib/pfbtopfa, lib/pfbtopfa.bat,
- lib/pfbtopfa.ps)
- </pre><h3><a name="5.82_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - "Vector" drivers (currently only the PCL XL driver) filled
- polygons incorrectly. (gdevvec.c)
- - The PCL XL drivers produced incorrect output for images. (We
- can't understand how they ever could have worked.) (gdevpx.c)
- - The PCL XL drivers skipped blank pages. (gdevpx.c)
- - The page origin for the clj driver was set incorrectly. (fix from
- Artifex) (gdevclj.c)
- - The map_color_rgb procedure for the 32-bit CMYK bmp device was
- wrong, causing RasterOps to produce incorrect output. (fix from Artifex)
- (gdevbmp.c)
- Works around a bug in Acrobat Reader's Print command, by changing the
- scaling for bitmap patterns. (gdevpdfi.c)
- Cleans up some formatting and macros. (gdevpx.c)
- Factors out some common parameter-putting utilities. (gdevpsdf.h,
- gdevpdfp.c, gdevpsdp.c)
- </pre><h3><a name="5.82_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The DLL code "knew" it could only be compiled on Windows and OS/2
- platforms. (gsdll.c)
- Removes a Mac-specific file that is now moved to the Mac-specific archive.
- (gsdllmac.h [deleted])
- </pre><h3><a name="5.82_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - An invalidaccess could occur when repositioning the file after
- executing an image XObject. (lib/pdf_draw.ps)
- - Indexed color spaces gave an error if the underlying space was
- represented as a name rather than an array. (bug introduced in 5.80)
- (lib/pdf_draw.ps)
- </pre><h3><a name="5.82_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The interpreter reentrancy changes broke the GNU readline
- interface. (gp_gnrdl.c, ziodev.c)
- - The TrappingType resource category wasn't defined.
- (lib/gs_res.ps, lib/gs_trap.ps)
- - CIE color spaces in shading patterns didn't work. (lib/gs_ll3.ps)
- - Printing a string of more than 200 characters with == was broken.
- Fixing this required a NON-BACKWARD-COMPATIBLE change in the argument list
- of obj_cvp. (bug introduced in 5.80) (iutil.h, gp_gnrdl.c, idebug.c,
- iutil.c, zfileio.c)
- Changes the interpreter trace output to be somewhat more readable.
- (interp.c)
- Makes the linking of the binary token scanning procedure static rather than
- dynamic. (int.mak, inobtokn.c, iscan.c, zbseq.c)
- Makes the language level a property of the context, eliminating a writable
- static. (icstate.h, idparam.h, ilevel.h, icontext.c, idparam.c, iinit.c,
- interp.c, zcontext.c, zmisc2.c)
- Updates clients for the change in dict_uid_param. (zbfont.c, zfcmap.c,
- zpcolor.c, zshade.c)
- </pre><h3><a name="5.82_Library"></a>Library</h3><pre>
- Fixes problems:
- - There was a signed/unsigned char * mismatch. (sfxfd.c)
- - Some very picky compilers complained inappropriately about a
- const/non-const mismatch. (gxcht.c)
- - The format of the string freelists didn't allow chunks with more
- than 64K bytes of string area. (gxalloc.h, gsnogc.c)
- Moves the interface definitions for the memory dump debugging code into a
- header file. (gxalloc.h, gsalloc.c)
- Makes the standard memory manager recognize more effectively when it can
- reset the high-water mark for occupied space in the current chunk. This
- turns out to make a big difference in preventing sandbars. (gxalloc.h,
- gsalloc.c)
- Makes clipping lists keep track of their minimum and maximum X values, so
- that they can return accurate outer clipping boxes, which in turn allows
- more effective pre-clipping of filled regions. (gxcpath.h, gxacpath.c,
- gxclip.c, gxcpath.c)
- Makes clipping devices cache their clipping box, so they can return it
- quickly. (gxcpath.h, gxclip.c)
- Makes the colored halftone logic check bounding boxes before running the
- expensive algorithms. This improves performance dramatically for some files
- without costing much for the rest. (gxcht.c)
- Adds some more debugging printout for clipping lists. (gxcpath.c)
- Cleans up formatting and macros. (gdevdflt.c, gdevhit.c, gdevnfwd.c)
- Factors out some common parameter-putting utilities. (gsparamx.h,
- gsparamx.c, gstrap.c)
- Adds some more tracing output for images. (gxidata.c)
- </pre>
- <hr>
- <h2><a name="Version5.81"></a>Version 5.81 (tester) (4/14/99)</h2>
- <p>
- This fileset cleans up most of the bug tail from 5.80, but it doesn't fix
- all the reported problems. It also factors out the platform-specific DLL
- calls, and extends the DLL API to the Mac.
- <h3><a name="5.81_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Platforms)
- - gsdll_get_bitmap is now defined in gsdllos2.h; gsdll_copy_dib,
- _copy_palette, _draw, and _get_bitmap_row are now defined in gsdllwin.h.
- (Interpreter)
- - zcolor_remap_one may return 0 rather than o_push_estack. (This
- change actually occurred in 5.80, but was not documented.)
- (Library)
- - The initialized parameters of an image scaling filter are now
- stored in a subsidiary structure.
- - The names max_support and log2_max_support are changed to
- MAX_ISCALE_SUPPORT and LOG2_MAX_ISCALE_SUPPORT.
- - The structure definition for the smoothed image scaling filter is
- now private, although its descriptor remains public.
- - The criteria for when to use Interpolate are now more stringent.
- </pre><h3><a name="5.81_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - gs_trap.ps wasn't installed by `make install'. (unixinst.mak)
- - A semicolon was missing in one definition of GS_LIB_DEFAULT.
- (watc.mak)
- - ll.tr and _temp_.tr weren't created in the obj directory.
- (watc.mak, wctail.mak)
- - RM_ was defined incorrectly on one platform. (wccommon.mak)
- </pre><h3><a name="5.81_Utilities"></a>Utilities</h3><pre>
- Makes some minor edits in ansi2knr, contributed by a user, to remove gcc
- warnings. (ansi2knr.c)
- </pre><h3><a name="5.81_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - There was an int/uint mismatch. (gdevbmpa.c)
- - There was a const/non-const mismatch. (gdevbmpa.c)
- Changes the p*m drivers so that they use the default color mapper when
- possible, speeding up execution. (gdevpbm.c)
- </pre><h3><a name="5.81_Fonts"></a>Fonts</h3><pre>
- Adds Black as indicating that a bold font should be substituted if
- necessary. (lib/gs_fonts.ps)
- </pre><h3><a name="5.81_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The Watcom NT compiler implements setmode and fileno but not
- _setmode and _fileno. (gp_ntfs.c)
- - The procedure parameter passed to the Windows _beginthread
- procedure had the wrong prototype. (gp_win32.c)
- - Watcom's _beginthread procedure takes an extra argument.
- (windows_.h, gp_win32.c)
- Extends the DLL API to work on the Mac. This required some restructuring of
- the code, and some NON-BACKWARD-COMPATIBLE changes to move
- environment-specific calls into environment-specific header files.
- (pcwin.mak, os2.mak, winint.mak, dwdll.h, gsdll.h, gsdllmac.h, gsdllos2.h,
- gsdllwin.h, dpmainc.c, dwdll.cpp, dwnodll.cpp, gdevmswn.c, gdevpm.c,
- gdevwdib.c, gsdll.c)
- </pre><h3><a name="5.81_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Changes the interpreter to handle two more specification-violating
- conditions that Adobe Acrobat accepts: truncation of %%EOF to %%EO, and use
- of Dest links with no Dests dictionary. (lib/pdf_main.ps)
- </pre><h3><a name="5.81_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - gcc failed to flag initialization of an automatic aggregate, which
- is allowed in neither ANSI nor traditional C. (iutil.c)
- - The system name table lacked the last 3 entries.
- (lib/gs_btokn.ps)
- - Interpolated images always wound up at (0, 0). (bug introduced in
- 5.80) (gxipixel.c)
- - The Watcom compiler didn't consider "const uint" and "const
- unsigned" to be compatible. (ifunc.h)
- - The code to detect identity transfer functions could cause
- transfer functions not to be processed at all. (icolor.h, zcolor.c,
- zcolor1.c, zht2.c)
- - The Level 2 redefinition of restore could do an extra grestore,
- possibly creating a temporary reference to a freed object. (zdevice2.c)
- Adds more tracing for undo-saves, and changes a macro to a procedure.
- (isave.c)
- Removes some #define'd casts. (isave.c)
- </pre><h3><a name="5.81_Library"></a>Library</h3><pre>
- Fixes problems:
- - When banding, the color space wasn't reinitialized for each page.
- (gxclist.c)
- - The criterion for allowing image interpolation still produced
- "mush" for some important classes of image. (gxiscale.c)
- - The Watcom compiler didn't consider "const uint" and "const
- unsigned" to be compatible. (gscdefs.h, gconf.c)
- - Identity black generation and undercolor removal functions weren't
- passed through the band list correctly. (gxcldev.h, gxclbits.c, gxclrast.c)
- - Once again, gcc failed to give a warning for extern followed by
- private. (gxcdevn.h)
- - glyphshow set up the text operation in a way that created a
- garbage collector error. (gschar.c)
- Makes gs_opendevice complete the device procedure vector if the device
- wasn't already open. (gsdevice.c)
- Factors out the image scaling filter so that we can use either Adobe's
- algorithm or the Mitchell filter. This involves a NON-BACKWARD-COMPATIBLE
- CHANGE in the way the filter parameters are defined. (gximage.h, siscale.h,
- sisparam.h, gxclimag.c, gxidata.c, gxiscale.c, siscale.c)
- Makes the criteria for when to use interpolation stricter, since we are
- still using the Mitchell filter. (gxiscale.c)
- Starts to implement Adobe's image interpolation algorithm. (siinterp.h,
- siinterp.c, gxiscale.c)
- Speeds up RGB interpolated images by detecting runs of output color.
- (gxiscale.c)
- Makes the default RGB color mapper a "known" mapper that can be propagated
- through device pipelines. (gxdevice.h, gsdevice.c)
- </pre>
- <hr>
- <h2><a name="Version5.80"></a>Version 5.80 (tester) (4/6/99)</h2>
- <p>
- This version contains the first, and, we hope, largest wave of changes in
- the interpreter required to make the interpreter fully reentrant.
- Unfortunately, many externally visible APIs, including the argument list for
- operator procedures, required changes.
- <p>
- Because of the magnitude of the change, we incremented the version number to
- 5.80.
- <p>
- The non-backward-compatible API changes were confined to the interpreter:
- the (very minor) changes to the library required to support interpreter
- reentrancy are fully backward-compatible.
- <p>
- This fileset also implements DeviceN color spaces (always using the
- alternate space), including Indexed spaces over DeviceN spaces, for all uses
- except smooth shading.
- <h3><a name="5.80_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - names_init now takes a gs_ref_memory_t * rather than a gs_memory_t
- *.
- - type_print_strings, type_name_strings, and
- ref_type_properties_data are now REF_TYPE_DEBUG_PRINT_STRINGS,
- REF_TYPE_NAME_STRINGS, and REF_TYPE_PROPERTIES_DATA.
- - The undocumented .writecvp operator, and obj_cvp, now take an
- integer instead of a Boolean to define the type of output desired.
- - The argument list for operators is changed from os_ptr to
- i_ctx_t *. Many internal interpreter APIs have changed.
- - The typedef name for operator procedures is changed from op_proc_p
- to op_proc_t.
- - gs_interpret now takes an additional context (i_ctx_t **)
- argument.
- - The interpreter's rescheduling and time-slicing procedures,
- gs_interp_reschedule_proc and gs_interp_time_slice_proc, now take a context
- (i_ctx_t **) argument.
- - The Type 1 interpreter push_value callback is renamed push_values;
- the first argument of push_values and pop_value has changed from
- gs_font_type1 * to void *.
- - dict_put*, dict_copy*, dict_undef, dict_resize, dict_grow, and
- dict_unpack now take an additional argument, a dictionary stack where the
- dictionary may be present.
- </pre><h3><a name="5.80_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The dependency list for the (dummy) trapping feature was wrong.
- (int.mak)
- - The directory for jerror_.h was incorrect. (jpeg.mak)
- Removes the never-used -header switch from genconf. (genconf.c)
- Adds priority-sorted resources to genconf, currently used only for image
- classes. (genconf.c)
- Adds an imageclass resource to genconf, for what used to be called image
- strategies. (genconf.c)
- </pre><h3><a name="5.80_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - ansi2knr didn't recognize id1(id2, xxxxx) as not being a function.
- (ansi2knr.c)
- - viewpcx still referred to the deleted PCXDecode filter.
- (lib/viewpcx.ps)
- - strlen was called without being declared. (genarch.c)
- </pre><h3><a name="5.80_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - Some drivers that called gdev_prn_open_printer didn't check the
- return code for errors. (gdevdjet.c, gdevhl7x.c)
- - The cljet5 driver didn't handle long-edge feed properly. (from
- Artifex) (gdevclj.c)
- - The [e]pswrite driver could produce incorrect output if the input
- file had zero-length lines. (gdevps.c)
- - The X driver didn't handle byte-swapped 16-bit displays.
- (gdevx.c)
- - There was an int/uint mismatch. (gdevbmp.c)
- - Some needed headers weren't included. (gdevdcrd.c, gdevpdfo.c)
- - The updated mswinpr2 driver wouldn't compile with older Windows
- header files. (gdevwpr2.c)
- Removes some unnecessary #includes. (gdevps.c)
- Adds user-contributed drivers for the CoStar LabelWriter II Plus and XL
- label printers. (gdevcslw.c)
- Speeds up color mapping for the bitrgb driver a little, by using the default
- procedure. (gdevbit.c)
- </pre><h3><a name="5.80_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - TrueType fonts with odd-length glyf definitions caused an
- invalidfont error. (lib/gs_ttf.ps)
- Changes the font substitution mechanism slightly to be more useful to the
- PDF interpreter. (lib/gs_fonts.ps)
- </pre><h3><a name="5.80_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - Some needed headers weren't included. (watc.mak, watclib.mak,
- winlib.mak, gp_win32.c)
- </pre><h3><a name="5.80_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - There were many signed/unsigned char type errors that gcc didn't
- catch. (gp_gnrdl.c)
- - The operator definition list for zdouble was too long. (int.mak,
- zdouble.c)
- Removes some unnecessary #includes. (zchar.c)
- Speeds up names_string_ref. (inamedef.h, inames.h, imain.c, iname.c)
- Speeds up reading string/name array parameters. (iparam.c)
- Refactors the implementation of ==, so that all types other than arrays and
- dictionaries are handled in C code. (lib/gs_init.ps, iutil.h, iref.h,
- gp_gnrdl.c, idebug.c, iutil.c, zfileio.c, ztype.c)
- Changes the type name for operator procedures from op_proc_p to op_proc_t,
- for consistency and also to help detect places that need the argument list
- changed. (ichar.h, interp.h, iref.h, opdef.h, interp.c, iutil.c, zchar.c,
- zcharx.c, zcontrol.c, zupath.c)
- Changes the argument type for operators from os_ptr to i_ctx_t *. (i_ctx_t
- is an alias for gs_context_state_t.) This also requires adding a context
- pointer to many internal procedures, or changing an os_ptr argument to
- i_ctx_t *. This is a MASSIVE NON-BACKWARD-COMPATIBLE change which we simply
- saw no way to avoid if the interpreter was to be made fully re-entrant. See
- "Incompatible changes" above for externally visible changes.
- (lib/gs_init.ps, bfont.h, btoken.h, dstack.h, estack.h, files.h, ichar.h,
- ichar1.h, icharout.h, icie.h, icolor.h, icontext.h, icsmap.h, ifilter.h,
- ifont1.h, igstate.h, iht.h, iimage.h, iimage2.h, imain.h, imemory.h,
- interp.h, ipacked.h, iref.h, iscan.h, istream.h, opdef.h, oper.h,
- opextern.h, ostack.h, ialloc.c, icontext.c, iinit.c, imain.c, inouparm.c,
- interp.c, ireclaim.c, iscan.c, iscanbin.c, zarith.c, zarray.c, zbfont.c,
- zbseq.c, zcfont.c, zchar.c, zchar1.c, zchar2.c, zchar32.c, zchar42.c,
- zcharout.c, zcharx.c, zcid.c, zcie.c, zcolor.c, zcolor1.c, zcolor2.c,
- zcontext.c, zcontrol.c, zcrd.c, zcsdevn.c, zcsindex.c, zcspixel.c,
- zcssepr.c, zdevice.c, zdevice2.c, zdict.c, zdosio.c, zdouble.c, zdpnext.c,
- zdps.c, zdps1.c, zfbcp.c, zfcmap.c, zfdctd.c, zfdcte.c, zfdecode.c, zfile.c,
- zfileio.c, zfilter.c, zfilter2.c, zfilterx.c, zfont.c, zfont0.c, zfont1.c,
- zfont2.c, zfont32.c, zfont42.c, zfproc.c, zfreuse.c, zfunc.c, zfzlib.c,
- zgeneric.c, zgstate.c, zhsb.c, zht.c, zht1.c, zht2.c, zimage.c, zimage2.c,
- zimage3.c, ziodev.c, ziodev2.c, zmath.c, zmatrix.c, zmedia2.c, zmisc.c,
- zmisc1.c, zmisc2.c, zmisc3.c, zpacked.c, zpaint.c, zpath.c, zpath1.c,
- zpcolor.c, zrelbit.c, zrop.c, zshade.c, zstack.c, zstring.c, zsysvm.c,
- ztoken.c, ztrap.c, ztype.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
- Changes caching for the interpreter's CIE color spaces so that instead of
- changing the color space installation procedure to one that schedules the
- sampling of the procedures though a back door, it leaves the installation
- procedure alone and schedules the sampling in the color-space-specific
- setcolorspace operator. This is needed for interpreter reentrancy.
- (icie.h, zcie.c, zcrd.c)
- Makes the linkage from the dictionary machinery to the cached values in the
- dictionary stack and the name table explicit, by adding a dstack pointer to
- all the relevant dict_* procedures. This is needed for interpreter
- reentrancy. (iddstack.h, idict.h, idstack.h, idict.c)
- Updates clients for the change in the dictionary API. For each changed
- dict_ procedure, we add an idict_ procedure that uses i_ctx_p->dict_stack as
- the additional argument. (iddict.h, icontext.c, iinit.c, interp.c,
- iparam.c, iscanbin.c, zdps.c, zfcmap.c, zdict.c, zfont.c, zfont0.c,
- zgeneric.c, zht2.c, zmisc2.c)
- Changes Pattern color remapping so that it saves information in the
- interpreter's part of the graphics state, rather than manipulating the
- e-stack directly. This is needed for interpreter reentrancy. (errors.h,
- icremap.h, igstate.h, interp.c, zgstate.c, zpcolor.c)
- Adds to the "main instance" structure a pointer to the currently executing
- context. This is needed for interpreter reentrancy. (imain.h, iminst.h,
- main.h, imain.c, imainarg.c)
- Changes the argument list for operator initialization procedures from void
- to i_ctx_t *. (opdef.h, ireclaim.c, zbfont.c, zbseq.c, zcontext.c, zfile.c,
- zfont.c, zpcolor.c)
- Changes the initialization of the interpreter's allocators so it doesn't
- presume the allocator structure is global. (ialloc.h, ialloc.c, imain.c)
- Factors out the structure definition of the stacks, which is needed for
- defining the state of a context, from the API, which is only needed by
- actual clients. (icstate.h, idsdata.h, idstack.h, iesdata.h, iestack.h,
- iosdata.h, iostack.h, isdata.h, istack.h)
- Changes filter error reporting so that the report_error procedure doesn't
- need access to the interpreter. (interp.h, interp.c, zfile.c, zfileio.c)
- Completes the implementation of DeviceN color spaces at the interpreter
- level. (lib/gs_res.ps, lib/gs_lev2.ps, lib/gs_ll3.ps, icsmap.h, zcsdevn.c,
- zcsindex.c, zcssepr.c, zimage.c)
- Speeds up color mapping for identity transfer, BG, or UCR functions.
- (zcolor.c)
- </pre><h3><a name="5.80_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - The L range for Lab color spaces was wrong. (lib/pdf_draw.ps)
- - Images in Lab color spaces came out all black. (lib/pdf_draw.ps)
- Improves the font substitution mechanism slightly. (lib/pdf_font.ps)
- </pre><h3><a name="5.80_Streams"></a>Streams</h3><pre>
- Adds an error string to the stream state structure, which stream
- implementations can set when returning an error. The motivation is to allow
- the PostScript interpreter to put this into $error.errorinfo. (scommon.h,
- stream.c)
- </pre><h3><a name="5.80_Library"></a>Library</h3><pre>
- Fixes problems:
- - The S_ISCHR fix in 5.73 had a typo. (stat_.h)
- - The garbage collector traced dash pattern pointers even if the
- pattern had no elements. (gzline.h, gsistate.c)
- - Always tracing the clip_path element of gx_device_clist for
- garbage collection could cause crashes, because this pointer could be stale.
- However, we have to trace this pointer if an image is being processed.
- (gxclist.c)
- - A close-brace was positioned incorrectly. (No effect on the
- working of the code.) (gximage3.c)
- - Some macros caused some compilers to complain about functions that
- didn't return values. (gsmemlok.c)
- - A procedure vector wasn't declared const. (gsmemlok.c)
- - Some needed headers weren't included. (gscrdp.c)
- - A const pointer was being treated as non-const. (gxcpath.c)
- - The algorithm for choosing halftone cell dimensions required an
- unreasonably close angle tolerance (0.01 degrees, rather than 1% of a
- 90-degree possible difference). (gshtscr.c)
- Speeds up arcs a little more. (gspath1.c)
- Removes some unnecessary #includes. (gxclpath.h, gxcpath.h, gzcpath.h,
- gxccman.c, gxclip.c, gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c,
- gximono.c, gxiscale.c, gxpcmap.c)
- Cleans up some formatting. (gxpath.c)
- Re-enables image interpolation for images that have at least 8 bits of input
- data per pixel. This is still a compromise.... (gxiscale.c)
- Enhances the default implementation of parameter lists so that a C parameter
- list can forward unrecognized param_read calls to another parameter list.
- This allows constructing incrementally modified parameter lists for internal
- purposes. (gsparam.h, gscparam.c)
- Changes the first argument of the Type 1 charstring interpreter push_value
- (which is renamed push_values) and pop_value callbacks from the font pointer
- to an arbitrary pointer passed in to the interpreter. This is needed for
- PostScript interpreter reentrancy. (gstype1.h, gxfont1.h, gxtype1.h,
- gstype1.c, gxtype1.c)
- Adds an allocator wrapper that calls a closure to attempt to free up memory
- if an allocation fails. This is used for asynchronous operation (waiting
- for the page queue to empty) and operation with an optional disk for the
- band list. (gsmemret.h, gsmemret.c)
- Adds the retrying wrapper to the malloc allocator. (gsmalloc.c)
- Makes "async" printer devices use the retrying wrapper. (gdevprna.c)
- Makes clist_fill_parallelogram recognize rectangles. This makes a big
- difference for images rotated 90 degrees. (gsrect.h, gdevddrw.c,
- gxclpath.c)
- Arranges to construct the list of image classes (formerly called strategies)
- statically rather than dynamically. (lib.mak, gscdefs.h, gxiclass.h,
- gximage.h, gconf.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c,
- gxipixel.c, gxiscale.c)
- Implements Indexed color spaces for high-level image banding. (gxclist.h,
- gxclpath.h, gxclimag.c, gxclrast.c)
- Arranges to construct the blank bitmap for colored patterns statically
- rather than dynamically. (gsbitmap.h, gxbitmap.h, gxcht.c)
- Changes FORCE_STRIP_HALFTONES from a #define to a static Boolean.
- (gshtscr.c)
- Implements alternate-space DeviceN color spaces. (gscspace.h, gxcdevn.h,
- gscdevn.c)
- Implements DeviceN color spaces for images. (gximage.h, gsimage.c,
- gxi12bit.c, gxicolor.c, gxidata.c, gximage3.c, gximono.c, gxipixel.c)
- Speeds up color mapping a bit. (gxfmap.h, gsdevice.c, gsstate.c,
- gxclbits.c, gxclrast.c, gxcmap.c)
- </pre>
- <hr>
- <h2><a name="Version5.73"></a>Version 5.73 (tester) (3/19/99)</h2>
- <p>
- This fileset fixes a few bugs and adds a couple of minor performance
- improvements. Its purpose is to fix a fairly serious memory management bug
- and a Microsoft-platform compilation problem, both introduced in 5.72.
- <h3><a name="5.73_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - Removes the restriction on device registration that was introduced
- in 5.72.
- - gx_[c]path_scale_exp2 are replaced by gx_[c]path_scale_exp2_shared.
- </pre><h3><a name="5.73_Documentation"></a>Documentation</h3><pre>
- Identifies GNU readline support as user-contributed, and adds the author's
- name. (int.mak, unix-gcc.mak, gp_gnrdl.c)
- Notes that an edit is required for GNU readline for AIX. (doc/Make.htm)
- Changes the bug reporting e-mail address to bug-gs@aladdin.com.
- (doc/Bug-form.htm, doc/New-user.htm, doc/Use.htm, imainarg.c)
- </pre><h3><a name="5.73_Procedures"></a>Procedures</h3><pre>
- Adds FEATURE_DEVS_EXTRA and DEVICE_DEVS_EXTRA, reserved for setting from the
- command line. (gs.mak)
- </pre><h3><a name="5.73_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - A needed cast was missing. (gdevx.c)
- </pre><h3><a name="5.73_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - A needed cast was missing. (zfname.c)
- - The CFF loader didn't handle empty subsections correctly.
- (lib/gs_cff.ps)
- - GNU readline gave an error, rather than expanding the input
- buffer, when called in response to %lineedit. (files.h, zfileio.c,
- ziodev.c)
- - GNU readline wasn't always initialized, causing a crash when an
- attempt was made to shut it down. (iminst.h, imain.c)
- Adds more tracing to the CFF loader. (lib/gs_cff.ps)
- Adds some deconstifying casts to compensate for broken headers in the GNU
- readline package. (gp_gnrdl.c)
- </pre><h3><a name="5.73_Library"></a>Library</h3><pre>
- Fixes problems:
- - The bounding box device didn't ignore filling paths consisting
- only of a moveto. (gdevbbox.c)
- - Some systems have S_IFCHR but not S_ISCHR. (stat_.h)
- - The clipping list accumulator didn't merge single rectangles
- correctly. (gxacpath.c)
- - The clipping list accumulator wasn't aggressive enough about
- merging rectangles. (Performance effect only.) (gxacpath.c)
- - The page wasn't cleared when installing a new device. (bug
- introduced in 5.72) (gsdevice.c)
- - With graphics anti-aliasing enabled, executing clip or eoclip
- followed by fill or stroke produced incorrect output. (bug introduced
- between 5.10 and 5.50) (gxpath.h, gspaint.c, gxcpath.c, gxpath2.c)
- - The garbage collector could crash if any banded devices were
- active. (bug introduced in 5.72) (gdevprn.c)
- Changes memory management for device instances to allocate the structure
- type objects dynamically. This gets rid of a static, and also gets rid of
- the requirement that device prototypes be registered, at the expense of an
- extra copy of the (small) structure type object per instance of certain
- devices. (gscdefs.h, gxdevcli.h, gxdevice.h, gconf.c, gsdevice.c)
- Disables image interpolation for all high-resolution images, not just
- black-and-white, since this produces better-looking output. (gxiscale.c)
- Speeds up path bounding box computation a little. (gxpath2.c)
- Speeds up clipping a little. (gxclip.c)
- Cleans up formatting a bit. (gxacpath.c)
- Adds support for libpng version 1.0.3, but (for now) updates only the
- OpenVMS and Unix makefiles to use it. (libpng.mak, openvms.mak,
- openvms.mmk, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak)
- Attempts to work around picky compilers that don't allow assigning T[M][N]
- to const T[M][N]. (gxcht.c)
- </pre>
- <hr>
- <h2><a name="Version5.72"></a>Version 5.72 (tester) (3/17/99)</h2>
- <p>
- This fileset finally gets rid of the need to have jpeg, libpng, or zlib
- source code on Unix systems that already have these libraries available. It
- also starts to add support for general DeviceN color spaces.
- <p>
- Works in progress:
- <ul>
- <li> - Fix Fontmap -> Fontmap.GS link, which VMS can't handle.
- <li> - Make x11alpha do real alpha blending.
- <li> - spdiff.c is unfinished, partly wrong.
- <li> - DeviceN support is in progress. In gxcht.c,
- set_ht_colors_le_4
- and set_color_ht_gt_4 don't have any way to color-map >4 planes.
- </ul>
- <h3><a name="5.72_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - The str argument of arg_push_memory_string is no longer const.
- - The last argument of print_reloc is now const.
- (Library)
- - Clients should never call the device open_device or close_device
- procedure directly: they should call gs_opendevice or gs_closedevice.
- - The fn_free_functions procedure has been made private.
- - The first argument of gs_currentpoint is no longer const.
- - References to header files in the third-party libraries must now
- include a trailing _, i.e.: jerror_.h jmorecf_.h jpeglib_.h png_.h zconf_.h
- - IJG JPEG library versions before v5a are no longer supported.
- - ilog2 replaces small_exact_log2.
- - Support for "outside" clipping has been removed.
- - Clients that define their own devices now must either register
- them in the makefile (using the SET[P]DEV[2] macros) or set the stype
- pointer in the static prototype to the correct structure type (or at least a
- structure type with the correct procedures).
- </pre><h3><a name="5.72_Documentation"></a>Documentation</h3><pre>
- Clarifies the fact that clients should never call the device open_device or
- close_device procedure directly. (doc/Drivers.htm)
- Updates contact information for Artifex Software. (doc/Commprod.htm,
- doc/New-user.htm)
- Clarifies the fact that Aladdin did not write gdevcdj.c. (gdevcdj.c)
- Documents the new -TTYPAUSE switch. (doc/Use.htm)
- Adds SCO OpenServer 5.0.5 to the list of systems where Ghostscript is known
- to build. (doc/Make.htm)
- Notes that the MIPSpro 7.2.1.3m compiler produces incorrect output.
- (doc/Make.htm)
- </pre><h3><a name="5.72_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The Unix install directory ($(gsdatadir)) and the Unix default
- search path ($(gsdatadir)/lib) weren't compatible. (bug introduced since
- 5.50) (unixinst.mak)
- - The compilation rule for echogs omitted a dependency and also
- failed to specify a directory for header files. (unix-aux.mak)
- - Third-party library source code was required even if the
- corresponding SHARE_xxx option was set to 1. (devs.mak, gs.mak, int.mak,
- lib.mak, jpeg.mak)
- Adds a -dTTYPAUSE switch to cause .confirm to read from /dev/tty instead of
- stdin, useful when the data input is a pipe. (lib/gs_init.ps)
- </pre><h3><a name="5.72_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - Some preprocessor macros were defined twice on VMS. (echogs.c)
- - traceop.ps didn't build operator-tracing procedures in global VM.
- (This didn't matter before we introduced local pseudo-operators.)
- (lib/traceop.ps)
- - geninit produced invalid output or hung if the input files didn't
- have the correct EOL representation for the platform. (geninit.c)
- Updates a (probably otherwise obsolete) file for the deletion of the private
- JPEG library error message table. (bughunt.sh)
- </pre><h3><a name="5.72_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - A procedure returning void tried to return a value. (gdevtfax.c)
- - For 24-bit displays, XGetImage can return an image in which
- bits_per_pixel is 32 rather than 24, which is not at all obvious from the
- documentation; also, the bit and byte ordering may not be MSBFirst.
- (gdevx.c)
- - XFree takes a char *, not a void *. (gdevx.c)
- - The fix in 5.71 to adjust the width of TIFF images introduced
- another bug. (gdevtfax.c)
- - If the X driver used a standard colormap, pixel values 255 and
- less didn't map back to RGB properly. (bug introduced in 5.71) (gdevxcmp.c)
- - The ForceMono addition to gdevbit.c (in 5.71) was incorrect.
- (gdevbit.c)
- - There was a const mismatch in an extern. (gdevxalt.c)
- - Third-party library source code was required even if the
- corresponding SHARE_xxx option was set to 1. Fixing this required
- referencing all third-party library header files through *_.h files.
- (gdevjpeg.c, gdevpdfi.c, gdevpng.c, gdevpsdi.c, gdevpsdp.c)
- - There was no way to cause the bounding box device to give up its
- reference to the target. (gdevbbox.h, gdevbbox.c)
- - pdfwrite crashed if given a 12-bit-per-sample CMYK image when
- ConvertCMYKImagesToRGB was true, and produced invalid output for other
- 12-bit-per-sample images (PDF limits bits-per-sample to 8). (gdevpsdi.c)
- - pdfwrite mangled planar images if bits-per-sample was other than
- 8. (bug introduced since 5.50) (gdevpdfi.c)
- Changes some code to reduce compiler warnings about casts discarding const.
- (gdevxalt.c)
- Removes a test that allowed referencing the statically allocated instance of
- the alternative X drivers. (gdevxalt.c)
- Changes a reference to small_exact_log2. (gdevsvga.c)
- Greatly improves the PDF writer's handling of simple pattern fills, by
- retaining them as pattern fills. (gdevpdfx.h, gdevpdf.c, gdevpdfi.c)
- </pre><h3><a name="5.72_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - Cn in a font name wasn't recognized as indicating a condensed
- font. (lib/gs_fonts.ps)
- </pre><h3><a name="5.72_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Third-party library source code was required even if the
- corresponding SHARE_xxx option was set to 1. Fixing this required
- referencing all third-party library header files through *_.h files.
- (zfdctd.c, zfdcte.c)
- - An /undefined error occurred on floating point numbers whose
- integer part exceeded the size of a long (normally 31 bits) and that also
- included a fraction. (iscannum.c)
- - ialloc.c included gxarith.h unnecessarily. (ialloc.c)
- When opening a terminal for reading, always sets the buffer size to 1. This
- does not apply to %stdin, %lineedit, or %statementedit. (zfile.c)
- Changes code to use the new deconstifying freeing procedures, to remove
- deconstifying casts. (gsargs.h, ialloc.h, gsargs.c, zfname.c, zfunc.c)
- Adds a writable packed ref pointer variant to ref.value, to remove compiler
- warnings about casts discarding const. (igc.h, iref.h, idict.c, igc.c,
- igcref.c)
- Changes the help printouts to use the new printf_program_ident procedure.
- (imainarg.c)
- Generalizes clients to handle color spaces that may have more than 4
- components. (zcsdevn.c, zcsindex.c, zcssepr.c, zdpnext.c, zfdecode.c)
- Removes support for outside clipping, which we implemented only because we
- misinterpreted a requirement. (zpath.c)
- </pre><h3><a name="5.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Selecting a colored Pattern color space caused an error.
- (lib/pdf_draw.ps, lib/pdf_ops.ps)
- - Reading data from a subfile with no filter caused an error.
- (lib/pdf_base.ps)
- Allows mask images to omit BitsPerComponent: Acrobat Reader accepts this
- even though the PDF specification requires it to be present (with value =
- 1). (lib/pdf_draw.ps)
- </pre><h3><a name="5.72_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - The PixelDifference filters didn't propagate leftover bits in the
- last byte of a row. (bug probably introduced in 5.60) (spdiff.c)
- - The 1- and 2-bit-per-pixel PixelDifferenceEncode filters were
- broken. (spdiff.c)
- Changes code slightly to remove a warning about an uninitialized variable.
- (spdiff.c)
- Extends the PixelDifference filters to handle more than 4 Colors.
- s_PDiff_max_Colors is the maximum value. (spdiffx.h, spdiff.c)
- Adds a stream for converting 12-bit samples to 8-bit. (gdevpsds.h,
- gdevpsds.c)
- Gets rid of the no longer needed private copy of the JPEG error message
- table. (sdcte.c, sdeparam.c, sjpegerr.c [deleted], sjpegc.c)
- </pre><h3><a name="5.72_Library"></a>Library</h3><pre>
- Fixes problems:
- - If a 1-bit-per-pixel image terminated early, the last few scan
- lines might not be written out. (gxidata.c)
- - The bbox device could leave its target in a half-open state,
- because it called the open/close_device procedures directly rather than
- going through gs_open/closedevice. We "fixed" this by making this device
- forward open and close, but conditionally, so that clients can choose.
- (gdevbbox.c)
- - Third-party library source code was required even if the
- corresponding SHARE_xxx option was set to 1. Fixing this required
- referencing all third-party library header files through *_.h files.
- (sdcparam.c, sdctc.c, sdctd.c, sddparam.c, sjpegc.c, sjpegd.c, sjpege.c,
- sjpegerr.c)
- - Low-memory recovery in the band list writer sometimes didn't work,
- because a test was backwards. (gxcldev.h, gxclist.c)
- - Executing a put_params during band rasterizing didn't update
- cached values in the imager state. This was probably not a problem in
- practice, since the only parameters that affect cached values (device color
- space, depth, and color mapping) were very rarely set. (gxclrast.c)
- - Converting 12-bit planar images to chunky format could store
- beyond the end of the output area and corrupt memory. (gsflip.h, gsflip.c)
- - The algorithms for converting 4-plane, 1- and 2-bit planar images
- to chunky format were wrong. (gsflip.c)
- - Images that lay entirely outside the page could cause a memory
- access error. (gxclimag.c)
- - The bbox device could return excessively conservative values for
- stroked paths. (gxpaint.h, gdevbbox.c, gxpaint.c, gxstroke.c)
- - Banding devices now include some pointers that the garbage
- collector must trace. (gdevprn.h, gxclist.h, gxdevice.h, gdevprn.c,
- gsdevice.c, gxclist.c)
- Adds a gs_opendevice procedure to mirror gs_closedevice. (gsdevice.h,
- gsdevice.c)
- Adds deconstifying freeing procedures to the memory manager. This allows us
- to have pointers as structure members that should be const * for all
- ordinary clients, and still be able to free the referenced objects without a
- compiler warning. (gsmemory.h, gsmemory.c)
- Changes code, often to use the new deconstifying freeing procedures, to
- remove deconstifying casts. (gspath.h, gxfunc.h, gsfunc.c, gsfunc0.c,
- gsfunc3.c, gspath.c, gsptype1.c)
- Changes the eprintf macros so they print the version as well as the program
- name. (std.h, gscdef.c, gsmisc.c)
- Adds procedures that update cached values in graphics or imager states after
- setting device parameters. Clients should use these when setting parameters
- of devices that may be current in graphics or imager states. Note that this
- is only a partial solution for a much deeper problem, and may even have to
- be replaced at some point. (gsdevice.h, gsdevice.c)
- Defines GS_CLIENT_COLOR_MAX_COMPONENTS (in gsccolor.h),
- GX_DEVICE_COLOR_MAX_COMPONENTS (in gxcindex.h), and GS_IMAGE_MAX_COMPONENTS,
- and starts to use them where needed, in anticipation of implementing DeviceN
- color spaces. (gsccolor.h, gsdcolor.h, gsiparam.h, gsiparm4.h, gxcindex.h,
- gxctable.h, gximage.h, gxshade.h, gdevplnx.c, gscdevn.c, gscolor2.c,
- gxcht.c, gxclimag.c, gxcmap.c, gxicolor.c, gxctable.c, gxi12bit.c)
- Replaces small_exact_log2 by a procedure ilog2 that computes floor(log2(n)).
- (gxarith.h, gsmisc.c, gspaint.c, gxccman.c, gxclimag.c, gxclrect.c)
- Upgrades gsflip.c to handle >4 planes. (gsbitops.h, gsflip.h, gsflip.c)
- Speeds up getting and testing memory device prototypes a little. (gdevmem.c)
- Speeds up adding arcs to a path a little. (gspath1.c)
- Increases the precision of a precomputed constant from float to double.
- (gxpath.h)
- Adds a new band list operation to make circles smaller and faster.
- (gxclpath.h, gxclpath.c, gxclrast.c)
- Adds an accessor procedure for the start point of the current subpath.
- (gxpath.h, gxpath2.c)
- Removes support for outside clipping, which we implemented only because we
- misinterpreted a requirement. (gspath.h, gxcldev.h, gxcpath.h, gxpath.h,
- gspath.c, gxacpath.c, gxclip.c, gxclpath.c, gxclrast.c, gxcpath.c)
- Changes gs_copydevice to require that static prototypes either be registered
- in gx_device_list or have a correct stype pointer. (This is already the
- case for all devices in code we distribute.) (gsdevice.c)
- Adds ENUM_PTRS_PROC and RELOC_PTRS_PROC macros for giving a name to the
- typed pointer to the object being processed. (gsstruct.h)
- </pre>
- <hr>
- <h2><a name="Version5.71"></a>Version 5.71 (tester) (3/3/99)</h2>
- <p>
- This fileset reinstates support for TrueColor X displays, and adds optional
- support for GNU readline. It also includes a little more work on the new
- driver text API.
- <h3><a name="5.71_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - The *line_accum* macros are now capitalized; declare_line_accum is
- renamed DECLARE_LINE_ACCUM_COPY, and DECLARE_LINE_ACCUM is new.
- </pre><h3><a name="5.71_Documentation"></a>Documentation</h3><pre>
- Documents the CIE joint cache invariant more accurately. (gscie.h)
- Adds a request for xdpyinfo/xwininfo output to the problem reporting form.
- (doc/Bug-form.htm)
- </pre><h3><a name="5.71_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The default search path was missing the lib subdirectory on many
- platforms. (dvx-gcc.mak, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
- unixtrad.mak, watc.mak, watclib.mak, watcw32.mak)
- - The dependency list for the X Windows drivers was incorrect,
- sometimes causing needed recompilation to be omitted. (devs.mak)
- </pre><h3><a name="5.71_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - The representation of maximum unsigned values produced warnings on
- some compilers (specifically, gcc with -Wtraditional). (genarch.c)
- - Some string variables weren't declared const. (echogs.c,
- genarch.c)
- - The viewpbm utility was broken for pgm and ppm (but not pbm).
- (bug introduced in 5.66) (lib/viewpbm.ps)
- </pre><h3><a name="5.71_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The X driver didn't handle TrueColor displays properly.
- (gdevxcmp.h, gdevxcmp.c)
- - The alternative X drivers didn't implement get_bits properly.
- (gdevxalt.c)
- - The X driver specified the byte order incorrectly for displays
- with more than 8 bits per pixel. (gdevx.c)
- - The X driver used the wrong number of bits for comparing colors on
- visuals with fixed color maps. (gdevxcmp.h, gdevxcmp.c)
- - Some symbols were multiply defined with -DNOPRIVATE. (gdevbit.c)
- - If a file specified a paper size, rather than using the default,
- the G3/G4 fax output drivers didn't adjust the width to a legal one for fax
- systems. (gdevtfax.c)
- Segregates the resource lists, for which warnings about casting of const to
- non-const string types should be suppressed, into a separate file.
- (devs.mak, gdevx.h, gdevxini.c, gdevxres.c)
- Splits off the code related to color mapping for X Windows, for greater
- understandability. (devs.mak, gdevx.h, gdevxcmp.h, gdevx.c, gdevxcmp.c,
- gdevxini.c)
- Changes code slightly to remove warnings about signed/unsigned integer
- constants. (gdevxalt.c)
- Changes code to remove unused variables. (gdevx.c, gdevxalt.c)
- Adds a user-contributed driver for the H-P LaserJet 4D. (devs.mak,
- gdevdjet.c)
- Makes the bitcmyk driver reset its map_cmyk_color procedure dynamically
- according to the depth, allowing more efficient execution in the 1- and
- 8-bit cases. (gdevbit.c)
- Adds a settable option, AdjustWidth, to control whether the fax-format
- drivers (faxg*, tiffcrle, tiffg*) adjust the page width to legal fax values.
- Its default value is 1 (do adjust). (devs.mak, gdevtfax.c)
- Adds a ForceMono parameter to the bitcmyk/bitrgb devices to implement a
- special monochrome-in-CMYK mode requested by a customer. (gdevbit.c)
- Removes the TRIM_ and EXPAND_BITS_TO_BYTES options from the bit devices,
- since they are no longer needed. (gdevbit.c)
- </pre><h3><a name="5.71_Fonts"></a>Fonts</h3><pre>
- Changes the substitution mechanism for condensed / narrow fonts, so that the
- PDF interpreter can use it. (lib/gs_fonts.ps)
- </pre><h3><a name="5.71_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The bind operator generated unaligned accesses and might not
- operate reliably. (bug introduced in 5.70) (zmisc.c)
- - If the BuildChar procedure of a font included an image or
- imagemask operator, charpath would (incorrectly) display the character.
- (zimage.c)
- Adds a bogus return statement to suppress a compiler warning. (gs.c)
- Changes code slightly to remove warnings about signed/unsigned integer
- constants. (store.h, ibnum.c)
- Changes the build date format to %d-%02d-%02d. (lib/gs_init.ps, imainarg.c)
- Rearranges some code to add readline support. (files.h, imain.c, zfileio.c,
- ziodev.c)
- Adds support for GNU readline, with several completion keys, contributed by
- a user. (int.mak, gs_rdlin.ps, gp_gnrdl.c)
- Changes the font substitution machinery slightly so the PDF interpreter can
- use it. (lib/gs_fonts.ps)
- </pre><h3><a name="5.71_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - In-line images caused a syntaxerror or stackunderflow.
- (lib/pdf_draw.ps)
- - The font substitution mechanism didn't detect Condensed fonts.
- (lib/pdf_font.ps)
- - The font substitution mechanism didn't use the intelligent
- algorithm used for PostScript files. (lib/pdf_font.ps)
- Prints a message when substituting for a font on the basis of its
- descriptor. (lib/pdf_font.ps)
- </pre><h3><a name="5.71_Streams"></a>Streams</h3><pre>
- Adds an interface and default implementation for readline. (srdline.h,
- stream.h, stream.c)
- </pre><h3><a name="5.71_Library"></a>Library</h3><pre>
- Fixes problems:
- - A void procedure attempted to return a value. (stream.c)
- - A pointer was declared with an extra *. (gsmemory.c)
- - An argument would be stringified with traditional C. (gdevdbit.c)
- - The check for validity of the CIE joint caches was wrong, leading
- to incorrect output in some obscure cases. (gsciemap.c)
- - A tiny rounding inaccuracy could cause an occasional blank line
- when rendering adjacent images. (gxipixel.c)
- - Some symbols were multiply defined with -DNOPRIVATE. (gsptype2.h)
- - If a character was too large to be cached, it didn't use
- anti-aliasing, even if TextAlphaBits was >1. (gspaint.c)
- Changes code slightly to remove warnings about signed/unsigned integer
- constants. (gsccode.h, gsmisc.c, gxcht.c)
- Changes code to remove a warning about an unhandled case in a switch.
- (gsstruct.h, gsmemory.c)
- Changes code to remove unused variables. (gxcindex.h, gdevdbit.c,
- gdevprn.c, gxiscale.c)
- Restructures the header files for the new text API, adding the SINGLE
- options in text_params, enough new elements in text_enum to store all the
- arguments of text_begin, and new elements in text_enum to hold results
- returned by text_process. This code is no longer "subject to [arbitrary]
- change without notice", although it is still not very stable. (gstext.h,
- gxtext.h, gstext.c)
- Changes code to remove warnings about uninitialized variables. (gxipixel.c)
- Changes the syntactic form of some constants yet again to suppress a
- different set of compiler warnings. (gxsample.c)
- Adds a procedure to fix the charpath-in-BuildChar problem. (gsimage.h,
- gsimage.c, gsptype1.c)
- Speeds up the handling of certain RasterOp cases for CMYK devices.
- (gxdevice.h, gxdevmem.h, gdevdrop.c, gdevmem.c, gdevmr8n.c, gdevrops.c)
- Adds a platform-specific interface for reading lines from stdin. This is
- intended primarily to support GNU readline. (lib.mak, gp.h, gp_strdl.c)
- </pre>
- <hr>
- <h2><a name="Version5.70"></a>Version 5.70 (internal) (2/20/99)</h2>
- <p>
- This fileset includes substantial changes to the interpreter in support of
- making it fully reentrant (eliminating writable globals).
- <h3><a name="5.70_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Interpreter)
- - The ref_stack structure has been renamed ref_stack_t, and has been
- changed substantially. Clients should now access all of its members, other
- than the pointers to the current block, through the macros or procedures
- defined in istack.h. The STACK_LOOP_{BEGIN,END} macros have been removed.
- - The argument of context_state_load is no longer const.
- - Each file's table of operator definitions is now limited to 16
- entries. op_def_table[] no longer exists: use op_index_def() instead.
- - invalid_file_entry now has an associated VM space,
- avm_invalid_file_entry, that must be used in constructing invalid file refs.
- - restore will now undo binding of pseudo-operators. Attempting to
- bind a local pseudo-operator into a global procedure will cause an
- invalidaccess error.
- </pre><h3><a name="5.70_Documentation"></a>Documentation</h3><pre>
- Updates the driver documentation a bit. It probably still includes a lot of
- out-of-date text. (doc/Drivers.htm)
- Improves the problem reporting form to make it absolutely clear that test
- data are required, and that the problem must be reproducible without using a
- viewer. (doc/Bug-form.htm)
- Documents the -dDOINTERPOLATE switch. (doc/Use.htm)
- Documents the difference between public and tester releases, in connection
- with making tester releases available to everyone. (doc/New-user.htm)
- Updates the list of history files. (doc/Readme.htm)
- Adds a questionnaire for people who want to be notified of new test
- releases. (doc/Readme.htm, doc/Tester.htm)
- </pre><h3><a name="5.70_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - A ! was missing before an include. (bcwin32.mak, msvc32.mak)
- - A trailing \ in some macro definitions was quoted incorrectly.
- (bcwin32.mak, msvc32.mak)
- - An editing error prevented a makefile from working. (bcwin32.mak)
- - The 16-bit spooler executable didn't reference its icon correctly.
- (gs16spl.rc)
- - The Watcom makefiles had gotten badly out of date. (watc.mak,
- watclib.mak, wccommon.mak)
- - Some DEVICE_DEVS lines were too long for the shell to handle.
- (openvms.mmk)
- - A space was missing before a colon. (openvms.mmk)
- Updates MSVC support to handle version 6. (msvc32.mak)
- Extends genconf to handle function types as well as image types, and changes
- the output for image types. (genconf.c)
- Desupports the use of CONFIG for selecting between multiple configurations,
- since parameterized output directories do this better. (bcwin32.mak,
- dvx-gcc.mak, gs.mak, int.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
- openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
- watc.mak, watclib.mak, watcw32.mak)
- Adds a -dDOINTERPOLATE switch to force Interpolate in all images.
- (lib/gs_init.ps)
- </pre><h3><a name="5.70_Utilities"></a>Utilities</h3><pre>
- Rewrites viewpcx to eliminate dependence on a special filter.
- (lib/viewpcx.ps)
- </pre><h3><a name="5.70_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The [e]pswrite and pdfwrite drivers wrote out clipping paths using
- the winding number rule even if the path had been set with eoclip.
- (gdevpdfd.c, gdevvec.c)
- - Some occurrences of ushort should have been gx_color_value.
- (gdevpbm.c)
- - A comment was accidentally left outside comment quotes.
- (gdev3852.c)
- - There was a char/byte mismatch not covered by a cast.
- (gdevdcrd.c)
- - There were still some references to the 'huge' keyword, which has
- been superseded by FAR. (gdevwdib.c)
- - Some obsolete references to which_colors hadn't been removed.
- (gdevwdib.c)
- - The [e]pswrite driver produced incorrect output for a curveto or
- closepath followed by a lineto and then a moveto. (gdevps.c)
- - The [e]pswrite driver could produce incorrect output for paths
- ending with a lineto. (gdevps.c)
- - The name paper_sizes was used both by a driver and by other code,
- causing a problem when building with -dNOPRIVATE. (gdevclj.c)
- Consolidates the X error handling statics into a structure. (gdevxini.c)
- Updates the pdfwrite driver to reflect the addition of state to the
- ASCII85Encode filter. (gdevpsdf.c)
- Adds a user-contributed driver for the Lexmark 5700 printer (black-and-white
- only). (contrib.mak, gdevlxm.c)
- Updates the mswinpr2 driver with a new, user-contributed one that includes
- interaction with the user. (gdevwpr2.c)
- </pre><h3><a name="5.70_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - When TrueType support was present, the FONTPATH scanner didn't
- recognize TrueType fonts whose 'type' was "true" rather than the documented
- <00 01 00 00>. (lib/gs_ttf.ps)
- - When DEBUG was set, loading a TrueType font could cause an
- /undefined error. (lib/gs_ttf.ps)
- </pre><h3><a name="5.70_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Local (pseudo-)operators could get bound into global procedures
- with 'bind', causing dangling references. Attempting this now causes an
- invalidaccess error. Fixing this also required making restore undo binding
- of pseudo-operators. (zmisc.c)
- - A harmless dictfull error occurring during language level
- switching caused an error. (zmisc2.c)
- - If given a closed input file, flushfile caused an error, rather
- than doing nothing. (zfileio.c)
- Renames the ref_stack structure as ref_stack_t, and factors it so that the
- parts set only at initialization are separated from the dynamic parts, in
- support of moving the stacks from static to dynamic storage. (icstate.h,
- idebug.h, idstack.h, iestack.h, iostack.h, iparam.h, iparray.h, istack.h,
- idebug.c, interp.c, iparam.c, istack.c, zcontext.c, zpacked.c, zvmem.c)
- Moves the dynamic part of the stacks in-line in the context structure; gets
- rid of the statically allocated stacks. (dstack.h, estack.h, icontext.h,
- icstate.h, idstack.h, iestack.h, interp.h, iostack.h, ostack.h, icontext.c,
- iinit.c, interp.c, zcontext.c)
- Packages the dictionary lookup statistics in a structure, like the other
- statistics. (idict.c)
- Changes from dynamic to static initialization of the function type table.
- (int.mak, ifunc.h, iconf.c, zfunc.c, zfunc0.c, zfunc3.c)
- Removes the PCXDecode filter. (zfilterx.c)
- Removes more writable statics. (int.mak, btoken.h, files.h, icstate.h,
- igstate.h, ipacked.h, iscan.h, icontext.c, imain.c, iscan.c, iscanbin.c,
- zbseq.c, zcolor2.c, zcontext.c, zgstate.c, ziodev.c, zmath.c, zpcolor.c,
- zpacked.c)
- Changes the representation of the operator table to avoid allocating a
- dynamic copy. This introduces a limit of 16 entries per definition set.
- (int.mak, opdef.h, iconf.c, idebug.c, iinit.c, interp.c, iutil.c,
- zcontext.c, zcontrol.c, zdict.c, zfileio.c, zgstate.c, ztype.c)
- Includes the ASCII85Decode filter in all configurations, for simplicity.
- (iscan.c, zfdecode.c)
- Makes the invalid file reference point to a static object. (files.h,
- icontext.c, zfile.c, ziodev.c)
- Changes all dictfull error returns from the dictionary code to use
- return_error. This should have been done a long time ago! (idict.c)
- Increases the predefined size of systemdict a little more because .upp files
- may define a lot of new entries. (iinit.c)
- Adds a few more interpreter statistics. (interp.c)
- </pre><h3><a name="5.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Images never closed the data stream, placing a heavy load on the
- garbage collector to clean up streams and stream states. (lib/pdf_draw.ps)
- - Streams stored on external files didn't work. (lib/pdf_base.ps)
- Reorganizes code slightly to allocate less memory for in-line images.
- (lib/pdf_draw.ps)
- Speeds up some common operations a little. (lib/pdf_base.ps)
- </pre><h3><a name="5.70_Streams"></a>Streams</h3><pre>
- Removes the PCXDecode filter. (spcxx.h [deleted], spcxd.c [deleted])
- Changes the name of a variable for greater clarity. (stream.c)
- Splits off the ASCII85Decode filter into a separate file, since it turns out
- to be convenient to include it in all configurations. (sa85d.h, sa85x.h,
- sa85d.c, sfilter2.c)
- Makes an initialization entry point available for non-heap-allocated
- streams. (stream.h, stream.c)
- Changes the ASCII85Encode filter so it always produces lines of at most 80
- characters, not counting the EOD marker. THIS IS A NON-BACKWARD-COMPATIBLE
- CHANGE, because this filter now needs a state structure, which it didn't
- before. (sa85x.h, sfilter2.c)
- </pre><h3><a name="5.70_Library"></a>Library</h3><pre>
- Fixes problems:
- - Reference counting of graphics state elements was wrong when
- creating multiple contexts, causing memory corruption. (bug probably
- introduced in 5.68) (gsstate.c)
- - If CIE joint caches were created because the reference count of
- the existing caches was >1, the new caches weren't initialized correctly.
- (bug introduced in 5.60, found by Ray Johnston.) (gscie.c)
- - If Margins are set so that part of the default clipping region
- lies outside the ((0,0),(width,height)) device coordinate space, the fast
- case of images could cause a memory access error. (gxifast.c)
- - In the case of a halftone with more bits than levels,
- gx_check_tile_cache could incorrectly return false, causing images to render
- more slowly than they should. (gzht.h, gxht.c)
- - There was a const mismatch between an argument and the formal
- parameter. (gdevprn.h, gdevprn.c, gxclread.c)
- - An error in the definition of st_imager_state_num_ptrs caused the
- garbage collector to omit marking one pointer in imager states, possibly
- causing memory corruption. (gxistate.h)
- - The bbox device, used with no target, didn't properly handle
- images where more data was provided than needed. (gdevbbox.c)
- Removes any pretense of supporting multiple threads in a single-threaded
- environment. Dummy synchronization primitives, however, are still provided.
- (gp_nsync.c)
- Removes more writable statics. (gximage.h, gxi12bit.c, gxino12b.c,
- gxipixel.c)
- Changes the handling of image types, and adds similar handling for function
- types. (gscdefs.h, gconf.c)
- Consolidates the gs_std* files into a structure. (gsio.h, gsmisc.c)
- Speeds up the fastest (common) case of clipping fill_rectangle and copy_mono
- operations. We could do the same for the other operations if we wanted.
- (gxclip.c)
- Identifies this fileset as a tester release. (gscdef.c)
- </pre>
- <hr>
- <h2><a name="Version5.69"></a>Version 5.69 (internal) (2/4/99)</h2>
- <p>
- This incremental fileset fixes minor compilation problems, as well as many
- problems with driver-based CRDs (not used by PostScript or PDF).
- <h3><a name="5.69_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The OpenVMS makefile had not been updated properly to reflect the
- division of files into subdirectories. (openvms.mak)
- - A space was missing before a :. (devs.mak)
- - The MMK makefile had not been updated to reflect the renaming of
- the psm[raw] devices to pksm[raw]. (openvms.mmk)
- Changes the default name of the build directory for the library test program
- from debugobj to libobj, so that one can work with both library and
- interpreter builds without interference. (ugcclib.mak)
- Adds -fno-builtin to the gcc switches, to detect failure to declare
- functions like memcpy, at a small cost in performance. (ugcclib.mak,
- unix-gcc.mak)
- </pre><h3><a name="5.69_Utilities"></a>Utilities</h3><pre>
- Makes a couple of minor fixes to ansi2knr, suggested by users. (ansi2knr.c)
- Updates ps2ai.ps with an improved version from its author. (lib/ps2ai.ps)
- </pre><h3><a name="5.69_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The 32-bit CMYK "async" BMP driver was declared incorrectly as a
- non-async device. (gdevbmpa.c)
- - Some #includes were missing, because gcc didn't warn about
- failures to declare certain standard functions. (x_.h, gdevdcrd.c, gdevx.c)
- - The PC frame buffer device still referred to _ss and near.
- (gdevpcfb.c)
- - The [e]pswrite driver didn't handle bitmaps with a non-zero X bit
- offset correctly. (gdevps.c)
- - The pdfwrite driver wrote all clipping paths with the winding
- number rule, even if they were established by eoclip. (gdevpdfd.c)
- - "Vector" drivers wrote all clipping paths with the winding number
- rule, even if they were established by eoclip. (gdevvec.c)
- Adds the CRDName parameter to the sample driver-based CRD. (gdevdcrd.c)
- Tweaks the sample driver-based CRD to make it a more realistic (closer to
- the PostScript default). (gdevdcrd.c)
- Adds the sample driver-based CRD to the modified X drivers. (devs.mak,
- gdevxalt.c)
- </pre><h3><a name="5.69_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Some #includes were missing, because gcc didn't warn about
- failures to declare certain standard functions. (zchar1.c)
- - Driver CRDs were not supported properly. (zcrd.c, lib/gs_lev2.ps)
- Changes some code because non-int switch expressions are not handled
- correctly in pre-ANSI C. (igcref.c, zdevice.c)
- Adds the ability to set the orientation of zero-length "dots". (zgstate.c)
- Adds comments on an alternative shallow-binding design. (dstack.h)
- Changes the threshold for repeatedly rescanning change lists so that it is
- based on the cumulative amount of rescanning and not the amount in a single
- pass. (isave.c)
- </pre><h3><a name="5.69_Streams"></a>Streams</h3><pre>
- Changes some code because non-int switch expressions are not handled
- correctly in pre-ANSI C. (sfilter1.c)
- </pre><h3><a name="5.69_Library"></a>Library</h3><pre>
- Fixes problems:
- - Some casts to (gx_device *) were missing. (gschar.c)
- - Some #includes were missing, because gcc doesn't warn about
- failures to declare certain standard functions. (gdevdgbr.c, gscie.c,
- gsmatrix.c, gxshade1.c)
- - gxclread.c now needs gdevprn.h to declare certain procedures. We
- tried very hard to make the command list machinery not depend on anything
- related to printer devices, but at this point we have not succeeded.
- (gxclread.c)
- - For CRDs set by library clients, the is_identity flags in the
- caches were set incorrectly, producing incorrect output. (gscie.h, gscie.c,
- gscrd.c, gscrdp.c)
- - For CRDs set by library clients, the EncodeABC and RenderTable T
- procedures were sampled incorrectly. (gsciemap.c, gscrd.c)
- - The interpreter tried to sample the TransformPQR functions in the
- PostScript CRD even for driver CRDs. (gscie.h, gscie.c)
- - Library assistance was needed for the interpreter to support
- driver CRDs properly. (gscrdp.h, gscrdp.c)
- - The procedures that accessed cached CIE values didn't round the
- index, so accessing already-cached values could wipe out the cache.
- (gscie.c)
- - The procedure that accessed cached RenderTable.T values simply
- wasn't implemented. (gscrd.c)
- Adds an "if (1)" to a macro to suppress "statement not reached" warnings
- from stupid compilers. (gsmemlok.c)
- Changes the syntactic form of some constant tables to suppress
- signed/unsigned warning messages. (gsbitops.c, gxsample.c)
- Changes some switch statements to if/else because non-int switch expressions
- are not handled correctly in pre-ANSI C. (gdevmr8n.c, gxdcolor.c)
- Adds the ability to set the orientation of zero-length "dots". (gsline.h,
- gxline.h, gsline.c, gsstate.c, gxstroke.c)
- Adds an allocator state variable to support the change in the rescanning
- algorithm. (gxalloc.h)
- </pre>
- <hr>
- <h2><a name="Version5.68"></a>Version 5.68 (internal) (1/29/99)</h2>
- <p>
- This fileset implements PatternType 2 (gradient fill) Patterns. All
- significant PostScript LanguageLevel 3 features are now implemented, except
- for DeviceN color spaces. We have also verified that the MMK script for
- OpenVMS also works with MMS.
- <p>
- Note that there are significant non-backward compatible changes to memory
- management for device instances: we are sorry about this, but just as with
- paths in 5.22, we had to fix this design problem at some point.
- <h3><a name="5.68_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - A new makefile, unix-aux.mak, must be included in all Unix
- top-level makefiles. (It is included in the ones we distribute.)
- unixtail.mak is renamed unixlink.mak.
- (Library)
- - The names of the anti-aliasing parameters in the device color_info
- structure have been changed.
- - Dummy definitions for PC-specific C keywords (_cs, _ds, _ss, near,
- far, huge) are no longer provided: these keywords should be removed from
- non-PC-specific code.
- - The names of the alignment_mod, ptr_le, ptr_lt, ptr_ge, ptr_gt,
- and ptr_between macros have been changed to upper case (ALIGNMENT_MOD etc.)
- - gs_make_null_device now takes an additional argument.
- - The ccolor member of a gx_device_color is no longer inside a
- substructure.
- - Clients now must initialize Pattern templates with
- gs_patternN_init, where N is the PatternType (normally 1), before filling in
- the members.
- - gs_pattern_instance_common_t is renamed gs_pattern_instance_t;
- gs_pattern_instance is renamed gs_pattern1_instance.
- - To set the target of a forwarding device, you must now use
- gx_device_set_target rather than setting the target member directly.
- - Memory management for devices has changed substantially, and in a
- subtle way. If you have code that calls the library, please read the
- documentation in gxdevcli.h.
- - Callers of the driver create_buf_device procedure must always call
- it through gdev_create_buf_device, never directly.
- - For composite and CID-keyed fonts, the character code returned by
- gs_show_current_char and gs_kshow_previous_char is now the full multi-byte
- character code rather than just the last byte of the code.
- - gdev_cmap_set_method has been replaced by a device parameter,
- ColorMappingMethod.
- - The CRD pointer parameter for param_write_cie_render1 and
- param_put_cie_render1 is no longer const.
- </pre><h3><a name="5.68_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The documentation for resize_object and resize_string didn't allow
- the new size to be the same as the old size, didn't describe what data was
- preserved, and didn't guarantee to return the same object if the new size
- was the same as the old size. (gsmemraw.h, gsmemory.h)
- - The documentation for the value returned by the internal
- .getmetrics32 operator was incorrect. (zchar32.c)
- - The documentation for the special color mapping device didn't say
- that the caller had to call gs_setdevice_no_init to update graphics states.
- (gdevcmap.h)
- Notes that OPENVMS.MMK works with both MMK and MMS. (doc/Make.htm)
- Adds a note to the C style guide about nested vs. multi-branch 'if'
- statements. (doc/C-style.htm)
- Notes that the multi-threaded ("async") drivers require libc version 6 or
- higher under Linux. (doc/Make.htm)
- Notes additional Irix/MIPSpro combinations that compile idict.c incorrectly,
- and gives a workaround. (doc/Make.htm)
- Adds a couple more acknowledgements. (doc/Helpers.htm)
- Documents the new -Z^ switch. (doc/Use.htm)
- Documents the new rules about memory management for device instances
- (gxdevcli.h, gxdevice.h)
- </pre><h3><a name="5.68_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The "async" BMP devices were accidentally included in the default
- list for Unix, leading to a requirement for the POSIX thread package, which
- is not available on all systems. (unix-gcc.mak)
- - There was a minor typo in the new MMK script. (openvms.mmk)
- - The MMK script redefines macros, which MMS does not allow.
- (openvms.mmk)
- - The gcc version test used gcc rather than $(CC) for the compiler
- name. (unix-gcc.mak)
- - There was a minor typo in the pcx2up device makefile entry.
- (devs.mak)
- - Some commands in the Unix install rules referenced sh rather than
- $(SHELL). (unixinst.mak)
- Makes (dummy) in-RIP trapping an optional feature, and removes it from the
- default configuration. (int.mak, lib.mak)
- Splits off the build rules for the Unix auxiliary programs, so they can be
- shared between interpreter and library configurations. (ugcclib.mak,
- unix-aux.mak, unix-gcc.mak, unixansi.mak, unixtail.mak [deleted],
- unixlink.mak, unixtrad.mak)
- Adds the bitcmyk device to the list of devices for the library test program.
- (ugcclib.mak)
- </pre><h3><a name="5.68_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - ansi2knr didn't handle occurrences of '/' or quoted strings inside
- an argument list correctly. (ansi2knr.c)
- At the suggestion of a GNU person, makes ansi2knr check for output errors.
- (ansi2knr.c)
- </pre><h3><a name="5.68_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - Setting the resolution on the SPARCprinter didn't work.
- (gdevsppr.c)
- - Even in PDF 1.1 compatibility mode, the PDF writer used a
- predictor to compress images. (gdevpsdi.c)
- - Reference counting for devices was not implemented consistently.
- (gdevxalt.c)
- - gcc (again) missed some static / non-static inconsistencies.
- (gdevbmpa.c, gdevifno.c)
- Removes all remaining uses of segment identifiers (_cs, _ds, _ss) from
- non-PC-specific code. (gdev3852.c, gdevcdj.c, gdevhl7x.c, gdevl256.c,
- gdevmgr.c, gdevsgi.c, gdevsppr.c, gdevvglb.c)
- Removes all remaining uses of the 'near' keyword from non-PC-specific code.
- (gdevcd8.c, gdevcdj.c, gdevcgm.c)
- Changes uses of round_up to ROUND_UP. (gdevmsxf.c, gdevpcx.c, gdevpx.c,
- gdevxxf.c)
- Adds user-contributed support for 16-bit displays to the MS Windows driver.
- (gdevmswn.c, gdevwdib.c)
- Adds a user-contributed driver (sunhmono) for the Harlequin variant of 1-bit
- Sun raster files. We expect to add other varieties of Sun Raster file
- eventually as well. (contrib.mak, gdevsunr.c)
- Adds a user-contributed driver (fs600) for the Kyocera FS-600 laser printer.
- (devs.mak, gdevdjet.c)
- Replaces the sample device CRD with a slightly hacked version of the default
- PostScript CRD, and moves it to a separate file for greater flexibility in
- testing. (gdevdcrd.h, gdevbit.c, gdevdcrd.c)
- Adds standard and "async" 32-bit CMYK BMP drivers (even though this is
- outside the published BMP format). (gdevbmp.c, gdevbmpa.c)
- Changes the names of the separated-CMYK PBM drivers from psm to pksm, to be
- more descriptive. (devs.mak, openvms.mak, unix-gcc.mak, gdevpbm.c)
- </pre><h3><a name="5.68_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - On MS Windows and OS/2, "(%stdin) (r) file bytesavailable" caused
- a crash. (gp_msio.c, gp_os2.c)
- </pre><h3><a name="5.68_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - TrueType fonts with fewer glyph names in post than entries in loca
- caused an error. (gs_ttf.ps)
- Adds additional tracing to the TrueType font loader. (lib/gs_ttf.ps)
- Per Adobe, adds the Euro symbol under the name /Euro (capitalized) to
- various built-in Encodings. (lib/gs_mro_e.ps, lib/gs_pdf_e.ps,
- lib/gs_sym_e.ps, lib/gs_wan_e.ps)
- </pre><h3><a name="5.68_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - An extraneous file got left in the fileset. (lib/pdf_main.ps.sav
- [deleted])
- - The number of required arguments for .pathbbox was incorrectly
- specified as 0 rather than 1. (zpath1.c)
- - Opening a ReusableStreamDecode filter with a string source and no
- decoding filters left an extra value on the stack. (lib/gs_ll3.ps)
- - Type 32 fonts sometimes didn't display the characters, or
- displayed them offset. (lib/gs_typ32.ps)
- - In LanguageLevel 3, copypage still called EndPage with 1 rather
- than 0. (lib/gs_init.ps)
- - The HalftoneName parameter was missing from the trapping parameter
- set. (lib/gs_ll3.ps)
- - CMap character entries were processed in the wrong order.
- (lib/gs_cmap.ps)
- - CMap'ed non-CID fonts didn't work properly, because they called
- BuildChar with the original character code rather than BuildGlyph with the
- mapped glyph. (zchar.c)
- - Using an out-of-range CID value with a CIDFont caused an error
- rather than substituting a notdef. (lib/gs_cidfn.ps)
- - CIDFontType 0 fonts with a GlyphDirectory didn't fall back to the
- indexed character data if the CID wasn't in the GlyphDirectory.
- (lib/gs_cidfn.ps)
- - CIDFontType 0 fonts didn't substitute a notdef at all.
- (lib/gs_cidfn.ps)
- Changes uses of round_up to ROUND_UP. (igcstr.c)
- Updates clients for the object-oriented changes to Patterns. (zcolor2.c,
- zpcolor.c)
- Implements the rest of PatternType 2. (ipcolor.h, zpcolor.c, zshade.c)
- Makes in-RIP trapping an optional feature. (lib/gs_ll3.ps, lib/gs_trap.ps)
- Updates clients for the change in gs_show_current_char. (zcfont.c, zchar.c)
- Changes the dict_*_param macros to procedures, for easier tracing. This
- includes a change in the return value of dict_matrix3_param. (icie.h,
- zcie.c, zcrd.c)
- </pre><h3><a name="5.68_Streams"></a>Streams</h3><pre>
- Changes uses of round_up to ROUND_UP. (scfd.c, scfe.c)
- </pre><h3><a name="5.68_Library"></a>Library</h3><pre>
- Fixes problems:
- - Once again, gcc failed to flag a static procedure declaration
- followed by a non-static definition. (gdevprna.c, gximage3.c)
- - Anti-aliasing no longer worked for the x11alpha device. To fix
- this, we factored out the anti-aliasing information in the
- gx_device_color_info structure. (bug introduced in 5.65) (gxdevcli.h,
- gdevabuf.c, gdevdflt.c, gdevxalt.c, gsdparam.c)
- - An empty declaration generated an extraneous semicolon.
- (gxclip2.h)
- - Some macros that generated an if-else construct didn't enclose it
- in BEGIN/END, possibly leading to incorrect parsing. (gxobj.h)
- - A comment was missing a closing */. (gxpageq.h)
- - The handling of the phase in Pattern filling was broken again. We
- probably broke it with the "fix" introduced in 5.24. (gxp1fill.c)
- - Looking up an undefined IODevice name caused a memory access
- error. (bug claimed to be fixed in 5.24) (gsiodev.c)
- - The null device installed for stringwidth didn't copy the color
- mapping information from its target, causing confusion if the current device
- was a pattern accumulator. (gxdevcli.h, gxdevice.h, gschar.c, gsdevice.c,
- gxpcmap.c)
- - mem_mapped2_copy_mono produced incorrect results for byte-aligned
- rectangles exactly 1 byte wide (fix from John D.), and could also access
- data 1 byte beyond the end of each source row. (gdevm2.c)
- - In the case of a masked image or a RasterOp involving a Pattern,
- the garbage collector could fail to follow a pointer, possibly causing
- memory corruption. (gsdcolor.h)
- - Assigning a double value to a float variable caused an infinite
- recursion. (gxshade1.c)
- - Failure to detect when the region being filled had become very
- small caused excessive recursion. (gxshade4.c)
- - The default implementations of resize_object didn't always return
- the old object if the old and new sizes were the same. (gsalloc.c,
- gsmalloc.c)
- - The left side bearing of TrueType characters was sometimes
- calculated incorrectly. (gstype42.c)
- - The TrueType renderer disregarded the left side bearing values.
- We aren't sure that the change we made is right, but it seems to produce
- better output. (gstype42.c)
- - Shadings used the first Decode entry for both X and Y values.
- (gxshade.c)
- - Function-based Shadings sometimes omitted part of their output.
- (gxshade1.c)
- - Function-based Shadings didn't access 4-bit-per-sample data
- correctly. (gsfunc0.c)
- - The malloc/free-based allocator didn't finalize objects when
- freeing them. (gsmalloc.c)
- - Reference counting for device instances was not implemented even
- close to consistently. THIS IS THE BUG TAIL WE WORRIED ABOUT IN 5.24.
- (gxdevcli.h, gxdevice.h, gdevbbox.c, gdevcmap.c, gdevmem.c, gdevnfwd.c,
- gdevplnx.c, gdevprn.c, gdevrops.c, gsalphac.c, gschar.c, gsdevice.c,
- gsropc.c, gxidata.c, gxmclip.c, gxipixel.c, gxpcmap.c)
- - Some device structure definitions failed to include finalization.
- (gdevmrop.h, gsstruct.h, gxclip2.h, gxcpath.h, gxdevmem.h, gxmclip.h)
- - Reference counting for the device halftone wasn't correct in the
- band rasterizer. This must be a recently introduced bug, because otherwise
- banding couldn't have worked. (gxclrast.c)
- - When banding, high-level images that extended off the page in the
- Y direction caused memory access errors. (gxclimag.c)
- - [a]widthshow didn't use the correct value for comparison for
- composite fonts with FMapType 9 (CMap). (gxchar.h, gschar.c, gschar0.c,
- gsfcmap.c)
- - The special color mapping device only worked for
- device_cmap_monochrome. (gdevcmap.h, gdevcmap.c)
- - The definition of gs_memory_locked_release was wrong.
- (gsmemlok.h, gsmemlok.c)
- - An opaque structure definition (for gx_device) was missing,
- creating a need for an otherwise unnecessary #include. (gscrdp.h)
- - Certain cached values weren't computed when needed. Fixing this
- required removing 'const' from a parameter type. (gscrdp.h, gscrdp.c)
- - gxclmem.c #included "gsmalloc.h", which is no longer needed.
- (gxclmem.c)
- - Memory management for device halftones was incorrect, leading to
- objects being freed twice or other memory corruption during band rendering.
- (gzht.h, gsht.c, gsstate.c, gxclrast.c, gxistate.c)
- - Setting a driver-originated CRD didn't invalidate cached
- information, leading to incorrect output. (gscrdp.c)
- - A consistency check on driver-originated CRDs was incorrect,
- causing valid CRDs to be rejected. (gscrdp.c)
- Removes dummy definitions for old PC-specific language extensions.
- (stdpre.h)
- Removes uses of the PC-specific 'huge' keyword. (gdevmem.c)
- Removes uses of the PC-specific 'near' keyword. (gdevabuf.c, gdevbbox.c)
- Changes the pointer comparison macros to upper-case names. (gxalloc.h,
- stdpre.h, gsalloc.c, gsmisc.c)
- Changes the alignment_mod macro to upper case. (stdpre.h, gdevdbit.c,
- gdevdgbr.c, gsparams.c, gxifast.c)
- Changes the round_up and round_down macros to upper case. We retain the
- lower-case definitions for the sake of the PCL code. (gxfcache.h, gxobj.h,
- stdpre.h, gdevalph.c, gdevmem.c, gsalloc.c, gspath1.c, gxccman.c,
- gxclimag.c, gxifast.c)
- Makes Pattern colors more object-oriented, to support PatternType 2,
- splitting gsptype1.c off from gspcolor.c in the process. (gsccolor.h,
- gsdcolor.h, gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h, gxpcolor.h,
- gspcolor.c, gsptype1.c, gxpcmap.c)
- Implements PatternType 2. (gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h,
- gxpcolor.h, gxshade.h, gspcolor.c, gsptype2.c)
- Changes the interface to shaded filling to make filling rectangles more
- efficient. (gsshade.h, gscolor3.c, gsshade.c)
- Improves some macros that didn't handle expressions as arguments.
- (gsrect.h)
- Improves tracing of loading the CIE caches. (gscie.c)
- Cleans up some formatting, and replaces some floating point divides with
- multiplies. (gstype42.c)
- Adds default values for the MaxSeparations (1), Separations (false), and
- SeparationColorNames (empty array) device parameters. (gsdparam.c)
- Adds -Z^ to trace reference counting. (gsrefct.h, gsmemory.c)
- Changes the definition of finalization so that finalization procedures *can*
- assume that objects they reference still exist. This is necessary so that
- forwarding devices can decrement the reference counts of their targets.
- Fortunately, all invocations of finalization (in 'restore', the garbage
- collector, and freeing) already have this property. (gsstruct.h)
- Extends CRD initialization so that cached values may be copied from an
- existing CRD. (gscrd.h, gscrd.c)
- Adds a wrapper to the driver create_buf_device procedure to increment the
- reference count, so that buffer devices can be freely used in graphics
- states and as a target. (gxdevcli.h, gdevprn.c, gxclread.c)
- Removes recursion from the shading rendering code, in preparation for making
- it interruptible (required for DeviceN color mapping callouts).
- (gxshade4.h, gxshade1.c, gxshade4.c, gxshade6.c)
- Monitor-locks the default allocator based on the C heap, if multi-threading
- is being supported at all. (lib.mak, gsmalloc.h, gsmalloc.c)
- Speeds up the implementation of mem_true32_copy_mono for the common case.
- (gdevm32.c)
- Adds a (disabled) option for defining gx_color_index as a pointer or a
- structure, for testing. (gxcindex.h)
- Makes the library test program test the special color mapper more
- thoroughly. (gslib.c)
- </pre>
- <hr>
- <h2><a name="Version5.67"></a>Version 5.67 (internal) (1/8/99)</h2>
- <p>
- This fileset adds more PostScript LanguageLevel 3 capability:
- <ul>
- <li> - Complete implementation of shfill.
- <li> - Most of the expanded CMap capabilities.
- <li> - ReusableStreamDecode filter.
- <li> - FontType 2 for CFFs (formerly done in an incompatible way).
- <li> - HalftoneMode user parameter.
- <li> - HalftoneTypes 6, 10, and 16.
- <li> - ImageType 3 images.
- <li> - UseCIEColor device parameter.
- </ul>
- <p>
- It also adds a build script for MMK (which may also work with MMS) under
- OpenVMS, and Uli Wortmann's drivers for the H-P color inkjet printers.
- Among other bug fixes, it eliminates about half the "possibly uninitialized
- variable" compiler warnings.
- <h3><a name="5.67_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - The default UCR and BG functions are now f(k) = k rather than f(k)
- = 0.
- - The set_[d]fmul2fixed_vars macros have been removed from
- gxfixed.h. Clients must use the new CHECK/FINISH_[D]FMUL2FIXED_VARS macros.
- (We don't think there are any such clients outside Ghostscript itself.)
- - The internal procedure gx_cpath_intersect_slow is replaced with
- gx_cpath_intersect_path_slow, with different arguments.
- - gs_color_space_type_Device{Gray,RGB,CMYK} are now private.
- Clients should use the gs_cspace_Device{Gray,RGB,CMYK} access procedures in
- gscspace.h to obtain device color space objects.
- - FontType 2 was renamed from ft_CFF to ft_encrypted2.
- - FontType 2 fonts now have FontType = ft_encrypted2, rather than
- ft_encrypted with CharstringType = 2. CharstringType no longer exists.
- - Type 1 / Type 2 fonts now have an additional member, interpret,
- that must be initialized.
- - gdev_prn_render_lines and gdev_prn_get_band_buffer replace
- gdev_prn_locate_overlay_buffer and gdev_prn_get_overlay_bits. "Async"
- drivers must now use the new procedures to implement partial-page rendering
- recovery.
- - Clients that pass ImageType 3 images where the mask and the image
- are not scaled identically, or that call image_plane_data without knowing
- the image type, must now call gs_image_planes_wanted or
- gx_image_planes_wanted in order to find out which subset of the data planes
- to pass to the next call of image_plane_data.
- - gx_image_enum_common_init now takes slightly different arguments.
- - gs_imager_state_initialize now initializes the entire imager
- state, including halftone, dev_ht, and ht_cache.
- - The argument lists for the plane_data and end_image procedures in
- image enumerators have changed.
- </pre><h3><a name="5.67_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The 5.66 News mentioned the non-existent WAITFILE macro, and had
- another minor typo. (doc/News.htm)
- - The URL for the user-contributed H-P 850c driver was incorrect.
- (doc/Devices.htm, contrib.mak)
- - The documentation for the driver image API had gotten out of date.
- (doc/Drivers.htm)
- Greatly improves documentation for the page queue. (from Artifex 5.50c)
- (gxpageq.h)
- Documents the fact that Solaris builds now need -lposix4 for <semaphore.h>.
- (doc/Make.htm)
- Adds a stack status comment in .pdfshow. (lib/gs_pdfwr.ps)
- Documents the new -Z` debugging switch. (doc/Use.htm)
- Touches up some formatting in the C style guide, and adds a mention of the
- space-before-: rule for makefiles. (doc/C-style.htm)
- Adds documentation for the new H-P 8xx drivers. (doc/Devices.htm)
- Splits off news for versions 5.0 - 5.50 into a separate file.
- (doc/History5.htm)
- </pre><h3><a name="5.67_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - On MS Windows platforms, the DLL object file wasn't created in the
- proper directory. (from Artifex 5.55) (msvc32.mak)
- - cfonts.mak didn't have no-op commands for rules that didn't
- contain any commands. (cfonts.mak)
- - The version number for libpng was different from libpng's own
- version numbering system. (libpng.mak)
- - Solaris builds now need -lposix4 for <semaphore.h>.
- (unix-gcc.mak, unixansi.mak, unixtrad.mak)
- - The makefiles redefined a number of macros, which MMS doesn't
- allow. (bcwin32.mak, gs.mak, int.mak, lib.mak, libpng.mak, msvc32.mak,
- openvms.mak, openvms.mmk, unix-gcc.mak, unixansi.mak, unixtrad.mak,
- version.mak)
- Changes cp.bat and rm.bat to eliminate "File not found" messages. (from
- Artifex 5.55) (cp.bat, rm.bat)
- Changes all platform-independent makefiles to add a space before the : that
- separates the targets from the dependencies, to allow the makefiles to be
- used with MMS/MMK. (cfonts.mak, contrib.mak, devs.mak, gs.mak, int.mak,
- jpeg.mak, lib.mak, libpng.mak, zlib.mak)
- Adds a script for compiling Ghostscript on OpenVMS systems with MMK. This
- has not been tested extensively. (doc/Make.htm, openvms.mmk)
- Changes the set of optimization switches for MSVC++. We believe the new
- switches produce working executables, which /O2 didn't. (msvc32.mak,
- msvccmd.mak)
- Updates the default expected libpng version to 1.0.2. (bcwin32.mak,
- dvx-gcc.mak, msvc32.mak, msvclib.mak, openvms.mak, os2.mak, ugcclib.mak,
- unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watclib.mak,
- watcw32.mak)
- </pre><h3><a name="5.67_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - Default scaling in viewcmyk.ps was broken. (lib/viewcmyk.ps)
- Updates pdf2dsc.ps with a newer (user-contributed) version that generates
- DocumentMedia and PageMedia comments. (lib/pdf2dsc.ps)
- </pre><h3><a name="5.67_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - An int * was provided where a uint * was required. (gdevpbm.c)
- - ps2ps -dLanguageLevel=1 generated invalid output. (gdevps.c)
- - The X drivers crashed on gray-scale displays. (bug probably
- introduced in 5.61) (gdevx.c)
- - The width and height of the cljet5 device were interchanged.
- (from Artifex) (gdevclj.c)
- - The PDF writer didn't clip cached characters properly. (bug
- introduced somewhere between 3.51 and 5.10) (gdevpdfi.c)
- - For stroked paths with a non-uniform CTM, the PDF writer could
- emit coordinates larger than 32K, which Acrobat handles incorrectly.
- (gdevpdfd.c)
- Restructures some code to suppress bogus "possibly uninitialized variable"
- warnings. (gdevpdfm.c, gdevps.c)
- Adds some unnecessary initializations to suppress bogus "possibly
- uninitialized variable" warnings. (gdevpbm.c, gdevpdfd.c, gdevvec.c,
- gdevxalt.c)
- Rewrites the (contributed) X11 xfont code to remove code duplication.
- (gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
- Adds a user-contributed driver for the H-P LaserJet 3100 with H-P software.
- (gdevmeds.h, gdevl31s.c, gdevmeds.c)
- Adds a user-contributed option for 600 dpi output on H-P DesignJet
- 650C-compatible printers. (gdevcdj.c)
- Removes unnecessary references to device color spaces. (gdevpdfi.c)
- Changes the [e]pswrite and pdfwrite drivers to use EndOfBlock rather than
- Rows for CCITTFax image encoding, producing slightly smaller output.
- (gdevpsdf.c)
- Changes the sample async driver to use gdev_prn_render_lines and
- gdev_prn_get_band_buffer instead of locate_overlay_buffer and
- get_overlay_bits. Unfortunately, because "async" memory management is
- broken, we have no way to test the code. (gdevbmpa.c)
- Updates clients for the change in gx_image_enum_common_init. (gdevpdfi.c,
- gdevvec.c)
- Adds Uli Wortmann's drivers for the H-P color inkjet printers.
- (contrib.mak, gdevcd8.c)
- Adds mode 9 compression to the PCL printer utilities. (gdevpcl.h,
- gdevcdj.c, gdevpcl.c)
- Updates implementors for the change in the plane_data and image_end image
- processing procedures. (gdevpdfi.c, gdevps.c, gdevpx.c)
- </pre><h3><a name="5.67_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - The PFM files for URW Grotesk and Antiqua had some extraneous ^M
- characters inserted before ^J characters. (fonts/u003043t.pfm,
- fonts/u004006t.pfm)
- - CID-keyed fonts didn't handle GlyphDirectory correctly.
- (lib/gs_cidfn.ps)
- - CIDFontType 0 fonts with 0-length Subrs caused an error.
- (lib/gs_cidfn.ps)
- - Malformed TrueType fonts with overlapping tables (which are
- nevertheless apparently acceptable to Windows) caused an error.
- (lib/gs_ttf.ps)
- - The Hershey font repairs documented in fileset 5.24 apparently
- never happened: the makeher.ps program was fixed, but the derived fonts were
- still broken. (fonts/h*.ps)
- - In some Fontmaps, the /Charter-* font names were linked directly
- to the Bitstream fonts, rather than being aliases for /CharterBT-*.
- (lib/Fontmap.GS, lib/Fontmap.Sol, lib/Fontmap.Ult)
- Makes undefined fonts execute the SubstituteFont procedure in $error, per a
- posting by Stephen Zisk of Adobe on pdf-prepress-l on 10/8/97.
- (lib/gs_fonts.ps)
- Changes the interpreter-level CIE color space install procedures to reflect
- the addition of const to the color space argument. (zcie.c)
- </pre><h3><a name="5.67_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The interpreter appeared to be a distiller even when the current
- device was not pdfwrite. We fixed this by patching 'where' to make the
- distiller operators visible iff the current device is pdfwrite. We also
- moved the setcolor hack in 'where' into PostScript code. (lib/gs_init.ps,
- lib/gs_lev2.ps, lib/gs_pdfwr.ps, zmisc2.c)
- - The current color space for shfill wasn't identically the same
- color space as the one in the shading. (gs_ll3.ps)
- Changes the default UCR and BG functions from f(k) = 0 to f(k) = k.
- (lib/gs_init.ps)
- Adds some unnecessary initializations to suppress bogus "possibly
- uninitialized variable" warnings. (igc.c, zcie.c)
- Restructures some code slightly to suppress a bogus "possibly uninitialized
- variable" warning. (zdevice.c)
- Brings the CMap machinery up to LL3, by allowing a single CMap to reference
- multiple fonts (usefont, usematrix, and array CIDSystemInfo).
- (lib/gs_cmap.ps, zfcmap.c)
- Finishes implementing ReusableStreamDecode. The implementation is very
- inefficient -- it reads the entire contents into a string -- but it passes
- the Genoa FTS. (lib/gs_ll3.ps, lib/gs_res.ps, zfreuse.c)
- Changes CFFs with CharstringType = 2 to generate FontType 2 fonts, rather
- than FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
- implementations. (lib/gs_cff.ps, lib/gs_type1.ps, lib/type1ops.ps, bfont.h,
- ichar1.h, ifont.h, ifont1.h, zbfont.c, zchar1.c, zchar2.c, zcharx.c,
- zfont.c, zfont1.c, zfont2.c)
- Adds the ability to create (with .bytestring) and do a few operations
- (currently only length, put, putinterval) on byte arrays. This is needed
- for implementing ReusableStringDecode filters with >64K bytes of data, and
- for the LL3 halftone types. (zgeneric.c, zstring.c)
- Implements HalftoneMode, and HalftoneTypes 6, 10, and 16. To do this, we
- introduce an internal HalftoneType 7. (lib/gs_dps2.ps, lib/gs_init.ps,
- lib/gs_ll3.ps, lib/gs_res.ps, zht2.c)
- Finishes implementing ImageType 3 images. (zimage.c, zimage3.c)
- Adds the hooks in ColorSpace defineresource and undefineresource for
- detecting definitions that interact with UseCIEColor. (gs_res.ps)
- Implements UseCIEColor at the interpreter level. (lib/gs_dps1.ps,
- lib/gs_ll3.ps, zcolor1.c, zcolor2.c, zimage.c, zmisc3.c)
- Touches up some formatting. (igstate.h)
- </pre><h3><a name="5.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - A MediaBox with a non-zero llx or lly would produce incorrect
- output. The way we fixed this doesn't exactly match Acrobat, but it
- produces reasonable output. (based on a change from Artifex 5.55)
- (lib/pdf_main.ps)
- - Colored patterns didn't work properly. (lib/pdf_draw.ps)
- - The resources in a Pattern dictionary weren't made available
- during the execution of the PaintProc. (fix from Artifex) (lib/pdf_draw.ps)
- </pre><h3><a name="5.67_Streams"></a>Streams</h3><pre>
- Adds a flag to the ASCIIHexEncode filter to indicate whether or not to write
- an EOD, required for Level 1 output from the pswrite device. (sstring.h,
- sstring.c)
- Adds a close_at_eod flag to the stream state, for implementing reusable
- streams; also cleans up some formatting. (stream.h, stream.c)
- </pre><h3><a name="5.67_Library"></a>Library</h3><pre>
- Fixes problems:
- - Black-and-white images with Interpolate = true produced
- undesirable artifacts if the image resolution was close to that of the
- device. We now disable Interpolate in this case. (gxiscale.c)
- - In "async" mode, get_hardware_params did an unnecessary flush and
- reopen. (from Artifex 5.50c) (gdevprna.c)
- - The computation of the minimum band height for the "async" reader
- was incorrect. (from Artifex 5.50c) (gdevbmpa.c)
- - The "fix" for reallocating async buffer memory in 5.50 was
- incorrect. (from Artifex 5.55) (gdevprn.c)
- - The "async" reader called clist_finish_page, which it shouldn't.
- (from Artifex 5.50c) (gdevprn.c)
- - The image enumeration procedures for ImageType 4 were unnecessary,
- since the ImageType 1 code now handles ImageType 4 as well. (gximage4.c)
- - The structure descriptor for tile clipping devices was
- unnecessary, since these are the same as mask clipping devices. (gxclip2.h)
- - There was a trailing comma in an enumeration list. (gsbitops.c)
- - Some compilers didn't like initializing a uint with ~0.
- (gdevm1.c)
- - shfill unnecessarily saved, reset, and restored the graphics
- state. (gscolor3.c)
- - Radial shadings always extended the shading to radius = 0.
- (gxshade1.c)
- - An identifier exceeded VMS's limit of 31 characters. (gdevprn.h,
- gdevprn.c)
- - A header file didn't #include enough of its prerequisites.
- (gxpcolor.h)
- - Images with non-default ImageMatrix weren't written correctly in
- the band list. (bug introduced in 5.60) (gximage1.c)
- - Banded images that had to use the default implementation incurred
- an extra level of procedure call for each block of data. (gxclimag.c)
- - Images rotated by other than a multiple of 90 degrees produced
- incorrect output, because pie->rect.p.y was updated after each block of
- data, causing image_band_box to produce inconsistent results. (bug
- introduced by async changes in 5.50) (gxclimag.c)
- - The client_data pointer in client_order halftones wasn't traced
- correctly, possibly causing memory corruption if this type of halftone was
- used. (These are not currently used by the PostScript interpreter.)
- (gsht.c, gsht1.c)
- - ImageType 3 images didn't handle subrectangles. (Not a problem
- for PostScript, which doesn't generate subrectangles, or for PCL, which
- doesn't use them.) (gximage3.c)
- - If a VMerror occurred when setting up an ImageType 3 image. an
- attempt could be made to free an uninitialized pointer. (gximage3.c)
- - ImageType 4 images with 1 to 8 bits per sample and Decode = [1 0]
- didn't test transparency correctly. (bug introduced in 5.60) (gximage.h,
- gxicolor.c, gximono.c, gxipixel.c)
- - setgray, setrgbcolor, sethsbcolor, and setcmykcolor didn't use
- gs_cspace_assign, causing code duplication. After this fix, we made the
- device color space types private, since there are no longer any references
- to them outside gscspace.c. (gxcspace.h, gscolor.c, gscolor1.c, gscspace.c)
- - gs_cspace_assign was misspelled cs_cspace_assign. (gscspace.h)
- - setgray didn't set the pattern pointer of the current color to 0,
- possibly causing the GC to retain patterns it shouldn't. (gscolor.c)
- - The dev_ht member of an imager (or graphics) state wasn't included
- in the macro that enumerates reference-counted pointers. This probably had
- no effect, since the macro isn't used. (gxistate.h)
- - When the band rasterizer freed its imager state, the halftone and
- device halftone structures weren't freed, possibly causing memory leakage.
- (gsistate.c)
- Changes the default UCR and BG functions from f(k) = 0 to f(k) = k, per a
- user's suggestion. We aren't sure which matches the Adobe implementations
- on color devices. (gxdcconv.c)
- Conditionally removes some variables that are not needed on big-endian
- systems. (gdevm1.c)
- Restructures some code to suppress bogus "possibly uninitialized variable"
- warnings. (gxfixed.h, gdevddrw.c, gsmatrix.c, gsmisc.c, gxclimag.c)
- Adds a couple of unnecessary initializations to suppress bogus "possibly
- uninitialized variable" warnings. (gsbitops.c)
- Implements BBox, Background, and Extend for shadings. (Background isn't
- tested yet, because it only takes effect for pattern shading, which isn't
- implemented yet.) (gsshade.h, gxacpath.h, gxistate.h, gxpath.h, gscolor3.c,
- gsshade.c, gxacpath.c, gxacpath.c, gxcpath.c)
- Brings the CMap machinery up to LL3, by allowing a single CMap to reference
- multiple fonts (usefont, usematrix, and array CIDSystemInfo). (gsfcmap.h,
- gxfcmap.h, gsfcmap.c)
- Adds more tracing output to the band list reader. (gxclrast.c)
- Cleans up some formatting. (gstext.h, gxtext.h)
- Replaces FontType = 1, CharstringType = 2 with FontType = 2, to match the
- Adobe implementations. (gxfont1.h, gxftype.h, gxtype1.h, gstype1.c,
- gstype2.c, gxtype1.c)
- Adds new gs_bytestring and gs_const_bytestring structures that may reference
- either string or (byte) object storage. (gsstruct.h, gstypes.h, gsmemory.c)
- Implements an additional halftone type (ht_type_threshold2) needed for
- HalftoneTypes 6, 10, and 16. We don't extend gshtx.[hc] to deal with this
- at this time, since the new type is only needed for the PostScript
- interpreter. (gxht.h, gxhttype.h, gzht.h, gsht.c, gsht1.c, gshtscr.c)
- Adds a procedure for division mod M, possibly needed for halftones.
- (gxarith.h, gsmisc.c)
- Adds a -Z` debugging switch to turn off high-level images in the band list.
- (gxclimag.c)
- Implements gdev_prn_render_lines, as the lowest-level external API for
- rendering lines in a banded device. This call replaces the "overlay" calls
- for async rendering. (gdevprn.h, gdevprna.h, gxclist.h, gdevprn.c,
- gxclread.c)
- Extends the image enumeration API so that the enumerator can indicate what
- subset of the input planes it wants delivered on the next call to
- image_plane_data. Currently this is only needed for ImageType 3.
- (gsimage.h, gxdevcli.h, gxiparam.h, gdevddrw.c, gsimage.c, gximage.c,
- gximage3.c)
- Extends the image enumeration structures to handle images that require a
- different amount of data for plane N than Width * plane_depths[N]. This
- requires a NON-BACKWARD-COMPATIBLE change to the argument list of the
- gx_image_enum_common_init procedure. (gxiparam.h, gdevbbox.c, gsimage.c,
- gxclimag.c, gximage.c, gximage2.c, gximage3.c, gxipixel.c)
- Updates the copyright date to 1999. (gscdef.c)
- Cleans up formatting, capitalizes macro names, etc. (gximage.h, gxsample.h,
- gxipixel.c)
- Adds the UseCIEColor device parameter. (gxdevcli.h, gxdevice.h, gsdparam.c)
- Implements color space substitution (UseCIEColor). (gscolor2.h, gscspace.h,
- gscssub.h, gxistate.h, gzstate.h, gscolor.c, gscolor1.c, gscolor2.c,
- gscolor3.c, gscssub.c, gslib.c, gspcolor.c, gsstate.c)
- Changes the color space install procedure so that its color space argument
- is const. Now all color space implementation procedures take a const
- argument. (gscie.h, gxcspace.h, gscdevn.c, gscolor2.c, gscscie.c,
- gscspace.c, gscsepr.c, gspcolor.c)
- Changes gs_setcolorspace so its color space argument is const. (gscolor2.h,
- gscolor2.c)
- Splits imager state procedures out of gsstate.c, which was getting too
- large. (gxistate.h, gsstate.c, gsistate.c)
- Changes gs_imager_state_initialize so it really initializes the whole imager
- state. (gsistate.c, gxclrast.c)
- Removes the now-redundant first (device) argument from the plane_data and
- end_image procedures in image enumerators. Implementors of these procedures
- must now get the device from the enumerator structure. This is a
- NON-BACKWARD-COMPATIBLE design cleanup that we have been putting off for
- most of a year. Also adds an argument to plane_data so it can tell its
- client how many rows of data was used: this is needed for the implementation
- of ImageType 3. (gxdevcli.h, gxiparam.h, gdevbbox.c, gdevplnx.c, gsimage.c,
- gxclimag.c, gxidata.c, gximage.c, gximage3.c)
- Changes CFFs with CharstringType = 2 to FontType 2 fonts, rather than
- FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
- implementations. (gstype1.h)
- </pre>
- <hr>
- <h2><a name="Version5.66"></a>Version 5.66 (internal) (11/25/98)</h2>
- <p>
- This fileset includes the ability to efficiently and conveniently obtain
- planar rather than chunky raster output. It also fixes a large number of
- minor compilation problems on non-ANSI compilers, and a small number of real
- problems. It also implements the PostScript LanguageLevel 3 clipsave and
- cliprestore operators. Unfortunately, because of fragility in third-party
- code changes that we were forced to include in the base graphics library,
- overlapped rasterizing ("async mode") fails:
- <ul>
- <li> - At 300 dpi, for 4-bit planar devices in the low-memory
- ("partial
- page") condition, and always for 32-bit planar devices.
- <li> - At 600 dpi, for all devices other than monochrome.
- </ul>
- <h3><a name="5.66_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - Every platform-specific makefile must now define _D_, the internal
- separator for defining preprocessor macros.
- - Every platform-specific makefile must now define PSLIBDIR, the
- directory holding the PS initialization files at build time. (This need not
- be the same as where these files are stored at run time.)
- (Library)
- - New elements arch_float_mantissa_bits and
- arch_double_mantissa_bits have been added to arch.h. Cross-build
- environments that supply arch.h rather than generating it at build time must
- add these elements.
- - A new GB_SELECT_PLANES option has been added to the options mask
- for the get_bits_rectangle driver procedure. Implementations of this
- procedure must take this option into account (although they do not have to
- implement it).
- - The make_buffer_device printer device procedure has been replaced
- with create_buf_device, setup_buf_device, and destroy_buf_device. All
- clients and implementors of make_buffer_device must be changed, including
- users of the clist_init_params macro.
- - The gx_device_cmap_procs procedure has been replaced with
- gx_get_cmap_procs, which also take an imager state as an argument. Callers
- of gx_device_cmap_procs must be changed.
- </pre><h3><a name="5.66_Documentation"></a>Documentation</h3><pre>
- Updates Make.htm to clarify the standard directory structure.
- (doc/Make.htm)
- Adds a note about DEC C vs. VAX C for remapping of exit codes.
- (doc/Make.htm)
- Clarifies that the end_image procedure frees the enumerator. (gxiparam.h)
- </pre><h3><a name="5.66_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The genxxx utilities didn't compile properly on systems where the
- C compiler doesn't automatically search for .h files in the directory of the
- .c file. (unixtail.mak)
- - Preprocessor definitions require special quoting with Watcom C.
- Fixing this required adding a _D_ macro similar to II. This is a
- NON-BACKWARD-COMPATIBLE change, since this definition is now required in
- each platform-specific makefile. (dvx-head.mak, openvms.mak, os2.mak,
- unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
- - The VMS subdirectories didn't include the "." to make the
- directory name relative. (openvms.mak)
- - Some of the OpenVMS command files were omitted from the
- distribution. (copy_one.com, rm_one.com, rm_all.com)
- - MMK interprets a final - on a command line as a continuation
- marker. (gs.mak)
- - gsiparm4_h was used before being defined. (lib.mak)
- - Compiled initialization code (COMPILE_INITS=1) was broken because
- of the introduction of subdirectories. (bcwin32.mak, dvx-gcc.mak,
- msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
- watc.mak, watcw32.mak, int.mak, geninit.c)
- - Level 1 configurations would no longer build with the standard set
- of drivers. (devs.mak)
- - wmake interpreted "&" in a rule command line as calling for
- background execution. (wccommon.mak)
- Makes the standard set of features the same on all platforms, namely, psl3
- (PostScript LanguageLevel 3) + pdf (PDF 1.2/1.3) + dpsnext (DPS with NeXT
- extensions) + ttfont (ability to load TrueType fonts directly). Unix
- platforms add pipe (recognition of %pipe% file names). (bcwin32.mak,
- dvx-gcc.mak, msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak,
- unixtrad.mak, watc.mak, watcw32.mak)
- Adds minimal support for Windows 95/NT compiler versions. (wccommon.mak)
- Notes a set of switches that may work around the optimizer bug in MSVC++
- 5.0. (msvccmd.mak)
- </pre><h3><a name="5.66_Utilities"></a>Utilities</h3><pre>
- Adds a switch to genconf to set the escape character, since wmake interprets
- "&" in a rule command line as calling for background execution. (genconf.c)
- Makes echogs recognize -+ alone as equivalent to - alone, for the sake of
- VMS systems, which interpret a final - as a line continuation marker.
- (echogs.c)
- Adds a viewpsm procedure to viewpbm.ps, for reassembling plane-separated
- files. (lib/viewpbm.ps)
- </pre><h3><a name="5.66_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - There were places where the code assumed that void * could be
- coerced to byte *, which not all C compilers support. (gdevpdfx.h,
- gdevpdfo.c)
- - The name put_bytes was defined in two places, causing an error
- when linking with NOPRIVATE=1. (gdevpx.c)
- - The minimum space computation for high-level images and for the
- scan line length for the sample async driver was slightly too small.
- (gdevbmpa.c)
- Improves the tracing output from the psm driver. (gdevpbm.c)
- Rewrites some macros to eliminate "statement not reached" compiler warnings.
- (gdevpx.c)
- Revises the (only) client for changes in the plane-extraction device API.
- (gdevpbm.c)
- Adds plane-separated BMP drivers, primarily for testing but also as an
- example. bmp[a]sep1 and bmp[a]sep8 produce 1- and 8-bit-per-pixel separated
- CMYK. (gdevbmp.h, gdevbmp.c, gdevbmpa.c, gdevbmpc.c)
- </pre><h3><a name="5.66_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The Watcom environment doesn't provide the st_blocks member of the
- stat structure. (stat_.h)
- - In its standard configuration, the Watcom environment doesn't
- provide stdprn. (gp_iwatc.c)
- - Newer versions of DEC C on OpenVMS don't require the remapping
- of the exit codes. (stdpre.h)
- Revises the dummy implementation of semaphores, monitors, and threads in an
- attempt to make async rendering (just barely) work for the non-overlay case.
- Unfortunately, this turned out not to be feasible. (gp_nsync.c)
- </pre><h3><a name="5.66_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Certain DEC compilers assume that a pointer is aligned even if it
- is cast to a pointer whose target type has weaker alignment; this produced
- "unaligned access" errors in the interpreter. (interp.c)
- - A necessary cast was omitted. (zcrd.c)
- - Level 1 configurations would no longer run. (lib/gs_init.ps)
- Updates clients to set mask image fattening properly. (zimage.c, zimage2.c)
- Rewrites some macros to eliminate "statement not reached" compiler warnings.
- (files.h, istruct.h)
- </pre><h3><a name="5.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - The test for whether to honor the Rotate key was backwards. (bug
- probably introduced in 5.24) (lib/pdf_main.ps)
- Updates the code to handle improper PDF files in which the startxref and the
- following file position appear on the same line rather than (as required by
- the spec) two successive lines. (lib/pdf_main.ps)
- </pre><h3><a name="5.66_Streams"></a>Streams</h3><pre>
- Notes a bug in s_DCT_get_quantization_tables. (sdcparam.c)
- </pre><h3><a name="5.66_Library"></a>Library</h3><pre>
- Fixes problems:
- - The algorithm for reducing 4-bit chunky to 1-bit separated colors
- didn't handle the trailing pixels of a transfer correctly. (gdevplnx.c)
- - Banding for RGB devices with multi-plane halftones was broken.
- (bug introduced recently) (gxdcolor.c)
- - Mask images were written in the band list with inverted polarity.
- (bug introduced in 5.60) (gximage1.c)
- - Mask images were always fattened. Fixing this required extending
- the API, since gs_image_t_init_mask set adjust = true by default (a bad
- decision) and we didn't want to change it. (gschar.h, gscpm.h, gsiparam.h,
- gzstate.h, gschar.c, gximage1.c)
- - The member names push and pop caused problems for compilers whose
- preprocessors consider it an error to use a macro defined with arguments as
- a name without arguments. (gxfont1.h, gstype1.c)
- - Once again, gcc didn't detect some private/non-private mismatches.
- (gdevplnx.c, gsalphac.c, gximage2.c, gximage4.c)
- - & was used with an array (which gcc doesn't complain about).
- (gxshade6.c)
- - There were several uses of automatic aggregate initialization,
- which not all C compilers support. (gdevprn.c, gdevps.c)
- - There were places where the code assumed that void * could be
- coerced to byte *, which not all C compilers support. (gdevprn.c)
- - Some \ line continuation characters were used inappropriately
- (in a macro argument list). (gxclimag.c)
- - Some function prototypes didn't use the Pn macros. (gsalloc.c)
- - A function definition not at the left margin confused ansi2knr.
- (gsfont.c)
- - A cast for the result of malloc, needed on systems where malloc
- returns a char * rather than a void *, was missing. (gsmalloc.c)
- - An occurrence of dev should be pdev. (I can't understand how we
- missed this in 5.65.) (gdevprna.c)
- - A value was missing from a list of initial structure values,
- causing mismatches between subsequent values and the members they
- initialized. (gcc treated this as a warning: it should have given an
- error.) (gxband.h)
- - When setting the tile phase during banding, the old value of the
- tile phase was written out rather than the new one. (gxclutil.c)
- - The definition of fixed_mult_quo wasn't consistent between systems
- with FPU (where it took the floor, and might be slightly inaccurate) and
- systems without FPU (where it truncated towards zero, and was accurate).
- (gxfixed.h, genarch.c, gsmisc.c)
- - Banding devices using multi-screen halftones didn't set the
- halftone phase correctly. We have now "fixed" this problem at least 4
- times. (gxclrast.c)
- - The name put_bytes was defined in two places, causing an error
- when linking with NOPRIVATE=1. (gsparams.c)
- - For [x][y]show, the pointers to the width arrays weren't
- initialized, causing memory access errors when checking or garbage
- collecting. (gschar.c)
- - Due to a typo, bitmap characters were fattened too much.
- (gximage1.c)
- - Some identifiers exceeded VMS's limit of 31 characters.
- (gdevprn.h, gscsepr.h, gsdevice.h, gxdevice.h, gdevdflt.c, gdevprn.c,
- gscsepr.c, gsdparam.c)
- - The device halftone parameter was declared const inappropriately
- in some places. (gsdcolor.h, gxdither.h, gxdcolor.c, gxdither.c)
- - gdev_mem_raster was used (misleadingly, even though it happened to
- produce the correct result) on possibly non-memory devices. (gxclread.c)
- - Pure Level 1 configurations had some undefined procedures.
- (gscolor1.c, gscspace.c)
- - Indexed color images could incorrectly conclude that they didn't
- need to re-render halftones, producing incorrect output. (gximono.c)
- - gs_device_is_memory returned false for non-banding printer
- devices: this didn't used to matter, but it matters now. We changed it to
- test the procedures rather than the device name. (gdevmem.c)
- - The plane extraction device didn't handle halftoned colors
- correctly. (gdevplnx.c)
- - If an error occurred while building a Function object, a crash
- could occur while freeing the partially built object. (gsfunc.c)
- - The plane extraction device didn't handle RasterOps correctly.
- (gdevplnx.c)
- - The colors-used mask could include some additional, invalid bits.
- (gxclrect.c)
- - The colors-used mask was updated incorrectly for RasterOps on
- subtractive-color devices. (gxclrect.c)
- - Memory devices didn't set enough option bits for the case where
- get_bits_rectangle had to do conversion. (gdevmem.c)
- - The TrueType font rasterizer didn't accept fonts whose 'type' was
- "true" rather than the documented <00 01 00 00>. (gstype42.c)
- - A bug in the Watcom compiler caused two conditional expressions to
- execute incorrectly. (gstype42.c)
- - When a page queue was freed, it attempted to free the page_info
- resource in the reserve entry, which is actually unused. (gxpageq.c)
- - A necessary #include was missing. (gdevmr2n.c)
- Reduces the size of band list entries for halftoned colors somewhat.
- (gxclpath.h, gxclpath.c, gxclrast.c)
- Increases the number of saved band color masks per page, mostly for testing.
- (gxband.h)
- Rewrites some macros, and one 'for' statement, to eliminate "statement not
- reached" compiler warnings. (gxcldev.h, gxpath2.c)
- Corrects a tiny inaccuracy in the computation of trapezoid coordinates.
- (gdevddrw.c)
- Edits the trapezoid fill code for greater readability and better
- documentation of its functioning. The new code runs a little slower on
- compilers that don't support 'inline'. (gdevddrw.c)
- Improves the documentation of the tile phase bookkeeping. (gxclrast.c)
- Documents the fact that fixed_mult_quo takes the floor if the first argument
- is negative. (gxfixed.h)
- Finishes implementing clipsave and cliprestore. (gxclipsr.h, gxistate.h,
- gzstate.h, gsclipsr.c, gsstate.c)
- Implements driver access to planar, rather than chunky, banding.
- (gdevplnx.h, gdevprn.h, gxclist.h, gxdevcli.h, gxrplane.h, gdevplnx.c,
- gdevprn.c, gxclread.c)
- Makes it possible to set up memory devices that allocate just the line
- pointer table (but not the bitmap), or neither the line pointers nor the
- bitmap. (gxdevmem.h, gdevmem.c)
- Moves gx_device_white/black to a more appropriate header file. (gxdcolor.h)
- Moves gx_default_make_buffer_device to a more appropriate file.
- (gdevdflt.c, gdevprn.c)
- Adds plane extraction and expansion utility procedures, required for the
- extended capability of get_bits_rectangle. (gsbitops.h, gsbitops.c)
- Extends get_bits_rectangle so it can return individual planes rather than
- all planes. (gdevplnx.h, gsbittab.h, gxbitfmt.h, gxgetbit.h, gdevdgbr.c,
- gdevdrop.c, gdevmem.c, gdevplnx.c, gsalphac.c, gsbittab.c)
- Factors out the two more complex cases of gx_get_bits_copy into single-use
- procedures for readability. (gdevdgbr.c)
- Makes public the procedure for reducing a colored halftone to a pure or
- binary halftone, needed for planar rendering. (gxdither.h, gxdither.c)
- Moves the client_data pointer from gs_state to gs_imager_state.
- (gxistate.h, gzstate.h, gsstate.c)
- Extends the plane extraction device to handle fill_mask and images
- efficiently. (gxcmap.h, gdevplnx.h, gdevplnx.c)
- Creates a procedure to make a temporary copy of a gs_imager_state, needed
- for planar image processing. (gxistate.h, gsstate.c)
- Makes getting the color mapping procedures for a device a virtual procedure
- of the imager state, needed for planar image processing. (gxcmap.h,
- gxistate.h, gxcmap.c, gxicolor.c, gximono.c, gxi12bit.c)
- Increases the amount of memory allocated to the asynchronous rasterizer,
- since we now may need a dynamically allocated line pointer table for the
- target (plane) memory device. (gdevprna.c)
- Adds a record of which bands have "difficult" RasterOps -- RasterOps that
- can't be executed, even in principle, in CMYK space. We don't do anything
- with this information yet, but we will have to. (gsropt.h, gxband.h,
- gxcldev.h, gxclpath.h, gxclist.c, gxclpath.c, gxclrect.c)
- Makes conversion from render_plane indices to bit ranges the responsibility
- of the device, not the client. (gxrplane.h)
- </pre>
- <hr>
- <h2><a name="Version5.65"></a>Version 5.65 (internal) (11/13/98)</h2>
- <p>
- The main purpose of this fileset is to fix the MS Windows and OpenVMS build
- procedures, which have been broken since 5.60. It also adds the ability for
- a driver to determine efficiently which colors are used in a given page or
- band, which is important for separated color printing, and contains some
- early support for plane-separated color printing.
- <h3><a name="5.65_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - Every platform-specific makefile must now define D_ and _D, the
- brackets for defining preprocessor macros.
- - The unix-cc.mak makefile has been renamed unixtrad.mak, since it
- only applies to "traditional C" compilers.
- (Drivers, Library)
- - Devices now store their TextAlphaBits and GraphicsAlphaBits values
- explicitly. The former get_alpha_bits procedure is obsoleted, and no
- longer implemented or called by any code we distribute.
- - gx_device_color_info now has additional fields. Code that
- constructed gx_color_info_values in any way other than by using the dci_
- macros will no longer work.
- </pre><h3><a name="5.65_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The -sPSFile= switch was still documented, even though it no
- longer exists. (doc/Use.htm)
- - The - "switch" wasn't documented in the list of switches,
- although it was documented elsewhere. (doc/Use.htm)
- - The documentation for the PC environments was out of date -- it
- didn't mention the use of subdirectories. (doc/Make.htm)
- Updates the documentation on PostScript files to indicate in what directory
- the files are distributed. (doc/Psfiles.htm)
- Documents more of the utility procedures used by printer drivers.
- (gdevprn.h)
- Notes that the public tar archives may not be compatible with the tar
- program in SunOS 4.1.3. (doc/Make.htm)
- Adds documentation on the Unix "make pg" target. (doc/Make.htm)
- Updates documentation to reflect the name change from unix-cc.mak to
- unixtrad.mak. (doc/Make.htm)
- Adds some links for the benefit of people who have built Ghostscript before
- and therefore skip reading the initial sections of the documentation.
- (doc/Make.htm)
- Documents the new -_ switch. (doc/Use.htm)
- Updates the documentation to mention PostScript LanguageLevel 3 and to
- remove many references to 16-bit systems. (doc/Language.htm)
- </pre><h3><a name="5.65_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - A cast discarded `const' needlessly. (genconf.c)
- - Upper-case echogs switches were getting converted to lower case
- on VMS. (jpeg.mak)
- - $(EXP) was missing before some invocations of executables.
- (gs.mak, jpeg.mak, lib.mak)
- - Some dependencies in the Unix install script were incorrect.
- (unixinst.mak)
- - Because of differences between shells, putting *.upp in the list
- of files to be installed didn't work with some shells. (unixinst.mak)
- - The PC makefiles were out of date. (bcwin32.mak, pcwin.mak,
- winint.mak, winlib.mak, dwmain.rc, gsdll32.rc)
- - Some makefiles still used $(DEV) instead of dev. (dvx-tail.mak,
- msvclib.mak, openvms.mak, os2.mak, pcwin.mak, watclib.mak, winlib.mak)
- - The DEVICE_DEVSn lists overflowed the DOS 120-character command
- line limit again. We had to add DEVICE_DEVS16 through 20 to work around
- this. (*.mak)
- - Preprocessor definitions have a different syntax on VMS. Fixing
- this required adding D_ and _D macros, similar to I_ and _I. This is a
- NON-BACKWARD-COMPATIBLE change, since these definitions are now required in
- each platform-specific makefile. (dvx-head.mak, openvms.mak, os2.mak,
- unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
- Adds command line switches to generate additional warnings when compiling
- the auxiliary programs with gcc. (unix-gcc.mak)
- Gets rid of the EXPP and SHP macros, since they aren't used or needed any
- longer. (gs.mak, bcwin32.mak, dvx-head.mak, msvccmd.mak, openvms.mak,
- os2.mak, unixhead.mak, watcw32.mak, wccommon.mak)
- Changes the Unix EXP to null, since all executables now use an explicit
- directory prefix. (unixhead.mak)
- Renames unix-cc.mak as unixtrad.mak, since people with ANSI-compatible cc
- were getting confused. (unix-cc.mak [deleted], unixtrad.mak)
- Adds a -_ switch, for piped execution with buffering. (iminst.h,
- imainarg.c)
- </pre><h3><a name="5.65_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - The revised ansi2knr didn't recognize "foo(void)" as a procedure
- definition. (ansi2knr.c)
- - ansi2knr didn't handle function definitions where the last
- formal parameter was a procedure parameter. (ansi2knr.c)
- Adds a utility for printing an informative error page if a PostScript job
- fails. (lib/errpage.ps, doc/Psfiles.htm, unixinst.mak)
- </pre><h3><a name="5.65_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The [e]pswrite drivers produced incorrect output for images in
- non-Device color spaces. We fixed this by causing all other images to be
- handled as rectangles. This is clearly not satisfactory: we need to unify
- the PS and PDF writers in this area. (gdevps.c)
- - The CCITTFaxEncoded data produced by the [e]pswrite driver had
- both a Rows value and an EndOfBlock marker, which wasn't compatible with
- some Adobe interpreters. (gdevpsdf.c)
- - X devices couldn't be copied, because the copy didn't clear the
- list of X fonts and therefore tried to free it a second time. (gdevx.c,
- gdevxini.c)
- - gdevx.h declared a type called rect, conflicting with variables
- named rect. (gdevx.h, gdevx.c)
- - A function definition wasn't formatted properly to be
- recognized by ansi2knr. (gdevupd.c)
- - The PCL XL drivers crashed if given a masked image. (gdevpx.c)
- Adds a PBM driver that writes separated CMYK, using the colors-used masks to
- skip bands. (devs.mak, gdevpbm.c)
- Updates drivers that formerly supported the TextAlphaBits and
- GraphicsAlphaBits parameters themselves. (gdevmswn.h, gdevsvga.h,
- gdevpbm.c, gdevmswn.c, gdevpm.c, gdevwdib.c, gdevsvga.c, gdevxalt.c)
- </pre><h3><a name="5.65_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The stack size on the Watcom platform was set too small.
- (watc.mak)
- - The OpenVMS platform code and makefiles had gotten out of date.
- (gp_vms.c, openvms.mak)
- </pre><h3><a name="5.65_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The size of Indexed color space lookup tables wasn't set, possibly
- causing them to be corrupted during garbage collection. (zcsindex.c)
- - A function definition wasn't formatted properly to be
- recognized by ansi2knr. (icontext.c)
- - quit was only rebound to stop in encapsulated jobs, rather than in
- any context under control of a job server. Since we don't currently have
- any explicit way to indicate whether execution is under control of a job
- server, we consider that it is under a job server iff startjob has ever been
- executed. (lib/gs_lev2.ps)
- Adds tracing output for removing an entry from a dictionary. (idict.c)
- Slightly improves dictionary deletion so that it can replace a run of
- deleted keys with empty keys. (idict.c)
- Adds statistics-gathering to the interpreter. (interp.c)
- Adds more statistics-gathering to the dictionary stack search. (idstack.c)
- Improves the debugging printout of packed arrays. (idebug.c)
- Increases the name table allocation increment from 128 names (1.5K) to 256
- names (3K), to provide better scattering of name indices. (inamedef.h)
- Changes the name count / index mapping to provide better scattering.
- (inamedef.h)
- </pre><h3><a name="5.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - If a font other than the base 14 wasn't embedded and lacked a
- descriptor, an error occurred. (The PDF specification explicitly prohibits
- this, but Acrobat PDFWriter 3.02 for Windows produces PDF files with
- TrueType fonts that lack a descriptor.) (lib/pdf_font.ps)
- </pre><h3><a name="5.65_Library"></a>Library</h3><pre>
- Fixes problems:
- - The computation of colors used by CMYK halftones was incorrect.
- (gxclpath.c)
- - Some header files had preprocessor directives with a space before
- the #, which pre-ANSI compilers don't accept. (gpsync.h, gsjconf.h,
- gsmemlok.h, gxsync.h, gxxfont.h)
- - A number of prototypes didn't use the Pn macros. (gscolor2.h,
- gscsepr.h, gsptype1.h, gspcolor.c)
- - A function definition wasn't formatted properly to be
- recognized by ansi2knr. (gxcht.c)
- - The algorithm for reducing single-plane CMYK halftones to binary
- halftones was incorrect (bug introduced in 5.60). (gxdither.c)
- - Writing a degenerate triangle or parallelogram in the band list
- could cause a memory access error when rasterizing. (gxclrast.c)
- Adds per-band "colors used" information to the information for a saved page,
- and procedures (gdev_prn_colors_used and gx_page_info_colors_used, defined
- in gdevprn.h) for accessing it. (gdevprn.h, gxband.h, gxclist.h, gdevprn.c,
- gxclist.c)
- Adds an internal device that appears to clients as a multi-plane color
- device, and extracts a single plane for actual rendering. This device will
- be used to support planar output devices. (gdevplnx.h, gsbitops.h,
- gdevplnx.c)
- Adds explicit color_info.text_anti_alias_bits and graphics_anti_alias_bits
- values in the device state, obsoleting the get_alpha_bits procedure, and
- makes them settable for all devices. (gxdevcli.h, gxdevice.h, gdevabuf.c,
- gdevdflt.c, gdevnfwd.c, gdevprn.c, gsdparam.c)
- Reformats some code for readability. (gxdither.c)
- Adds a tentative API for a procedure that allows band rasterizing directly
- into client's memory. This is tentative because we may need to add the
- ability to select an individual plane. (gdevprn.h)
- </pre>
- <hr>
- <h2><a name="Version5.64"></a>Version 5.64 (internal) (11/5/98)</h2>
- <p>
- This is another incremental fileset to fix problems for an external
- customer.
- <h3><a name="5.64_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Drivers)
- - The output_page procedure of all drivers now must call
- gx_finish_output_page as its last action. (This doesn't affect ordinary
- printer or raster file drivers, which already call a common procedure.)
- </pre><h3><a name="5.64_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The instructions for creating 'makefile' on Unix systems were
- out of date. (doc/Make.htm)
- </pre><h3><a name="5.64_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - An omitted return statement caused genconf to malfunction on some
- platforms. (genconf.c)
- - The replacement of MAKEFILES by TOP_MAKEFILES accidentally changed
- some comments that should not have been changed. (bcwin32.mak, gs.mak,
- msvctail.mak, openvms.mak, os2.mak, watcw32.mak, wctail.mak, winlib.mak)
- </pre><h3><a name="5.64_Drivers"></a>Drivers</h3><pre>
- Updates drivers to call gx_finish_output_page where needed. (gdev3b1.c,
- gdevcgm.c, gdevcp50.c, gdevpdf.c, gdevmswn.c, gdevpm.c, gdevps.c, gdevpx.c,
- gdevsnfb.c, gdevwprn.c, gdevx.c)
- </pre><h3><a name="5.64_Library"></a>Library</h3><pre>
- Fixes problems:
- - The FontBBox workaround introduced in 5.63 didn't work properly.
- (zchar1.c)
- - PageCount was getting incremented in the first device of a device
- pipeline, rather than in the last one and being propagated back.
- (gxdevice.h, gdevbbox.c, gdevdflt.c, gdevnfwd.c, gdevprn.c, gdevprna.c,
- gsdevice.c)
- </pre>
- <hr>
- <h2><a name="Version5.63"></a>Version 5.63 (internal) (11/4/98)</h2>
- <p>
- This fileset was driven by the development needs of an external customer,
- primarily related to asynchronous rendering. It includes a few bug fixes as
- well.
- <h3><a name="5.63_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - In the makefiles, changes the name MAKEFILES to TOP_MAKEFILES.
- (Library)
- - The pis member of the Type 1 interpreter state was renamed in
- order to catch places that assumed it was set. (It may now be 0.) This
- should not affect any client code.
- - gx_page_queue_dnit and gx_page_queue_finish_dequeue now free the
- band list information associated with the page_info in the queue entry. An
- explicit call of gx_page_queue_entry_free_page_info is now required to free
- this information before any other call of gx_page_queue_entry_free.
- </pre><h3><a name="5.63_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - devs.mak incorrectly referred to msdevs.mak rather than pcwin.mak.
- (devs.mak)
- </pre><h3><a name="5.63_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - There was a $ in the makefile that wasn't quoted. (unix-gcc.mak)
- - The name MAKEFILES has a special meaning in GNU make which only be
- disabled by using a directive that is a syntactic error for standard 'make'
- implementations. We had to work around this by changing all occurrences of
- MAKEFILES to TOP_MAKEFILES. (*.mak)
- - genconf did the wrong thing for modules with names shorter than
- 5 characters. (genconf.c)
- </pre><h3><a name="5.63_Drivers"></a>Drivers</h3><pre>
- Updates the Canon BJC library, changing the names of the files. This code
- is still very preliminary. (gdevbjcl.h, gdevbjcl.c)
- </pre><h3><a name="5.63_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - Some Type 1 fonts have a plausible but incorrect (too-small)
- FontBBox, causing some characters to be clipped. We work around this by
- enlarging the FontBBox and restarting the rasterization if the outline goes
- outside the FontBBox. (zchar1.c)
- </pre><h3><a name="5.63_Library"></a>Library</h3><pre>
- Fixes problems:
- - gx_default_strip_copy_rop didn't check for zero width before
- dividing by it. (gdevdrop.c)
- - Some places that called a procedure returning void tried to use
- the return value. (gximage.c, gximage1.c, gximage4.c)
- - The flatness for rendering Type 1 characters was set incorrectly
- (always set to 0, producing best accuracy at extra cost) for characters not
- in portrait orientation. (gxtype1.c)
- - clist_begin_typed_image incorrectly used the memory manager client
- name "clist_begin_image". (gxclimag.c)
- - If a page queue entry was created without a page_info, the entry's
- page_info wasn't initialized, probably causing a crash when attempting to
- free the (nonexistent) associated band files later. (gxpageq.c)
- More fully supports the use of saved page_info objects for decoupling banded
- rendering from band list construction:
- - Adds the ability to close and free the command list associated
- with a saved page. (gxclist.h, gxclist.c)
- - Separates freeing of the band list information associated with a
- page queue entry from freeing the entry itself. (gxpageq.h, gxpageq.c)
- - Changes the rendering thread for asynchronous band rendering so
- that it doesn't try to free the band list information twice. (gdevprna.c)
- Implements triangles and parallelograms in the band list, primarily for the
- sake of smooth shading. (gxclpath.h, gxclist.c, gxclpath.c, gxclrast.c)
- Adds a rectangle merging procedure, parallel to rectangle intersection.
- This is needed for the FontBBox fix. (gsrect.h)
- Adds logic for keeping track of what pixel values are used in which bands.
- Currently this information is not used for anything. (gdevmrop.h, gsropt.h,
- gxcldev.h, gxclpath.h, gxclrect.c, gxclpath.c, gxclimag.c)
- Updates a few more files for readability and coding conventions.
- (gxband.h, gxpageq.c)
- Updates users of gxband.h and gxpageq.h. (gdevprn.h, gxclist.h, gxpageq.h,
- gdevprna.c, gxclpage.c, gxclread.c)
- Moves the definition of the page queue into the (private) implementation
- file. (gxpageq.h, gxpageq.c)
- </pre>
- <hr>
- <h2><a name="Version5.62"></a>Version 5.62 (internal) (10/31/98)</h2>
- <p>
- This fileset concludes this round of work on (primarily color) performance
- improvement. It contains almost no new bug fixes.
- <h3><a name="5.62_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Library)
- - Clients that load the CIE caches themselves must now reset the
- procedures to the _from_cache values. (This affects the PostScript
- interpreter, but no ordinary library clients.)
- - gs_cie_compute_wbsd (an internal procedure) was changed to
- gs_cie_compute_points_sd, with different parameters.
- </pre><h3><a name="5.62_Documentation"></a>Documentation</h3><pre>
- Adds information about problems with PDF files copied from Macintosh
- environments. (doc/Use.htm)
- </pre><h3><a name="5.62_Drivers"></a>Drivers</h3><pre>
- Adds a library for generating Canon BJC commands. This code is subject to
- change without notice! (gdevcbjc.h, gdevcbjc.c)
- </pre><h3><a name="5.62_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The structures allocated for CIE RenderTables weren't marked
- correctly for garbage collection, possibly mangling the output. (zcie.c)
- - The CIE color space procedures weren't reset after the cache was
- loaded, producing incorrect output now that it matters. (zcie.c, zcrd.c)
- </pre><h3><a name="5.62_Library"></a>Library</h3><pre>
- Fixes problems:
- - Under some circumstances, a setbbox didn't take effect.
- (gxpcopy.c)
- - The last step of CIE color mapping didn't clamp the very top end
- of the range correctly. (gsciemap.c)
- Speeds up bits_replicate_horizontally a bit more. (gsbitops.c)
- Separates the CIE color mapping code from CIE cache loading, since the file
- was getting too big. (gscie.h, gscie.c, gsciemap.c)
- Finishes adding the hooks for skipping steps during CIE color mapping when
- possible, and implements one case of step-skipping. (gscie.h, gscie.c,
- gsciemap.c, gscrd.c)
- Adds more tracing to the CIE color machinery. (gscie.c)
- Changes the default number of tiles for the colored halftone screen caches
- from 1 to 4, substantially reducing cache turnover. (gsht1.c, gshtx.c,
- gxclrast.c)
- </pre>
- <hr>
- <h2><a name="Version5.61"></a>Version 5.61 (internal) (10/28/98)</h2>
- <p>
- More rendering speedups, and fixes for many of the minor problems reported
- in 5.50.
- <h3><a name="5.61_Documentation"></a>Docmentation</h3><pre>
- Fixes problems:
- - There were still some incorrect references to .txt files.
- (gs.mak, libpng.mak)
- - Two references to libpng should have referred to libjpeg.
- (gs.mak)
- </pre><h3><a name="5.61_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - GNU 'make' treats the name MAKEFILES specially. (unix-gcc.mak)
- - genconf didn't sort libraries in the right order. (genconf.c)
- - The dependency for ansi2knr, and the invocation of ccgs, didn't
- include the directory name. (ccgs, unix-cc.mak)
- - The CC_ and CCAUX rules didn't invoke the new ccgs correctly.
- (unix-cc.mak)
- - There was a typo in a comment. (unixtail.mak)
- - gcc versions of the form 2.7.2.f.1 weren't recognized as having
- the const-related code generation bug. (unix-gcc.mak)
- Documents workaround for bugs in newer IRIX compilers. (doc/Make.htm)
- </pre><h3><a name="5.61_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - ansi2knr didn't understand the new formatting of the enum_ptrs and
- reloc_ptrs procedures, which now don't have a left brace on the same line as
- the macro call that defines the procedure. (ansi2knr.c)
- Adds a utility for viewing MIFF files. (lib/viewmiff.ps)
- </pre><h3><a name="5.61_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The X driver could report a depth (e.g., 15 bits) that caused
- problems elsewhere. (gdevxini.c)
- - With the X driver, if the display is grey-scale or does not have
- enough colors to allocate a color ramp, Ghostscript crashed in
- x_map_color_rgb due to an array index overflow. (gdevx.c)
- - The PDF writer used the X scaling of fonts to determine the point
- size rather than the Y scaling, which gives the wrong result for synthetic
- condensed fonts. (gdevpdft.c)
- - If the last thing written before a flushpage was text, the X
- driver might fail to display it. (gdevx.c)
- - The PDF writer didn't free the streams created for image
- compression, causing a memory leak. (gdevpsdf.c)
- - pswrite didn't output a command to set the page size. (gdevps.c)
- Removes an obsolete comment and commented-out line. (gdevxalt.c)
- </pre><h3><a name="5.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Explicit (not resource) Indexed color spaces caused an error.
- (lib/pdf_draw.ps)
- </pre><h3><a name="5.61_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - The PNGPredictor filters didn't free their row buffer. (spngp.c)
- - The PNGPredictor filters didn't handle end-of-data correctly.
- (spngp.c)
- Changes the eexec filter to ignore % characters when reading
- ASCIIHex-encoded data. This is contrary to the Adobe documentation, but one
- badly coded prologue requires it. (seexec.c)
- </pre><h3><a name="5.61_Library"></a>Library</h3><pre>
- Fixes problems:
- - The definition of TRANSPARENCY_PER_H_P was in the wrong module,
- causing it to be ignored. (gdevmrop.h, gdevdrop.c)
- - There was a typo in the tracing output for init_tile_cursor.
- (gxcht.c)
- - gx_get_bits_copy computed the standard raster incorrectly if
- the destination used a different color representation from the source,
- causing multi-line transfers to be done incorrectly. (gdevdgbr.c)
- - Parentheses were missing around the use of width_bits in the
- definition of bitmap_raster, possibly causing incorrect computation.
- (gxbitmap.h)
- - When rendering a Pattern, a singular CTM caused an error even if
- the Pattern was empty. (gspcolor.c)
- - The lookup table wasn't allocated for device-originated CRDs.
- (gscrdp.c)
- - If an error occurred when setting up to rasterize a band,
- data_bits could be freed without ever having been initialized. (gxclrast.c)
- - Processing a CIE-color image with a color space different from the
- current color space caused an error. (gscie.c)
- - The speedup for bits_replicate_horizontally had an algorithm
- error, producing incorrect output. (gsbitops.c)
- Splits up the memory device implementation of RasterOp, since the file was
- getting too large. (gdevmem.h, gdevm1.c, gdevm8.c, gdevm16.c, gdevm24.c,
- gdevm32.c, gdevmrop.c [deleted], gdevmr1.c, gdevmr2n.c, gdevmr8n.c,
- gsnorop.c)
- Cleans up a little formatting. (gsbittab.h)
- Speeds up the default RasterOp implementation some more. (gdevdgbr.c,
- gdevdrop.c, gdevmem.c)
- Speeds up testing whether a given halftone level is already present in its
- cache. (gzht.h, gxht.c)
- Speeds up 1-bit CMYK halftones a bit more. (gxcht.c)
- Makes filling always use the (much faster) trapezoid-based algorithm if the
- region being filled is a rectangle. (gxfill.c)
- </pre>
- <hr>
- <h2><a name="Version5.60"></a>Version 5.60 (internal) (10/18/98)</h2>
- <p>
- This fileset incorporates many performance enhancements for 1-bit CMYK
- devices, especially for PCL 5c interpretation.
- <p>
- This fileset divides the files into subdirectories. In the lists of changed
- files, files with no explicit subdirectory name are in the src subdirectory.
- The revised OpenVMS and OS/2 makefiles have not been tested.
- <h3><a name="5.60_Incompatible_changes"></a>Incompatible changes</h3><pre>
- (Procedures)
- - The instructions for font compilation in doc/Fonts.htm are
- different.
- - The fileset has been split into multiple directories; the source
- code and makefiles are now in src/.
- - The top-level makefile requires a definition for BINDIR for the
- directory to hold the final executable.
- - Every .dev rule of the form
- xxx.dev: <list>
- $(SETyyy) xxx <items>
- $(ADDMOD) xxx <items>
- must be changed to
- $(DD)xxx.dev: <list>
- $(SETyyy) $(DD)xxx <items>
- $(ADDMOD) $(DD)xxx <items>
- (DD for drivers, PSD for PostScript/PDF-interpreter features, GLD for
- graphics library features). Every -include and -replace option in the
- makefiles rules, and every element of FEATURE_DEVS and DEVICE_DEVS*, must be
- changed similarly. This is very unfortunate, especially since people
- editing FEATURE_DEVS and DEVICE_DEVS* must now know which subsystem
- implements a particular feature; but we tried 3 different ways to get the
- generated .dev files out of the top-level directory, and this was the only
- one we could make work.
- - Top-level makefiles must define both MAKEFILE and MAKEFILES,
- the latter to include any subsidiary makefiles that define configuration
- parameters. Dependencies on $(MAKEFILE) must be changed to $(MAKEFILES).
- - Color space objects now must either be allocated with the
- gs_cspace_build_ procedures or initialized with the gs_cspace_init_
- procedures: building color spaces "by hand" is no longer allowed.
- (Library)
- - There are new required elements of the gs_image_type_t structure.
- - The binary and colored variants of gx_device_halftone have
- changed. (No APIs are affected.)
- - If a device changes its (effective) color mapping algorithm other
- than as a side effect of put_params, it must call
- gx_device_decache_colors(dev).
- </pre><h3><a name="5.60_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - Some files still referred to .doc files rather than .htm.
- (gsiparam.h, imain.h)
- - Version 5.50 was incorrectly identified as a beta version.
- (doc/News.htm)
- - The instructions for cross-compilation were seriously
- incomplete. (doc/Make.htm)
- Adds a text-only README file. (doc/README)
- Updates the instructions for font compilation. (doc/Fonts.htm)
- Updates the instructions for device and feature selection. (doc/Make.htm)
- Adds material on 8.3 file names, compiler warning messages, and graphics
- library error codes to the C style guide. (doc/C-style.htm)
- Adds a note about gx_device_decache_colors. (doc/Drivers.htm)
- Improves formatting slightly. (doc/Install.htm, doc/Use.htm)
- </pre><h3><a name="5.60_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The Unix install script referred to an obsolete ps2image.ps file.
- (unixinst.mak)
- - The Unix CC script had some duplicated definitions. (unix-cc.mak)
- - The DVX makefile referred to int.mak in GLSRC rather than PSSRC.
- (dvx-gcc.mak)
- - rollconv.ps wasn't installed with the other utilities.
- (unixinst.mak)
- - Some definitions of MAKEFILE lacked a directory name. (os2.mak,
- unix-cc.mak, unixansi.mak, watclib.mak)
- - There were inappropriate dependencies on a file with the literal
- name `makefile'. (bcwin32.mak, gs.mak, watc32.mak)
- - Unix systems didn't use -fomit-frame-pointer when possible.
- (unix-cc.mak, unix-gcc.mak, unixansi.mak, unix-end.mak)
- Restructures the source files into multiple subdirectories:
- src/ - files needed at build time: *.mak, *.h, *.c, *.cpp, *.icx, *.rc,
- *.cmd, ??.bat, *.com, *.rps, *.dif, *.cfg
- lib/ - files needed at run time: *_*.ps, *.ppd, *.upp, *.bat
- doc/ - documentation other than man pages: *.htm, *.txt
- man/ - man pages: *.1
- examples/ - sample input data: *.ps, *.eps, *.pdf
- Also incorporates the font compilation makefile into the main makefile,
- since the former now depends on parameters defined in the latter. (*.mak)
- ****** HAVEN'T SETTLED HOW TO HANDLE .ico FILES ******
- NOTE: Still need to update: openvms.mak, os2.mak.
- Updates the Unix install script for the directory split. (unixinst.mak)
- Updates the font compilation makefile rules to handle alternate directories.
- (cfonts.mak, int.mak)
- ****** PROBLEM: cfonts.mak NEEDS CCFONT, BUT int.mak NEEDS CF* FOR ADDING
- ONE'S OWN FONTS ******
- Removes useless dependencies on gs_*.ps files. (int.mak)
- Moves the .dev files into the GEN directories where they belong. (gs.mak,
- dvx-tail.mak, msvclib.mak, openvms.mak, os2.mak, pcwin.mak, ugcclib.mak,
- unixhead.mak, unixtail.mak, unix-end.mak, watc.mak, watclib.mak, winlib.mak,
- echogs.c, genconf.c) ****** NO_OP FOR dvx HASN'T BEEN VERIFIED ******
- NOTE: Still to do:
- src/bcwin32.mak
- src/dvx-gcc.mak
- src/dvx-head.mak
- src/dvx-tail.mak
- src/msvc32.mak
- src/msvccmd.mak
- src/msvclib.mak
- src/msvctail.mak
- src/openvms.mak
- src/os2.mak
- src/pcwin.mak
- src/ugcclib.mak
- src/watc.mak
- src/watclib.mak
- src/watcw32.mak
- src/wccommon.mak
- src/wctail.mak
- src/winint.mak
- src/winlib.mak
- Adds a new BINDIR directory for the final executable (and associated files
- like resource files). After building, only the contents of BINDIR and lib
- are needed for execution. (gs.mak, unix-end.mak) ****** NEED TO DO
- openvms.mak, os2.mak, OTHER PC MAKEFILES ******
- Updates libpng to version 1.0.2. (libpng.mak)
- </pre><h3><a name="5.60_Utilities"></a>Utilities</h3><pre>
- Adds a new switch, -b, to echogs. (echogs.c)
- </pre><h3><a name="5.60_Drivers"></a>Drivers</h3><pre>
- Updates the PDF writer for the change in color space initialization.
- (gdevpdfi.c)
- Speeds up the pkmraw driver a bit more. (gdevpbm.c)
- Updates some drivers to use the new CMYK color mapping procedures.
- (gdevpbm.c, gdevpcx.c, gdevxalt.c)
- Updates one driver that maintained its own color cache. (gdevxalt.c)
- Removes some compiler warnings (mostly about "uninitialized" variables).
- (gdevpdfo.c, gdevpdft.c, gdevpx.c)
- Adds another driver for the H-P Color LaserJet 5/5M. (gdevcljc.c)
- </pre><h3><a name="5.60_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - A change in the MetroWerks C compiler caused the hypot function
- to become declared. (math_.h)
- </pre><h3><a name="5.60_Interpreter"></a>Interpreter</h3><pre>
- Updates the compiled font code for updates in the type declarations.
- (iccfont.c, icfontab.c)
- Cleans up some more formatting and macros. (ccfont.h, errors.h, icfontab.c,
- interp.c)
- Updates clients for the change in color space initialization. (zcsdevn.c,
- zcsindex.c, zcspixel.c, zcssepr.c, zpcolor.c)
- Updates the memory validator for the addition of the large-block freelist.
- (ilocate.c)
- </pre><h3><a name="5.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - If the final %%EOF was followed by any blanks before the newline,
- an error would occur. (lib/pdf_main.ps)
- </pre><h3><a name="5.60_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - The LZWDecode filter wouldn't handle a file that had 4096-256-2+1
- data items before the reset. (We think this is a bug in the file, but
- Acrobat accepts it.) (slzwx.h, slzwd.c)
- Rearranges code slightly to improve readability. (spdiff.c)
- </pre><h3><a name="5.60_Library"></a>Library</h3><pre>
- Fixes problems:
- - Changing the resolution (or any other parameter) of the bbox
- device from the command line caused an invalid memory access. (gdevbbox.c)
- - When banding, if the very first drawing operation involved a
- halftone with non-zero phase, an arithmetic exception occurred.
- (gxclpath.c)
- - When banding, the X offset of the band was negated, producing
- incorrect output when placing multiple source pages on a single output page.
- (gxclread.c)
- - When banding, rotated images crossing band boundaries produced
- incorrect output, because the subrectangle X value was inconsistent with the
- amount of data transmitted. (gxclimag.c)
- - When banding, the clipping check didn't take interpolation support
- into account. (gxclimag.c)
- - The clipping check for banding used (int) to take the floor of
- floating point values, which is wrong for negative values. (gxclimag.c)
- - The bounding box device didn't return an empty bounding
- rectangle if nothing had been written to it. (gdevbbox.c)
- - A value was conditional on a debugging switch even if DEBUG wasn't
- defined. (gxcht.c)
- - Filling a region with a large colored halftone, a non-default
- RasterOp, and a non-null RasterOp source could cause only part of the region
- to be filled. (gxcht.c) ****** NOT FIXED YET ******
- - Type 1 fonts that used very large numbers (>= 2^19) caused a
- rangecheck. We've fixed this for the only case that seems to matter, namely
- <very-large-number> <number> div. (gxtype1.h, gstype1.c)
- - The memory-based band list allocator failed to return an error
- code from memfile_next_blk. (gxclmem.c)
- - When recovering from a low-band-list-memory condition while
- writing an image, the record of the current image enumeration
- (cdev->image_enum_id) wasn't updated. (gxclimag.c)
- - The estimated memory requirement for the band list rasterizer was
- too small. (gdevprna.c)
- Adds some tracing to mask clipping. (gxclipm.c)
- Speeds up masked images by doing mask clipping before halftoning, using a
- more efficient mask scanning algorithm, and checking for vertical blocks of
- 1s. (gxclipm.c)
- Speeds up ImageType 4 images greatly by incorporating the color-key check
- into the ImageType 1 rendering code. NOTE: the 12-bit case has not been
- tested. (gxcpath.h, gximage.h, gxi12bit.c, gxicolor.c, gxifast.c,
- gxiinit.c, gximage4.c, gximono.c, gxiscale.c)
- Implements passing ImageType 4 images (and potentially others) through the
- band list. This involves adding image parameter writing and reading
- procedures to the image type structure. (gscdefs.h, gsiparam.h, gsiparm2.h,
- gsiparm4.h, gsmatrix.h, gxclpath.h, gxiparam.h, gconf.c, genconf.c,
- gsmatrix.c, gxclimag.c, gxclist.c, gxclpath.c, gxclrast.c, gxiinit.c,
- gximage2.c, gximage3.c, gximage4.c)
- Splits off the generic image support code from the ImageType 1 code.
- (gxiinit.c [deleted], gximage.c, gximage1.c, gxipixel.c)
- Removes some vestiges of support for 16-bit environments. (gsmisc.c)
- Implements bit-planar images, important for PCL interpretation.
- (gsiparam.h, gximage.h, gxiparam.h, gdevddrw.c, gdevpdfi.c, gdevps.c,
- gsimage.c, gxclimag.c, gxidata.c, gximage.c, gxipixel.c) ****** NOT TESTED
- YET ******
- Makes closing a memory device that owns its bitmap set the bitmap pointer to
- 0, for the sake of an application that doesn't handle is_open properly.
- (gdevmem.c)
- Speeds up floating-point emulation for single-precision add, subtract, and
- multiply. (gsfemu.c)
- Speeds up sampling of transfer functions. (gshtx.c)
- Makes the CIE cache used fixed-point values if the CPU has slow floating
- point. (gscie.h)
- Adds a unique ID to color spaces to allow fast detection of reselecting the
- same color space. This matters for certain client code that repeatedly
- reselects the same color space, since selecting certain color spaces is
- expensive. (gscpixel.h, gscspace.h, gxcspace.h, gscolor2.c, gscpixel.c,
- gscscie.c, gscspace.c, gspcolor.c, gsstate.c, gximage2.c) ****** NEED TO FIX
- gxclrast.c TO ALLOC INDEXED COLOR SPACE ******
- Speeds up setting Pattern color spaces, by bypassing the install code for
- the base space. (gspcolor.c)
- Adds a unique ID to CRDs to allow fast detection of reselecting the same
- CRD. This matters for certain client code that does this repeatedly.
- (gscie.h, gscrd.h, gscrd.c)
- Detects setting the CRD to one with identical PQR components, and bypasses
- an expensive setup step. (gscie.c)
- Speeds up converting pixels between representations (gx_get_bits_copy) for
- devices with up to 4 bits per pixel, by caching the pixel values.
- (gdevdgbr.c)
- Speeds up the slow default RasterOp algorithm a little. (gdevdrop.c)
- Defines standard mapping procedures for 1-bit-per-component CMYK colors.
- Other code can then test for the presence of these procedures and use more
- efficient algorithms. (gxdevice.h, gxcmap.c)
- Speeds up some algorithms in the bbox device by making some recursive calls
- use a pure color rather than a client-supplied one. (gdevbbox.h, gdevbbox.c)
- Adds a cache for the black and white pixel values to the device structure.
- (gxdevcli.h, gxdevice.h, gdevalph.c, gdevnfwd.c, gsdparam.c, gxdcolor.c)
- Makes the code for colored halftones a little more readable. (gxcht.c)
- Speeds up color mapping for CMYK devices by copying the color mapping
- procedures into forwarding devices, when applicable. (gdevcmap.c,
- gdevmem.c, gsdevice.c, gxclip.c)
- Removes some compiler warnings (mostly about "uninitialized" variables).
- (gxcldev.h, gsdevmem.c, gsshade.c, gstype42.c, gxclpath.c, gxfill.c,
- gximage3.c, gxpath2.c, gxpcopy.c)
- For the benefit of certain client code that commonly sets a CRD and then
- doesn't use it, makes loading of the joint CIE caches lazy (at the library
- level). (gscie.h, gscie.c)
- Changes CIE color restriction from a macro to a procedure, since it is
- rarely used. (gscie.c)
- Adds code and structures for detecting when CIE Decode and/or Encode
- procedures are simply linear transformations, which would allow collapsing
- them into the adjacent matrix, but doesn't actually do the collapsing.
- (gscie.h, gscie.c)
- Speeds up color halftoning by pre-computing the mask of planes that need to
- be halftoned, and preconverting multi-plane halftones to binary or solid
- colors when possible. (gsdcolor.h, gxcht.c, gxdcolor.c, gxdither.c, gxht.c)
- Optimizes color mapping for 1-bit-per-component CMYK halftones. (gxcht.c)
- Optimizes null RasterOp sources for black = 1 as well as black = 0.
- (gxdcolor.c)
- Modifies the standard allocator so it keeps track of large free blocks as
- well as small ones, and uses them to satisfy requests when appropriate.
- (gxalloc.h, gsalloc.c)
- Speeds up the horizontal bitmap replication code a bit. (Much more is
- possible.) (gsbitops.c)
- Changes gs_image_max_planes to gs_image_max_components to reflect its
- function more accurately. (gdevddrw.c)
- </pre>
- <hr>
- <h2><a name="Version5.50"></a>Version 5.50 (9/16/98)</h2>
- <p>
- This is the first public release since 5.10. See
- <a href="Current.htm">the release summary</a>
- for a list of major additions and changes.
- <h3><a name="5.50_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - Many files still referred to .txt rather than .htm files.
- (DLL.htm, Make.htm, New-user.htm, Readme.htm, bcwin32.mak, cfonts.mak,
- devs.mak, dvx-gcc.mak, dwmainc.cpp, gs-vms.hlp, gxdevcli.h, gxdevice.h,
- int.mak, jpeg.mak, libpng.mak, msvc32.mak, msvclib.mak, openvms.mak,
- os2.mak, unix-cc.mak, unix-gcc.mak, unixansi.mak, watc.mak, watcw32.mak,
- wccommon.mak, zlib.mak)
- Notes that ps2epsi.1 and ps2epsi.txt may be inconsistent or obsolete.
- (ps2epsi.1, ps2epsi.txt)
- Adds a reference to Thomas Merz's Ghostscript manual. (Readme.htm)
- Adds instructions for making RPMs. (Install.htm, Make.htm)
- Changes the URL for post-release notes. (Bug-form.htm, Make.htm,
- New-user.htm)
- Notes problems with Watcom compilation. (Make.htm)
- </pre><h3><a name="5.50_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - On Unix systems, the documentation files didn't get installed by
- `make install'. (unixinst.mak)
- - $() was missing around MAKEFILE in a Windows makefile.
- (msvc32.mak)
- - The dfax drivers didn't include all the necessary files in the
- linker list. (contrib.mak)
- - The MSVC makefiles didn't allow building the executable in a
- different directory. (bcwin32.mak, gs.mak, lib.mak, msvc32.mak,
- msvccmd.mak, msvclib.mak, msvctail.mak, os2.mak, watcw32.mak, winint.mak,
- winlib.mak)
- - The default build directory for the Borland compiler was debugobj
- rather than obj. (bcwin32.mak)
- Adds a patch file and some specification files for making RPMs. (gs.rps,
- gs-fonts.rps, rpm-conf.dif)
- Removes the docs target in the makefile, since this function is now
- performed by another program. (unix-end.mak)
- </pre><h3><a name="5.50_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The jpeg drivers caused a memory access error. (bug introduced in
- 5.20 by an incorrectly made fix) (gdevjpeg.c)
- - The x11cmyk driver implemented map_rgb_color, which it should not
- do. (gdevxalt.c)
- Updates a high-level driver for the addition of the bit-planar image format.
- (gdevps.c)
- </pre><h3><a name="5.50_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - echogs -h didn't work in environments where char is signed.
- (echogs.c)
- </pre><h3><a name="5.50_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - MSVC++ 5.0 produced incorrect code with TDEBUG=0. We "fixed" this
- problem by noting in the makefile that TDEBUG must be left set to 1.
- (msvc32.mak, msvclib.mak)
- Updates the icons for the MS Windows and OS/2 platforms. (gsgraph.icx,
- gsos2.icx, gspmdrv.icx, gstext.icx)
- </pre><h3><a name="5.50_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - setpagedevice didn't update the state correctly when switching to
- a new type of device (different OutputDevice value). (gs_setpd.ps)
- - The interpreter's initialization depended on BSS being initialized
- to 0. (files.h, zfile.c)
- Removes all references to reloc_struct_ptr other than in gsstruct.h.
- (igcref.c)
- Adds DEBUG tracing for pdfmarks. (gs_pdfwr.ps)
- Disables TEST code for release. (zcrd.c, zfdcte.c)
- </pre><h3><a name="5.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Some third-party software still referred to the obsolete #?
- procedure. (pdf_main.ps)
- - Destinations with string names weren't properly converted to
- pdfmarks. (pdf_main.ps)
- - Destinations with S = /Named weren't supported. (pdf_main.ps)
- </pre><h3><a name="5.50_Library"></a>Library</h3><pre>
- Fixes problems:
- - Dropout prevention wasn't applied to landscape image masks.
- (gximono.c)
- - When using async rendering, the renderer's allocator was allocated
- with the wrong allocator. (gdevprna.c)
- - gx_strip_bitmap and gx_device_mask_clip didn't have proper GC
- descriptors, causing crashes if a GC occurred while rendering an ImageType 3
- or 4 image. (gsstruct.h, gxbitmap.h, gxclip2.h, gxclipm.h, gxmclip.h,
- gspcolor.c, gxclipm.c, gxmclip.c)
- - The buffer for printer devices wasn't reallocated properly for
- async devices when the page size changed. We aren't entirely comfortable
- with the fix, but it's the best we've got right now. (gdevprn.c)
- - Some files wouldn't compile with -dNOPRIVATE. (gxcspace.h,
- gscdevn.c, gscolor2.c, gscscie.c, gscsepr.c)
- - gp_semaphore_close and gp_monitor_close were defined as not
- returning an error code. (gpsync.h, gp_nsync.c, gp_posem.c, gp_semon.c,
- gp_win32.c)
- - Initialization code depended on BSS being initialized to 0.
- (gsiodev.c)
- - The special PCL color mapping device didn't handle CMYK devices
- correctly in other than "identity" mode. (gdevcmap.c)
- Cleans up a little formatting. (gscie.h, gscpixel.c, gxmclip.c)
- Removes all references to reloc_struct_ptr other than in gsstruct.h.
- (gsstruct.h, gsalloc.c, gsdevice.c, gsfont.c, gxcpath.c)
- Patches the async code so that it allocates twice as much space for the
- renderer as should be needed, to deal with sandbars. (gdevprna.c)
- </pre>
- <hr>
- <h2><a name="Version5.40"></a>Version 5.40 (beta) (9/10/98)</h2>
- <p>
- A few more fixes. This is intended as the candidate fileset for the 5.50
- release.
- <h3><a name="5.40_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The current GNU Ghostscript version was documented as 3.33, not
- 4.03. (New-user.htm)
- - The ansi2knr usage documentation didn't mention --filename.
- (ansi2knr.1)
- - A projected completion date was too optimistic. (ps2pdf.1)
- Replaces all documentation files with new HTML versions. (*.txt [deleted],
- *.htm, index.html, imainarg.c)
- Adds a contributed set of Emacs macros useful for working with Ghostscript
- documentation. (gsdoc.el)
- Changes the version and date format slightly in one file for consistency.
- (gs-vms.hlp)
- </pre><h3><a name="5.40_Procedures"></a>Procedures</h3><pre>
- Adds a make target (make docs) to touch up documentation files before a
- release. (unix-end.mak)
- </pre><h3><a name="5.40_Utilities"></a>Utilities</h3><pre>
- Removes the long-obsolete ps2image.ps utility. (ps2image.ps [deleted])
- </pre><h3><a name="5.40_Drivers"></a>Drivers</h3><pre>
- Adds a driver for the Color LaserJet 5. (devs.mak, gdevclj.c)
- </pre><h3><a name="5.40_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - Blanks in command lines weren't handled properly. (dwmain.cpp,
- dwmainc.cpp)
- </pre><h3><a name="5.40_Library"></a>Library</h3><pre>
- Fixes problems:
- - 16-bit devices didn't convert colors to RGB correctly.
- (gdevm16.c)
- - 16- and 32-bit RasterOp didn't work, because pack_from_standard
- didn't handle depths greater than 8. (gdevdrop.c)
- - RasterOps with devices with non-standard color representation
- sometimes substituted black or white for the source or target. (gdevdrop.c)
- - The non-orthogonal case of Axial shading executed the axial-case
- code as well. (gxshade1.c)
- - copy_color on 4-bit-deep memory devices did an unnecessary
- fit_copy check. (gdevm4.c)
- - An upcast was missing. (gdevbbox.c)
- - View clipping was applied to internal devices, incorrectly.
- (gspath.c)
- Revises the implementation of shading so as to reduce the use of macros,
- update formatting, and help prepare for PatternType 2 patterns. (gsshade.h,
- gxshade.h, gxshade4.h, gscolor3.c, gsshade.c, gxshade.c, gxshade1.c,
- gxshade4.c, gxshade6.c)
- </pre>
- <hr>
- <h2><a name="Version5.39"></a>Version 5.39 (beta) (9/8/98)</h2>
- <p>
- A couple more small fixes.
- <h3><a name="5.39_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The pkm[raw] drivers didn't work with 32-bit pixels. (gdevpbm.c)
- Adds (fake) 8-, 16-, and 32-bit X11 CMYK devices, for debugging.
- Unfortunately, the 16- and 32-bit devices consume the hardware color map and
- then no longer behave reasonably; the 8-bit device produces output with
- garbled colors (fixed in 5.40). (devs.mak, gdevxalt.c)
- </pre><h3><a name="5.39_Library"></a>Library</h3><pre>
- Fixes bugs:
- - All banded devices caused a memory access error. (bug introduced
- in 5.38) (gsstate.c)
- - The special color mapping device didn't update its state after
- put_params. (gdevcmap.c)
- - RasterOp on 8-bit non-gray-scale devices didn't handle filling
- with constant 0 or 1 properly. (gdevmrop.c)
- - The halftone machinery didn't switch from full-size to strip
- halftones early enough, possibly allocating very large halftone data
- structures. (gshtscr.c)
- - If an ioerror (such as a disk- or memory-full condition) occurred
- while writing out the band list, the bookkeeping structures were left in an
- inconsistent state, causing further problems. (gxclutil.c)
- - Some shaded fills didn't check for errors when filling
- sub-regions. (gxshade1.c, gxshade4.c)
- Cleans up some formatting. (gxshade6.c)
- </pre>
- <hr>
- <h2><a name="Version5.38"></a>Version 5.38 (beta) (9/3/98)</h2>
- <p>
- The sole purpose of this release was to fix some obscure bugs detected by
- the Genoa tests and by another Aladdin project.
- <h3><a name="5.38_Documentation"></a>Documentation</h3><pre>
- Updates the list of implemented PostScript LanguageLevel 3 features.
- (current.txt)
- </pre><h3><a name="5.38_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The PDF writer did the wrong thing for multi-source images with
- more than 180 bytes of data (total) per scan line. (gdevpdfi.c)
- - If one used setdistillerparams, [g]restore caused a rangecheck in
- .setpagedevice. ****** DISABLED FOR DCT DICTS, SINCE THIS CAUSES A SEGV
- ****** (gdevpsdp.c)
- </pre><h3><a name="5.38_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - 0-length parameter arrays were given an arbitrary type, confusing
- clients. (iparam.c)
- - EOD on a write stream caused an error. (zfileio.c)
- </pre><h3><a name="5.38_Library"></a>Library</h3><pre>
- Fixes problems:
- - 0-length parameter arrays confused clients that wanted arrays of a
- particular type. (gsparam.c)
- - Patterns with XStep or YStep smaller than the bounding box didn't
- work properly. (gxp1fill.c)
- - Resizing an object sometimes copied it unnecessarily. (gsalloc.c)
- - Freeing the shared part of a graphics state didn't free its
- sub-objects. (gsstate.c)
- - The standard allocator didn't free its initial (self-containing)
- chunk when asked to free itself. (gsalloc.c)
- - The standard allocator didn't attempt to merge free blocks before
- giving up. We implemented this by adding another virtual procedure to
- allocators, consolidate_free. (gsmemory.h, gsmemraw.h, gsalloc.c,
- gsmalloc.c, gsmemlok.c, gsmemory.c)
- - The free object merging algorithm thought there were free objects
- even when there weren't. (Small performance bug only.) (gsalloc.c)
- Adds some more tracing to pattern filling. (gxclip2.c, gxp1fill.c)
- Replaces the cs_alloc, cs_copy, and cs_undo_alloc macros with procedures.
- (gxcspace.h, gscolor2.c, gscsepr.c, gscspace.c, gspcolor.c)
- Moves the free-object merging code from gsnogc.c to gsalloc.c, so it can be
- used even in systems that have a garbage collector. (gsalloc.h, gxalloc.h,
- gsalloc.c, gsnogc.c)
- </pre>
- <hr>
- <h2><a name="Version5.37"></a>Version 5.37 (beta) (8/31/98)</h2>
- <h3><a name="5.37_Documentation"></a>Documentation</h3><pre>
- Mentions the new cid2code utility in the documentation. (psfiles.txt)
- Documents dpsnext.dev. (gs.mak)
- Notes that clients of ImageType 3 images are responsible for providing the
- mask data before the pixel data. (gsiparm3.h)
- </pre><h3><a name="5.37_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The makefiles were missing a dependency of jconfig.h on arch.h.
- With this fix, parallel builds (make -jN) work reliably. (jpeg.mak)
- </pre><h3><a name="5.37_Utilities"></a>Utilities</h3><pre>
- Adds a utility for creating maps from CIDs to Unicode. (unixinst.mak,
- cid2code.ps)
- </pre><h3><a name="5.37_Drivers"></a>Drivers</h3><pre>
- Removes the %Fax% IODevice code, since it was only a skeleton and Adobe no
- longer supports this facility. (devs.mak, gdevpfax.c [deleted])
- </pre><h3><a name="5.37_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - TrueType fonts whose first code wasn't 0 or 0xf000 didn't display
- correctly. (bug introduced in 5.36) (gs_ttf.ps)
- - CIDFontType 0 fonts didn't handle being redefined with another
- name. (gs_cidfn.ps)
- - CIDFontType 0 fonts could get local-into-global-store errors.
- (gs_cidfn.ps)
- - PDF files couldn't use already-defined CMap resources.
- (pdf_font.ps)
- - Out-of-range CIDs gave an error rather than using a notdef
- character. (gs_cidfn.ps)
- </pre><h3><a name="5.37_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - CIDFontType 4 fonts weren't recognized as CID-keyed. (zchar2.c,
- zchar32.c, zfont32.c)
- - When recovering from an error in an operator procedure, the
- interpreter didn't update the dictionary stack caches. (interp.c)
- - startjob didn't reinitialize the stacks or VM space. (gs_lev2.ps)
- - Encoding filters with a Predictor always caused an error.
- (zfilter2.c)
- - currenttrapparams gave an error. (gs_ll3.ps)
- - settrapparams had no effect, and left the dictionary on the stack.
- (gs_ll3.ps)
- Finishes implementing Type 32 fonts. These fonts don't actually work
- directly with the cache -- they store the bitmaps in a compressed form in an
- ordinary Dictionary -- but they do behave the way they are specified.
- (gs_typ32.ps, zchar32.c, zfont32.c)
- Cleans up formatting and macros in a few more files. (ccfont.h, icharout.h,
- icstate.h, iutil.h, iutil2.h, ibnum.c, iccfont.c, iccinit0.c, ilocate.c,
- isave.h, isave.c, iscannum.c, iutil.c, iutil2.c)
- Removes or capitalizes a few more macros. (zcontext.c, zcssepr.c,
- zusparam.c)
- </pre><h3><a name="5.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Color spaces with subsidiary spaces (Indexed, Separation, DeviceN)
- sometimes didn't work properly, because they were translated to PostScript
- structures more than once. (pdf_draw.ps)
- - Type 3 fonts didn't rebind the resource context when executing the
- CharProc procedure. (pdf_font.ps)
- </pre><h3><a name="5.37_Streams"></a>Streams</h3><pre>
- Fixes problems:
- - The CCITTFax decoder signaled an error if it saw an EOB with
- EndOfBlock = false. (According to e-mail from Adobe, EOBs should be
- recognized even if EndOfBlock is false, even though the Red Book implies the
- opposite.) (scfd.c)
- Cleans up macros and formatting in a few more files. (slzwce.c, sfxfd.c,
- sfxstdio.c)
- </pre><h3><a name="5.37_Library"></a>Library</h3><pre>
- Fixes problems:
- - Landscape color images usually didn't display. (bug introduced in
- 5.32) (gxicolor.c)
- - If gs_heap_free_object was called with ptr != 0 but bp = 0 (which
- is an error), an invalid memory access would occur. (gsmalloc.c)
- - The left side bearing was still being added in a second time for
- the accent of a seac. (bug probably introduced in 5.20) (gxtype1.c)
- - An access error occurred when rendering the very last glyph of a
- TrueType font with a 2-byte loca table. (gstype42.c)
- - In the fast portrait case of monochrome images, a numerical error
- sometimes produced a 1-bit-wide vertical stripe of an incorrect color at the
- right edge of the image. (gxifast.c)
- - ImageType 3 images with InterleaveType = 3 gave memory access
- errors. (gximage3.c)
- - Hit detection ignored any part of the aperture that had negative X
- or Y coordinates. (gdevhit.c)
- - The special color mapping device didn't copy all necessary values
- back from its target. (gxdevice.h, gdevbbox.c, gdevcmap.c, gsdevice.c)
- - The special color mapping device didn't handle ordinary (Type 1)
- images correctly. (gdevcmap.c)
- - CMYK halftones complemented both the color and the halftone level:
- this produced the right number of pixels turned on (only for linear spot
- functions or threshold arrays), but wasn't consistent with either the Adobe
- specification or the user's intentions. (gxcht.c)
- - The phase of mask Patterns wasn't always set correctly.
- (gxp1fill.c)
- - The reader side of overlapped band devices was confused about its
- open/closed status. (gdevprna.c)
- Renames Type 32 fonts from ft_bitmap to ft_CID_bitmap. (gxftype.h)
- Adds some more tracing for composite font decoding. (gsfcmap.c)
- Adds some more tracing for images. (gxiinit.c)
- Cleans up formatting and macros in a few more files. (gxifast.c)
- Moves the image*_type_data and image*_enum_procs_data definitions from
- header files into more appropriate .c files. (gsiparm2.h, gsiparm3.h,
- gsiparm4.h, gxiparam.h, gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
- </pre>
- <hr>
- <h2><a name="Version5.36"></a>Version 5.36 (beta) (8/25/98)</h2>
- <p>
- Another set of fixes. The free-standing bbox device now produces convenient
- %%BoundingBox messages. This fileset also includes support for double-byte
- TrueType fonts.
- <h3><a name="5.36_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - There was a minor spacing glitch in one man page. (gs.1)
- - The page printed by align.ps didn't make it clear enough what to
- do with the numbers it asks users to calculate. (align.ps)
- - The sample code for adding gamma adjustment didn't work most of
- the time. (devices.txt)
- - The prolog produced by pswrite was completely uncommented.
- (gdevps.c)
- - The documentation didn't note that the string block freelist
- (sfree) is sorted in address order. (gxalloc.h)
- Notes that FirstBitLowOrder and LowBitFirst are equivalent. (slzwx.h)
- Notes a change in the FTP site of the free Kanji ("Wadalab") fonts.
- (fonts.txt)
- Adds a pointer to the freely available Unicode CMaps. (fonts.txt)
- Changes an obsolete e-mail address for Carsten Emde. (contrib.mak)
- </pre><h3><a name="5.36_Utilities"></a>Utilities</h3><pre>
- Fixes problems:
- - The viewgif utility sometimes left 1-scan-line gaps when rendering
- interlaced images. (viewgif.ps)
- </pre><h3><a name="5.36_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - In the PDF writer, downsampled images were always written with 8
- bits per sample, not the requested depth. (gdevpsdi.c)
- - The 8-to-N-bit compression filter produced an extra byte at the
- end of each row, and the N-to-8-bit expansion filter skipped an input byte
- at the end of each row. (gdevpsds.c)
- - In the PDF writer, the size of downsampled images for changing the
- pixel width was set incorrectly, leading to inconsistent image parameters in
- the output. (gdevpsdi.c)
- - The subsampling filters didn't take a clear position about what to
- do with excess input samples beyond a multiple of the reduction factor,
- leading to inconsistent image parameters. We added a Boolean to indicate
- whether they should discard the samples or use them to create an additional
- output sample. (gdevpsds.h, gdevpsdi.c, gdevpsds.c)
- - The subsampling filters didn't provide the necessary set_defaults
- procedures. (gdevpsds.h, gdevpsds.c)
- - Because of a typo, pdfwrite and pswrite printed sequences of 4
- decimal values wrong. (bug introduced during macro removal in 5.25)
- (gdevpstr.c)
- Makes the PS writer produce a %%HiResBoundingBox as well as a %%BoundingBox.
- (gdevps.c)
- </pre><h3><a name="5.36_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The Borland makefile didn't include the MT libraries. We added a
- MULTITHREAD option to this makefile. (bcwin32.mak)
- - The MSVC makefile didn't include the MT switches in the right
- place. (msvccmd.mak)
- - 'make clean' in the Windows makefiles didn't clean up quite
- enough. (bcwin32.mak, msvc32.mak, msvccmd.mak)
- - The OS/2 makefile had gotten slightly out of date. (os2.mak)
- Cleans up some formatting. (gp_win32.c)
- </pre><h3><a name="5.36_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - Loading large TrueType fonts caused excessive garbage collection.
- (gs_ttf.ps)
- Finishes implementing support for turning double-byte TrueType fonts into
- CIDFontType 2 fonts. (gs_ttf.ps)
- </pre><h3><a name="5.36_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - We thought the dictionary returned by currentuserparams should
- always be allocated in local VM, but in fact the correct definition is that
- it should be allocated in the current VM. The simplest way to make this
- work is for setuserparams to copy any string values into global VM.
- (gs_lev2.ps)
- - 1-input stitching functions didn't allow k = 0. (ifunc.h,
- zfunc.c)
- - OtherSubrs defined in PostScript no longer worked. (bug probably
- introduced when we rewrote the Type 1 code in C) (zchar1.c)
- Cleans up a few compiler warnings (missing empty 'default' cases, unused
- variables). (igc.c, iname.c)
- Replaces some uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
- (isave.c, iscan.c)
- </pre><h3><a name="5.36_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Resources were re-created on each page, causing (sometimes a lot
- of) unnecessary computation. We implemented most of the machinery for
- avoiding this, but not the mechanism for actually storing resources in
- global VM. (pdf_base.ps, pdf_main.ps)
- Adds a little more debugging code. (pdf_draw.ps)
- </pre><h3><a name="5.36_Streams"></a>Streams</h3><pre>
- Cleans up formatting in a few more files. (sbtx.h, sfilter.h, slzwx.h,
- spngpx.h, srlx.h, sstring.h, seexec.c, sfilter1.c, sfilter2.c, smtf.c,
- spcxd.c, srld.c, srle.c)
- Replaces a couple of #defines with duplicated (small) structures. (sbtx.h,
- sfilter.h, sfilter1.c, sfilter2.c)
- Replaces all uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
- (stream.c)
- </pre><h3><a name="5.36_Library"></a>Library</h3><pre>
- Fixes problems:
- - If a garbage collection occurred during a string show operation,
- memory could be corrupted. (bug introduced in 5.24) (gstext.h, gstext.c)
- - A debugging check incorrectly indicated an error when
- miter-checking lines with a 0 degree angle between them. (gxstroke.c)
- - A structure created for bitmap/pixmap patterns was never freed.
- (gspcolor.c)
- - Colored halftones didn't work with 24-bit devices. (This case was
- never actually used.) (gxcht.c)
- - CIE colors didn't remap properly if the current color space was a
- Pattern space. (gscie.c)
- - In a non-garbage-collected environment, freeing a string in the
- current chunk made an unnecessary test. (Minor performance impact only.)
- (gsnogc.c)
- Cleans up a few compiler warnings (missing empty 'default' cases, unused
- variables). (gsht.c, gsht1.c, gshtscr.c, gsimage.c, gxacpath.c, gxclread.c,
- gxicolor.c, gxshade4.c)
- Replaces some uses of RELOC_*_PTR with RELOC_*_VAR. (gsht1.c)
- Changes the printed output of the free-standing bbox device so it produces
- %%BoundingBox and %%HiResBoundingBox lines that can be dropped directly into
- a DSC header. (gdevbbox.c)
- Speeds up the 4-bit case of copy_mono by about 30%. (gdevm4.c)
- Expands some macros and cleans up formatting, for easier reading and
- debugging. Speeds up the color halftone generation algorithm substantially
- (up to 40%), by skipping the halftone computation for planes that are known
- to be solid-color, and using copy_mono directly if only one plane is not
- solid-color. (gxcht.c)
- </pre>
- <hr>
- <h2><a name="Version5.35"></a>Version 5.35 (beta) (8/18/98)</h2>
- <p>
- More updates for 5.3x, specifically fixing problems with halftones on banded
- CMYK devices.
- <h3><a name="5.35_Documentation"></a>Documentation</h3><pre>
- Fixes problems:
- - The URLs for the third-party libraries were out of date.
- (make.txt, jpeg.mak, libpng.mak, zlib.mak)
- </pre><h3><a name="5.35_Drivers"></a>Drivers</h3><pre>
- Adds an x11gray4 device for help in debugging. (devs.mak, gdevxalt.c)
- </pre><h3><a name="5.35_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - TrueType fonts with more than 64K of data before or after the
- glyfs caused an error. (gs_ttf.ps)
- </pre><h3><a name="5.35_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The dictionary returned by currentuserparams was allocated in the
- current VM rather than always in local VM. (gs_lev2.ps)
- </pre><h3><a name="5.35_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - CID-keyed fonts caused an error, because their CDevProc was
- incorrect. (pdf_font.ps)
- </pre><h3><a name="5.35_Library"></a>Library</h3><pre>
- Fixes problems:
- - A comment was duplicated. (gxht.h)
- - The main procedure of the command list reader was so large that it
- couldn't be optimized by many compilers, and was very hard to read.
- (gxclrast.c)
- - Banding devices using multi-screen halftones could get memory
- access errors because they didn't clear the halftone caches when changing
- halftone parameters. (gxclrast.c)
- - Banding devices using multi-screen halftones didn't set the
- halftone phase correctly. (gxcht.c, gxclrast.c)
- - RasterOp didn't work for 2- or 4-bit gray-scale devices. It still
- doesn't work right, but it's closer. (gdevm2.c, gdevm4.c, gdevmrop.c)
- - Undefined characters in CMap-based composite fonts caused errors
- and possible invalid memory accesses. (gschar0.c)
- </pre>
- <hr>
- <h2><a name="Version5.34"></a>Version 5.34 (beta) (8/16/98)</h2>
- <p>
- More updates for 5.3x.
- <h3><a name="V5.34_Documentation"></a>Documentation</h3><pre>
- Updates all of the man pages to new versions. (gs-vms.hlp, gs.1, pdf2dsc.1,
- pdf2ps.1, ps2ascii.1, ps2epsi.1, ps2pdf.1, ps2ps.1)
- </pre><h3><a name="V5.34_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The MSVC library makefile incorrectly included gp_msio.c.
- (msvclib.mak, winlib.mak)
- </pre><h3><a name="V5.34_Drivers"></a>Drivers</h3><pre>
- Fixes problems:
- - The PDF writer unnecessarily checked for other parameters after a
- failing show or pdfmark. (gdevpdfp.c)
- - The device's BufferSpace parameter was ignored. (bug introduced
- by async rendering code in 5.30) (gdevprn.c)
- - Banding devices smashed the first 4 bytes of each scan line. (bug
- introduced in 5.28) (gxdevmem.h, gdevmem.c, gxclread.c)
- - The phase for colored halftones was set wrong. (We have "fixed"
- this innumerable times, and it is still probably wrong.) (gxclrast.c)
- Replaces the deprecated gx_device_image_xxx calls with the new gx_image_xxx
- calls. (gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
- </pre><h3><a name="V5.34_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - The equality test for idiom recognition sometimes incorrectly
- returned false. (zmisc3.c)
- - shfill didn't take the BBox into account. (It still doesn't.)
- (gxshade.c)
- - The status operator could return an incorrect pages or bytes value
- for files larger than 2 Gb, rather than giving an error. (zfile.c)
- </pre><h3><a name="V5.34_Library"></a>Library</h3><pre>
- Fixes problems:
- - The hint tables weren't reset after processing the base character
- of a 'seac', leading to incorrect hinting and (for Type 2 CharStrings)
- possible mis-parsing of the outline data. (gstype2.c)
- - When processing a 'seac', the left side bearing was added in
- twice, displacing characters to the right. (bug probably introduced in
- 5.20) (gstype1.c)
- - RasterOps didn't set the size of the RasterOp texture device,
- which caused filling operations involving a colored halftone to be clipped
- to an empty rectangle. (gdevrops.c)
- - When filling with a colored halftone, the RasterOp source was
- often disregarded. (gxcht.c)
- - gx_device_image[_plane]_data and gx_device_end_image took an
- unused dev argument, leading to potential confusion. We deprecated the
- gx_device_image_plane_data and gx_device_end_image procedures, replacing
- them with macros that call their replacements gx_image_plane_data and
- gx_image_end (which no longer have the spurious dev argument). (gxdevcli.h,
- gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c, gdevdflt.c, gsimage.c,
- gslib.c, gxclimag.c, gxclrast.c, gximage2.c, gximage3.c, gximage4.c)
- - gs_color_adjust_count, introduced in 5.33 to address the problem
- of freeing free-standing patterns, just made things worse. We are replacing
- them with gs_pattern_reference, essentially the procedure introduced in 5.31
- that we deleted in 5.33. (gsccolor.h, gspcolor.h, gscolor.c, gspcolor.c)
- Changes hint suppression from a #define to a debugger-settable static.
- (gxhint1.c)
- </pre>
- <hr>
- <h2><a name="Version5.33"></a>Version 5.33 (beta) (8/14/98)</h2>
- <p>
- This is the third set of updates for 5.30. These updates have been driven
- mostly by the needs of another Aladdin project, so they haven't included as
- many problem fixes as we would normally make.
- <h3><a name="V5.33_Platforms"></a>Platforms</h3><pre>
- Fixes problems:
- - The thread creation procedure for Win32 called a Windows function
- rather than the proper C library function. (gp_win32.c)
- - In some MS-DOS implementations, the copy command doesn't recognize
- the /Y switch. (bcwin32.mak)
- </pre><h3><a name="V5.33_Fonts"></a>Fonts</h3><pre>
- Fixes problems:
- - TrueType fonts with *less* than 64K of glyf data stopped working.
- (bug introduced in 5.31) (gs_ttf.ps)
- </pre><h3><a name="V5.33_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Using an Identity function left an extra element on the stack.
- (pdf_draw.ps)
- - The syntax of # in names is different in PDF 1.1 and PDF 1.2, but
- the PDF 1.2 syntax was always used. (pdf_base.ps, pdf_main.ps)
- </pre><h3><a name="V5.33_Library"></a>Library</h3><pre>
- Fixes problems:
- - Color images still always caused an error. (bug introduced in
- 5.32) (gxicolor.c)
- - Because of a typo, the implementation of image types didn't
- compile. (bug introduced in 5.32) (gxiparam.h)
- - Free-standing colors (specifically pattern colors) and color
- spaces couldn't be freed. This required a NON-BACKWARD-COMPATIBLE change in
- an internal API used for managing color and color space reference counts.
- (gxcspace.h, gsccolor.h, gscdevn.c, gscolor.c, gscolor2.c, gscscie.c,
- gscsepr.c, gscspace.c, gspcolor.c)
- Cleans up a little more formatting. (gscspace.h)
- </pre>
- <hr>
- <h2><a name="Version5.32"></a>Version 5.32 (beta) (8/13/98)</h2>
- <p>
- This is the second set of updates for 5.30.
- <h3><a name="V5.32_Procedures"></a>Procedures</h3><pre>
- Fixes problems:
- - The OS/2 makefile accidentally omitted the OS/2-PM driver.
- (os2.mak)
- - The MSVC library makefile didn't work. (msvclib.mak)
- - Debugging was turned on in the Borland Windows makefile.
- (bcwin32.mak)
- - The BEGINFILES2 list was too long in the MSVC makefile.
- (msvc32.mak)
- </pre><h3><a name="V5.32_Interpreter"></a>Interpreter</h3><pre>
- Fixes problems:
- - .execn wouldn't accept pseudo-operators. (iref.h)
- - inustroke with a matrix operand didn't work correctly. (zupath.c)
- - ImageType 4 images didn't work. (bug introduced in 5.31)
- (zimage3.c)
- </pre><h3><a name="V5.32_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes problems:
- - Forms used more than once caused an invalidaccess error.
- (pdf_draw.ps)
- </pre><h3><a name="V5.32_Library"></a>Library</h3><pre>
- Fixes problems:
- - Using a colored pattern with a Pattern color space that included a
- base space could access uninitialized floating point values, possibly
- causing an arithmetic trap. (gspcolor.c)
- - RasterOp wasn't implemented for 16- and 32- bit devices.
- (gdevm16.c, gdevm32.c, gdevmrop.c)
- - The library test program relied on copysign, which some C
- libraries lack. (gslib.c)
- - The gs_free and gs_heap_free_all debugging printout were included
- even if DEBUG wasn't defined. (bug introduced in 5.30) (gsmalloc.c)
- - Color images always caused an error. (bug introduced in 5.30)
- (gxicolor.c)
- - Masked images with pis = NULL could cause an error. (gximono.c)
- - In landscape orientation, masked images didn't guarantee that the
- buffer of mask scan lines would be flushed to the mask clipping device
- before processing the data being masked. (gxiparam.h, gxidata.c, gxifast.c,
- gximage3.c)
- - Images with source transparency set but CombineWithColor = false
- could get an error because of trying to paint with an unloaded
- color. (caused by a bug fix in 5.30) (gxdcolor.c, gxiinit.c)
- </pre>
- <hr>
- <h2><a name="Version5.31"></a>Version 5.31 (limited) (8/11/98)</h2>
- <p>
- This is the first set of updates for 5.30. They fix a few minor build
- problems, and some significant problems with bitmap patterns that do not
- affect the PostScript or PDF interpreters.
- <h3><a name="V5.31_Drivers"></a>Drivers</h3><pre>
- Moves some casting macros from generic files to the few specific files that
- use them. (gdev4693.c, gdevn533.c, gdevsnfb.c)
- </pre><h3><a name="V5.31_Interpreter"></a>Interpreter</h3><pre>
- Changes ImageType 4 images to match the change in the library interface.
- (zimage3.c)
- </pre><h3><a name="V5.31_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The MaskColor elements of ImageType 4 images were defined as int
- rather than uint, truncating the range by 1 bit and causing problems in
- comparing the mask color against the pixel samples. (gsiparm4.h,
- gximage4.c)
- - A needed cast was missing from gs_malloc_memory_release.
- (gsmalloc.h)
- - A needed cast from byte to char was missing. (gsparams.c)
- - Patterns always allocated a mask for rendering, which for large
- patterns specified directly as bitmaps allocated a lot of unnecessary
- memory. (gxcolor2.h, gspcolor.c, gxp1fill.c, gxpcmap.c)
- - Macros simply defining casted versions of variables made the code
- hard to debug. We have only removed the ones that are in generic code (not
- drivers) and that cast pointers to gx_device or its subclasses: the only
- ones removed from header files were prn_dev in gdevprn.h, mdev in gdevmem.h,
- and ccdev, crdev, and cwdev in gxcldev.h. gdevmem.h, (gdevprn.h, gxclist.h,
- gdevabuf.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c, gdevm24.c,
- gdevm32.c, gdevmpla.c, gdevnfwd.c, gdevprn.c, gxacpath.c, gxclimag.c,
- gxclist.c, gxclpage.c, gxclpath.c, gxclread.c, gxclrect.c)
- - There was no way to free a pattern instance outside the graphics
- state. (gspcolor.h, gspcolor.c)
- </pre>
- <hr>
- <h2><a name="Version5.30"></a>Version 5.30 (limited) (8/10/98)</h2>
- <p>
- This is the first beta candidate for the 5.50 release. It completes the
- merge of the overlapped rasterizing code into the main development line.
- <h3><a name="V5.30_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - Yves Arrouye's e-mail address was out of date. (gdevbjc.h,
- gdevcdj.c, contrib.mak, devices.txt, unix-lpr.txt)
- Makes the warning against using SHARE_JPEG=1 even stronger. (make.txt,
- dvx-gcc.mak, ugcclib.mak. unix*.mak)
- Removes information about using DCL files on VMS to build Ghostscript.
- (make.txt)
- Updates the documentation for begin_typed_image. (drivers.txt)
- </pre><h3><a name="V5.30_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The Unix build procedure didn't create the obj subdirectory
- automatically. (unixhead.mak, unix-end.mak)
- - gsdll_h wasn't defined for the OS/2 PM device. Fixing this
- properly required moving the OS/2 drivers into the same makefile as the MS
- Windows drivers, and renaming the file. (devs.mak, msdevs.mak => pcwin.mak,
- winlib.mak)
- - gsiparm4_h was used before it was defined. (lib.mak)
- - Building with shared libaries still used header files in
- Ghostscript's directories, not the ones in /usr/include. ****** NOT DONE
- YET ******
- - The makefiles all assumed they were located in the current
- directory, not in the source directory. (*.mak)
- Adds new 'debugclean' and 'pgclean' targets, parallel to 'debug' and 'pg',
- for the Unix platforms. (unix-end.mak)
- Changes the management of .dev files so that on Unix platforms, one can
- really maintain standard, debugging, and profiling builds simultaneously.
- This is a hack, but a fairly reliable one. (gs.mak, unixhead.mak,
- unix-end.mak)
- Adds a dummy thread / semaphore / monitor implementation to all platforms
- other than Windows. (dvx-tail.mak, openvms.mak, os2.mak, ugcclib.mak,
- unixtail.mak, watc.mak, watclib.mak)
- </pre><h3><a name="V5.30_Drivers"></a>Drivers</h3><pre>
- Updates driver support to use the new write-position stream. (gdevpsdf.c)
- </pre><h3><a name="V5.30_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The Windows Registry calls didn't deal properly with a null
- pointer. (gp_wgetv.c)
- Makes a small change in the platform semaphore / monitor API. (gpsync.h,
- gxsync.h, gp_win32.c, gxsync.c)
- Adds a dummy thread / semaphore / monitor implementation. Note that with
- this implementation, async rendering WILL NOT WORK. (gp_nsync.c)
- Adds pthreads thread creation and POSIX semaphores for Unix platforms. (We
- still need to add System V semaphores, which is all that is available on
- Solaris and BSDI.) (gp_semon.c, gp_posem.c, gp_pthr.c).
- </pre><h3><a name="V5.30_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - CIDFontType 0 fonts didn't select the proper VM space for adding
- entries to font dictionaries, and for loading Subrs strings. (gs_cidfn.ps)
- - TrueType fonts with an odd glyfs length didn't work. (gs_ttf.ps)
- - TrueType fonts with a Format 3 'post' table didn't work.
- (gs_ttf.ps)
- - TrueType fonts where the encoding in the 'post' table didn't cover
- the entire set of glyfs didn't work. (gs_ttf.ps)
- - TrueType fonts with more than 128K of glyfs didn't work.
- (gs_ttf.ps)
- - TrueType cmap format 6 didn't work. (gs_ttf.ps)
- - CIDFontType 0 fonts with hex data didn't skip over the > at the
- end of the data. (gs_cidfn.ps)
- </pre><h3><a name="V5.30_Interpreter"></a>Interpreter</h3><pre>
- Works around the fact that gs_shfill can't do a gs_setcolorspace for color
- spaces that require interpreter assistance. (gs_ll3.ps)
- Moves clipsave and cliprestore to C code. (gs_ll3.ps, zmisc3.c)
- Updates some files to reflect the redivision of gsmemory.h and gsstruct.h.
- (imemory.h, istruct.h, ialloc.c)
- </pre><h3><a name="V5.30_Streams"></a>Streams</h3><pre>
- Adds a stream that just keeps track of the write position. (stream.h,
- stream.c)
- Removes the compilation dependency that required all clients of the zlib
- filters to be compiled with the zlib source directory in the search path.
- (szlibx.h, szlibxx.h, szlib[cde].c)
- </pre><h3><a name="V5.30_Library"></a>Library</h3><pre>
- Fixes bugs:
- - ImageType 4 images with >1 input component didn't work.
- (gximage4.c)
- - Sampled functions didn't keep the fractional part when
- interpolating, possibly leading to infinite recursion in shading.
- (gsfunc0.c)
- - The color error value for shadings was computed incorrectly for
- CIE color spaces. (gxshade.c)
- - The CharstringType 2 'roll' operator rolled the operands in the
- wrong direction. (gstype2.c)
- - Images with RasterOp or transparency didn't retain the current
- color properly, leading to unpredictable results. (gdevmrop.h, gsropt.h,
- gdevddrw.c, gdevrops.c, gxdcolor.c, gxiinit.c, gximage3.c)
- - A cast to void * was needed to remove a const modifier.
- (gscrdp.c)
- - On 8-bit non-gray-scale devices, RasterOp values of all-0s or
- all-1s produced the wrong output. (gdevmrop.c)
- - The GC procedure for halftone screen enumerators was wrong,
- possibly causing invalid memory access errors. This bug predates 5.10.
- (gshtscr.c)
- - An extra pair of string quotes confused some compilers.
- (gsshade.c)
- - There were several errors in the CharstringType 2 'flex'
- operators. (gstype2.c)
- - The structure descriptors for devices weren't initialized in
- library-only configurations. (int.mak, gconf.c)
- - The Pattern cache got confused if the current device when a
- Pattern color was used wasn't the same as the current device when the
- Pattern instance was created. (gxpcmap.c)
- - The target of forwarding devices wasn't reference-counted
- properly. (gsdevice.c) ****** FIXING THIS PROPERLY WILL BE A LOT OF WORK:
- WE ONLY FIXED gs_setdevice_no_erase ******
- - As a result of fixing a typo, the structure declaration for
- gx_page_queue was private, causing clients not to compile. We left it
- private and added an instance allocation procedure. (gxpageq.h, gdevprna.c,
- gxpageq.c)
- - The mask for ImageType 3 images was clipped (incorrectly).
- (gximage3.c)
- - Interpolated images with negative X->X values in the CTM were
- displaced on the page. (gxiscale.c)
- Finishes integrating the asynchronous rendering code. (gpsync.h, gxclist.h,
- gdevprna.c, gsmemlok.c, gxclimag.c, gxclpath.c, gxclutil.c)
- Updates the memory manager API for additional flexibility needed for
- asynchronous rendering. (gsmalloc.h, gsmemlok.h, gsmemraw.h, gsalloc.c,
- gsmalloc.c, gsmemlok.c)
- Updates the standard memory manager to work with a fixed (externally
- supplied) set of chunks, needed for asynchronous rendering, removing some
- macros in the process. (gsalloc.h, gsalloc.c)
- Updates some code to use more mnemonic variable names. (gstype2.c,
- gxicolor.c)
- Removes some macros for better readability. (gdevmrop.c)
- Adds dummy implementations of clipsave and cliprestore. (gsclipsr.h,
- gsclipsr.c)
- Implements an alternative, but completely untested, parameter list
- serializer based on streams. (gsparam2.c)
- Moves more of the internal memory manager structures from gsmemory.h to
- gsstruct.h. (gsmemory.h, gsstruct.h, gsmemory.c)
- </pre>
- <hr>
- <h2><a name="Version5.28"></a>Version 5.28 (limited) (8/3/98)</h2>
- <p>
- This fileset almost finishes merging in the code for overlapped
- ("asynchronous") interpretation and rasterizing that gave rise to the
- side-branch versions 5.13 and 5.14; eliminates all initialized non-constant
- globals from the graphics library (but not from the interpreter); and adds a
- few more LanguageLevel 3 features (CIEBasedDEF[G] color spaces, CloseSource
- and CloseTarget for streams, Separation base space for Indexed color
- spaces).
- <p>
- We were not originally planning to produce another fileset until the code
- merge was completed; however, the schedule demands of another Aladdin
- project justify another intermediate fileset.
- <h3><a name="V5.28_Documentation"></a>Documentation</h3><pre>
- Notes that the MSVC++ 5.0 compiler may lock up when compiling gxi12bit.c
- with optimization. (make.txt)
- </pre><h3><a name="V5.28_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - psl3 didn't include fzlib. (int.mak)
- - The Windows makefile had the wrong name for a DLL. (winint.mak)
- - The Borland Windows makefile had several errors. (bcwin32.mak)
- At the request of a user, changes the creation of jconfig.h so it #includes,
- rather than copies, arch.h. (jpeg.mak, gsjconf.h)
- </pre><h3><a name="V5.28_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - viewpbm.ps scaled the image wrong. (viewpbm.ps)
- </pre><h3><a name="V5.28_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - clist_close was declared as an open proc rather than a close proc.
- (As it happens, this didn't make any difference.) (gxclist.c)
- - A comment was improperly terminated. (gxpageq.h)
- - A needed #include of memory_.h was missing. (gdevpsde.c)
- Integrates nearly all the rest of the code for asynchronous rendering.
- (gdevprn.h, gdevprna.h, gxcldev.h, gxclist.h, gxclpath.h, gxclmem.h,
- gdevbmpa.c, gdevprn.c, gdevprna.c, gxclbits.c, gxclimag.c, gxclist.c,
- gxclmem.c, gxclpath.c, gxclread.c, gxclrect.c)
- Changes tracing of memory-based clists to occur only if -Z: is selected,
- rather than always if the code was compiled with -DDEBUG. Note that this is
- a NON-BACKWARD-COMPATIBLE CHANGE (but only affects debugging). (gxclmem.c)
- Implements the NumCopies parameter for all page devices, not just printers.
- (gxdevcli.h, gxdevice.h, gdevprn.c, gsdparam.c)
- Splits off command list writing utilities into a separate file, since
- gxclist.c was getting too large. (gxclist.h, gxclist.c, gxclutil.c)
- Splits command list reading into control (gxclread.c) and the actual list
- interpreter (gxclrast.c), since the file was getting too large. (gxcldev.h,
- gxclrast.c, gxclread.c)
- Distinguishes dev_proc_* (defining a general driver procedure) from
- prn_dev_proc_* (defining a printer driver procedure). Unfortunately, we
- have to keep dev_proc_print_page and _print_page_copies for backward
- compatibility. (gdevprn.h)
- Splits out of the BMP driver the parts shared with the async version
- (gdevbmp.h, gdevbmp.c, gdevbmpc.c).
- Changes the band rasterizer to implement get_bits_rectangle rather than
- get_bits. In some cases, this results in much less computation.
- (gxclist.c, gxclread.c)
- Makes the monochrome H-P printer drivers emit a printer reset when closing
- the device. According to a user, this helps prevent the ink nozzles from
- clogging. (gdevdjet.c)
- </pre><h3><a name="V5.28_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The Windows DLL entry point procedure didn't return a value as it
- was supposed to. (gp_mswin.c)
- Removes all remaining initialized but non-constant globals, and ensures that
- all non-debugging-related BSS variables in the library are explicitly set to
- 0 at initialization time. (gp_unix.c)
- Improves an error message slightly. (dwmainc.cpp)
- </pre><h3><a name="V5.28_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The tracing code for restore_resources could access an invalid
- address. (isave.c)
- - sizeof(procedure) is not allowed in ANSI C++. (opdef.h,
- iccfont.c, interp.c, ireclaim.c)
- - A variable was declared incorrectly as bin_token_type_t rather
- than bin_seq_type_t. (iscanbin.c)
- - The behavior of copypage didn't change in LanguageLevel 3.
- (gs_init.ps)
- - When grestore et al reactivated a page device, they performed an
- initgraphics, which should only be performed by showpage. (gs_setpd.ps)
- - The RunLengthEncode filter was broken in cases where the caller
- supplied a record size. (bug introduced in 5.2x) (zfilter.c)
- - A needed #include of memory_.h was missing. (zfreuse.c)
- - On machines with sizeof(long) > sizeof(int), the dictionary form
- of image and imagemask didn't work. (bug introduced in 5.2x) (zimage2.c)
- - exitserver left a 'true' on the operand stack. (gs_lev2.ps)
- Replaces the STACK_LOOP_BEGIN/END macros with procedures. (We retain the
- macros for backward compatibility.) (istack.h, istack.c, zchar.c,
- zcontrol.c, zdict.c, zvmem.c)
- Reviews the remaining operator files for ease of reading / debugging,
- including removing macros where appropriate. (z*.c)
- Changes the dictionary stack printer to indicate whether the dictionary is
- allocated in global or local VM. (gs_init.ps)
- Redefines countexecstack and execstack as operators, solely for the sake of
- the Genoa [count]execstack tests. (gs_init.ps, zcontrol.c)
- Changes array/string/packedarray forall not to keep an index on the stack,
- solely for the sake of the Genoa [count]execstack tests. (zgeneric.c)
- Finishes implementing CIEBasedDEF[G] color spaces. (icie.h, zcie.c)
- Adds a ColorSpace resource instance for sRGB. (gs_lev2.ps, gs_res.ps)
- Implements CloseSource and CloseTarget for filters. ****** DOESN'T WORK IF
- AN EXCEPTION OCCURS DURING A NESTED CLOSE. ****** (zfile.c)
- Allows Separation and DeviceN color spaces as the base space for an Indexed
- color space. (zcsdevn.c, zcsindex.c, zcssepr.c)
- </pre><h3><a name="V5.28_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - In PDF files, Indexed color spaces with a CIEBasedABC base space
- gave an /undefined error. (pdf_draw.ps)
- </pre><h3><a name="V5.28_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The report_error member of the DCT streams wasn't initialized
- early enough. (ifilter.h, zfdctd.c, zfdcte.c, zfile.c)
- Changes the zlib filters to use the stream's allocator, rather than the
- default allocator, for their private storage. Note that this requires the
- stream itself to keep pointers to this storage, for garbage collection.
- (szlibx.h, szlibc.c, szlibd.c, szlibe.c)
- Updates some clients to use new, simpler GC structure descriptors. (sdct.h,
- sfilter.h, sdctc.c, sfilter1.c)
- Adds a close_strm member for the interpreter's use (CloseSource /
- CloseTarget). (stream.h, stream.c)
- </pre><h3><a name="V5.28_Library"></a>Library</h3><pre>
- Fixes bugs:
- - gstate, currentgstate, and setgstate didn't handle the effective
- clip path properly, possibly leading to dangling pointers. (gsstate.c)
- - setrasterop, setsourcetransparent, and settexturetransparent
- should all return int rather than void, since they can fail. (gsrop.h,
- gsrop.c)
- - FunctionType 1 functions didn't clip the output value to the
- Range. (gsfunc3.c)
- - A needed cast from byte * to char * was missing. (gscrdp.c)
- - Some needed #includes of *_.h were missing. (gscrd.c, gscrdp.c,
- gxshade6.c)
- - The prototype for gx_effective_clip_path wasn't #included in a
- needed place. (gsimage.c)
- - RasterOp sometimes didn't work properly for devices whose
- representation of white wasn't a pixel value of 0. (gxdcolor.h, gdevbbox.c,
- gdevdbit.c, gdevvec.c, gslib.c, gxdcolor.c)
- - The variable used to detect double declaration of
- gs_get_bits_params_t was named incorrectly. (gxdevcli.h, gxgetbit.h)
- - gs_[eo]clip never retained the clipping path in its original form.
- These routines now retain it in the simple case (the old clipping path is a
- rectangle, and the new path is completely contained within it). This
- requires a small NON-BACKWARD-COMPATIBLE change in the gx_cpath_intersect
- procedure: it no longer updates the new path, and it flattens the path if
- needed. To avoid problems, we renamed this procedure as gx_cpath_clip.
- (gsdps.c, gspath.c, gxcpath.c)
- - If the image was empty, gs_image_common_init didn't free the
- lower-level enumerator. (gsimage.c, gxccache.c)
- Removes all remaining initialized but non-constant globals, and ensures that
- all non-debugging-related BSS variables in the library are explicitly set to
- 0 at initialization time. (gxdevice.h, gconf.c, gsdevice.c, gshtscr.c,
- gsiodev.c, gsutil.c, gxcht.c)
- Finishes implementing table-driven GC descriptors. We expected it to save
- considerable space at negligible time cost; it actually shrank the 1Mb
- executable by only about 5K, and slowed down garbage collection by about
- 2%. (gsfcmap.h, gsstrtab.h [deleted], gsstruct.h, gzpath.h, gsfcmap.c,
- gsmemory.c, gsstrtab.c [deleted])
- Finishes implementing CIEBasedDEF[G] color spaces. (gscie.h, gscie.c)
- Simplifies some code by removing or redefining macros. (gxi12bit.c)
- Removes all patches made for easier retrofitting of 5.2x code into 5.1x
- filesets. (gdevdrop.c, gdevmrop.c, gslib.c, gspcolor.c)
- Reviews a few more files for style and readability. (gxbitfmt.h,
- gxgetbit.h)
- Allows Separation (and, if included, DeviceN) color spaces as the base space
- of an Indexed color space. Unfortunately, this involves introducing a new
- distinction in color space types, which entails NON-BACKWARD-COMPATIBLE
- changes in the color space and color space type structures. (gxcspace.h,
- gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c,
- gscspace.c, gspcolor.c)
- Makes a small addition in order to fix an interpreter bug. (gxfixed.h,
- gdevbbox.c)
- </pre>
- <hr>
- <h2><a name="Version5.27"></a>Version 5.27 (limited) (7/18/98)</h2>
- <p>
- This is another "in-flight" snapshot made in preparation for the 5.2x / 5.1x
- code merge. It completes the driver CRD API.
- <h3><a name="V5.27_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The reference to psview was out of date. (new-user.txt)
- Adds some pointers to Aladdin Ghostscript mirror sites. (new-user.txt)
- Updates the C style guide a little further. (c-style.txt)
- Adds documentation on driver-supplied CRDs. (drivers.txt)
- Updates the JPEG makefile to mention IJG release 6b. (jpeg.mak)
- Updates documentation to reflect the devs.mak / contrib.mak split. (README,
- devices.txt, drivers.txt, make.txt, new-user.txt, source.txt, use.txt)
- </pre><h3><a name="V5.27_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - sjpegerr.o was needed even when using the shared JPEG library.
- (jpeg.mak)
- Changes the name of the jpeg library directory from jpeg-<version> to just
- jpeg, to parallel libpng and zlib. (make.txt, *.mak)
- Creates a separate makefile for contributed drivers. Eventually these
- drivers will go in a separate directory. (devs.mak, contrib.mak, *.mak)
- </pre><h3><a name="V5.27_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The pkm driver was absurdly inefficient. (gdevpbm.c)
- - The psfax driver (which, admittedly, doesn't come close to
- working) no longer compiled. (gdevpfax.c)
- - The ARCHAIC mode of the Epson driver emitted an incorrect
- character ('r' instead of ^R). (gdevepsn.c)
- - The X driver didn't check the calls of XInitImage for error
- status. (gdevx.c)
- Updates a client for the change in the names of the gb_ values. (gdevx.c)
- Updates a client for the added param_request procedure. (gdevpsdf.c)
- Reformats all Aladdin-maintained drivers to the new Ghostscript standard
- format, using indent. We deliberately did not reformat user-contributed
- drivers, since indent mangles a line once in a while and we do not want to
- take responsibility for fixing others' code. (*.h, *.c)
- Adds a default CRD specification to the 'bit' device, for testing.
- (gdevbit.c)
- Integrates a bit more of the support code for asynchronous rasterizing.
- (gxband.h, gxclio.h, gxclist.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c,
- gxclread.c, gxpageq.h, gxpageq.c)
- </pre><h3><a name="V5.27_Platforms"></a>Platforms</h3><pre>
- Adds thread support to the Win32 platform. (gp_win32.c)
- </pre><h3><a name="V5.27_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Composite fonts with CID-keyed descendants didn't run the
- BuildGlyph procedure. (zchar.c)
- - The internal representation of CMaps was built incorrectly.
- (zfcmap.c)
- - Category resources didn't load from files automatically.
- (gs_res.ps)
- Reformats all files to the new Ghostscript standard format, using indent.
- (*.h, *.c)
- Reviews most of the operator files for ease of reading / debugging,
- including removing macros where appropriate. (z*.c)
- Updates a client for the change in the names of the gb_ values. (zdevice.c)
- Updates a client for the added param_request procedure. (iparam.c)
- Updates clients for the completion of the CRD API. (zcie.c, zcrd.c)
- Increases the initial size of systemdict a little more, to allow for -d and
- -s. (iinit.c)
- </pre><h3><a name="V5.27_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Text modes other than 0 didn't work with multiple-byte fonts.
- (pdf_ops.ps)
- - There were many bugs in the code for Type 0 and CIDFontType 0
- fonts. (pdf_font.ps)
- </pre><h3><a name="V5.27_Library"></a>Library</h3><pre>
- Fixes bugs:
- - cshow returned a character code of -1 for composite fonts with
- FMapType 9 (CMap-based). (gsfcmap.h, gschar0.c, gsfcmap.c)
- - The GC procedure for enumerating show enumerators was broken.
- (bug introduced in 5.24 or 5.25) (gschar.c)
- - dashpath always copied the path, instead of only copying it if
- needed. (gspath1.c)
- - The hint replacement fix in 5.24 sometimes thought a path was
- closed when it wasn't, producing gross distortions of some characters.
- (gxhint3.c)
- Cleans up code for debugging by expanding macros, etc. (gstext.h,
- gschar0.c)
- Changes the gb_ values to all caps, in line with general C convention. This
- is a NON-BACKWARD-COMPATIBLE change to an as yet rarely-used API.
- (gxbitfmt.h, gdevalph.c, gdevdgbr.c, gdevmem.c, gsalphac.c, gximage2.c)
- Enhances the default implementation of parameter lists to allow requesting
- individual parameters. This is needed for the driver CRD API. (gsparam.h,
- gscparam.c, gsparam.c)
- Completes the API for driver CRDs, also moving some code from gscie.c to
- gscrd.c. This involves a NON-BACKWARD-COMPATIBLE change in the prototype of
- the TransformPQR procedures. (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c,
- gscrdp.c)
- Reformats all files to the new Ghostscript standard format, using indent.
- (*.h, *.c)
- Splits up gdevmrop.c into 3 files: gdevmrop.c (RasterOp implementation for
- memory devices), gdevdrop.c (default and device-independent RasterOp
- algorithms), and gdevrops.c (RasterOp-source device). (gdevmrop.h,
- gdevdrop.c, gdevmrop.c, gdevrops.c)
- </pre>
- <hr>
- <h2><a name="Version5.26"></a>Version 5.26 (limited) (7/7/98)</h2>
- <p>
- The purpose of this fileset is to add an API for drivers to provide one or
- more device-appropriate CIE rendering dictionaries. Like 5.25, it is a
- "snapshot" fileset not made available even to beta testers.
- <h3><a name="V5.26_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - An !endif was omitted. (msvc32.mak)
- - A newly needed Windows library was omitted. (msvctail.mak)
- - The /Za and /Ze switches were set incorrectly for MSVC.
- (bcwin32.mak, msvccmd.mak, watcw32.mak, winint.mak, winlib.mak)
- </pre><h3><a name="V5.26_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A closing bracket was omitted (in code that is ifdef'd out).
- (gdevpdf.c)
- </pre><h3><a name="V5.26_Fonts"></a>Fonts</h3><pre>
- Changes the font loader so that instead of pushing systemdict and a small
- empty dictionary on the stack before loading a font, it pushes userdict.
- This is what Adobe interpreters do, but this will probably break some
- PostScript files, specifically ones that redefine 'index'. I don't see how
- the Adobe interpreters can possibly do the right thing for such files.
- (gs_fonts.ps, gs_type1.ps)
- </pre><h3><a name="V5.26_Interpreter"></a>Interpreter</h3><pre>
- Updates clients for changes in CRD API. This involves some changes in
- internal procedures. (gs_lev2.ps, icie.h, zcie.c, zcrd.c)
- </pre><h3><a name="V5.26_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Pickling string, name, and array parameters tried to force
- inappropriate alignment. (gsparams.c)
- - Pickling dictionary parameters wrote the result in the wrong
- place. (gsparams.c)
- - An occurrence of dev_t should have been gx_device. The compiler
- didn't catch this because there happens to be a type named dev_t in
- <types.h> (!). (gxclread.c)
- Adds an API for drivers to provide one or more CRDs (as device parameters).
- Makes a small but NON-BACKWARD-COMPATIBLE change in the names and argument
- lists of the existing CRD API (which is not used by anything in the standard
- configuration). (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c, gscrdp.c,
- gslib.c)
- </pre>
- <hr>
- <h2><a name="Version5.25"></a>Version 5.25 (limited) (7/1/98)</h2>
- <p>
- This is a "snapshot" fileset created for the purpose of merging with a
- separate development branch. While it fixes some significant bugs in 5.24,
- it doesn't represent substantial additional progress.
- <h3><a name="V5.25_Documentation"></a>Documentation</h3><pre>
- Completely rearranges the C style guide, updates it to reflect current
- practice, and adds a 1-page summary of the most important points.
- (c-style.txt)
- Updates the man pages for consistency and to correct minor errors. (*.1)
- Notes that the pjxl300 driver works with the H-P CopyJet. (devices.txt,
- devs.mak).
- Notes that in order to deal with over-zealous Solaris security checking,
- additional linker switches are needed. (make.txt, unix*.mak)
- </pre><h3><a name="V5.25_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - 'make install' didn't get the executable from the right place.
- unixinst.mak)
- - COMPILE_INITS=1 didn't work. (int.mak, geninit.c)
- - The MSVC makefile updates hadn't been applied to the MSVC-only
- devices. (devs.mak)
- - The other PC makefiles didn't define GLCCWIN. (bcwin32.mak,
- watcw32.mak)
- Adds bounding box testing to the library test program. (ugcclib.mak)
- Reviews and reformats code for maintainability. (genarch.c, geninit.c)
- Moves the MS Windows-specific devices to a new file. (bcwin32.mak,
- devs.mak, msdevs.mak, msvc32.mak, watcw32.mak)
- </pre><h3><a name="V5.25_Platforms"></a>Platforms</h3><pre>
- Reviews and reformats header files for maintainability. (vmsmath.h,
- windows_.h)
- Removes some no-longer-used files from the fileset. (overlay.h, gp_itbc.c)
- </pre><h3><a name="V5.25_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - Substituted fonts had their FontName set to the requested one.
- There was a comment in the code saying that some files that depend on this
- happening, but Adobe implementations don't do it. However, aliased fonts in
- Fontmap will continue to have the FontName set to the Fontmap key.
- (gs_fonts.ps)
- Adds the euro symbol at position 240 (0360) in SymbolEncoding. This is a
- PostScript 3 addition, but it's too much work to make it appear there only
- if languagelevel >= 3. (gs_sym_e.ps)
- </pre><h3><a name="V5.25_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The bbox device didn't work if its target was itself a forwarding
- device. (gdevbbox.c)
- - User parameters maintained at the PostScript (as opposed to VM)
- level didn't work. (gs_init.ps)
- - Idiom recognition didn't work. (gs_init.ps, gs_ll3.ps, zmisc3.c)
- - .beginpage and .endpage could cause an error if the current device
- was a page device but was installed with setdevice rather than
- setpagedevice. (gs_setpd.ps)
- In the interest of readability, replaces all casting macros with separate
- variables, other than those used in enum_ptrs and reloc_ptrs procedures.
- Note that doing this for rptr in gc_trace in igc.c will have a significant
- performance cost on Intel CPUs, unless the compiler has a very good
- optimizer, because it introduces another variable competing for scarce
- registers in the most performance-critical section of code in the garbage
- collector. (ialloc.c, igc.c, iparam.c, isave.c, istack.c, zchar42.c,
- zfproc.c, zusparam.c)
- Changes some macros to procedures. (igc.c, ilocate.c, zusparam.c)
- Changes some macros to static quasi-constants (only variable for debugging).
- (zvmem.c)
- Adds #include "errors.h" to oper.h, removing it from z*.c. (oper.h, z*.c)
- Reviews and reformats some header files for maintainability. This is an
- ongoing project. (bfont.h, errors.h, iinit.c)
- Consolidates and simplifies the reading and writing of binary tokens and
- binary object sequences. (bseq.h [deleted], btoken.h, ibnum.h, ibnum.c,
- iscanbin.c, zbseq.c)
- Adds dummy user and system parameter entries for all the parameters listed
- in Appendix C of the PostScript Red Book: even though the book clearly says
- that no PostScript program should rely on the presence of any particular
- parameter, PostScript files routinely assume the existence of the parameters
- listed in Appendix C. (gs_init.ps, gs_lev2.ps, gs_res.ps)
- Adds dummy user and system parameter entries for the new parameters listed
- in the 3010 Supplement. (gs_ll3.ps)
- Adds double-inclusion protection to all header files. (*.h)
- Moves the creation of binary object sequence headers from C to PostScript
- code. (zbseq.c, gs_btokn.ps)
- Adds support for multiple FormTypes and ColorRenderingTypes. (gs_init.ps,
- gs_lev2.ps, gs_res.ps, zcrd.c)
- Updates structures and clients for the introduction of "raw memory"
- allocators. (ialloc.h, igc.h, ialloc.c, imain.c, isave.c)
- In the interest of readability and being able to use GNU indent to create
- standard formatting, changes the operator tables from procedures back to
- data structures. This change is backward-compatible for all operator files,
- although we also edited all of Ghostscript's own operator definitions to
- remove the BEGIN_OP_DEFS and END_OP_DEFS macros (which now have to generate
- a little unnecessary code for backward compatibility). (opdef.h, iconf.c,
- iinit.c, iutil.c, z*.c)
- Splits zchar2.c into a Level 1+ part and a Level 2 part. (zcfont.c,
- zchar2.c)
- </pre><h3><a name="V5.25_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Adds font synthesis based on the FontDescriptor. Currently this is very
- rudimentary. (pdf_font.ps)
- </pre><h3><a name="V5.25_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The PDF writer didn't default to A4 paper size if A4 was selected
- as the default in the makefile. (gdevpdf.c)
- - The default implementation of the begin_image procedure always
- called the image's begin_image implementation, rather than the device's
- begin_typed_image implementation. (gdevddrw.c)
- - The bbox device didn't initialize its reference count.
- (gdevbbox.c)
- - A necessary cast was omitted. (gdevpsde.c)
- Changes some macros to procedures. (gdevpstr.h, gdevpstr.c)
- Adds an internal device to implement the PCL5 special color mapping
- algorithms. (gdevcmap.h, gxdevice.h, gdevcmap.c, gdevnfwd.c)
- Adds double-inclusion protection to all header files. (*.h)
- Updates drivers for the change in begin_image. (gdevbbox.c, gdevpdfi.c,
- gdevvec.c, gxclimag.c)
- </pre><h3><a name="V5.25_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The non-ANSI definitions of CLEAR_MARKS_PROC, ENUM_PTRS_BEGIN_PROC
- and RELOC_PTRS_BEGIN were missing a parameter. (gsstruct.h)
- - A few necessary casts were omitted. (gsparam.c, gxpcmap.c)
- - Images or Patterns with non-default RasterOps could cause crashes.
- (gdevmrop.c, gxp1fill.c)
- - Exponential Interpolation functions with non-integral positive
- exponents incorrectly required the lower bound of the domain to be strictly
- positive rather than only non-negative. (gsfunc3.c)
- - The attempt to achieve the desired color smoothness when shading
- could compute (nearly) forever. (gxshade.c, gxshade1.c)
- - The arc change in 5.24 caused arcs to render incorrectly.
- (gspath1.c)
- - The macro-reducing cleanup in 5.24 introduced a bug in handling
- copy operations with negative skew. (gdevm1.c)
- Adds unmasked images and bounding box testing to the library test program.
- (gxdevcli.h, gslib.c)
- Changes some macros to procedures. (gxfunc.h, gsfunc.c, gsfunc0.c,
- gsfunc3.c)
- Adds double-inclusion protection to all header files. (*.h)
- Reviews and reformats header files for maintainability. (*_.h, dodebug.h
- [deleted])
- Changes the structure of the common part of the image enumerator to include
- the device (which may be different from the original device, because of
- forwarding), and to access the procedures through a pointer to a const
- structure. This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
- begin_image, since they now must pass the device to
- gx_image_enum_common_init. (gximage.h, gxiparam.h, gdevddrw.c, gdevdflt.c,
- gxiinit.c, gximage3.c, gximage4.c)
- Adds tests of the new color mapping device to the library test program.
- (gslib.c)
- Removes the last vestiges of segmented pointers. (genarch.c, std.h)
- Introduces a "raw memory" API, primarily for managing the underlying memory
- pool for embedded systems. This involves a NON-BACKWARD-COMPATIBLE-CHANGE
- in the implementation (but not ordinary clients) of allocators.
- (gsmemory.h, gsmemraw.h, gxalloc.h, gsalloc.c, gsmalloc.c, gsmemory.c)
- </pre>
- <hr>
- <h2><a name="Version5.24"></a>Version 5.24 (limited) (6/17/98)</h2>
- <p>
- In addition to the usual bug fixes, and a few enhancements where temptation
- proved irresistible or in response to an external need, this fileset:
- <ul>
- <li> - Takes the first steps on a major readability cleanup
- (4-space indentation instead of 2, replacement of macros by
- procedures, ....)
- <li> - Implements a bit more of the DPS functionality, including view
- clipping, and gstate stack copying for 'fork'.
- <li> - Starts to sketch a text API for drivers.
- <li> - Changes the Unix makefiles so that they create production
- binaries
- in a separate directory.
- </ul>
- <p>
- Again, there are some non-backward-compatible changes required by other
- architectural improvements. As always, we have tried to minimize the impact
- of such changes on users' code.
- <h3><a name="V5.24_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The -Kn switch wasn't documented. (use.txt)
- - The term "Software" was used instead of "Program" in the last
- paragraphs of the license. (PUBLIC)
- Adds a couple of missing operators to the list at the end of ostack.h.
- (ostack.h)
- Documents more precisely which gstate points to which objects after various
- gstate operations. (gsstate.c)
- Corrects some addresses for the Free Software Foundation. (commprod.txt,
- new-user.txt)
- Improves the documentation for memory management of color spaces. (gscie.h,
- gscolor2.h)
- Updates the list of hardware available to Aladdin. (new-user.txt)
- Documents ReopenPerPage. (language.txt)
- Moves the documentation of image rendering procedures to a better place.
- (gximage.h, gxiinit.c)
- Clarifies that old slzwe.c files may not work with current Ghostscript
- versions. (make.txt)
- </pre><h3><a name="V5.24_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - psl3.dev didn't include func.dev. (int.mak)
- - device and device2 devices weren't sorted together, causing
- devices to appear in the list out of order (including, possibly, selecting
- the wrong device as default). (genconf.c)
- - The mswindll module definition omitted some needed files.
- (devs.mak)
- Changes the optimization level for gcc from -O to -O2 for both standard and
- profiling builds. (unix-gcc.mak)
- Defines 3 new makefile macros for the Unix platforms,
- CFLAGS_{STANDARD|DEBUG|PROFILE}, that give the additional compiler switches
- for these 3 compilation options. (unixansi.mak, unix-cc.mak, unix-gcc.mak)
- Changes the Unix makefiles so that by default they create the binaries in an
- 'obj' subdirectory of the source directory. (unixansi.mak, unix-cc.mak,
- unix-gcc.mak, unix-end.mak)
- Updates the MSVC++ makefiles so they allow setting any configuration
- parameter from the make command line. (msvc32.mak, msvccmd.mak, msvccom.mak
- [deleted], msvclib.mak, msvctail.mak)
- </pre><h3><a name="V5.24_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - ps2ascii was broken. (ps2ascii.ps)
- Adds capability to gslp.ps:
- - Variable-width fonts (but without automatic line breaking);
- - Pair kerning (from AFM file);
- - Inter-character and space width adjustment.
- This project was done for a paying customer. (gslp.ps)
- </pre><h3><a name="V5.24_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The name of the plan9bm device was wrong. (gdevpbm.c)
- - The PDF writer wrote incorrect parameters for the CCITTFax filter
- used to compress Type 3 font bitmaps. (bug introduced in 5.23) (gdevpdfi.c)
- - The PDF writer emitted two 'endobj' lines for Type 3 bitmap fonts.
- (gdevpdf.c)
- Removes all remaining uses of _ds and _ss in Aladdin's drivers. (gdevprn.h,
- gdevsvga.h, gdevbit.c, gdevcgm.c, gdevdjet.c, gdevmsxf.c, gdevpbm.c,
- gdevpccm.c, gdevpcfb.c, gdevpdfi.c, gdevprn.c, gdevsvga.c, gdevtfax.c)
- Renames a local macro named END. (gdevcgml.c)
- Removes all uses of far_data other than for device (but not device2)
- prototypes. (gdevbit.c, gdevdjet.c, gdevemap.c, gdevmsxf.c, gdevpbm.c,
- gdevpcfb.c, gdevpcx.c, gdevpdf.c, gdevpng.c, gdevps.c, gdevpsim.c, gdevpx.c,
- gdevtfax.c, gdevtfnx.c, gdevvglb.c, gdevx.c, gdevxalt.c)
- Adds a psrgb driver that writes PostScript (Level 2) planar,
- run-length-compressed, 24-bit RGB images. (gdevpsci.c)
- Starts to define and implement a driver procedure for text. This interface
- will certainly change in the future as we get more insight into the division
- of responsibility and control flow between generic code, individual drivers,
- and internal and external fonts. This involves a major
- NON-BACKWARD-COMPATIBLE CHANGE in the gs_show_enum structure (which no
- client should be accessing directly). (gdevmem.h, gdevprn.h, gstext.h,
- gxchar.h, gxdevcli.h, gxdevice.h, gxtext.h, gdevbbox.c, gdevht.c,
- gdevnfwd.c, gschar.c, gschar0.c, gstext.c, gxacpath.c, gxclip.c, gxclip2.c,
- gxclipm.c, gxclist.c, gxpcmap.c)
- Extends the parameter list printer to handle names and arrays. (gdevpsdf.c)
- Implements the ability to write out a Type 1 font definition, for embedding
- fonts in PDF output. Currently this code isn't called from anywhere, and it
- will certainly be subject to change in the future. (gdevpsdf.h, gdevpdfi.c,
- gdevpsde.c, gdevpsdf.c)
- Adds the PCL XL Protocol Class 2.0 operators, attributes, and enumerated
- values to the relevant header files. (gdevpxat.h, gdevpxen.h, gdevpxop.h)
- Converts some additional devices to -dev2, to make them const. (devs.mak,
- gdevjpeg.c)
- To help in debugging, changes all uses of
- #define ss ((stream_xxx_state *)st)
- to
- stream_xxx_state * const ss = (stream_xxx_state *)st;
- (gdevpdfi.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
- Massages mem_mono_copy_mono and mem_mono_strip_tile_rectangle to reduce the
- use of macros somewhat. (gdevm1.c, gdevmem.h)
- Makes a change to support the change in gs_param_list_common. (gdevpsdf.c)
- Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
- (gdevpdfm.c, gdevpx.c, gdevx.c, gdevxalt.c)
- Adds a ReopenPerPage Boolean device parameter for printers, which causes the
- output file to be closed and reopened for each page. This may be helpful in
- persuading spoolers to start printing as soon as the first page is
- available. (gdevprn.h, gdevprn.c)
- Makes the %-format validator for output file names a procedure, even though
- it's only called in one place. (gdevprn.c)
- Updates some clients for the change from std_procs to procs. (gdevp2up.c,
- gdevpbm.c, gdevupd.c,
- Removes the use of the CleanFaxData tag (327) from TIFF output, since many
- applications don't recognize it and it isn't in the TIFF 6 documentation.
- (gdevtifs.h, gdevtfax.c)
- </pre><h3><a name="V5.24_Platforms"></a>Platforms</h3><pre>
- Adds a new gp_setmode_binary platform procedure, to set a file into binary
- mode on platforms that distinguish text and binary. (gp.h, gp_*.c)
- </pre><h3><a name="V5.24_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - The derived (Bold, Oblique, ...) Hershey fonts were broken.
- (fonts/makeher.ps, fonts/h*.ps)
- </pre><h3><a name="V5.24_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - As always, gcc failed to report some signed/unsigned char *
- mismatches. (imainarg.c)
- - Some needed #includes were missing. (zcrd.c, ztype.c)
- - Contexts were always allocated in global VM (should be local VM),
- and were freed in the current VM (should be local VM). Fixing this required
- changing some internal interfaces defined in icontext.h. (icontext.h,
- icontext.c, interp.c, zcontext.c)
- - restore did some unnecessary gsaves. (zvmem.c)
- - Creating a new context didn't initialize the graphics state
- properly, and didn't do the first gsave that grestoreall relies on.
- (gs_dps.ps)
- - The bookkeeping for open files didn't work with multiple contexts.
- Fixing this required a substantial (simplifying) redesign of the
- interpreter's bookkeeping for streams in general: this may have introduced
- new bugs. (files.h, ireclaim.c, isave.c, zfile.c)
- - fork didn't copy the graphics state stack. (zcontext.c)
- - The space bits were set incorrectly in the array reference for the
- operand stack, causing the garbage collector not to mark the operand stack
- of contexts other than the current one. (interp.c)
- - LanguageLevel 3 facilities weren't enabled when desired.
- (gs_ll3.ps, ilevel.h, opdef.h, iinit.c, zcsdevn.c, zimage3.c, zmisc2.c,
- zmisc3.c, zshade.c, ztrap.c)
- - flushfile with a procedure-target stream didn't pass the buffered
- data to the procedure. We tinkered with this a little, but it still isn't
- fixed. (zfilter.c, zfproc.c)
- - The top-level color space objects allocated by the CIE color space
- setting operators were never freed (until garbage collection). (zcie.c)
- - setpagedevice with a 0-size page didn't fail. (gs_setpd.ps,
- zmedia2.c)
- - If one or more of the matrices in a CIE color space or CRD was
- singular, setcolorspace or setcolorrendering could cause a stackoverflow.
- (zcie.c)
- - defineuserobject didn't work. (I don't see how it could ever have
- worked.) (gs_dps2.ps)
- - The version string wasn't read-only. (gs_init.ps, gs_lev2.ps,
- gs_ll3.ps)
- - Some standard resource categories weren't defined (which they need
- to be, even if they have no instances). (gs_res.ps, gs_ll3.ps)
- - The Trapping ProcSet was empty. (gs_ll3.ps)
- - setvmthreshold didn't accept a value of -1. (gs_lev2.ps,
- gs_pdfwr.ps, zusparam.c, zvmem2.c)
- - Binary tokens containing native reals with swapped byte order
- didn't read in properly. (ibnum.c, iscanbin.c)
- - In binary object sequences, many executable objects were
- incorrectly written out as literal. (zbseq.c)
- - String DataSources for shadings didn't work. (zshade.c)
- - Parameter dictionaries with integer keys didn't work. (iparam.c)
- - A "can't happen" condition caused massive confusion instead of a
- rangecheck error. (gs_setpd.ps)
- - setcachelimit and setcacheparams were broken, because they no
- longer interacted correctly with setuserparams and setsystemparams.
- (gs_lev2.ps)
- - The source width and height of images was arbitrarily limited to
- 32767. (zimage2.c)
- - The optional dictionary parameter for filters was the last
- operand, not the first. (zfbcp.c, zfdecode.c, zfilter.c, zfilter2.c,
- zfilterx.c, zfzlib.c)
- - If the current color space was Indexed, Separation using the
- alternative space, or DeviceN using the alternative space,
- currentgray/cmykcolor/hsbcolor/rgbcolor returned 0 rather than the
- underlying color. (This was a correction to the Red Book in the 3010
- Language Supplement, Section D.2.4 and D.2.5.) (gscolor.c, gscolor1.c,
- gxcspace.h)
- Implements some additional LanguageLevel 3 stream facilities:
- - CloseSource and CloseTarget (parsing only). (ilevel.h, zfilter.c)
- - Dictionary argument for SubFileDecode. (zfilter.c)
- - UnitSize (fully implemented) and LowBitFirst (parsing only) for
- LZWDecode. (zfdecode.c)
- - ReusableStreamDecode (incomplete). (gs_ll3.ps, zfreuse.c)
- Removes all remaining uses of _ds and _ss. (bfont.h, errors.h, files.h,
- icie.h, idict.h, idparam.h, ifunc.h, iscan.h, iutil2.h, opdef.h; iccfont.c,
- idict.c, idparam.c, igc.c, iinit.c, iparam.c, iscan.c, iscannum.c, iutil2.c,
- zcid.c, zcie.c, zdevice2.c, zfdecode.c, zfile.c, zfileio.c, zfont0.c,
- zfont2.c, zfont42.c, zfunc.c, zht2.c, zusparam.c)
- Removes the use of gs_if_debug_c. (zvmem2.c)
- Updates clients for the change in color space num_components. (zcolor2.c,
- zcsindex.c, zcssepr.c, zpcolor.c)
- Changes the stack manager so it can ensure an unused margin above the top
- element. This is needed for a possible change in the operator API.
- (istack.h, istack.c)
- Decouples the definition of the interpreter instance from the definition of
- the exported procedures that use it, so that we can use it in more places
- internally. (iminst.h, main.h)
- Removes all initialization of static per-context state. (iinit.c, iscan.c,
- zmath.c)
- Makes the freeing of VM spaces entirely dependent on the number of contexts
- referencing them, removing the special handling of interpreter termination.
- (icontext.h, gsalloc.c, icontext.c, inouparm.c, interp.c, zcontext.c,
- zusparam.c) ****** IN PROGRESS ******
- Enables printing of time and memory usage even in non-DEBUG systems, for
- benchmarking. (imain.c)
- Adds a .forceundef operator to parallel .forceput. (gs_init.ps, zdict.c)
- Rewrites the Form caching code to use the Pattern cache. (gs_fform.ps)
- Removes all uses of far_data. (imain.c, imainarg.c, iname.c, opdef.h)
- Moves responsibility for null page devices from C code to PostScript code.
- (gs_setpd.ps, igstate.h, zdevice2.c, zgstate.c)
- Changes the context scheduler to not store or reload the state when
- switching from a context to the same context. (zcontext.c)
- Moves .registerencoding from C code to PostScript code. (gs_init.ps,
- zfont2.c)
- Splits off inames.h (API for names and the name table) from iname.h (API for
- the interpreter's name table); renames the_nt as the_gs_name_table, and
- moves it to imain.c. We would like to rename iname.h as names.h, but there
- are too many places that include it. (igc.h, iname.h, inamedef.h, inames.h,
- imain.h, idict.c, idstack.c, igc.c, iname.c, interp.c, isave.c)
- Splits off iestack.h and iostack.h from estack.h and ostack.h, as was done
- for [i]dstack.h in 5.23. (estack.h, iestack.h, iostack.h, ostack.h,
- interp.c)
- Splits off the hit detection device from the user path code, moving it to
- the library level where it belongs. (zupath.c)
- Updates the interpreter for the changes in the enum_ptrs, reloc_ptrs, and
- clear_marks memory management procedures. (igc.c, igcref.c, ilocate.c,
- zcontext.c)
- Removes all uses of 'near' from the interpreter: if short and long calls
- have different formats, we rely on the compiler to generate the most
- efficient one. (iccfont.c, imainarg.c, iparam.c, zdevice2.c, zdouble.c,
- zdps.c, zgstate.c, zmatrix.c, zpath.c, zpath1.c, zrelbit.c, ztype.c)
- Makes a couple of minor changes to support the change in
- gs_param_list_common. (iparam.h, iparam.c)
- Changes internaldict to an operator, and executive and findencoding to
- procedures, in order to satisfy the Genoa FTS. (gs_dps.ps, gs_init.ps,
- gs_res.ps)
- Updates clients for the addition of device reference counting. (zpcolor.c,
- zupath.c)
- Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
- (istruct.h, opcheck.h)
- Adds a debugging operator for printing out a Type 1 font. (zfont1.c)
- Updates the Type 1 font operators for the change in the procedure structure.
- (zchar1.c, zfont1.c)
- Updates one client for the change in the gs_show_enum structure. (zchar.c)
- Removes an obsolete "hook" put in for a customer. (zchar.c)
- Removes the BigStringEncode filter, which was only used by a former
- customer. (zfilter.c)
- </pre><h3><a name="V5.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Images defined in non-Device color spaces were broken.
- (pdf_draw.ps)
- Removes some vestiges of the old pdf2ps. (pdf_draw.ps, pdf_main.ps)
- Adds some leftover PDF 1.2 features:
- - F, FFilter, and FDecodeParms keys in stream dictionaries.
- (pdf_base.ps)
- - Functions, including predefined spot functions. (pdf_draw.ps)
- - Name trees. (pdf_base.ps)
- Adds some PDF 1.3 features. Note that these require a fair amount of
- PostScript LanguageLevel 3 support. Note also that none of these have been
- tested yet, because we don't have any source of test files.
- - DeviceN and (stubbed) ICCBased color spaces. (pdf_draw.ps,
- pdf_ops.ps)
- - Additional extended graphics state parameters. (pdf_draw.ps)
- - Number trees. (pdf_base.ps)
- - Masked images. (pdf_draw.ps)
- Works around a bug in pdfTeX, which can generate Encoding vectors containing
- nulls. (pdf_font.ps)
- </pre><h3><a name="V5.24_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - A needed #include of memory_.h was missing. (sdeparam.c)
- - The needed input buffer size for the RunLengthEncode filter was
- 128, but should be 129. (srle.c)
- - The ASCII85Encode and ASCIIHexEncode filters sometimes didn't
- insert \n characters often enough. (sfilter2.c, sstring.c)
- - In one obscure boundary case, the CCITTFaxEncode filter with K =
- -1 could emit an extra, incorrect code. (scfe.c)
- - The CCITTFaxDecode filter didn't default DamagedRowsBeforeError to
- 0. (scfx.h)
- Removes all remaining uses of _ds and _ss. (sfilter.h, sbcp.c, scfe.c,
- seexec.c, sfilter1.c, sstring.c)
- Removes the use of do_debug. (scfd.c)
- Removes all uses of far_data. (scf.h, scfdgen.c, scfdtab.c, scfetab.c,
- sjpegerr.c)
- Removes the save_count member of streams, which is now no longer needed.
- (stream.h)
- To help in debugging, changes all uses of
- #define ss ((stream_xxx_state *)st)
- to
- stream_xxx_state * const ss = (stream_xxx_state *)st;
- (sbcp.c, sbhc.c, sbwbs.c, scfd.c, scfe.c, sdctc.c, sdctd.c, sdcte.c,
- seexec.c, sfilter1.c, sfilter2.c, sfxfd.c, sfxstdio.c, siscale.c, slzwc.c,
- slzwce.c, slzwd.c, smtf.c, spdiff.c, spngp.c, srld.c, srle.c, sstring.c,
- szlibc.c, szlibd.c, szlibe.c)
- Changes all groups of statistic-gathering variables to be structure
- variables named stats_*. (scfe.c)
- Rewrites the CCITTFaxEncode filter to cut down one particularly large and
- obnoxious macro, and to simplify the code by allocating an output buffer as
- well as an input buffer. (scf.h, scfdgen.c, scfe.c, scfetab.c)
- </pre><h3><a name="V5.24_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The masked image clipper sequenced through mask rows incorrectly.
- (gxclipm.c)
- - gx_[c]path_init_local_shared were declared as returning void, but
- could actually return an error. (gxpath.h, gxcpath.c, gxpath.c)
- - As always, gcc failed to report some static/non-static
- inconsistencies. However, to my dismay, I find that the ANSI C standard
- allows these, so I'll have to stop complaining about them. (gxclimag.c,
- gxclipm.c)
- - As always, gcc failed to report some signed/unsigned char *
- mismatches. (gdevpdfi.c, gsparam.c)
- - A loop counted on a non-existent zero value to mark the end of the
- IODevice table. (gsiodev.c)
- - Some needed #includes of memory_.h were missing. (gdevddrw.c,
- gscolor2.c, gscrdp.c, gscspace.c, gxclipm.c, gximage3.c, gxshade4.c)
- - Pattern device colors didn't have access to the original halftone
- phase, making it impossible to handle non-standard X/YStep correctly.
- (gsdcolor.h, gspcolor.c)
- - Pattern filling disregarded the phase. THIS MAY UNDO A FIX MADE
- IN 5.02. WE NEED TO RE-TEST PATTERNS CAREFULLY. (gxp1fill.c)
- - restore did some unnecessary gsaves. (gsstate.h, gsstate.c)
- - The reference counting macros could read from an object after
- freeing it. (gsrefct.h)
- - setgstate and currentgstate freed the view clipping path, which
- they shouldn't do. (gsstate.c)
- - If no view clipping path was set, viewclippath returned the entire
- extent of the device, not the imageable area. (gxpath.h, gsdps.c, gspath.c)
- - Assigning one stack-allocated path to another incorrectly wound up
- sharing their segments. (gxcpath.c, gxpath.c)
- - dot_length_absolute was incorrectly declared as float rather than
- bool. (gxline.h)
- - The test for varying-depth banded images was incorrect, causing
- varying-depth images to be treated as constant-depth. (This only affected
- ImageType 3 images.) (gxclimag.c)
- - Failure to clamp Y values when processing banded images could
- cause crashes or invalid band list data. (gxclimag.c)
- - The changes in gsparam.c introduced in 5.23 made the coercion of
- int arrays to float arrays fail. (gsparam.h, gsparam.c)
- - Interpolated banded images could be transmitted incompletely,
- causing narrow stripes to be chopped out of their rendering. (gxclimag.c)
- - FunctionType 0 functions with 32-bit samples didn't read their
- data correctly. (gsfunc0.c)
- - Lattice-form Shadings with packed coordinates could crash or
- produce incorrect results. (gxshade.c)
- - Lattice-form Shadings with packed coordinates always returned an
- error. (gxshade4.c)
- - If the PaintProc of a Pattern or a Form, or a CharString
- procedure, or a similar callback copied the current graphics state with
- gstate or currentgstate, a dangling reference to the device could result.
- Fixing this required adding a reference count to devices: internally created
- devices initialize it to 0, externally visible devices initialize it to 1.
- THIS IS A DELICATE CHANGE AND WILL PROBABLY HAVE A BUG TAIL. (gsdevice.h,
- gxdevcli.h, gxdevice.h, gdevmem.c, gdevmrop.c, gdevnfwd.c, gschar.c,
- gsdevice.c, gsmemory.c, gspaint.c, gsstate.c, gxacpath.c, gxccman.c,
- gxclip.c, gxmclip.c, gxpcmap.c)
- - The return_if_error macro referred to code rather than code_.
- (gserror.h)
- - Non-monotonic halftones didn't allocate enough slots in the
- halftone cache. (gxht.c)
- - setpagedevice with a 0-size page didn't fail. Fixing this
- required making the nullpage device provide explicit InputAttributes.
- (gdevnfwd.c)
- - Halftone angles were often slightly off. (gshtscr.c)
- - Banded fill_mask operations (used for characters) were sometimes
- broken. This bug was obviously introduced since 5.10; I'm surprised that it
- didn't have more serious effects. (gxclread.c)
- - Partially transparent patterns didn't work with non-default
- RasterOp values. (gxp1fill.c)
- - The default implementation of strip_copy_rop didn't handle color
- space conversion properly. (gdevmrop.c)
- - Hint replacement could cause the initial moveto and final
- closepath of a Type 1 outline to differ, confusing the filling code.
- (gxhint3.c)
- - Interpolated images were truncated at the bottom. (bug probably
- introduced in 5.23) (gxiscale.c)
- - Using an unsigned type for the index passed to enum_ptrs
- procedures caused comparisons against signed values to be incorrect.
- (gsstruct.h)
- Rewrites the rectangle list and mask clipping algorithms to use callback
- procedures rather than macros. The rectangle list source code grew by 20%,
- but the compiled code shrank from 10K to less than 4K; the mask clip source
- code and compiled code both shrank. (gxclip.h, gxmclip.h, gxclip.c,
- gxclip2.c, gxclipm.c, gxcpath.c)
- Removes all remaining uses of _ds and _ss. (gsmemory.h, gsstruct.h, gzht.h,
- stdpre.h, gp_dosfb.c, gsbitops.c, gscie.c, gsht.c, gstype1.c, gstype2.c,
- gxclpath.c, gxclread.c, gxcmap.c, gxfill.c, gxi12bit.c, gxop1.h, gxpflat.c,
- gxstroke.c, gxtype1.c)
- Changes some GC procedures from explicit code to standard macros.
- (gsstruct.h, gscscie.c, gxcht.c)
- For easier debugging, changes gs_debug_c to a procedure; removes
- gs_if_debug_c and do_debug. (gdebug.h, gsht1.c, gsmisc.c, gspaint.c,
- gxcht.c, gxht.c, gxpcmap.c)
- Changes the num_components member of the color space structure to a
- procedure, which is needed because DeviceN color spaces have a variable
- number of components; also makes Pattern spaces return -1 - the correct
- num_components instead of -1. This is a NON-BACKWARD-COMPATIBLE CHANGE.
- Also adds a base_space procedure. (gxcspace.h, gscdevn.c, gscolor1.c,
- gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c, gscspace.c, gspcolor.c,
- gxiinit.c, gxiscale.c)
- Changes all groups of statistic-gathering variables to be structure
- variables named stats_*. (gxclip.c, gxclist.c, gxclpath.c, gxfill.c,
- gxifast.c)
- Starts to pull apart gs_makebitmap/pixmappattern to remove the dependency on
- masked images. (gspcolor.c)
- Splits the C heap allocator from generic allocator support. (gsmemory.c,
- gsmalloc.c)
- Removes all uses of far_data other than references to device (but not
- device2) prototypes. (gdevmem.h, gdevmrop.h, gxdevcli.h, gconf.c,
- gdevabuf.c, gdevht.c, gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c,
- gsbittab.c, gsflip.c, gsroptab.c, gxcht.c)
- Adds a streams member to gs_ref_memory_t. The library doesn't use this, but
- it greatly simplifies the interpreter's bookkeeping. (gsalloc.h, gxalloc.h,
- gsalloc.c)
- Adds some more opaque types to the graphics state structure, rather than
- using naked struct types. (gsccolor.h, gzstate.h)
- Introduces the notion of the "effective clip path" in a graphics state.
- Painting operators should now call gx_effective_clip_path rather than using
- the clip_path member directly. (gxpath.h, gschar.c, gsdps1.c, gsimage.c,
- gspaint.c, gspath.c, gxccache.c, gxpaint.c)
- Implements view clipping. (gzstate.h, gspath.c, gsstate.c)
- Starts to pare down the fit_* macros in gxdevice.h, since some people feel
- strongly they are hard to follow, and also adds BEGIN/END wrapping.
- (gxdevice.h, gdevabuf.c, gdevmem.c, gxclpath.c)
- Refactors the structure definition macros in anticipation of moving to a
- more table-driven approach. Replaces ENUM_CALL, ENUM_RETURN_CALL, and
- RELOC_CALL with ENUM_USING and RELOC_USING. (gsstruct.h, gdevmem.c,
- gshtscr.c, gxcpath.c, gxiinit.c)
- Sketches a table-driven rather than procedural representation for GC
- descriptors. We believe this will improve readability, reduce code size,
- and perhaps reduce cache thrashing during garbage collection. This requires
- a NON-BACKWARD-COMPATIBLE CHANGE to the enum_ptrs, reloc_ptrs, and
- clear_marks procedures (to add the structure descriptor as a parameter).
- This should not affect any ordinary clients, because they should already
- define these procedures using the macros in gsstruct.h, which *are*
- backward-compatible; however, they do affect two internal clients that use
- their own type tags with unions (color spaces and device colors).
- (gsstrtab.h, gsstruct.h, gsalloc.c, gsstrtab.c)
- Updates color spaces for the change in enum_ptrs and reloc_ptrs.
- (gxcspace.h, gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c,
- gscsepr.c, gscspace.c, gspcolor.c)
- Updates device colors for the change in enum_ptrs and reloc_ptrs.
- (gsdcolor.h, gxdcolor.h, gxpcolor.h, gspcolor.c, gxcht.c, gxcmap.c,
- gxdcolor.c, gxht.c, gxp1fill.c)
- Implements a hit detection device at the library level. (gserrors.h,
- gdevhit.c)
- Changes some configuration parameters from #defines to statics. (gschar.c)
- Changes "simple" structures so they no longer have 0 for the enum_ptrs or
- reloc_ptrs procedure. This is a NON-BACKWARD-COMPATIBLE CHANGE for
- structure-definers that don't use the macros in gsstruct.h (of which there
- shouldn't be any). (gsstruct.h, gsalloc.c)
- Adds the structure type name to the debugging printout for freeing objects.
- (gsalloc.c)
- To help in debugging, changes all uses of
- #define ss ((stream_xxx_state *)st)
- to
- stream_xxx_state * const ss = (stream_xxx_state *)st;
- (gxclread.c)
- Removes all uses of 'near' from the library: if short and long calls have
- different formats, we rely on the compiler to generate the most efficient
- one. (gscie.c, gscoord.c, gsimpath.c, gsstate.c, gstype2.c, gxclpath.c,
- gxclread.c, gxfill.c, gxhint1.c, gxhint2.c, gxhint3.c, gxstroke.c)
- Adds 'inline' to stdpre.h, defined as the empty string on compilers other
- than the ones we know accept it. (stdpre.h)
- Adds printout of the subrectangle to ImageType 1 tracing. (gxiinit.c)
- Replaces a few uses of gs_memory_default with dev->memory. (gdevdbit.c,
- gxclread.c)
- Improves support for halftone objects not associated with graphics states.
- This involves a minor change to the definitions of gs_spot_halftone and
- gs_threshold_halftone, to define the transfer function as a closure. This
- is slightly NON-BACKWARD-COMPATIBLE in that it requires clients to set
- transfer_closure.proc to 0 if they also set transfer to 0. NOTE: the API
- defined in gshtx.h is subject to future change. (gscsepnm.h, gshtx.h,
- gxdht.h, gxfmap.h, gxht.h, gxtmap.h, gscolor.c, gsht.c, gsht1.c, gshtx.c)
- Changes the Bezier approximation of arcs to cut arcs at absolute multiples
- of 90 degrees rather than at intervals of 90 degrees (e.g., an arc from 45
- to 105 would now be cut at 90 rather than being treated as a single
- 60-degree curve) in order to produce more uniform output and also to ensure
- that the bounding box for arcs is more accurate (to pacify the Genoa FTS).
- (gxfarith.h, gsmisc.c, gspath1.c)
- Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
- (gsbitops.h, gsdsrc.h, gserror.h, gsmdebug.h, gsrect.h, gxcldev.h, gxfunc.h,
- gxop1.h, gxtype1.h, gsalphac.c, gsshade.c, gstype2.c, gstype42.c,
- gxclread.c, gxcpath.c, gximage4.c, gxpath.c)
- Adds a user-defined halftone type, to support non-monotonic halftones. We
- could make any of the following structures fully object-oriented:
- - Halftones (client level)
- - Halftone orders (device level, but not rendered)
- - Device halftones (device level, fully rendered)
- The right place to do this for non-monotonic halftones, which are specified
- directly by bit masks, is at the device halftone level. However, there are
- too many places that know too much about the implementation of device
- halftones and halftone orders right now. WE NEED TO REVISIT THIS AFTER THE
- 5.1x CODE BRANCH IS TERMINATED. SHOULD ALSO CONVERT UNION TO TYPED UNION
- FOR GC -- CODE IS DUPLICATED IN gsht.c VS gshtx.c. (gxdht.h, gxht.h,
- gxhttype.h, gshtx.h, gsht.c, gsht1.c, gshtx.c)
- Moves the procedures in Type 1 font data into a structure. This is a
- NON-BACKWARD-COMPATIBLE CHANGE, but an internal one. (gxfont1.h, gstype1.c,
- gstype2.c, gxtype1.c)
- Extends Type 1 / 2 / 4 fonts to require that they be able to enumerate the
- set of glyphs that they define, to allow writing them out. We may propagate
- this to all base fonts in the future. (gxfont1.h)
- Provides some utilities for devices that want to define their own
- InputAttributes and OutputAttributes. (gdevprn.h, gxdevice.h, gdevprn.c,
- gsdparam.c)
- Removes all of the text-display procedures that took null-terminated C
- strings as operands. This is NON-BACKWARD-COMPATIBLE. However, since the
- memory manager required that all such operands be allocated using
- gs_alloc_string, the procedures were never usable with arbitrary C strings
- anyway. (gschar.h, gschar.c)
- Renames the gx_device procedure record from std_procs to procs, in
- anticipation of more unified support for "objects". This is a
- NON-BACKWARD-COMPATIBLE CHANGE for a surprisingly large number of clients
- that should have been using dev_proc and set_dev_proc. (gdevbbox.h,
- gxdevcli.h, gxdevice.h, gdevdflt.c, gdevdgbr.c, gdevmem.c, gdevprn.c,
- gsalphac.c, gsdevice.c, gsropc.c, gxccache.c, gxifast.c)
- Disallows setting of the RasterOp-related graphics state parameters when
- a cache device is active. (gsrop.c)
- Changes the tracing printout of path segments to provide enough accuracy to
- cover all the fraction bits of a 'fixed'. (gxpath.c)
- </pre>
- <hr>
- <h2><a name="Version5.23"></a>Version 5.23 (limited) (5/14/98)</h2>
- <p>
- This fileset adds a number of PostScript LanguageLevel 3 features: library
- support for ImageType 3 and 4 (masked) images, PostScript-level support for
- ImageType 4, and the shfill operator for smooth shading. It also adds RCS
- Id lines to all the files we maintain. It also changes the Unix makefiles
- so that they create debugging or profiling binaries in separate directories.
- <p>
- This fileset includes an unusually large number of non-backward-compatible
- API changes. Most of them don't affect ordinary library clients, but a few
- do. These changes, and a few more to come, result from the next (large)
- increment in our ongoing project to make the code completely re-entrant (no
- non-idempotent writable globals in our own code). This necessarily involves
- putting some things that used to be global into structures, some of which
- must be added to some interfaces.
- <p>
- NOTE: because of a combination of hardware problems, time pressure, and
- belated discovery of sloppiness by the original developers of the PC
- makefiles, none of the PC makefiles in this fileset work. The Borland
- makefiles probably come the closest.
- <h3><a name="V5.23_Documentation"></a>Documentation</h3><pre>
- Adds documentation for:
- - The changes in begin_image and related facilities. (drivers.txt)
- - The addition of -Z/. (use.txt)
- - The new ps2ps utility. (ps2ps.1)
- - The new get_hardware_params procedure. (drivers.txt)
- - The new -B<size> / -B- switch. (use.txt).
- Improves the documentation for the sample_ macros. (gsbitops.h)
- Adds some documentation on how the debugging/tracing flags work. (gdebug.h)
- Improves the documentation of DDAs. (gxdda.h)
- Documents a subtle change in the meaning of a flag in the PDF
- FontDescriptor. (pdf_font.ps)
- Changes the location of the authoritative site for zlib sources. (zlib.mak)
- Corrects a typo. (gsht1.h)
- Removes pdf_2ps.ps from the fileset. (psfiles.txt)
- Adds standard file name comments to all .c and .h files that didn't already
- have them. (dodebug.h, gdev3b1.c, gdev8510.c, gdevadmp.c, gdevhl7x.c,
- gdevimgn.c, gdevo182.c, gdevpdfx.h, gdevpe.c gdevsco.c, gdevsj48.c,
- gdevvglb.c, gsalpha.c, gscolor1.c, gscsepr.h, gsdsc.c, scfetab.c string_.h,
- zfunc3.c, zmedia2.c)
- Unifies the nroff styles of the various man pages a bit. (*.1)
- Adds a reference to the CTAN mirror sites. (new-user.txt)
- Notes that the result of rect_intersect may be anomalous. (gsrect.h)
- Improves the documentation for the Distiller parameter handling code.
- (gdevpdfp.c, gdevpsdp.c)
- Corrects an ambiguity in the definition of the int_keys argument of
- param_begin_xmit_dict. (gsparam.h)
- Adds a new file that will evolve into a reasonable guide to the source code.
- (README, source.txt)
- Adds the convention for 'status' and 'code' to the C style guide.
- (c-style.txt)
- Improves the documentation for the '-' pseudo-switch. (use.txt)
- Updates the problem reporting form to include the URL for known post-release
- problems. (bug-form.txt)
- Documents the availability of sources and binaries for Plan 9.
- (new-user.txt)
- </pre><h3><a name="V5.23_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The 'tags' target in the Unix makefiles had an incorrect directory
- name. (bug probably introduced since 5.20) (unix-end.mak)
- - The ld_tr and CCFLAGS macros were used in the makefiles before
- they were defined, causing problems with `make' implementations that
- substitute macros into definitions at definition time rather than at use
- time. (*.mak)
- - Recent Digital Unix versions (4.0 and later) require -std1 when
- compiling. (make.txt)
- - The Unix library-only makefile had gotten out of date.
- (ugcclib.mak)
- - pf2afm[.bat] were omitted from the fileset. (master/package.tcl)
- - The Borland makefile didn't work, because the Borland compiler
- requires specifying the output file name (-o) before the input file name
- (-c)! This required changing the order of every compilation command in
- every platform-independent makefile. The win*.mak files still need work.
- (*.mak)
- - None of the non-Unix makefiles specified directory names for the
- auxiliary programs. (dvx-tail.mak, os2.mak, wctail.mak, winlib.mak)
- - The Windows makefiles lacked build rules for gp_ntfs and gp_win32.
- (msvclib.mak, winlib.mak)
- Adds a new debugging switch -Z/ that prints the file name and line number on
- all trace messages. (gdebug.h, std.h)
- Changes the Unix 'pg' and 'debug' build targets so that they create the
- binaries in a 'pgobj' or 'debugobj' subdirectory of the standard build
- directory. This allows keeping all 3 configurations active. (unix-end.mak)
- Adds GEN directories for jpeg, libpng, and zlib. (devs.mak, gs.mak,
- jpeg.mak, lib.mak, libpng.mak, zlib.mak)
- Adds a gendev.c that will eventually replace genconf.c. (gendev.c, *.mak)
- Adds -Wcast-align to the gcc compilation switches. (unix-gcc.mak)
- Adds support for libpng 1.0.1. (libpng.mak)
- Notes the use of -R on Solaris and other SVR4 systems. (unix*.mak)
- Removes pdf_2ps.ps from the fileset. (int.mak, unixinst.mak,
- pdf_2ps.ps[deleted])
- Ensures that every file that is copyright, maintained, and distributed by
- Aladdin Enterprises has a RCS Id line. In .c and .h files, these lines
- currently are only comments, but they could be converted easily to static
- strings later if we want to. We had to touch almost every file in the
- fileset to do this, but we did *not* change the write dates. (*)
- Makes the build procedure auto-detect whether the installed version of gcc
- has the 'const' code generation bug. (gs.mak, lib.mak, unix-gcc.mak)
- Removes 'makefile' as a precondition for ccf32.tr. (I can't quite figure
- out why it was there in the first place.) (msvccom.mak)
- Replaces the -F<file> switch with a -B<buffer size> switch that forces all
- files to use the run_string interfaces. -B- turns it off. (iminst.h,
- imainarg.c)
- Adds a new resource to genconf.c, -replace <module>. This causes <module>
- *not* to be included if the module with the -replace resource *is* included.
- If two modules -replace each other, either directly or indirectly through
- -includes, the result is undefined. (genconf.c)
- Uses -replace to implement a default roplib package. (lib.mak)
- </pre><h3><a name="V5.23_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - unprot.ps stopped working because of the stricter prohibition
- against storing local-VM objects into systemdict. (unprot.ps)
- Adds a new ps2ps utility, like pdf2ps, that "distills" PostScript.
- (ps2ps, ps2ps.bat)
- Modifies the ps2epsi utility so it can be run outside the ps2epsi script for
- testing. (ps2epsi.ps)
- Changes the pdf2ps utility to use the pswrite device. This gets rid of all
- conversion problems, at the expense of larger and stupider output files.
- (pdf2ps, pdf2ps.bat)
- </pre><h3><a name="V5.23_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - Two procedures were declared 'private' inconsistently (thank you
- again, gcc). (gdevps.c)
- - The author of the uniprint driver sent a fix for an
- allocation-related bug and an off-by-one bug. (gdevupd.c)
- - The PDF writer incorrectly converted open stroked rectangles (only
- 3 sides drawn) to closed (4 sides drawn). (gxpath.h, gzpath.h, gdevpdfd.c,
- gxpath2.c)
- - When banding, filling a character within the PaintProc of a
- Pattern could produce memory access errors. (The problem was in
- gx_forward_fill_mask, which might affect filling characters in other
- situations as well.) (gdevnfwd.c)
- - The [e]pswrite driver produced incorrect line widths for stroked
- graphics. (gdevps.c)
- - The [e]pswrite driver didn't invoke colorimage correctly, so
- didn't handle Patterns right. (gdevps.c)
- - Vector devices didn't set the color before writing trapezoids,
- possibly causing incorrectly colored output. (gdevvec.c)
- - Vector devices could give errors on Pattern fills. (gdevvec.c)
- - The bbox device retained a pointer to the clipping path, which,
- since the path was embedded in the gs_state_contents, confused the garbage
- collector, causing memory access errors. We fixed this by de-embedding the
- path object: see below. (gsstate.c)
- - On some Linux systems, the X driver could get a memory access
- error when displaying patterns. We fixed this by adding calls on XInitImage
- in the necessary places when running X11R6. (gdevx.c)
- - PDF output didn't check names for unusual characters, and could
- produce invalid output if the input included names with those characters.
- (gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfo.c)
- - In the PDF writer, DEST pdfmarks with /Dest but no /Page or /View
- didn't generate named destinations. (gdevpdfm.c)
- - Printer devices didn't allow . in %-formats in the output file
- name. (gdevprn.c)
- - The x11cmyk driver didn't read bits back from the screen
- correctly. (gdevxalt.c)
- - The pcxmono and pcxgray drivers used colored rather than
- gray-scale palettes. (gdevpcx.c)
- - The PCX drivers could emit repetition counts greater than 15,
- confusing some readers. (gdevpcx.c)
- Removes some vestiges of the obsolete draw_line driver procedure. We also
- rename the draw_line member of the driver procedure structure as
- obsolete_draw_line, so that any uses of it will cause compilation errors,
- but we don't remove it from the structure, so that existing driver procedure
- vectors will continue to compile (although the draw_line procedure will
- never be called). (gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevdflt.c)
- To repair a design error, and at the same time add flexibility needed for
- ImageType 3:
- - Removes the image_data and end_image driver procedures,
- associating them with the gx_image_enum(_common)_t structure instead.
- Clients should call gx_device_image_data and gx_device_end_image instead: we
- set the image_data and end_image procedures in the device structures to
- these procedures when filling in defaulted procedures. This is a
- NON-BACKWARD-COMPATIBLE CHANGE for drivers that implement begin_image, since
- they now have to fill the procedures into the enumerator structure.
- (gsiparm*.h, gxdevcli.h, gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
- gdevdflt.c, gdevnfwd.c, gsimage.c, gxclist.c, gxidata.c, gxifast.c,
- gxiinit.c, gximage3.c, gximage4.c)
- - Replaces the image_data driver procedure with a plane_data
- procedure (now associated with the image enumerator, not the device) that
- allows specifying the X offset and raster independently for each plane, and
- (depending on the image type) may allow omitting some planes. We provide a
- gx_device_image_plane_data procedure parallel to _image_data and _end_image
- (see above). (gsiparm*.h, gxdevcli.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
- gxidata.c, gxiinit.c, gximage3.c, gximage4.c)
- Updates clients for image processing changes. (gdevvec.h, gdevpdf.c,
- gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
- Enhances [e]pswrite to detect other kinds of opportunities for producing
- smaller output. This involves a change in the moveto procedure in the
- 'vector' interface. (gdevps.c)
- Changes the bbox device so that it automatically detects whether it is being
- used as a component in a device pipeline or as a free-standing device,
- rather than having to select this in the makefile. (lib.mak, gdevbbox.h,
- gdevbbox.c)
- Moves the halftoning driver a bit closer to real usability. (gdevht.h,
- gdevht.c)
- Adds some tracing to the color mapping code in the X driver. (gdevx.c)
- Implements setting the Dict and ACSDict parameters for pswrite and pdfwrite.
- Dict is effective with the CCITTFaxEncode filter for black-and-white images;
- otherwise, these parameters still don't do anything. (gdevpdfi.c,
- gdevpsdp.c) ****** READING HUFFMAN TABLES IS NYI, SEE sdcparam.c; SETTING
- DOESN'T WORK BECAUSE DCT_set_defaults DOESN'T DO WHAT IT SHOULD ******
- Updates the PS/PDF writers to reflect the fact that the ASCIIHexEncode
- filter now has a state. (gdevpsdf.c)
- Modifies the X driver so that it can draw multiple platform characters at a
- time rather than one character per call. (gdevx.h, gdevx.c, gdevxxf.c)
- Takes advantage of the filter stream procedures now available in stream.c.
- (gdevjpeg.c, gdevpdf.c, gdevpsdf.c)
- Adds a get_hardware_params procedure, similar to get_params except that it
- reads parameters whose values depend on hardware state that may change
- without program intervention (e.g., panel switches). The default is that
- there are no hardware parameters. (gdevmem.h, gdevprn.h, gsdevice.h,
- gxdevcli.h, gxdevice.h, gxacpath.c, gxclip2.c, gxclipm.c, gxclist.c,
- gxcpath.c, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
- gdevprn.c, gsdparam.c)
- Updates the PS/PDF writer for the change in the parameter list API.
- (gdevpsdf.c)
- Makes a few more writable statics const. (gdevos2p.c, gdevpipe.c,
- gdevpsim.c, gdevx.c)
- Removes the rrgb sample device, since it now no longer serves any purpose.
- (gdevrrgb.c[deleted])
- Converts some additional devices to -dev2, to make them const. (devs.mak,
- gdevbit.c, gdevpbm.c, gdevpcx.c, gdevpsim.c, gdevpng.c, gdevtfax.c,
- gdevtfnx.c, gdevx.c, gdevxalt.c)
- Updates a client accessing the preallocated color spaces. (gdevpsdi.c)
- Renames the debugging-related statics in the X driver as X_SOMETHING.
- (gdevx.c)
- </pre><h3><a name="V5.23_Platforms"></a>Platforms</h3><pre>
- Makes a few minor changes to support Plan 9. (make.txt, devs.mak, stat_.h,
- stdio_.h, time_.h, gdevpbm.c)
- </pre><h3><a name="V5.23_Fonts"></a>Fonts</h3><pre>
- Documents the availability of a free Chinese font. (fonts.txt,
- new-user.txt)
- Works around a bug in the Adobe PostScript driver. We though it just output
- the FontBBox for Type 42 fonts in the 2048- or 4096-unit character space
- rather than a 1-unit space, but in fact it outputs garbage. (zfont42.c,
- gstype42.c)
- Augments the handling of Type 42 fonts to recognize the gdir /
- GlyphDirectory method of outline definition in addition to the loca / glyf
- method, per Adobe versions 2015 and later (undocumented!). (ifont.h,
- zfont42.c)
- </pre><h3><a name="V5.23_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Memory management for argument strings was wrong. (gsargs.h,
- gsargs.c)
- - 1 .setlanguagelevel was broken, because it didn't allow for the
- possibility that values could get deleted from systemdict that existed in
- level2dict. (bug introduced in 5.x, x <= 10) (zmisc2.c)
- - -dFAKEFONTS was broken. (gs_fonts.ps, gs_init.ps)
- - copyscanlines was broken. (bug introduced in 5.20) (gs_init.ps)
- - The matrix returned by sizeimage was incorrect. (zdpnext.c)
- - The implementation of .buildpattern for PatternType 2 was wrong.
- (gs_ll3.ps)
- - Ghostscript couldn't load TrueType fonts where the amount of data
- either before or after the glyf section exceeds 64K. (gs_ttf.ps) ****** WE
- BACKED OUT THIS CHANGE, BECAUSE WE HAD TO BACK OUT THE NEXT ONE. ******
- - Ghostscript couldn't load TrueType fonts where the total data is
- more than 64K and the offset or length of the glyfs is odd. (gs_ttf.ps)
- ****** WE BACKED OUT THIS CHANGE: IT BROKE THE PDF INTERPRETER, BECAUSE IT
- IMPOSES A NEW REQUIREMENT THAT TTF FILES BE POSITIONABLE. ******
- - Some compilers complained about arithmetic on enums. (interp.c)
- - The CIE color space and CRD GC structure definitions were in the
- interpreter rather than the library. (zcie.c, zcrd.c)
- - NullFont was still present in FontDirectory when currentglobal was
- false. (gs_init.ps)
- - execform failed with Form resources, because it tried to insert
- the Implementation in a read-only dictionary. (gs_fform.ps, gs_lev2.ps)
- Finishes implementing ImageType 4 images, and moves closer to implementing
- ImageType 3. (iimage.h, zdps.c, zimage.c, zimage2.c, zimage3.c)
- Updates tracing output to use the new dlprintf macros. (idict.c, igc.c,
- igcref.c, igcstr.c, iname.c, interp.c, isave.c, iscan.c, zcie.c, zcontext.c)
- Implements multiproc=true for readimage. (gs_dpnxt.ps)
- Does a bit more work on implementing shading with PatternType 2.
- (gs_ll3.ps, zfunc.c, zshade.c)
- Adds a .bitadd operator for adding integers modulo the word size.
- (zarith.c)
- Updates filter operators to use the new stream parameter facility.
- (iparam.h, iparam.c, zfdecode.c, zfdctc.c[deleted], zfdctd.c, zfdcte.c)
- Updates the implementation of parameter lists for the change from _dict to
- _collection. (iparam.c, iparam.h)
- Takes advantage of the filter stream procedures now available in stream.c.
- (zfilter.c)
- Adds get_hardware_params to one device procedure vector. (zupath.c)
- Adds .gethardwareparams to parallel .getdeviceparams. (zdevice.c)
- Updates the interpreter's parameter list machinery to match the change in
- gsparam.h. (iparam.h, iparam.c)
- Makes more writable statics const. (gs_init.ps, btoken.h, dstack.h, iref.h,
- opextern.h, icontext.c, idict.c, igc.c, igcref.c, iinit.c, imainarg.c,
- interp.c, iscanbin.c, iutil.c, zbseq.c, zcie.c, zcontrol.c, zdevcal.c,
- zdevice2.c, zdps.c, zdps1.c, zfont2.c, zgeneric.c, zgstate.c, ziodev.c,
- ziodev2.c, ztype.c)
- Removes an inappropriate reference to PROGRAM_NAME. (imainarg.c)
- Removes set/currentrenderalgorithm, since they are useless for the purpose
- for which they were intended. (zrop.c)
- Uncomments code for CIEBasedDEF[G] color spaces, even though these aren't
- fully implemented yet. (zcie.c)
- Reimplements StartJobPassword and SystemParamsPassword as no-access strings
- in systemdict. (gs_lev2.ps, iutil2.h, iutil2.c, ziodev2.c, zusparam.c)
- Splits off the context state record from icontext.h, so that places that
- only need access to state variables don't need to import the
- procedures. (icontext.h, icstate.h)
- Updates a client for the change in gs_malloc_limit. (imainarg.c)
- Updates clients for the change in the accessors for predefined color spaces.
- (zcolor1.c, zimage.c, zimage2.c)
- Renames the (few) debugging-related statics as I_SOMETHING. (igc.c)
- Splits off idstack.h (API for dictionary stacks) from dstack.h (API for the
- interpreter's dictionary stack), and idstack.c (dictionary stack
- implementation) from idict.c (dictionary implementation). We should have
- done this a long time ago! (dstack.h, idictdef.h, idstack.h, idict.c,
- idstack.c, iinit.c, ireclaim.c)
- Folds the cached currentfile pointer into the exec-stack structure.
- (estack.h, interp.c)
- Changes clients of gs_register_*_root to eliminate statically allocated
- roots. (iinit.c, iname.c, interp.c, zbseq.c, zcontext.c, zfile.c, zfont.c,
- zfont2.c, zgstate.c, ziodev.c)
- Adds a ref_free_stack procedure, and reformats the implementation of stacks.
- (istack.h, interp.c, istack.c)
- </pre><h3><a name="V5.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Pattern colors sometimes caused errors. (gs_pdf.ps)
- - A file ending with %%EOF without an EOL caused an error.
- (pdf_main.ps)
- - Fl wasn't recognized as an abbreviation for FlateDecode in in-line
- images. (pdf_draw.ps)
- Removes all code related to converting PDF to PS: it never worked reliably,
- and we now support this function with the pswrite device instead.
- (gs_pdf.ps => pdf_ops.ps, pdf*.ps)
- </pre><h3><a name="V5.23_Streams"></a>Streams</h3><pre>
- Updates tracing output to use the new dlprintf macros. (shc.h, scfd.c,
- scfe.c, shcgen.c)
- Provides the ability to read and set stream initial parameters to/from a
- parameter list. This is currently needed only by the PDF/PS writers and the
- filter operator, so it is implemented in modules separate from the stream
- implementation per se, but it might be useful for other clients too.
- (scommon.h, scfparam.c, sdcparam.c, sdct*.c, sdeparam.c, sddparam.c,
- gdevpsfp.c[deleted])
- Changes the ASCII85Encode filter so it never produces two %% at the
- beginning of a line, which could mislead document managers or spoolers.
- (sfilter2.c)
- Changes the ASCIIHexEncode filter so it always produces lines of exactly 64
- characters, except for the last one. THIS IS A NON-BACKWARD-COMPATIBLE
- CHANGE, because this filter now needs a state structure, which it didn't
- before. (sstring.h, sstring.c)
- Moves filter_{read,write}_procs to stream.c, changing the names to
- s_filter_{read,write}_procs. (stream.h, stream.c)
- Makes creation of JPEG filters set default values for parameters that are
- outside the IJG library (Picky and Relax). (sdct.h, sjpegd.c, sjpege.c)
- </pre><h3><a name="V5.23_Library"></a>Library</h3><pre>
- Fixes bugs:
- - An error in dda_step_add could theoretically produce anomalies in
- images (although we don't think we've ever seen any). (gxdda.h)
- - A boundary error in dda_state_next/previous/advance could
- theoretically produce anomalies in images by allowing R = 0 (although we
- don't think we've ever seen any). (gxdda.h)
- - A rounding error in computing the size of portrait images could
- produce a spurious 1-pixel-wide line at the edge of the image. (gxifast.c)
- - When banding, images with singular or nearly singular CTM or
- ImageMatrix could confuse things badly enough to cause memory access errors.
- (gxclimag.c)
- - Patterns were broken. (bug introduced in 5.21) (gxclip2.c)
- - Because some image processing code retained a pointer to the
- clipping path, which was embedded inside the gs_state_contents object,
- garbage collection could cause crashes. (The only case where we know this
- happened was the bounding box device, since we think all other image
- enumerators preconstruct a clipping device, which does not retain a pointer
- to the clipping path, rather than constructing one from the path on the
- fly.) We fixed this by replacing gs_state_contents with individual objects:
- see below.
- - The *_.h files didn't have double-inclusion protection. (*_.h)
- - ImageType 2 images were broken by the change in begin_typed_image.
- (gximage2.c)
- - Color-setting operators that "substitute the nearest legal value"
- didn't substitute it in storage, only when using it. E.g., after
- gs_setgray(pgs, 2.0), gs_currentgray(pgs) returned 2.0 rather than 1.0.
- This bug has been there since release 1.0! (gxcspace.h, gscie.c, gscolor.c,
- gscolor1.c, gscolor2.c, gscdevn.c, gscsepr.c, gscpixel.c, gspcolor.c)
- - The RasterOp implementation for 2-bit, 4-bit, and non-gray 8-bit
- devices didn't work. (gdevmrop.c)
- - The test of whether to use copy_mono, fill_mask, or general
- imaging for rendering characters sometimes used copy_mono when not
- appropriate. (gxccache.c)
- - The default implementation of fill_mask produced solid rectangles,
- rather than properly masked output, if the logical operation didn't use its
- source operand. (gdevdbit.c)
- - Some more files needed double inclusion protection. (gscie.h)
- - Checking for interrupts before a return always returned 0 rather
- than the correct return code if there was no interrupt. (gsmisc.c)
- - Characters within Pattern PaintProcs sometimes didn't get drawn.
- (gxpcmap.c)
- - The CIE color space and CRD GC structure definitions were in the
- interpreter rather than the library. (gscie.h, gscie.c)
- - Numeric overflows when setting up the character cache caused
- errors rather than simply disabling caching for that character. (gschar.c)
- - FORCE_STRIP_HALFTONES was accidentally left set to 1 (in 5.10!),
- slowing down all uses of monobit halftones. (gshtscr.c)
- Implements mask clipping, which is needed for ImageType 3 images.
- (gxclip2.h, gxclipm.h, gxmclip.h, gxclip2.c, gxclipm.c, gxmclip.c)
- Finishes implementing ImageType 3 and 4 images. (gsimage.h, gsiparam.h,
- gsimage.c, gsiparm3.h, gximage3.c, gximage4.c)
- Starts to update the banding code to handle ImageType 3 and 4 images.
- (gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxiinit.c)
- Make eprintf_program_name, lprintf_file_{and_line,only}, and new
- dlprintf_file_{and_line,only} always be procedures, rather than sometimes
- macros and sometimes procedures. (std.h, gdebug.h, gsmisc.c)
- Adds new dlprintf, dlputc, and dlputs macros that are like
- dprintf/dputc/dputs but also print the source file name and line number at
- the beginning of the line if the -Z/ debugging switch is set. The if_debug*
- macros now use dlprintf rather than dprintf; many other places also needed
- changing. Note that if any place was overlooked, no great harm is done:
- printout produced there simply won't include the source file and line number
- even if -Z/ is set. (std.h, gdebug.h, gsmisc.c; gdevbbox.c, gdevdbit.c,
- gdevdgbr.c, gdevmrop.c, gdevrun.c, gdevsvga.c, gdevx.c, gp_unifs.c,
- gsalloc.c, gschar.c, gscoord.c, gsfont.c, gshsb.c, gsht.c, gshtscr.c,
- gsmemory.c, gspath.c, gstype1.c, gstype2.c, gxacpath.c, gxccache.c,
- gxclimag.c, gxclist.c, gxclpath.c, gxclread.c, gxcpath.c, gxfill.c,
- gxidata.c, gxpath.c, gxpcopy.c, gxpflat.c, gxstroke.c)
- Simplifies storage management for graphics states by replacing
- gs_state_contents with individual objects. This slows down gsave and
- grestore a bit, but eliminates a class of potential obscure bugs.
- (gxpath.h, gzstate.h, gsstate.c, gxcpath.c, gxpath.c)
- Adds some more information to the deubgging printout for paths. (gxpath.c)
- Modifies the library test program to test ImageType 3 and 4 images.
- (ugcclib.mak, gslib.c)
- Extends the @-file parser to be more shell-like:
- - The sequence \ <newline> is ignored everywhere.
- - If a # appears as the first character on a line outside quotes,
- the entire line (including the terminating newline) is ignored.
- (gsargs.h, gsargs.c)
- Changes a stem hint tracing message so that it will print with the correct
- line number. (gxhint2.c)
- Moves the 'format' information for images to the image parameter structure.
- This entails a NON-BACKWARD-COMPATIBLE CHANGE in the begin_typed_image
- driver procedure (which was not guaranteed stable). (gsiparam.h,
- gxdevcli.h, gsimage.c, gxiinit.c)
- Adds an optional matrix argument to begin_typed_image, overriding the CTM in
- the imager state if present. This is needed to make masks and masked images
- line up precisely; this too is a NON-BACKWARD-COMPATIBLE CHANGE.
- (gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevnfwd.c, gdevx.c, gxclimag.c,
- gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
- Adds a procedure for testing monotonicity of Functions over a given range.
- (gsfunc.h, gsfunc0.c, gsfunc3.c)
- Implements smooth shading with shfill. All documented ShadingTypes (1-7)
- are implemented. (gscspace.h, gsdsrc.h, gspath.h, gsshade.h, gxshade.h,
- gxshade4.h, gscolor.c, gscolor3.c, gsdsrc.c, gsfunc0.c, gsfunc3.c,
- gspath1.c, gsshade.c, gxshade.c, gxshade1.c, gxshade4.c, gxshade6.c)
- Changes the TrueType rasterizer to remove the assumption that the entire
- loca table is stored contiguously. This may not have any practical effect,
- since currently Type 42 fonts never split the loca table across segments.
- (gstype42.c)
- Adds a new interface for creating CIE CRDs that provides the parameters as
- separate arguments. (gscrd.h, gscrd.c)
- Starts to add the ability for a device to provide one or more default CIE
- CRDs as (read-only) device parameters. (Not ready for use yet.) (gscie.h,
- gscrdp.h, gscie.c, gscrdp.c)
- Adds a multiple-bit-per-pixel analogue of gs_makebitmappattern,
- gs_makepixmappattern, for use by another Aladdin project. (lib.mak,
- gsbitmap.h, gsptype1.h, gxbitmap.h, gspcolor.c)
- Changes the API of param_begin_write_dict so that the client can request the
- creation of an array rather than a dictionary. This is a
- NON-BACKWARD-COMPATIBLE CHANGE for implementors (of which there are only
- 2.5), but not for clients. (gsparam.h, gsparam.c)
- Adds dynamically typed data to the parameter list interface, and removes the
- statically typed procedures. This isn't important for any standard facility
- yet. This too is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
- parameter lists. (gsparam.h, gsparams.h, gsparam.c, gsparams.c)
- Adds a new platform-specific API for thread creation and synchronization,
- and a memory manager "wrapper" that monitor-locks each call. No code
- normally included in this fileset uses any of this machinery as yet. (gp.h,
- gpsync.h, gxsync.h, gsmemlok.h, gsmemlok.c, gxsync.c)
- Splits off (PatternType 1) Pattern filling into a separate file, since the
- file was getting too big; refactors the filling code to use procedures
- rather than macros. (gxp1fill.h, gspcolor.c, gxp1fill.c)
- Makes a few more writable statics const. (gscie.h, gscscie.c, gsdll.c,
- gsmemory.c, gsmisc.c, gstype1.c, gstype2.c, gxclpath.c)
- Adds a compile-time option, SYSTEM_CONSTANTS_ARE_WRITABLE, to choose whether
- the system configuration values (buildtime, copyright, product, revision,
- revisiondate, serialnumber) are const or not. By default they are now
- const: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE (affecting only one user).
- (lib.mak, openvms.mak, os2.mak, unix-end.mak, wctail.mak, winlib.mak,
- gscdefs.h, gscdef.c)
- Removes the dependence of std.h on PROGRAM_NAME. (std.h, gsdll.c, gsmisc.c,
- gscdef.c)
- Adds a new member of the color space type structure, the size of the
- smallest color space structure that will hold a color space of the given
- type. Also removes the obsolete _ds modifier. (gscspace.h, gxcspace.h,
- gscdevn.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscpixel.c,
- gscsepr.c, gspcolor.c, gxiinit.c)
- Removes set/currentrenderalgorithm, since they are useless for the purpose
- for which they were intended. (gsrop.h, gsropt.h, gdevmrop.c, gsrop.c)
- Splits off gscspace.c from gscolor.c, and gscscie.c from gscie.c. (gscie.c,
- gscolor.c, gscscie.c, gscspace.c)
- Adds constructor and accessor procedures for color spaces. (gscie.h,
- gscolor2.h, gscsepr.h, gscspace.h, gsptype1.h, gxcolor2.h, gxcspace.h,
- gscolor.c, gscolor2.c, gscscie.c, gscsepr.c, gscspace.c, gslib.c,
- gspcolor.c)
- Changes the CIEBased color space structures slightly to allow implementation
- of the CIEBasedDEF[G] color spaces. (gscie.h, gscie.c)
- Changes gs_malloc_limit from a static to a member of the allocator
- structure. This is a NON-BACKWARD-COMPATIBLE CHANGE for clients that
- declared this variable as an extern. (gsmalloc.h, gsmemory.c)
- In order to eliminate some statics, changes the static color space accessors
- (gs_color_space_Device*) so they require a const gx_imager_state as
- parameter, and changes their names as well to avoid confusion. This is a
- NON-BACKWARD-COMPATIBLE CHANGE not only in these accessors, but also in
- gs_image_t_init_{gray,color}. This is very unfortunate, but we see no way
- to avoid it. (gscspace.h, gsiparam.h, gxistate.h, gscolor1.c, gscscie.c,
- gscspace.c, gsimage.c, gspcolor.c, gsstate.c, gxclread.c, gxiinit.c,
- gximage2.c, gximage3.c, gximage4.c)
- Unifies the handling of const for the IODevice table. (gscdefs.h,
- gxiodev.h, gconf.c, gsiodev.c)
- Changes the register_root memory manager call so that a NULL as the pointer
- to the root structure asks the memory manager to allocate the root structure
- itself. This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
- memory manager API (of which there are only 3). (gsmemory.h, gsstruct.h,
- gsalloc.c, gsmemory.c)
- Adds a new GC structure type, suffix_add0_local, which is a more efficient
- form of suffix_add0 that can be used when the supertype is defined in the
- same file as the subtype. (gsbitmap.h, gscie.h, gsshade.h, gsstruct.h)
- Uses the new package replacement facility in the makefile to make RasterOp
- optional without tinkering with statics at runtime. (lib.mak, gxdevice.h,
- gxdevrop.h, gdevdbit.c, gdevdflt.c, gdevmrop.c, gdevnfwd.c, gsnorop.c,
- gsropc.c)
- Makes RasterOp really optional. (gdevmrop.h, gsrop.h, gdevmrop.c, gsrop.c,
- gxiinit.c)
- Rewrites bits_fill_rectangle to get rid of nearly all the macros.
- (gxbitops.h, gsbitops.c)
- Removes the obsolete _ds from gs_log_error. (gserror.h, gsmisc.c)
- </pre>
- <hr>
- <h2><a name="Version5.22"></a>Version 5.22 (limited) (2/19/98)</h2>
- <p>
- This fileset has a few more bug fixes, a major overhaul of memory management
- for paths so that we can do view clipping in a reasonable way, and the
- ability to build executables in a different directory from the sources.
- <h3><a name="V5.22_Documentation"></a>Documentation</h3><pre>
- Designates gv as the preferred VMS and Unix previewer. (new-user.txt,
- use.txt)
- Adds a pointer to post-release documentation. (README)
- Notes that compilation with certain platforms and compilers must turn off
- optimization. (make.txt)
- Improves the documentation of the fit_fill and fit_copy macros.
- (gxdevice.h)
- </pre><h3><a name="V5.22_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The ccgs script for non-ANSI compilers was no longer flexible
- enough to handle all the possible command lines. (ccgs)
- - The pdfwrite device was missing on the DesqView/X platform.
- (dvx-gcc.mak)
- - The System V build procedure was broken. (unixtail.mak)
- - A Watcom makefile lacked parentheses around a macro name.
- (wctail.mak)
- - Some `make' programs drop trailing spaces in macro definitions: we
- didn't work around this. (os2.mak, unixhead.mak, winlib.mak)
- Adds support for WCVERSION=11.0 in the Watcom makefiles. (watc.mak,
- wccommon.mak)
- Adds a shell script for removing the 'includes' from makefiles, since a very
- few Unix systems don't support this capability. (catmake)
- Changes -dNOPROMPT to -dNOPAGEPROMPT, and adds -dNOPROMPT to suppress both
- the end-of-page prompt and the executive prompt. (use.txt, gs_init.ps)
- Adds definitions of {GL,PS}{SRC,GEN,OBJ}DIR to the top-level makefiles,
- removing these definitions from gs.mak. (*.mak, gs.mak)
- Adds explicit directories to more makefile rules. We can now do builds with
- source, GL/PS generated files, and GL/PS object files in 5 different
- directories! (*.mak, gsjconf.h)
- </pre><h3><a name="V5.22_Utilities"></a>Utilities</h3><pre>
- Adds a user-contributed utility that runs dvips followed by ps2pdf.
- (dvipdf, unixinst.mak)
- </pre><h3><a name="V5.22_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A pointer was incorrectly declared const. (gdevpdfm.c)
- - pdfwrite handled the Title element of ARTICLE pdfmarks
- incorrectly. (gdevpdfm.c)
- - pdfwrite inserted a Dest element in Link annotations even if an A
- (Action) key was present. (gdevpdfm.c)
- - pdfwrite didn't recognize and convert /Article actions in
- pdfmarks. (gdevpdfm.c)
- Replaces some open-coded accesses to path structure elements with macros, in
- anticipation of a representation change. (gdevpdfd.c)
- Moves pdfwrite further towards supporting Dict and ACSDict Distiller
- parameters. (gdevpsdf.h, gdevpsdp.c, gdevpsfp.c)
- Updates a few places for the change in the path API. (gdevpdfd.c,
- gdevvec.c)
- Adds recognition of named object references to the PDF writer, fixing many
- bugs in the named object code in the process. (gdevpdfx.h, gdevpdfm.c,
- gdevpdfo.c)
- Enhances pswrite to skip fills or strokes of completely empty paths, to
- recognize horizontal and vertical lines, and to abbreviate color settings
- based on 8-bit fractions. This requires a NON-BACKWARD-COMPATIBLE CHANGE in
- the "vector" device interface (which was, however, clearly identified as
- subject to change without notice). (gdevpsdf.h, gdevvec.h, gdevps.c,
- gdevpsdf.c, gdevpx.c, gdevvec.c)
- </pre><h3><a name="V5.22_Interpreter"></a>Interpreter</h3><pre>
- Updates a few places for the change in the path API. (zupath.c)
- Implements %statementedit properly. (iscan.h, iscan.c, ziodev.c)
- Changes the initialization code so that if DELAYBIND is set, .forcedef and
- .forceput remain accessible until .bindnow is called. (gs_init.ps)
- </pre><h3><a name="V5.22_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - An empty Differences array, which Acrobat Distiller 3.02 can emit,
- caused a rangecheck error. (pdf_font.ps)
- </pre><h3><a name="V5.22_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The alternative LZWEncode filter didn't emit a reset code as the
- first code, and waited one code too long to emit a reset. (slzwce.c)
- Adds some double-inclusion protection. (scfx.h)
- </pre><h3><a name="V5.22_Library"></a>Library</h3><pre>
- Fixes bugs:
- - There was an (incorrect) assignment to a read-only structure
- member. (gximage2.c)
- - A formal parameter list was incorrect if __PROTOTYPES__ wasn't
- defined. (gsroptab.c)
- - Some images didn't get clipped properly when banding. This was a
- fix for 5.03 that somehow didn't make it into 5.10. (gxclimag.c)
- - When banding, dashed lines could cause an invalid memory access.
- This was apparently caused by an error in a fix made in 5.04. (gsline.c)
- - Images with non-zero data_x could cause an invalid memory access.
- (gxiinit.c, gxidata.c)
- - The band list rasterizer didn't initialize the image structure
- properly, causing control to go to a random address. (gxclread.c)
- Replaces some open-coded accesses to path structure elements with macros, in
- anticipation of a representation change. (gxpath.h, gzpath.h, gspath1.c,
- gxfill.c, gxpath2.c, gxstroke.c)
- Changes the path and clipping path structures so that segments and clipping
- lists are stored in separate, reference-counted structures. This finally
- supports reliable freeing of path segments and clipping lists even in the
- presence of off-stack gstates, and the ability to store the original
- segments of a clipping path, both of which we have wanted for a long time.
- Unfortunately, it requires SIGNIFICANT NON-BACKWARD-COMPATIBLE CHANGES TO
- THE API FOR PATHS:
- Paths:
- - adds gx_path_alloc_contained;
- - gx_path_init => gx_path_init_local (or nothing);
- - gx_path_reset => gx_path_new;
- - removes gx_path_share and gx_path_release;
- - gx_path_assign => gx_path_assign_{preserve,release};
- - renames gx_path_expand_dashes => gx_path_add_dash_expansion,
- gx_path_flatten[_accurate] => gx_path_add_flattened[_accurate],
- gx_path_monotonize => gx_path_add_monotonized;
- - removes the init Boolean from gx_path_copy[_reversed].
- Clipping paths:
- - gx_cpath_init => gx_cpath_init_local (or nothing);
- - removes gx_cpath_share and gx_cpath_release_segments;
- - gx_cpath_path => gx_cpath_to_path;
- - removes the mem argument from gx_cpath_from_rectangle.
- We believe that we either renamed or changed the argument list of every API
- function that was affected in a non-backward-compatible way, so incompatible
- clients will get either compilation or linking errors. (gxpath.h,
- gzcpath.h, gzpath.h, gschar.c, gsdps.c, gsdps1.c, gspaint.c, gspath.c,
- gspath1.c, gsstate.c, gxacpath.c, gxccache.c, gxclpath.c, gxclread.c,
- gxcpath.c, gxfill.c, gxpath.c, gxpath2.c, gxpcmap.c, gxpcopy.c, gxpdash.c,
- gxstroke.c)
- Reimplements view clipping bookkeeping to use reference-counted paths.
- (gzstate.h, gsdps.c, gsstate.c)
- Adds const in a couple more places. (gxpath2.c)
- If -Z? is enabled, makes the reference counting machinery check for
- reference counts going negative. (gsrefct.h)
- Adds the first bit of code for rendering smooth shadings. The code is
- nowhere near usable. (gsshade.h, gxshade.h, gsshade.c, gxshade.c)
- Adds BEGIN ... END macros for creating compound statements that are
- syntactically equivalent to single statements. (stdpre.h)
- </pre>
- <hr>
- <h2><a name="Version5.21"></a>Version 5.21 (limited) (1/19/98)</h2>
- <p>
- This is primarily a bug fix fileset for 5.20, with a little new
- functionality (pdfwrite image downsampling and more complete pdfmark
- processing).
- <h3><a name="V5.21_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The build procedures still referred to tar_cat. (make.txt)
- Documents some user-developed patches for using certain kinds of Japanese
- fonts with Ghostscript. (new-user.txt)
- Notes that on Solaris 2.x systems, it is probably not a good idea to use
- Sun's fonts. (use.txt)
- Documents -dSTRICT. (use.txt)
- </pre><h3><a name="V5.21_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The definitions of MAKEFILE in several makefiles was incorrect.
- (dvx-gcc.mak, unix-cc.mak, unixansi.mak)
- - The build rules for the gp_*.$(OBJ) files lacked a directory name,
- confusing most 'make' programs. (*.mak)
- - geninit didn't work, because the syntax of psfile_() entries in
- gconfig.h had changed. (geninit.c)
- - Some files were created and then deleted during building,
- preventing [gnu]make -j from working. (lib.mak, int.mak)
- Adds an explicit directory name to more files in the makefiles. (jpeg.mak,
- lib.mak) Added in this fileset:
- .$(OBJ): jpeg.mak, {dvx-tail,msvclib,openvms,os2,ugcclib,unixtail,
- watc,watclib,winint,winlib}.mak
- .dev: jpeg.mak
- Removes the default suppression of 'const' with gcc. You must now compile
- with gcc 2.7.2.1 or newer, or patch the makefile. (ugcclib.mak,
- unix-gcc.mak)
- Removes -DPNG_USE_CONST from the command line for compiling libpng, since
- this has never actually worked, and is handled in a different way starting
- with libpng 0.97. (gs.mak)
- Adds a -dSTRICT switch that disables some Ghostscript extensions, to be more
- helpful in debugging applications that produce output for Adobe and other
- RIPs. (gs_init.ps, gs_statd.ps)
- </pre><h3><a name="V5.21_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - Many occurrences of 'const' were missing or incorrect.
- (gdevpdfd.c, gdevpdfi.c, gdevpdfo.c, gdevpdft.c)
- - pdfmark processing was broken by changes introduced in 5.20.
- (gs_pdfwr.ps)
- - pdfwrite didn't convert /Color => /C or /Title => /T in ANN and
- LNK pdfmarks. (gdevpdfm.c)
- - pdfwrite didn't convert /Dest => /D or /File => /F in the Action
- dictionary of ANN and LNK pdfmarks. (gdevpdfm.c)
- - pdfwrite didn't convert a /Launch annotation to an Action with a
- dictionary. (gdevpdfm.c)
- - pdfwrite didn't convert \n in annotation Contents strings to \r.
- (gdevpdfm.c)
- - jstrm.state was used before being set. (gdevjpeg.c)
- - The SVGA devices were not identified as page devices.
- (gdevsvga.c)
- - The SPARCPrinter driver returned the address of a local buffer
- containing an error string. (gdevsppr.c)
- - pdfwrite no longer compressed character bitmaps. (bug introduced
- in 5.20) (gdevpdfi.c)
- - pdfwrite didn't recognize _objdef syntax everywhere. (gdevpdfx.h,
- gdevpdfm.c, gdevpdfo.c)
- - pdfwrite didn't recognize and convert Launch and GoToR OUT
- pdfmarks. (gdevpdfm.c)
- - pdfwrite used a /Dest key rather than a /P key for the page number
- in articles. (gdevpdfx.h, gdevpdfm.c)
- - pdfwrite didn't save and write the /I dictionary for articles.
- (gdevpdfx.h, gsstruct.h, gdevpdf.c, gdevpdfm.c)
- Implements a parameter list "reader" that prints the parameter values on a
- stream in PS/PDF syntax. (We need something like this for printing filter
- parameters.) (gdevpsdf.h, gdevpdf.c, gdevpsdf.c)
- Implements a write stream that just keeps track of the position. We use
- this to determine how much space to allocate for data we're going to save.
- (gdevpsdf.h, gdevpsdf.c)
- Implements image downsampling, but not anti-aliasing, for the PDF writer.
- (gdevpsdf.h, gdevpsds.h, gdevpsdi.c, gdevpsds.c)
- </pre><h3><a name="V5.21_Fonts"></a>Fonts</h3><pre>
- Adds Frutiger to the built-in list of sans-serif fonts. (gs_fonts.ps)
- </pre><h3><a name="V5.21_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Many occurrences of 'const' were missing. (gsargs.c, ialloc.c,
- zdpnext.c, zfunc3.c, zshade.c)
- - Some byte * => char * casts were missing. (imainarg.c)
- - The stack limit check in .eqproc was wrong. (zmisc3.c)
- - The paper sizes a4small and lettersmall weren't implemented.
- (gs_statd.ps)
- - setuserparams signalled errors on 64-bit systems. (zusparam.c)
- Changes .image2 to track the change in the library. (zdps.c)
- Some improvements were made to the (still not entirely functional) Type 32
- font code. (zchar32.c)
- Updates some filters to use the new procedure for transmitting collections
- of parameters. (zfdecode.c)
- Adds ISO paper sizes C0 through C6. (gs_statd.ps)
- Trims down the list of #includes in iconf.c. (iconf.c)
- </pre><h3><a name="V5.21_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - CalGray color spaces with a Gamma value caused an error.
- (gs_pdf.ps)
- </pre><h3><a name="V5.21_Library"></a>Library</h3><pre>
- Fixes bugs:
- - There was a 'const' conflict in the code for handling ImageType 2
- images. Fixing this properly required a small change in the ImageType 2
- structure. (gsiparm2.h, gximage2.c)
- - Many occurrences of 'const' were missing. (gsfunc3.h, gstrap.h,
- gxgetbit.h, gdevdgbr.c, gstrap.c, gxclist.c, gxclread.c)
- - A couple of enumerations had trailing commas. (gsshade.h,
- gxbitfmt.h)
- - The gcst parameter was omitted in the non-ANSI version of the
- ENUM_PTRS_BEGIN_PROC macro. (gsstruct.h)
- - gcc missed a private / non-private discrepancy. (gxpcmap.c)
- - An uninitialized variable was used by mistake
- (copy_params.options). (gdevdgbr.c)
- - The last statement of a procedure was unreachable. (gxclpath.c)
- - If a Type 2 font was transformed so that hints were not being
- used, hintmask and cntrmask didn't compute the number of following bytes
- correctly. (gxtype1.h, gstype2.c, gxtype1.c)
- Factors out some common code in gxclip2.c into macros. (gxclip2.c)
- Starts to reimplement RasterOp using the compositing framework. (gsropc.h,
- gxropc.h, gsropc.c) ****** IN PROGRESS ******
- Adds an equality-testing procedure for device colors. This is used both for
- color images (which previously did this adhoc) and for RasterOp compositing.
- (gxdcolor.h, gximage.h, gxcht.c, gxdcolor.c, gxht.c, gspcolor.c)
- Implements hintmask (but not cntrmask) for Type 2 CharString fonts. I don't
- know any reasonable way to test whether it's working, though. (gxtype1.h,
- gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
- Adds a more convenient interface for reading and setting sets of parameters.
- (gsparam.h, gsparam.c)
- Pulls the decision as to whether to halftone for a given device out into a
- macro. Eventually we will do something more sophisticated about this.
- (gxdevice.h, gxclist.c, gxcmap.c)
- Breaks apart a macro in anticipation of future usage. (gsrefct.h)
- </pre>
- <hr>
- <h2><a name="Version5.20"></a>Version 5.20 (limited) (1/8/98)</h2>
- <p>
- This fileset provides enough of the Display PostScript capabilities to start
- running real programs. It also adds the first few LanguageLevel 3 features
- (none of which have been tested) and reorganizes the makefile structure
- somewhat. There are many internal changes since 5.10, some of them still in
- progress, so we expect more problems than usual.
- <p>
- This fileset is being provided for testing in two different configurations:
- a full release, and a DPS-only package. The latter will be released with
- the GPL when it is reasonably complete and reliable.
- <h3><a name="V5.20_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - TrueType fonts on GS_FONTPATH weren't recognized. (use.txt)
- - The argument list for gstate was incorrect. (zdevice2.c)
- - There were a couple of minor errors in the e-stack documentation.
- (estack.h)
- - fonts.txt had several errors regarding compiled fonts.
- (fonts.txt)
- - An out-of-date Aladdin address still appeared in documentation.
- (new-user.txt)
- Updates make.txt to reflect the changes in makefile structure. (make.txt)
- Notes the addition of -Z' and -Z". (use.txt)
- Documents the new begin_typed_image, get_bits_rectangle,
- map_color_rgb_alpha, and create_compositor driver procedures. (drivers.txt)
- Moves documentation for all releases before 5.0 to history4.txt. (NEWS,
- history4.txt)
- Documents the addition of SHARE_JPEGLIB. (make.txt)
- Removes the author's name and e-mail address from the ps2ascii man page, at
- his request. (ps2ascii.1)
- Documents the addition of (some) image compression facilities to ps2pdf /
- pdfwrite. (ps2pdf.txt)
- Documents the new -dNOINTERPOLATE and -F<n> switches. (use.txt)
- Adds documentation for a user-contributed port to the SMS/QDOS operating
- system. (new-user.txt)
- Removes documentation for BGI, which is no longer supported. (use.txt)
- Documents the use of the Registry and the GS_DLL environment variable on
- Windows platforms. (install.txt)
- </pre><h3><a name="V5.20_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The OpenVMS makefile referred to EXTEND_NAME rather than
- EXTEND_NAMES. (openvms.mak)
- - A typo caused a spurious error message from lpr. (unix-lpr.sh)
- - The PDF writer didn't include a needed dependency on zlib
- compression. (devs.mak)
- - The rule for the OS/2 printer device was wrong. (devs.mak)
- - The -migrate switch was incorrectly removed from the command line
- for pre-4.0 Digital Unix. (make.txt)
- - The -r switch was ignored with -dNODISPLAY. (gs_init.ps)
- Adds targets for Type 32 fonts (type32.dev) and PostScript LanguageLevel 3
- (psl3.dev, psl3core.dev, psl3read.dev). (gs.mak, int.mak, lib.mak)
- Changes the documented feature names for PostScript Level 1 and 2
- interpreters from level1/2 to psl1/2. The old names are still recognized
- for backward compatibility. (gs.mak, int.mak, *.mak)
- Removes support for building with DCL under VMS. Building under VMS now
- requires some version of make, preferably GNU make. THIS IS A
- NON-BACKWARD-COMPATIBLE CHANGE, but there was plenty of lead time for users
- (it was announced in 5.01, 6/22/97). (vms*.mak[deleted])
- Starts to add an explicit directory name to every file in the makefiles, to
- allow building multiple object versions (e.g., debug, profile, product) or
- cross-building for multiple platforms in separate directories without any
- makefile editing. (*.mak) Done so far:
- (done) _h= devs.mak gs.mak int.mak jpeg.mak lib.mak
- (done) .h devs.mak gs.mak int.mak lib.mak zlib.mak
- openvms.mak os2.mak ugcclib.mak unix-end.mak
- unixtail.mak wctail.mak winint.mak winlib.mak
- .$(OBJ): devs.mak int.mak (except ccfonts)
- lib.mak (except special compilations)
- libpng.mak zlib.mak
- .dev: libpng.mak zlib.mak
- Gets rid of tar_cat. Building on Unix platforms now requires that make
- recognize the include directive. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE:
- rather than editing the *head.mak files, users should now edit the unix*.mak
- or dvx*.mak files (which they previously were instructed NOT to do). Aside
- from this, we think the change won't actually affect anyone, since most Unix
- make programs (include GNU make) do recognize this directive. (*.mak,
- ansihead.mak[deleted], cc-head.mak[deleted], gcc-head.mak[deleted],
- dgc-head.mak[deleted], tar_*cat[deleted], dvx-gcc.mak, unixansi.mak,
- unix-cc.mak, unix-gcc.mak)
- Includes the basic context machinery in every PostScript interpreter
- configuration. (int.mak)
- Removes the division between 'low-level' and 'high-level' band list
- facilities: we once thought we might make the latter optional, but this no
- longer seems useful. (lib.mak)
- Introduces a new category of devices, identified to genconf as -dev2 and
- created with SETDEV2 and SETPDEV2. For the moment, these are the same as
- existing devices except that their static instance is const, but we plan to
- make them quite different in the future: don't attempt to create any.
- (devs.mak, gs.mak, genconf.c, gconf.c)
- Removes the obsolete -includef resource from genconf. (genconf.c)
- Removes support for IJG JPEG library v5* from the makefile, since we no
- longer support these library versions. (jpeg.mak, lib.mak,
- gsjerror.h[deleted], gsjpglib.h[deleted], gsjerror.c[deleted])
- Makes the JPEG library use floating point if it is fast. (gsjmorec.h)
- Adds a SHARE_JPEG option to the makefiles, with the necessary warning about
- possible incompatibilities. (*.mak)
- Replaces the CCC macro in the makefiles with CC_, the various CC* macros
- with CC_* (except for CCA2K and CCAUX), and the O macro with O_; removes the
- 'begin' target and the CCBEGIN macro. THIS IS A NON-BACKWARD-COMPATIBLE
- CHANGE, required for the new arrangement of files into directories. (*.mak)
- Replaces all occurrences of -Idir1 -Idir2 ... -Idirn in platform-generic
- makefiles with $(I_)dir1 $(II)dir2 ... $(_I)dirn, and defines these macros
- in platform-specific makefiles, in order to accommodate OpenVMS command
- syntax. (*.mak)
- Adds -fno-common to the default gcc compilation and linking switches, to
- improve checking for doubly-defined externs. (unix-gcc.mak)
- Adds a -dNOINTERPOLATE switch to turn off image interpolation. (gs_init.ps)
- Adds a -F<file> switch that runs files through the run_string interface with
- an 1-byte buffer. (imainarg.c)
- Allows specifying the name of the gconfig.h file with -DGCONFIG_H= in the
- compilation command line, to support certain multi-configuration build
- procedures. (int.mak, lib.mak, gconf.h, gconf.c, gscdef.c, iconf.c)
- Splits off the installation targets from unix-end.mak. (unix-end.mak,
- unixinst.mak, unix*.mak, ugcclib.mak)
- </pre><h3><a name="V5.20_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - A case label was misplaced. (No effect on normal operation.)
- (genconf.c)
- - ps2ascii had some Encoding-related problems, and a serious bug
- causing the stack to grow indefinitely. (ps2ascii.ps)
- Adds a new font2pcl.ps utility, for converting outline fonts to bitmapped
- PCL fonts. (font2pcl.ps)
- At the request of a user, modifies ansi2knr to read stdin if no input file
- is supplied, and to accept an optional --filename switch to set the file
- name in the #line directive. Also makes ansi2knr write the usage message on
- stderr rather than stdout. (ansi2knr.c)
- Adds a user-contributed Perl script that fixes compatibility problems
- between MS Word output and Ghostview 1.5. (fixmswrd.pl)
- Adds a new test file that produces some pretty color output. (vasarely.ps,
- unix-end.mak)
- Adds a user-contributed utility for producing AFM files from PFA/PFB and
- optionally PFM files. (pf2afm.bat, pf2afm.ps)
- </pre><h3><a name="V5.20_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - Some 'static' declarations were missing (gcc lossage). (gdevht.c,
- gdevmgr.c, gdevpcfb.c, gdevrrgb.c)
- - Some 'char *' should have been 'unsigned char *'. (gdevccr.c)
- - The PDF writer represented non-rectangular clipping paths in a way
- that could cause Acrobat to produce incorrect output. (The fix relies on
- the new clipping path enumeration facility.) (gdevpdfd.c)
- - get_params for the X device didn't read the WINDOWID and
- .IsPageDevice parameters. (gdevx.c)
- - A superseded driver was still in the distribution.
- (gdevnp6.c[deleted])
- - The PDF writer's default parameters didn't quite match the default
- parameters of Adobe Acrobat(TM). (gdevpsdf.h)
- - A cast from const byte * to const char * was omitted.
- (gdevpdft.c)
- - x_map_color_rgb returned incorrect values for values in the dither
- cube/ramp. (gdevx.c)
- Adds user-contributed drivers for:
- - the Brother HL 720/730 laser printer (gdevhl7x.c);
- - the Cirrus Logic CL-GD54xx SuperVGA chipset (in gdevsvga.c).
- Adds stubs or dummy implementations for the new Acrobat Distiller 3.0
- pdfmark features (BP/EP/SP, _objdef/OBJ, PUT/PUTINTERVAL/CLOSE). Features
- not yet implemented:
- - Predefining Catalog and DocInfo.
- - Writing out added Catalog and Info keys.
- - Special handling for Page#, Prev/This/NextPage.
- - Writing out added keys in Page objects.
- - Defining objects for ANN, DEST, LNK, PS.
- - Writing out added keys for ANN, BP, DEST, LNK, PS.
- - Adding information to streams (PUT, CLOSE).
- - Writing out streams.
- (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c)
- Removes the DoThumbnails distiller parameter, which Acrobat Distiller 3.0 no
- longer supports. (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
- Starts to eliminate or segregate writable globals that point to
- heap-allocated data, as in the interpreter (see below); specifically, makes
- all device and xfont procedure structures const in devices that Aladdin
- maintains. Note that this involves a NON-BACKWARD-COMPATIBLE CHANGE in the
- get_xfont_procs device procedure (to add const to the return type); this
- only affects the 3 implementations of xfonts. (gdevprn.h, gdevdjet.c,
- gdevm1.c, gdevpccm.c, gdevpdf.c, gdevpdfm.c, gdevpdft.c, gdevps.c,
- gdevpsdf.c, gdevpx.c; gxdevice.h, gxxfont.h, gdevbgi.c, gdevbit.c,
- gdevbmp.c, gdevdflt.c, gdevdjet.c, gdevlj56.c, gdevmiff.c, gdevmsxf.c,
- gdevnfwd.c, gdevpbm.c, gdevpcfb.c, gdevpdf.c, gdevpng.c, gdevprn.c,
- gdevps.c, gdevpx.c, gdevs3ga.c, gdevsvga.c, gdevtfax.c, gdevtfnx.c,
- gdevvglb.c, gdevwddb.c, gdevwdib.c, gdevwpr2.c, gdevwprn.c, gdevx.c,
- gdevxalt.c, gdevxxf.c, gxccman.c)
- Makes the statically allocated device templates const in some devices, using
- the new -dev2 device resource type. NOTE: the meaning of -dev2 is subject
- to change without notice in future releases. (gdevdjet.c, gdevpdf.c,
- gdevps.c, gdevpx.c, gdevvglb.c)
- Adds a new begin_typed_image driver procedure which is called for all types
- of images, not just ImageType 1. The default implementation calls
- begin_image if the ImageType is 1. (gdevmem.h, gdevprn.h, gsiparam.h,
- gxdevice.h, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
- gxacpath.c, gxclimag.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c)
- Adds a new get_bits_rectangle driver procedure which allows reading back an
- arbitrary rectangle of bits from the device, not just a single full scan
- line. The default implementation calls get_bits, being careful to avoid a
- recursion loop; the default implementation of get_bits calls
- get_bits_rectangle similarly. This procedure has a lot of flexibility,
- almost all of which is ultimately provided by the implementation in memory
- devices. (gdevmem.h, gsbitops.h, gxcindex.h, gxdevice.h, gdevbbox.c,
- gdevdflt.c, gdevdgbr.c, gdevht.c, gdevm*.c, gdevmem.c, gdevmpla.c,
- gdevnfwd.c, gxbitfmt.h, gxclip2.c, gxclist.c, gxclread.c, gxcpath.c,
- gxgetbit.h)
- Removes support for the BGI (Borland Graphics Interface) device, since we no
- longer support the Borland compilers for MS-DOS. (devs.mak, dvx-head.mak,
- openvms.mak, unixhead.mak, gdevbgi.c[deleted])
- Speeds up x_map_color_rgb by avoiding server access in most cases.
- (gdevx.h, gdevx.c, gdevxini.c)
- Implements get_bits_rectangle in the X driver in place of get_bits.
- (gdevx.c, gdevxalt.c)
- Implements begin_typed_image for ImageType 2 images in the X driver, as an
- example of how a driver can implement this function itself. (gdevx.c)
- Adds a call on the DCTEncode set_defaults procedure, which is now required
- (see under Streams below). (gdevjpeg.c)
- Implements a substantial part of the Distiller image compression machinery.
- See ps2pdf.txt for details. (gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c,
- gdevps.c, gdevpsdf.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
- Adds a map_color_rgb_alpha driver procedure, complementing
- map_rgb_alpha_color. (gdevmem.h, gdevprn.h, gxdevice.h,
- gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c, gdevprn.c,
- gxclip2.c, gxclist.c, gxcmap.c, gxcpath.c)
- Splits off gxdevcli.h (client definitions) from gxdevice.h, which had gotten
- very large. This doesn't do much good yet in terms of reducing dependencies
- and compilation time, because every client still includes gxdevice.h, but
- it's the raw material for doing so in the future. (gxdevcli.h, gxdevice.h)
- Adds alpha tracking to the command list. (gxclpath.h, gxclimag.c,
- gxclpath.c, gxclread.c)
- Changes the 'show' pseudo-parameter for the PDF writer so that it takes
- multiple additional parameters instead of a dictionary. This greatly
- reduces garbage collection overhead. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c,
- gdevpdft.c)
- Adds a create_compositor driver call for handling compositing. (gdevbbox.h,
- gdevmem.h, gdevprn.h, gsdevice.h, gxdevcli.h, gxdevice.h, gdevbbox.c,
- gdevdflt.c, gdevht.c, gdevnfwd.c, gsdevice.c, gxclimag.c, gxclip2.c,
- gxclist.c, gxcpath.c, gxpcmap.c)
- Updates drivers to account for the more careful handling of file name
- length. (gdevpdfx.h, gdevwprn.c)
- Adds a user-contributed enhancement to make the Epson dot matrix driver work
- at 180x60dpi and 240x180dpi for 24 pin printers. (gdevepsn.c)
- </pre><h3><a name="V5.20_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The Windows platform didn't put stdin into binary mode.
- (dwmainc.cpp)
- Removes all remaining uses of gs_malloc and gs_free in platform-specific
- code. (gp_dosfb.c, gp_vms.c)
- Adds a platform-specific gp_getenv call, to allow the Windows implementation
- to consult the Registry. (gp.h, gpgetenv.h, gp_getnv.c, gp_wgetv.c, *.mak,
- gp_win32.c)
- Separates out the declaration of popen and pclose, which may be declared
- correctly in stdio.h, incorrectly in stdio.h, or not at all, depending on
- the platform. (lib.mak, unixtail.mak, pipe_.h, gdevpipe.c, gp_os2.c,
- gp_os9.c, gp_unix.c)
- Tweaks the platform-workaround header file conditionals a little more.
- (malloc_.h, memory_.h).
- Makes the Windows DLL check the GS_DLL environment/registry variable for the
- location of the DLL. (dwdll.cpp)
- Defines the maximum length for the file name returned by
- gp_open_scratch_file, and possibly by gp_open_printer. (gp.h, gp_*.c)
- </pre><h3><a name="V5.20_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - A 'flush' was missing from a debugging message. (gs_fonts.ps)
- - Type 2 fonts didn't always have a PaintType entry. (gs_cff.ps)
- - CIDFontType 0 fonts were broken, probably because of a recently
- added validity test in the C code. (gs_cidfn.ps)
- - Font types without an Encoding caused an error (in .completefont).
- (gs_fonts.ps)
- - composefont required the elements of the font array to be actual
- fonts, rather than allowing font names. (gs_cidfn.ps)
- - composefont required that all elements of the font array have
- CIDSystemInfo dictionaries. (Adobe has said that their interpreters don't
- check for this in some cases, but it's a bug. Unfortunately, by now it's an
- established one.) (zfcmap.c)
- Adds .dir to the list of file suffixes known not to be fonts. (gs_fonts.ps)
- </pre><h3><a name="V5.20_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - A Type 2 font that provided fewer CharStrings than charset
- elements caused an error. (gs_cff.ps)
- - If a context was joined before it terminated, its stack was never
- copied to the joining context. (zcontext.c)
- - Freeing a context didn't free most of its substructures.
- (icontext.h, istack.h, icontext.c, interp.c, istack.c, zcontext.c)
- - save and restore didn't save and restore the user parameters.
- (gs_lev2.ps, zvmem2.c)
- - %stdin and %stdout weren't defined per-context. (files.h,
- icontext.h, icontext.c, ziodev.c)
- - Switching contexts didn't clean up the stacks. (The current way
- we do this is very inefficient: we should use a special null for filling the
- untouched area, so we can use it to detect the high water mark.)
- (icontext.c)
- - A cast from const to non-const was missing. (zdpnext.c)
- - User parameters weren't managed per-context. (The current way we
- do this is inefficient.) (gs_dps.ps, gs_init.ps, gs_lev2.ps, isave.h,
- icontext.c, iinit.c, isave.c, zcontext.c, zusparam.c)
- - Some operand checks weren't wrapped in do { ... } while(0),
- possibly leading to incorrect parsing of 'if's. (opcheck.h)
- - If a context terminated with unmatched saves, the restores weren't
- executed. (isave.h, isave.c, zcontext.c)
- - If two or more contexts shared the same global VM, the outermost
- restore (which in this case saves only local VM) checked for invalidrestore
- incorrectly. (isave.c)
- - resourceforall didn't remove its own temporary values from the
- operand stack when calling the procedure. (gs_res.ps)
- - resourceforall returned local instances even when currentglobal
- was true. (gs_res.ps)
- - If a context had unmatched saves, other contexts sharing the same
- local VM weren't blocked from running. (zcontext.c)
- - The NeXT compositing operations (Copy, etc.) weren't defined in
- systemdict. (gs_dpnxt.ps)
- - In the case of a stack overflow, some garbage could get left on
- the stack. (istack.c)
- - Stack overflow was reported prematurely -- typically when the
- stack depth had reached half the specified limit. (istack.c)
- - Freed ref arrays weren't filled with nulls, which could confuse
- the garbage collector later. (ialloc.c)
- - Certain stack overflow conditions could put a stack into an
- anomalous state that confused the garbage collector. (istack.c)
- - The maximum stack size could not be set to a value smaller than
- the current allocated space, but the minimum value should be the number of
- entries actually in use. (istack.c)
- - If .buildfont* had to add any elements to the font dictionary, a
- temporary pointer to the Encoding, FDepVector, or sfnts could become
- invalid, causing crashes or confusion. (zfont0.c, zfont2.c, zfont42.c)
- Changes exit, stop, and .stop so that if there is no matching dynamically
- enclosing context (loop or stopped), the effect is a quit, like the Adobe
- interpreters, and not an invalidexit. (zcontrol.c)
- Adds support for ImageTypes other than 1. (gs_init.ps, gs_lev2.ps,
- gs_res.ps, zimage2.c)
- Adds support for LanguageLevel 3 features:
- - Idiom recognition in 'bind'. (gs_init.ps, gs_dps.ps, gs_lev2.ps,
- gs_ll3.ps, zmisc3.c)
- - HalftoneTypes 6, 10, and 16. (gs_ll3.ps)
- - FunctionType resource category. (gs_ll3.ps)
- - FunctionType 2 and 3 Functions. (zfunc3.c)
- - PatternType 2 and smooth shading (structures and API only, no
- algorithms). (gs_init.ps, gs_ll3.ps, gs_res.ps, zshade.c)
- - In-RIP trapping (structures and API only, no algorithms).
- (gs_ll3.ps, ztrap.c)
- - ImageType 3 and 4 (masked images) (structures and parsing only, no
- algorithms). (gs_ll3.ps, gs_res.ps, iimage2.h, zimage.c, zimage2.c,
- zimage3.c)
- - DevicePixel color space. (gs_lev2.ps, zcolor2.c, zcspixel.c)
- - DeviceN color space. (gs_lev2.ps, igstate.h, zcsdevn.c)
- Adds support for Type 32 fonts. (gs_cidfn.ps, gs_init.ps, gs_typ32.ps,
- zchar32.c, zfont32.c)
- Adds debugging printout to the CFF loader. (gs_cff.ps)
- Removes support for _ds pointers referencing the stacks, since we no longer
- support 16-bit implementations. (iref.h, istack.h, interp.c, ireclaim.c,
- istack.c)
- Removes all #ifdef DPNEXT conditionalization. (We had intended to use this
- to delimit blocks of code to be released with the GPL, but we're now
- planning to release a much larger number of files.) (igstate.h, interp.h,
- istruct.h, interp.c, zgstate.c)
- Allows user parameters to be implemented partly in PostScript code, since
- this is required for some LanguageLevel 3 features (currently only
- IdiomRecognition). (gs_lev2.ps)
- Removes most of the references to a global process scheduler. Completing
- this will require passing an interpreter state structure to all operators in
- place of the operand stack pointer, which we aren't prepared to contemplate
- yet. (zcontext.c)
- Adds tracing for context operations, -Z' and -Z". (zcontext.c)
- Changes def so that it doesn't have a special exception for storing
- references to local objects into systemdict or its subsidiary dictionaries
- during initialization: such stores now must use .forceput (or .forcedef,
- defined in gs_init.ps using .forceput); changes .forceput to allow storing a
- local reference into any global dictionary, not only systemdict, if the save
- level is 0. (gs_dps1.ps, gs_init.ps, gs_lev2.ps, gs_pdfwr.ps, gs_res.ps,
- gs_statd.ps, zdict.c)
- Moves all of the initialization of internaldict to PostScript code.
- (gs_init.ps, iinit.c, zcontrol.c)
- Moves the JobName user parameter from C to PostScript code. (gs_lev2.ps,
- zusparam.c)
- Adds to every dictionary a pointer to the allocator that created it. This
- allows us to create and grow dictionaries without having to reference any
- global variables. (idict.h, idict.c, iinit.c)
- Implements the localfork operator, which creates contexts with private local
- VM. (gs_dps.ps, gs_init.ps, dstack.h, gsalloc.h, ialloc.c, icontext.c,
- iinit.c, interp.c, zcontext.c)
- Systematizes reliable access to variables in systemdict and userdict.
- (gs_dps1.ps, gs_dps2.ps, gs_fonts.ps, gs_init.ps, gs_lev2.ps, gs_statd.ps,
- gs_type1.ps)
- Starts to eliminate or segregate writable globals that point to
- heap-allocated data. (Writable globals containing procedures,
- run-time-settable switches, pointers to static data, or non-pointer values
- that are initialized once and idempotently are OK.) (iconf.c, iinit.c,
- imain.c, imainarg.c, interp.c, zfont1.c, zht2.c, ziodev.c, ztype.c,
- zupath.c, zusparam.c)
- Adds support for ImageType 2 (device source) images. (gs_dps.ps, zdps.c)
- Adds begin_typed_image to internal device procedure vectors. (zupath.c)
- Increases the maximum stack sizes to match the Adobe implementation more
- closely. (gs_init.ps)
- Adds a file_is_invalid macro to work around a bug in the Borland 5.0
- compiler. (files.h, ziodev.c, zvmem.c)
- Changes the character cache to be allocated in the C heap rather than global
- VM. This is required because cache chunks are now allocated from the same
- allocator as the cache. (zfont.c)
- Implements sizeimage and readimage, including a new .getbitsrect operator.
- (gs_dpnxt.ps, gs_init.ps, zdevice.c, zdpnext.c)
- Resets the maximum stack sizes earlier in initialization. (gs_init.ps)
- Tweaks the default CRD slightly (syntactically, not the content).
- (gs_lev2.ps)
- Adds support for PatternTypes other than 1. (gs_init.ps, gs_lev2.ps,
- gs_res.ps, zpcolor.c)
- Adds a pointer to the C heap allocator to the gs_main_instance structure,
- working towards the goal of removing all references to gs_memory_default.
- (iminst.h)
- Removes all remaining uses of gs_malloc and gs_free from the interpreter.
- (igc.h, igc.c, imain.c, zfdctd.c, zfdcte.c)
- Adds an explicit #include for all remaining uses of gs_memory_default in the
- interpreter. (zfdctd.c, zfdcte.c, zvmem.c)
- Adds a map_color_rgb_alpha driver procedure, complementing
- map_rgb_alpha_color. (zupath.c)
- Removes the obsolete writeppmfile operator. (zwppm.c[deleted])
- Updates the implementation of the image operators to match the change from
- HasAlpha to Alpha in the image definition structure. (iimage.h, zcolor1.c,
- zimage.c)
- Reimplements upath in C code, since UnpaintedPath requires it. (zupath.c)
- Updates interpreter code for the change in the GC interface. (imemory.h,
- istruct.h, icontext.c, igc.c, igcref.c, igcstr.c, ilocate.c, iname.c,
- isave.c, iscan.c, istack.c, zfproc.c)
- Implements the compositing operators. (zdpnext.c, zdps.c, zupath.c)
- Changes some matrix operators to pass unpacked matrices on the stack.
- (zmatrix.c)
- Moves the alpha-related operators to where they belong. (zcolor.c,
- zdpnext.c)
- Changes all calls on getenv to gp_getenv. (imainarg.c, zmisc.c)
- </pre><h3><a name="V5.20_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - PostScript pass-throughs caused an error. They are now always
- executed; probably we should offer the option of not executing them, for
- closer compatibility with Acrobat. (pdf_draw.ps, pdf_main.ps)
- - Font resources, unlike all other types of resources, couldn't be
- inherited from an ancestor Page(s) object. (pdf_font.ps)
- - Resources appearing only in Form or Pattern dictionaries weren't
- recognized as being present. (pdf_base.ps, pdf_draw.ps, pdf_main.ps)
- Moves closer to supporting Type 0 (and CID) fonts. (pdf_font.ps)
- </pre><h3><a name="V5.20_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - If the image was very narrow or very shallow, the interpolated
- image scaling stream could make an invalid memory reference. (siscale.c)
- Removes the last few references to gs_malloc and gs_free from stream code.
- Clients now *must* call the set_defaults procedure for the DCT filters
- before initializing them: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
- (sdct.h, sdctd.c, sdcte.c, sjpegc.c)
- Adds an explicit #include for all remaining uses of gs_memory_default.
- (sdctd.c, sdcte.c, szlibd.c, szlibe.c)
- </pre><h3><a name="V5.20_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Some files that included shc.h didn't include scommon.h. (shc.h)
- - A file didn't include std.h before <stdio.h>. (gslib.c)
- - There was an unnecessary extern (cleanup only). (gscsepr.c)
- - The uid.xvalues member of gs_client_pattern structures wasn't
- traced by the GC. (gspcolor.h)
- - If an Interpolated image reached the end of the input at exactly
- the wrong time, an assertion could fail. (gxiscale.c)
- - With non-ANSI compilers, an integer constant passed to the fmod
- library function, which requires a floating point argument, could cause a
- floating point exception or an incorrect result. (gsmisc.c)
- - An error in computing the bounding box sometimes caused strokes to
- print incorrectly (for example, some graduated fills printed incorrectly).
- (gxstroke.c)
- Implements an undocumented (!) feature of Type 2 CharStrings, namely that if
- the endchar operator is invoked with 4 or 5 operands on the stack, it is
- equivalent to the Type 1 seac operator (without the asb operand). This
- required changing the implementation of seac so that it does the base
- character first, rather than the accent. (gxtype1.h, gstype1.c, gstype2.c,
- gxtype1.c)
- Adds support for ImageTypes other than 1. (gsiparam.h, gximage.h,
- gxiparam.h, gdevddrw.c, gsimage.c, gximage.c, gximage0.c)
- Adds support for ImageType 2 (device source) images. Currently we only
- handle the simplest case (source is not transformed). (gsimage.h,
- gsiparm2.h, gsimage.c, gximage2.c)
- Adds support for LanguageLevel 3 features:
- - FunctionType 2 and 3 Functions. (gsfunc3.h, gsfunc3.c)
- - PatternType 2 and smooth shading (structures and API only, no
- algorithms). (gscolor3.h, gsptype2.h, gsshade.h, gxistate.h, gscolor3.c,
- gsshade.c)
- - In-RIP trapping (structures and API only, no algorithms).
- (gstrap.h, gstrap.c)
- - ImageType 3 (masked images) (structures and API only, no
- algorithms). (gsiparm3.h, gximage3.c)
- - ImageType 4 (chroma-keyed masked images). (gsiparm4.h,
- gximage4.c)
- - DevicePixel color space. (gscpixel.h, gscspace.h, gscpixel.c,
- gximono.c)
- - DeviceN color space. (gscspace.h, gscdevn.c)
- Removes the #ifdef FUTURE around the code for passing multi-plane and
- interpolated images through the band list (version 5.01) and for banded
- filling and stroking with colored halftones (version 4.71). This code is
- now part of the standard release. (gxcldev.h, gxclpath.h, gxdht.h,
- gxhttype.h, gsht.c, gxclimag.c, gxclread.c, gximage.c)
- Adds a _ptrs6 structure definition macro. (gsstruct.h)
- Removes #ifdef DPNEXT conditionalization, as in the interpreter (see above).
- (gzstate.h, gsdps.c, gsstate.c, gximage.c, gximage5.c)
- Starts to eliminate or segregate writable globals that point to
- heap-allocated data, as in the interpreter (see above). (gsbittab.h,
- gscdefs.h, gsdcolor.h, gxclist.h, gxsample.h, gzht.h, gconf.c, gsbitops.c,
- gsbittab.c, gscdef.c, gsdparam.c, gsflip.c, gsinit.c, gsmatrix.c,
- gspcolor.c, gsstate.c, gxcht.c, gxclist.c, gxcmap.c, gxdcolor.c, gxdither.c,
- gxht.c, gximage.c)
- Removes the division between 'low-level' and 'high-level' band list
- facilities. (gxcldev.h, gxclimag.c, gxclist.c, gxclpath.c)
- Renames gximage*.c as gxi*.c, since these files apply only to ImageType 1
- images and the use of numerical suffixes was confusing. (gximage.c =>
- gxiinit.c, gximage0.c => gxidata.c, gximage1.c => gxifast.c,
- gximage2.c => gximono.c, gximage3.c => gxicolor.c, gximage4.c =>
- gxi12bit.c, gximage5.c => gxiscale.c)
- Provides the ability to enumerate a clipping path (based on the clipping
- list) using an enumerator, in the same way as an ordinary path. (gxpath.h,
- gzcpath.h, gzpath.h, gxcpath.c, gxpath2.c)
- Speeds up mem_mapped4_copy_mono substantially. (gdevm4.c)
- Removes all remaining uses of gs_malloc and gs_free in the library, other
- than in drivers. This turned out to require changing a couple of
- initialization APIs. (gsfont.h, gslib.h, gxdevice.h, gxfcache.h, gsfont.c,
- gxccman.c)
- Reduces the writable statics related to the default (C heap) allocator to a
- single pointer. (gsmalloc.h, gsmemory.h, gsinit.c, gsmemory.c)
- Adds support for PatternTypes other than 1. (gscolor2.h, gspcolor.h,
- gsptype1.h, gxcolor2.h, gspcolor.c)
- Adds an explicit #include for all remaining uses of gs_memory_default that
- aren't covered by gxdevice.h. (gxclmem.c)
- Splits off the default implementations of the bit-copying device procedures,
- because the file was getting too large. (gdevdbit.c, gdevdflt.c)
- Adds a procedure for calculating the difference of two rectangles, needed
- for Type 2 images. (gsrect.h, gxpath.h, gsutil.c)
- Extends the image machinery to allow alpha values to either precede or
- follow color values in image data, replacing HasAlpha with Alpha in the
- ImageType 1 image structure. (gsiparam.h, gximage.h, gsimage.c, gxclimag.c,
- gxclread.c, gxicolor.c, gxiinit.c, gxiscale.c)
- Extends the path enumeration API to decouple path copying from coordinate
- transformation. (gspath.h, gzpath.h, gspath1.c, gxpath2.c)
- Changes the garbage collector interface so that all procedures are passed
- through a structure rather than being referenced as externs. This allows
- programs other than the GC itself to enumerate and relocate pointers, and
- also removes all static dependencies on the GC from the library. This
- involves a NON-BACKWARD-COMPATIBLE CHANGE to the argument list of enum_ptrs
- procedures, and to the implementation of both enum_ptrs and reloc_ptrs. (We
- hope that the new macros we've introduced will avoid non-backward-compatible
- changes in the future.) (gsstruct.h, gdevmem.c, gsalloc.c, gscdevn.c,
- gscolor.c, gscolor2.c, gscsepr.c, gsdevice.c, gsfont.c, gshtscr.c,
- gsimage.c, gsmemory.c, gspcolor.c, gsstate.c, gxcmap.c, gxcpath.c, gxht.c,
- gxiinit.c)
- Moves the image compositing code into the library from its inappropriate
- home in the interpreter. (gsdpnext.h)
- Splits up gsbitops.h into client interface and implementation support.
- Removes some obsolete code at the same time. (gdevmem.h, gsbitops.h,
- gxbitops.h, gsbitops.c)
- Creates the concept of compositing functions and compositing devices
- (compositors). (gscompt.h, gxcomp.h)
- Implements the default compositor for alpha-based compositing. (gsalphac.h,
- gsalphac.c)
- Creates a store_alpha device that adds alpha channel storage to any other
- device. (gdevalph.c)
- Moves alpha channel capability into the dpsnext feature, where it should
- have been all along. (gsalpha.h, gscolor.h, gsalpha.c, gscolor.c,
- gsstate.c)
- Implements color premultiplying by (non-unity) alpha values. Currently we
- always premultiply towards white: see gxalpha.h for some comments.
- (gxalpha.h, gxcmap.c)
- Reduces the amount of boilerplate in the RasterOp implementation table.
- (gsroptab.c)
- Adds an arg_push_temp_string procedure to accommodate the new gp_getenv
- call. (gsargs.h, gsargs.c)
- Updates various library APIs to account for the more careful handling of
- file name length. (gdevprn.h, gxclio.h, gxclist.h, gsdevice.c, gxclfile.c,
- gxclmem.c)
- </pre>
- <hr>
- <h2><a name="Version5.10"></a>Version 5.10 (11/23/97)</h2>
- <p>
- This release, not originally planned, greatly reduces the size of PDF files
- produced by the pdfwrite device, fixes a number of minor problems in PDF
- output, and optionally produces output compatible with Acrobat 2.x, in order
- to address problems reported by NSF in processing these files as part of
- their FastLane electronic proposal submission process. Aside from that, and
- some localized bug fixes, it has minimal changes from 5.03.
- <h3><a name="V5.10_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - ansihead.mak referred to unix-ansi.mak, which is actually named
- unixansi.mak. (ansihead.mak)
- - README referred to an "If you need help" section that was moved to
- new-user.txt. (README)
- Updates build information for HP-UX systems. (make.txt)
- Updates the information for getting Martin Lottermoser's hpdj driver.
- (new-user.txt)
- Improves the error message when a user tries to invoke gswin32c without
- explicitly selecting a device. (dwmainc.cpp)
- Removes the author's name and e-mail address from the pdf2ps man page, at
- his request. (pdf2ps.1)
- Improves the documentation for BandBufferSpace. (language.txt)
- </pre><h3><a name="V5.10_Procedures"></a>Procedures</h3><pre>
- Changes the VMS command files so that they don't echo the commands.
- (append_l.com, copy_one.com, rm_all.com, rm_one.com)
- </pre><h3><a name="V5.10_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - The "lp" command files all inappropriately set the top margin to
- 0.1". (lp386.bat, lp386r2.bat, lpgs, lpgs.bat, lpr2, lpr2.bat)
- - The lp386[r2].bat command files inappropriately set the
- LanguageLevel to 1. (lp386.bat, lp386r2.bat)
- </pre><h3><a name="V5.10_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The PDF writer got confused about the current color if the input
- contained text strings separated only by color changes. (gdevpdf.c)
- - Some casts between const char * and const byte * were incorrect
- (warnings only). (gdevpdft.c)
- Adds a NoCancel parameter to the winpr2 device, which suppresses display of
- the dialog box. (gdevwpr2.c)
- </pre><h3><a name="V5.10_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - An "extern" was omitted, causing a duplicate definition of
- build_function_procs. (ifunc.h)
- - The global pseudo-operator table was too small, causing a
- limitcheck in ps2ascii. (iinit.c)
- - setcolorspace with a Pattern space with no underlying space would
- cause an error if the current color space was a Pattern space. (zpcolor.c)
- - The Decode key was optional, not required, in the dictionary form
- of image[mask]. (zimage2.c)
- Adds two more PCL/PJL reset sequences to the list of sequences to ignore.
- (gs_init.ps)
- </pre><h3><a name="V5.10_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Multi-screen color halftones could produce "seams". (gxcht.c)
- - A bug in the gcc optimizer on H-P RISC workstations caused all
- curves to be output as lines. (gxpflat.c)
- - If a non-standard OtherSubr was called before the [h]sbw in a Type
- 1 font, a crash could occur. (gxhint3.c)
- - gxclist.c didn't include string_.h. (gxclist.c)
- </pre>
- <hr>
- <h2><a name="Version5.07"></a>Version 5.07 (limited) (10/31/97)</h2>
- <p>
- A few more bug fixes for the 5.10 release.
- <h3><a name="V5.07_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - Some file and directory names hadn't been updated to match the new
- directory structure on the primary server. (make.txt, new-user.txt)
- Adds the URL for reaching URW++. (Fontmap.*)
- </pre><h3><a name="V5.07_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - Because the C % operator isn't equivalent to 'modulus' for
- negative numerators, gx_default_strip_tile_rectangle could crash in some
- cases. (gxdevice.h, gdevdflt.c)
- - In the PDF writer, Dest values were correct (page numbers) for
- GoToR actions, but were incorrect (should be page object references) for
- other actions; also, Rect values were transformed, but should not be.
- (gdevpdfm.c)
- - In the PDF writer, articles and bookmarks could attempt to write
- multiple Contents streams, which is not allowed. (gdevpdfx.h, gdevpdf.c,
- gdevpdfm.c)
- - The PDF writer ignored PS (PostScript pass-through) pdfmarks.
- (gdevpdfm.c)
- - The PDF writer didn't write out the color space parameters for
- CIE-based spaces. (gdevpdfi.c)
- </pre><h3><a name="V5.07_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Suffix subclass structures with 4 added pointers skipped the first
- pointer in the superclass when garbage collecting, possibly causing invalid
- memory accesses. (gsstruct.h)
- - An argument list incompatibility in a procedure used in a static
- structure initialization upset some compilers. (gsfunc.h, gsfunc0.c)
- </pre>
- <hr>
- <h2><a name="Version5.06"></a>Version 5.06 (limited) (10/7/97)</h2>
- <p>
- This fixes a few more bugs in the PDF writer, and a few other very obscure
- problems. It also adds support for Functions and brings multiple contexts
- closer to working, neither of which we expect actually to be used any time
- soon. This is intended to be the candidate fileset for the 5.10 release,
- but since we had to tinker with a delicate part of the PDF writer to fix a
- problem affecting visual quality with Acrobat, there may be new bugs that
- will have to be fixed in yet another candidate fileset.
- <h3><a name="V5.06_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - Jim McPherson's e-mail address was out of date. (devices.txt)
- - Invoking ps2pdf with only a single file name is supported on some
- versions of Windows NT and OS/2, not only on Unix. (ps2pdf.txt)
- - The ps2pdf documentation didn't indicate that ps2pdf can use the
- Windows "console mode" executable as well as the MS-DOS executable.
- (ps2pdf.txt)
- - The list of which Distiller parameters actually have an effect was
- incorrect. (gdevpdfp.c)
- Notes that the cdj550 driver is compatible with the H-P 660C and 660Cse.
- (devs.mak, devices.txt)
- Adds a note about using Acrobat Reader fonts. (install.txt, use.txt)
- Notes that the LJ 5P, like the 5L, is not a PCL XL printer. (devs.mak)
- Notes problems and possible problems with certain versions of the Borland
- C++ compiler. (make.txt)
- Notes the change in -Z:. (use.txt)
- Updates the uniprint documentation for this release. (devices.txt)
- Expands the rationale for the large resolution in the bbox device.
- (gdevbbox.c)
- Notes that the H-P DeskJet 600 series can use the djet500 driver with -r600.
- (devs.mak)
- </pre><h3><a name="V5.06_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - Vector devices didn't include a necessary dependency on the stream
- package. (lib.mak)
- - There were several bugs in the ps2pdf.bat file. (ps2pdf.bat)
- Changes -Z: so it prints some summary lines as well as minimal information
- about banding. This makes the -ZA trace compatible with our memory leak
- tool. (iminst.h, imain.c)
- </pre><h3><a name="V5.06_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - ps2epsi sometimes produced a too-large bounding box, or even
- caused a rangecheck. (ps2epsi)
- At the advice of a user, removes the RESOLUTION=100 line from pv.sh.
- (pv.sh)
- </pre><h3><a name="V5.06_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The PDF writer produced incorrect output for stroke operations
- with unusual CTMs, because PDF, unlike PostScript, applies the CTM to the
- path at the time of the fill or stroke, not as the path is being
- constructed. (gdevpdfd.c)
- - Vector devices returned an error, instead of falling back to the
- default implementations, when filling or stroking with a pattern.
- (gdevvec.c)
- - The PDF writer freed an internal stream structure using the wrong
- allocator, possibly causing memory corruption. (gdevpdf.c)
- - The uniprint driver had some compilation problems, and possibly
- other problems as well (consult the source file). (gdevupd.c, *.upp)
- - With -dNOCACHE, the PDF writer wrote all text in the base 14 fonts
- twice, once as text and once as outlines. (gs_pdfwr.ps, gdevpdfd.c)
- - The PDF writer didn't properly recognize Symbol and ZapfDingbats
- as being among the base 14 fonts. (gs_pdfwr.ps)
- - When using Acrobat Reader with font smoothing turned on, the base
- 14 fonts appeared too bold on the screen in files produced by ps2pdf,
- because Reader decides that a 100-unit font at 1 unit = 0.1 point should be
- bolder than a 10-unit font at 1 unit = 1 point. (gdevpdfx.h, gdevpdf.c,
- gdevpdft.c)
- - The PDF writer didn't convert View/Page specifications for
- bookmark pdfmarks to a Dest key, causing bookmarks not to work.
- (gdevpdfm.c)
- Speeds up the PDF writer by only passing the encoding if it isn't
- StandardEncoding. (gs_pdfwr.ps, gdevpdft.c)
- Changes the PDF writer's handling of unencoded glyphs. Adds device
- parameters ReEncodeCharacters and ReAssignCharacters to control how
- unencoded glyphs are handled. (These parameters will go away when we handle
- variant encodings in full generality.) (gdevpdfx.h, gdevpdf.c, gdevpdfp.c,
- gdevpdft.c)
- </pre><h3><a name="V5.06_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - setpagedevice didn't restore the stack properly if it failed.
- (gs_setpd.ps)
- - 0 identmatrix didn't cause an error. (gs_init.ps)
- - Devices expecting array-valued parameters didn't accept packed
- arrays. (iparam.c)
- Starts to de-implement support for special handling of the stacks on
- machines with 16:16 addressing. Currently this only happens if DPNEXT is
- defined. (istack.h)
- Brings multiple contexts closer to working. The interpreter can now run
- some very simple test cases. (int.mak, icontext.h, igstate.h, interp.h,
- istruct.h, icontext.c, interp.c, zcontext.c, zgstate.c)
- Adds support for FunctionType 0 Functions. (ifunc.h, iref.h, store.h,
- zfunc.c, zfunc0.c)
- Updates a few remaining pseudo-operators in gs_init.ps to take advantage of
- automatic operand and dictionary stack restoration: eexec, identmatrix,
- pathbbox. Not updated yet: filter. (gs_init.ps)
- </pre><h3><a name="V5.06_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Separation color spaces weren't supported. (gs_pdf.ps,
- pdf_draw.ps)
- </pre><h3><a name="V5.06_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The size argument to gs_free was wrong in an out-of-memory case.
- (This was irrelevant, since gs_free only uses the size argument for
- error-checking during debugging.) (gdevprn.c)
- - When freeing a block on the C heap, if -Z@ was set, the block's
- header wasn't filled with the sentinel pattern. (Only relevant when
- debugging.) (gsmemory.c)
- - The C heap allocator didn't fix up pointers properly when freeing
- a block, causing unpredictable memory corruption after a 'resize' call.
- (gsmemory.c)
- - Using a show operator inside the procedure of a cshow with a
- composite font could cause an invalid access. (gschar.c)
- Adds support for FunctionType 0 Functions. (gsdsrc.h, gsfunc.h, gsfunc0.h,
- gxfunc.h, gsdsrc.c, gsfunc.c, gsfunc0.c)
- Moves the GC descriptor for arrays of constant strings to a place where it
- is more visible. (gscie.h, gsstruct.h, gscie.c, gsmemory.c)
- </pre>
- <hr>
- <h2><a name="Version5.05"></a>Version 5.05 (limited) (9/24/97)</h2>
- <p>
- This fixes a few bugs found in the first few days of testing 5.04. There
- will probably be several more small incremental filesets before the next
- public release.
- <h3><a name="V5.05_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The Windows code wouldn't compile with the latest MSVC++, because
- Microsoft changed the prototype for fprintf. (gp_msio.c)
- </pre><h3><a name="V5.05_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A picky compiler complained about some omitted casts. (gdevpdf.c,
- gdevpdft.c)
- - Writing a PDF file with any synthesized fonts could produce
- slightly garbled output or possibly even an invalid memory access, because a
- string was not terminated. (gdevpdft.c)
- - When writing a PDF file, the first character of a string could get
- placed off the page, because of a matrix bookkeeping error. (gdevpdft.c)
- </pre><h3><a name="V5.05_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - In case of an error, setpagedevice executed a 'stop'
- unconditionally, rather than just signalling an error through the error
- machinery. (gs_setpd.ps)
- </pre><h3><a name="V5.05_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Files with unknown operators caused errors, even if the BX
- operator was used to disable the error report. (pdf_base.ps)
- </pre>
- <hr>
- <h2><a name="Version5.04"></a>Version 5.04 (limited) (9/21/97)</h2>
- <p>
- This is a test fileset for an unplanned release that greatly reduces the
- size of PDF files produced by the pdfwrite device, and also optionally
- produces output compatible with Acrobat 2.x, in order to address problems
- reported by NSF in processing these files as part of their FastLane
- electronic proposal submission process. Aside from that, and some localized
- bug fixes, it has minimal changes from 5.03.
- <h3><a name="V5.04_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - George Cameron's address was listed with a domain of .ukis rather
- than .uk. (devices.txt)
- - The default value of ORIENT1 was given as false rather than true.
- (use.txt)
- - The documentation for ps2pdf said one can omit the output file
- name, but this is only true on Unix systems. (ps2pdf.txt)
- - The documentation for ps2pdf didn't make clear that the executable
- must be named gs on Microsoft OSs. (ps2pdf.txt)
- - ht_cache is actually allocated with the first gstate, not on
- demand. (gsstate.c)
- Slightly improves the documentation of .type1execchar. (zchar1.c)
- Clarifies the distinction between Ghostscript (PostScript) commands and
- shell commands, for the benefit of users brainwashed by Microsoft.
- (use.txt)
- Improves the usage synopsis in the ps2epsi man page. (ps2epsi.1)
- Adds a reference to Uli Wortmann's H-P drivers. (new-user.txt)
- Improves the documentation of GS_FONTPATH, distinguishing it from GS_LIB and
- the search path. (use.txt)
- Notes that on some systems, one must substitute 'installbsd' for 'install'
- in the makefile and make other edits. (install.txt, ansihead.mak,
- cc-head.mak, gcc-head.mak)
- Notes that ps2epsi is no longer maintained. (ps2epsi.ps)
- Clarifies the availability of support. (new-user.txt)
- </pre><h3><a name="V5.04_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The uniprint driver was accidentally omitted from the default
- Watcom (MS-DOS) and OS/2 configurations. (watc.mak, os2.mak)
- - The suggested compiler switches for Digital Unix were incorrect.
- (make.txt)
- - The cp.cmd script file didn't work in the newest versions of OS/2.
- (cp.cmd)
- - The compilation rules for some Windows-specific files didn't
- include ccf32.tr in their dependencies, which could cause the compilation to
- fail. (winint.mak)
- Removes the lev2min configuration, since we no longer support 16-bit Windows
- environments. (int.mak)
- </pre><h3><a name="V5.04_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - ps2epsi.bat always appended to the output file, rather than
- writing over it. (There are probably other bugs in this script file.)
- (ps2epsi.bat)
- - The output of pdf2ps didn't execute properly on some printers,
- especially Level 1 printers. (gs_pdf.ps)
- Makes ps2pdf do an initial 'save', which causes fonts to be retained better
- across pages. (ps2pdf, ps2pdf.bat)
- Adds an option to pcharstr.ps to produce C-like rather than PostScript-like
- output. (pcharstr.ps)
- </pre><h3><a name="V5.04_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The LaserJet III and higher printers weren't able to print in the
- narrow strip between 1/6" and 1/4" from the left edge of the page.
- (gdevdjet.c)
- - The PCL XL drivers produced incorrect output which often caused a
- PCL XL NoCurrentFont error at the beginning of the second page. (gdevpx.c)
- - The GC descriptors for the pswrite device and for PS/PDF devices
- were incorrect, causing the GC to smash memory. (gdevpsdf.h, gdevps.c)
- - The pdfwrite device didn't have a GC descriptor at all. ******
- DISABLED because the device allocates all its temporary structures directly
- on the C heap. ****** (gdevpdf.c)
- - When the PDF writer wrote out the Dest key in an action
- dictionary, it always used a page object instead of a page number, even if
- the page was in another file or didn't exist; it now always uses a page
- number. (gdevpdfm.c)
- - The PDF writer gave an error if a file redefined any of the 14
- known fonts. (gs_pdfwr.ps)
- - The PDF writer didn't handle copy_mono with a non-zero sourcex.
- (This probably had no effect in practice.) (gdevpdfi.c)
- Splits off gdevpdfd.c (driver drawing procedures) from gdevpdf.c, since the
- file was getting too large. (gdevpdfx.h, gdevpdf.c, gdevpdfd.c)
- Adds recognition of the CompressPages, CompatibilityLevel, and
- UseFlateCompression device (distiller) parameters to the PDF writer. If
- CompressPages is true (default), CompatibilityLevel is 1.2 (default), and
- UseFlateCompression is true (default), page contents will be compressed with
- Flate ("zip") compression; otherwise, they will not be compressed.
- Restructures the PDF writer to produce much smaller and faster PDF files, by
- restructuring its handling of text to defer all resources to the end of the
- file, eliminate duplicate Font resources, turn characters into Type 3 fonts
- rather than Image XObjects, use more efficient text positioning commands,
- and optionally (but by default) Flate-compress the contents streams. Also
- removes some unnecessary spaces in the output. (gdevpdfx.h, gdevpdf.c,
- gdevpdfd.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
- Improves the PDF writer so that it no longer converts stroke operations with
- non-uniform CTMs to fills, and doesn't bother to stroke empty paths at all.
- (gdevpdfd.c)
- Speeds up the "alternate" X devices substantially. (gdevxalt.c)
- </pre><h3><a name="V5.04_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Filling a string with a Pattern caused a crash with the PDF
- writer. (gs_pdfwr.ps)
- - Converting a file with no marks at all to PDF produced invalid
- output. (gdevpdf.c)
- - .endpage, which is called at the end of every page, sometimes left
- 2 extra values on the stack. (gs_setpd.ps)
- - A definefont with a Type 1 font lacking a .notdef character didn't
- cause an invalidfont error. (bfont.h, zfont1.c, zfont2.c)
- - On anti-aliased devices, characters from Type 1 fonts with an
- incorrect or missing FontBBox came out a factor of 2 or 4 too small if the
- character was small enough to cache. (zchar1.c)
- - If a file redefined certain operators, loading Type 1 fonts could
- fail. This problem was fixed in an earlier release, and somehow the fix got
- undone. (gs_type1.ps)
- - cshow didn't set the correct current font when running the
- procedure, and didn't restore it properly afterwards. (zchar.c, zchar2.c)
- - With certain compilers, the interpreter loop caused unaligned
- memory accesses on DEC Alpha systems running Windows NT. (iref.h)
- Adds freelist validation to the memory checker. (ilocate.c)
- Changes the debugging switch for bypassing the garbage collector from
- compile-time to run-time. (igc.c)
- Adds the real operators for view clipping (but they don't do anything yet,
- because view clipping isn't implemented at the library level). (zdps.c,
- zvmem.c)
- Completes the implementation of defineusername. (zdps.c)
- Adds an implementation of wtranslation, by simply reading a device parameter
- of the same name. (gs_dps.ps)
- </pre><h3><a name="V5.04_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Lab color spaces weren't implemented, and gave an error.
- (gs_pdf.ps)
- - Images only worked with built-in color spaces, not color space
- resources. (pdf_draw.ps)
- - Embedded font subsets were treated as undefined. (pdf_font.ps)
- </pre><h3><a name="V5.04_Library"></a>Library</h3><pre>
- Fixes bugs:
- - strokepath sometimes clipped the path to the current clipping
- region, which it should never do. (gxstroke.c)
- - The initial X/Y position for Type 2 charstrings (CFFs) sometimes
- was set incorrectly. (gstype2.c)
- - Memory management for dash patterns was still incorrect (despite
- the fix in 4.36), possibly causing snarled freelists and invalid memory
- references. (gsline.c, gsstate.c)
- - The saved gstate of a Pattern instance was freed properly when the
- instance was freed by reference counting as a result of setting the color or
- color space, but not when the instance was freed by reference counting
- anywhere else. (gspcolor.c)
- - A test for whether to use a slower form of oversampling was
- incorrect. (Probably only a performance bug.) (gschar.c)
- - cshow didn't set the correct current font when running the
- procedure, and didn't restore it properly afterwards. (gsfont.h, gschar.c,
- gsfont.c)
- Improves allocator validity checking when DEBUG is set. (gsalloc.c)
- Adds a couple of missing FontType values. (gxftype.h)
- Changes the default conversions between CMYK and RGB colors back to the
- Adobe rules documented in the Red Book, to reduce output differences from
- Adobe implementations. (gxdcconv.c)
- Adds a graphics state element for view clipping, under an #ifdef DPNEXT, and
- implementations of the view clipping operators (but not the logic for doing
- the actual clipping). (gsstate.h, gzstate.h, gsstate.c)
- Removes the redundant clip_rule variable from the graphics state (which
- wasn't used for anything). (gzstate.h, gspath.c)
- </pre>
- <hr>
- <h2><a name="Version5.03"></a>Version 5.03 (8/8/97)</h2>
- <p>
- The only reason for this release is to fix two serious bugs introduced
- between 5.01 and 5.02. We fixed a few other very localized and low-risk
- bugs at the same time.
- <h3><a name="V5.03_Documentation"></a>Documentation</h3><pre>
- Removes the "(if relevant)" from the bug reporting form, since about 25% of
- the forms are submitted without a URL or any other data. (bug-form.txt)
- Adds a discussion of single-use procedures to the style guide.
- (c-style.txt)
- Updates the information about obtaining Ghostscript on physical media.
- (new-user.txt)
- Updates the information about ps_view. (new-user.txt)
- </pre><h3><a name="V5.03_Procedures"></a>Procedures</h3><pre>
- Adds the uniprint driver to all platforms. (*.mak)
- Changes the contents of the pc.tar.gz archives:
- - Adds *.upp.
- - Removes *.res.
- - Removes cp.bat, font2c.bat, mv.bat, rm.bat, wmakebat.bat,
- cp.cmd, mv.cmd and rm.cmd, and gv-vms.hlp.
- Removes an obsolete script file. (tar_mv)
- </pre><h3><a name="V5.03_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The uniprint driver didn't handle an increase in media height
- correctly. (gdevupd.c)
- </pre><h3><a name="V5.03_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - Printing to printers other than LPT1 under MS Windows no longer
- worked. (bug introduced in 5.02) (gp_mswin.c)
- - Drag-and-drop didn't work under Windows NT (or other 32-bit
- Windows environments). (dwtext.cpp)
- - Sequent systems needed an additional system header file.
- (time_.h)
- </pre><h3><a name="V5.03_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - The substitutions Myriad => Times and Minion => Helvetica were
- incorrect; they should be the other way around. (gs_fonts.ps)
- - MyriadPkg wasn't recognized as a condensed font. (gs_fonts.ps)
- - Univers wasn't recognized as mapping to Helvetica. (gs_fonts.ps)
- </pre><h3><a name="V5.03_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - A line of debugging code, printing the sections of 3 regions of
- TrueType fonts being loaded, was accidentally left in. (gs_ttf.ps)
- - TrueType fonts whose pre-glyf data had odd length were broken
- (typically gave a rangecheck error), because of the fix to treat the odd
- byte of individual sfnts strings as padding per Adobe documentation. (bug
- introduced in 5.02) (gs_ttf.ps)
- </pre><h3><a name="V5.03_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - If a real-number token in a CFF had an even number of nibbles, a
- unmatchedmark error would occur. (gs_cff.ps)
- - If the strings Index in a CFF included an empty string, a
- rangecheck error would occur. (gs_cff.ps)
- - CFFs with non-standard Encodings that included standard strings
- would get a typecheck error. (gs_cff.ps)
- </pre><h3><a name="V5.03_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Using %d in an OutputFile name didn't substitute the page number.
- (bug introduced in 5.02) (gsdevice.c)
- - In Type 2 CharStrings, if a hintmask occurred at the beginning, it
- wasn't recognized as also incorporating the function of vstemhm.
- (gstype2.c)
- - The data bytes for hintmask and cntrmask weren't printed for
- debugging. (gstype2.c)
- </pre>
- <hr>
- <h2><a name="Version5.02"></a>Version 5.02 (7/28/97)</h2>
- <p>
- Because of an ISP failure that delayed the 5.0 announcement for 12 days, the
- 5.01 release only responded to a few days of bug reports; 5.02 fixes some
- problems that should have been fixed in 5.01, as well as a large number of
- obscure problems uncovered by Genoa testing.
- <h3><a name="V5.02_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The documentation for building on the Intergraph Clipper was out
- of date. (make.txt)
- - ESC was claimed to be a self-delimiting character. (gs_init.ps)
- - Removes the documentation claiming that ^D and ^Z are
- self-delimiting. (language.txt)
- - Document that -dSUBSTFONT doesn't create a font with the requested
- font name. (use.txt)
- - Ghostscript was defined as compatible with PDF 1.1 rather than PDF
- 1.2. (language.txt)
- - The description of gcc problems on Alpha didn't make it clear that
- the use of gcc was optional, not required. (make.txt)
- - The description of how to use GNU make on VMS systems was
- inaccurate. (make.txt)
- Improves the documentation for building on H-P RISC systems. (make.txt)
- Corrects the discussion of Cygnus' licensing terms for the cygwin32
- environment. (make.txt)
- Removes the apology for the poor quality of Ghostscript's TrueType
- rasterizer, since the quality is now quite good. (fonts.txt)
- Documents the fact that one must use # rather than = with Watcom C.
- (use.txt)
- Documents the updates and additions to the uniprint driver. (devices.txt)
- Adds some material to Aladdin's C style guide. (c-style.txt)
- Documents the fact that using gmake requires VMS 6.2 or later on Alphas and
- 7.1 (perhaps 7.0) or later on VAXen. (make.txt)
- Adds an example EPS file. (psfiles.txt)
- Adds some information about compiling and linking under OS/2. (make.txt)
- Expands the description of XLIBDIR and XLIBDIRS. (*head.mak)
- Adds a new pointer to information on using a Kanji font with Ghostscript.
- (new-user.txt)
- Documents the use of /Resource/<category>/<resource> as the default place
- where resources are sought. (use.txt)
- Updates the documentation on building with MSVC++ to reflect the makefile
- changes. (make.txt)
- </pre><h3><a name="V5.02_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - In openvms.mak, several ifdef tests were wrong. (openvms.mak)
- - One CP command was slightly inconsistent with the others.
- (zlib.mak)
- - If libz and libpng were both shared, libz was linked first,
- resulting in some undefined references. (libpng.mak)
- - The VMS makefile didn't interact properly with VMS's version
- numbering facility. (copy_one.com)
- Updates the VMS DCL script one last time, to handle libpng version 96.
- (vms.mak)
- Restructures the MSVC++ makefiles to allow building the graphics library
- without the PostScript interpreter. (bcwin32.mak, msvc4.mak[deleted],
- msvc5.mak[deleted], msvc32.mak, msvccom.mak, watcw32.mak,
- wincom.mak[deleted], winint.mak, winlib.mak)
- Adds a makefile to create a library-only demo program under MSVC++, like the
- ones for Unix/gcc and MS-DOS/Watcom. (msvclib.mak)
- Adds an example EPS file. (ridt91.eps, unix-end.mak)
- Removes support for libpng release 0.88, which is now quite obsolete.
- (libpng.mak)
- </pre><h3><a name="V5.02_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - ps2pdf.bat, unlike ps2pdf, didn't accept options. (ps2pdf.bat)
- - echogs used 'const' in one place, which wasn't accepted by some
- very old compilers. (echogs.c)
- - pdf2ps output Orientation, which it shouldn't. (pdf_main.ps)
- Makes the usage message from ps2pdf.bat include the options, like ps2pdf.
- (ps2pdf.bat)
- Changes the printpath utility so that its output is legal PostScript code.
- (ppath.ps)
- Makes pdf2dsc add DSC comments for the bounding box (if a CropBox is
- available in the PDF file) and the orientation. (pdf2dsc.ps)
- </pre><h3><a name="V5.02_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The get_bits operation wasn't implemented for the vgalib driver.
- (gdevvglb.c)
- - The dnj650c driver output an extra % near the end of the file.
- (gdevcdj.c)
- - The definition of pprintd2 didn't have a line break before the
- procedure name, confusing ansi2knr. (gdevpstr.c)
- - EPS files produced invalid PDF output. (gdevpdf.c)
- - "Vector" output devices didn't recognize %d in output file names,
- or - for output to stdout. (gdevprn.h, gxdevice.h, gdevprn.c, gdevvec.c,
- gsdevice.c)
- - With the pdfwrite driver, restore or grestore would cause a
- rangecheck error in .installpagedevice if a setpagedevice had been executed.
- (gdevpdfp.c)
- - The pdfwrite driver produced garbage output for text rotated by
- angles that were only infinitesimally different from multiples of 90
- degrees. (gdevpdft.c)
- - The pnm[raw] driver didn't handle anti-aliasing properly.
- (gdevpbm.c)
- - The PDF writer didn't scale the parameters for [a][width]show
- correctly. (gs_pdfwr.ps, gdevpdft.c)
- Fixes some minor compilation warnings not affecting code functionality.
- (gdevbbox.c, gdevpdfm.c, gshtscr.c, gsmemory.c, gxccman.c, gxfill.c,
- gximage0.c)
- Fixes some bugs in the uniprint driver and adds some more printer models.
- (gdevupd.c, bjc610a*.upp, bjc610b*.upp, necp2x6.upp, stc1520h.upp)
- Makes a small change for clean compilation on BeOS. (gdevcdj.c)
- Updates the PNG driver to use updated API calls for allocating/initializing
- and freeing the PNG structures. (gdevpng.c)
- </pre><h3><a name="V5.02_Platforms"></a>Platforms</h3><pre>
- Refactors the MS Windows code to allow building the library without the
- interpreter. (gs_msio.c, gs_mslib.c, gp_mswin.c)
- </pre><h3><a name="V5.02_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - definefont was executed twice on TrueType fonts. (No bad
- consequences, just unnecessary work.) (gs_ttf.ps)
- </pre><h3><a name="V5.02_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The fix for the 'stopped' around run_string_* in 5.01 was made
- incorrectly. (gs_init.ps)
- - Many operators that expect a matrix operand didn't accept packed
- arrays. (iutil.c)
- - The default CRD didn't have an explicit BlackPoint, which some
- Genoa tests require. (gs_lev2.ps)
- - A stack protection fix caused setscreen and setcolorscreen with
- dictionary operands to give a typecheck. (gs_dps2.ps)
- - Executing a string didn't handle tail recursion properly if the
- last token was followed by a single whitespace character. (interp.c)
- - Clearing the error indication didn't set errorname to null.
- (gs_init.ps)
- - Some unexpected items appeared on the execution stack, confusing
- some of the Genoa tests. (gs_init.ps, istack.h, istack.c, zcontrol.c)
- - The dummy definitions for setucacheparams/ucachestatus didn't look
- enough like the real ones. (gs_dps2.ps)
- - Insideness tests didn't work, because the hit detection device
- width and height weren't set up. (zupath.c)
- - defineuserobject didn't use the same algorithm for growing the
- array as Adobe interpreters. (gs_dps2.ps)
- - eq and ne didn't work correctly on save objects. (iutil.c)
- - findfont used =string internally, interfering with PostScript
- programs that also used it. (gs_fonts.ps)
- - cshow didn't set up scaled versions of base fonts as the current
- font. (zchar2.c)
- - defineresource didn't make the resource value read-only.
- (gs_res.ps)
- - If inustroke got an error, it could return without an error
- indication and without changing the stack. (zupath.c)
- - The arrays returned by different invocations of currentcolorspace
- with the same device color space weren't guaranteed to be eq. (gs_lev2.ps)
- - Out-of-range integers followed by a '.' were converted to names
- rather than reals. (iscan.c, iscannum.c)
- - resourceforall caused an invalidaccess error if currentglobal was
- true but the procedure, template, or scratch string was in local VM.
- (gs_res.ps)
- - In many places, integer values were converted to floats rather
- than doubles, losing precision. (ichar.h, icharout.h, ifont.h, iutil.h,
- idparam.c, iparam.c, iutil.c, zchar.c, zchar1.c, zchar42.c, zcharout.c,
- zcie.c, zcolor.c, zcolor1.c, zcolor2.c, zcontrol.c, zcsindex.c, zcssepr.c,
- zdpnext.c, zdps1.c, zfont.c, zfont2.c, zgstate.c, zhsb.c, zht.c, zmath.c,
- zmatrix.c, zmedia2.c, zpath.c, zpath1.c, zupath.c)
- - The TransformPQR procedure in the default CRD didn't pop its
- auxiliary operands from the stack. (gs_lev2.ps)
- - Because of an incorrect stack depth check, setcolorrendering
- sometimes produced a stackunderflow. (zcrd.c)
- - sethalftone caused an invalidaccess error if the HalfTone type was
- not 5, the dictionary was in local VM, and the current VM was global.
- (gs_dps2.ps)
- - writeobject and printobject caused an invalidaccess error if the
- object being written was in local VM and the current VM was global.
- (gs_btokn.ps)
- - ustrokepath appended the strokepath segments to the current path,
- rather than replacing the path. (zupath.c)
- - restore incorrectly purged from the character cache any characters
- in a font being freed, even if the font had a UID. (zfont.c)
- - The definition of zimage_opaque_setup confused ansi2knr.
- (zimage.c)
- - Type 42 fonts that included the padding byte in each sfnts string
- didn't work if sfnts had more than one string. (zfont42.c)
- - Doing a garbage collection at the same time as handling a
- stackoverflow failed to update the object that needed re-execution, causing
- the interpreter to execute random data. (interp.c)
- - %stdout and %stderr weren't flushed if they were closed
- explicitly. (ziodev.c)
- For greater Adobe compatibility:
- - Changes setdash to limit dash patterns to 11 elements. (This is
- enforced at the PostScript level: the graphics library doesn't have a
- limit.) (gs_init.ps)
- - Changes ^D and ^Z so they are not self-delimiting characters, and
- changes ^K so it is not a whitespace character. (gs_init.ps, iscan.c,
- scantab.c)
- - Makes = cause an error on non-read-accessible objects rather than
- printing them as --nostringval--. (gs_init.ps)
- - When -dSUBSTFONT= is used, makes findfont return the actual named
- font, rather than a copy with the FontName changed to the requested one.
- (gs_fonts.ps)
- - CFF fonts with a non-default FontMatrix caused an error.
- (gs_cff.ps)
- Fixes some minor compilation warnings not affecting code functionality.
- (iparam.c, zfcmap.c)
- Strengthens the test of o-stack validity in the main interpreter loop in
- debug mode. (interp.c)
- Changes the filling rule for Type 1 fonts from winding-number to even-odd.
- This affects no properly designed fonts, and seems to match Adobe
- interpreters better. (zchar1.c)
- Implements non-standard Encodings in CFF fonts. (gs_cff.ps)
- Changes the default halftone screen for 600 dpi printers from 85 to 106 lpi,
- which reduces the number of halftone levels from 50 to 32 but produces
- visually better output. (gs_init.ps)
- </pre><h3><a name="V5.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Pattern color spaces weren't supported. (gs_pdf.ps, pdf_draw.ps)
- Causes references to undefined named Destinations to be ignored rather than
- giving an error. (pdf_main.ps)
- </pre><h3><a name="V5.02_Library"></a>Library</h3><pre>
- Fixes bugs:
- - A 'const' was omitted in a declaration, upsetting several
- compilers. (gxclread.c)
- - arct and arcto gave an error for negative radii. (gspath1.c)
- - The collinearity check for arct[o] could cause some arcs to be
- rendered as single points. (gspath1.c)
- - Uncolored patterns sometimes came out blank, because the color
- wasn't set before calling the PaintProc. (gspcolor.c)
- - The phase for masking colored patterns was wrong, producing
- incorrect output. (gspcolor.c)
- - reversepath always appended the current position to the new path,
- rather than only doing so if the path just consisted of a single moveto.
- (gxpath2.c)
- - cshow didn't restore the current font properly. (gschar.h,
- gschar.c)
- - The check for whether characters can be cached didn't consider
- PaintType values other than 0 and 2. (gschar.c)
- - The bounding box device didn't handle PageCount properly.
- (gdevbbox.c)
- - Uncached fonts with a next_char procedure didn't set the glyph
- properly. (gschar.c)
- - Parallelograms with ax < bx, ay < by, and the 'a' edge to the
- right of the 'b' edge weren't filled, causing pixels to be omitted from some
- highly skewed images. (gdevddrw.c)
- - 12-bit-per-pixel images in portrait orientation filled each scan
- line with the value of the last pixel -- i.e., didn't work. (gximage4.c)
- - The path representation of a clipping path could include some
- inappropriate, leftover path segments. (gxcpath.c)
- - The angle for the miter check was computed in device space rather
- than in user space. (gxstroke.c)
- - TrueType fonts were lumpy, and the accents of accented characters
- were placed incorrectly. (gstype42.c)
- - Some macros used for generating device prototypes didn't
- parenthesize all uses of their parameters, causing possible errors if the
- parameters were expressions rather than numeric constants. (gdevprn.h)
- - When banding, strip halftones (typically produced by
- AccurateScreens) sometimes didn't have the correct phase. (gxbitmap.h,
- gxclread.c)
- - A minor change was required for correct compilation with Microsoft
- VC++. (memory_.h)
- - Under certain conditions, character shapes could get wildly
- distorted by hints. (bug introduced in 5.01) (gxhint3.c)
- For greater Adobe compatibility:
- - Changes reversepath so that the implicit line created by closepath
- is not considered a "segment". (gxpath2.c)
- Fixes some minor compilation warnings not affecting code functionality.
- (gstype1.c)
- Changes the font and scaled-font caches so that if the font has a UID
- (UniqueID or XUID), the UID and FontType are both considered part of the
- key, and we don't cache fonts with non-zero PaintType. (The Red Book says
- that changing anything except the Encoding should also change or remove the
- UID, but some files don't do this. The current fix is probably not
- sufficient, but it is a step in the right direction.) (gxfcache.h,
- gxccache.c, gxccman.c)
- Splits off the definitions of font_type and fbit_type into a separate file,
- since gxfcache.h now needs font_type. (gxfcache.h, gxfont.h, gxftype.h)
- Makes the Flex feature in Type 1 fonts conform to the published
- specification, rather than always producing curves. The comment in the code
- (and in the NEWS entry for release 2.6) says that this breaks some very old
- Adobe fonts: if this turns out to be a problem, we'll figure out a test that
- will do the right thing for these fonts. (gstype1.c)
- Provides 'double' versions of some API functions to accommodate the
- increased use of doubles in the interpreter. (gschar.h, gschar.c)
- Adds a compile-time option to force the use of strip halftones, for
- debugging. (gshtscr.c)
- Changes the hint snapping algorithm in the Type 1 rasterizer so that it will
- only change a stem width by a maximum of 1/2 pixel rather than 1 pixel.
- This appears to help with dropouts at certain sizes. (gxhint2.c)
- Makes a few changes for clean compilation on BeOS. (stdpre.h, stat_.h,
- gxcpath.c)
- </pre>
- <hr>
- <h2><a name="Version5.01"></a>Version 5.01 (6/22/97)</h2>
- <p>
- This fixes a few bugs reported in the 5.0 release. This will be a
- commercially supported release.
- <h3><a name="V5.01_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - README referred to an obsolete file devarch.txt. (README)
- - The comment on flip4x12 had a typo. (gsflip.c)
- - The algorithm comments for adjusted_y_spans_pixel weren't precise
- enough. (gxfill.c)
- - The usage message printed by the ps2pdf script didn't indicate
- that one can now insert options before the input file name. (ps2pdf)
- - The file searching documentation didn't indicate that paths
- beginning with ./ or ../ are considered "explicit" and not subject to
- searching. (use.txt)
- - The description of SEARCH_HERE_FIRST in the per-platform makefiles
- indicated that it only applied to initialization files, not to files
- specified on the command line as well. (*.mak)
- - There were still some references to 16-bit implementations.
- (install.txt)
- Clarifies that -dNODISPLAY also suppresses output to other devices.
- (use.txt)
- Adds the e-mail address for reporting problems to the bug report form, and
- also a space to report makefile changes. (bug-form.txt)
- Adds a note under -g indicating that it fixes the media size. (use.txt)
- Adds an explanation of why Ghostscript can't use the system libraries for
- the JPEG package. (make.txt)
- Notes that ps2ai doesn't work properly with Adobe's Helvetica-Oblique font,
- and other fonts whose original FontMatrix involves skewing or rotation.
- (psfiles.txt)
- Updates the uniprint documentation slightly. (devices.txt)
- Notes that the new lj5 drivers do not work with the LJ5L. (devs.mak)
- Modifies the Aladdin Free Public License slightly to make it clearer that
- the exception for freely redistributable CD-ROMs only applies if the CD-ROM
- is being distributed by itself, not with anything else commercial. (This
- has always been the case, but the previous wording wasn't clear enough.)
- (PUBLIC)
- Notes that gcc with -O still has code generation problems on H-P RISC
- machines. (make.txt)
- Adds a pointer to Martin Lottermoser's hpdj driver. (new-user.txt)
- Enhances and reorganizes the documentation for building Ghostscript, in
- response to user feedback. (make.txt, install.txt)
- Adds a description of the EPSF recognition feature. (language.txt)
- </pre><h3><a name="V5.01_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - string__h was misspelled string_h in one place. (lib.mak)
- - gs_dps.ps wasn't installed by "make install". (unix-end.mak)
- - ccgs (used with non-ANSI C compilers) didn't do the right thing
- with -DPNG_USE_CONST. (ccgs)
- Adds support for version 96 of libpng, and updates all the makefiles to
- reference it. (libpng.mak, *.mak)
- Updates the MSVC makefiles to get rid of some warning messages and provide a
- way to specify a library path for the final link. (msvc*.mak)
- </pre><h3><a name="V5.01_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - The usage message for the gslp utility had a minor typo.
- (gslp.ps)
- - The "line printer" utility didn't expand tabs properly when
- producing PostScript output. (gslp.ps)
- - The gslp utility didn't automatically include the date. (gslp)
- - The line printer scripts didn't pass the script name to the
- utility program, so the usage message didn't use the correct name. (gsbj*,
- gsdj*, gslj*, gslp*, lp*)
- Modifies the gslp utility so that invoking it with no arguments prints the
- usage message. (gslp.ps)
- Adds the ability to specify the number of bits per component to the
- CMYK-viewing utility. (viewcmyk.ps)
- Changes the ps2pdf script so that on Windows NT, as on Unix, it allows
- omitting the output file name, automatically replacing the extension of the
- input file with .pdf. (ps2pdf.bat)
- </pre><h3><a name="V5.01_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - Some compilers didn't accept a #define with the macro name on the
- next line. (gdevpx.c)
- - The procedure dash_pattern_eq was defined in two places.
- (gdevpdf.c)
- - The uniprint driver sometimes dropped some output or got confused,
- because of a misunderstanding about how to update device procedure vectors
- properly. (gdevupd.c)
- - The PostScript and EPS writers produced binary output for images,
- which generally can't be sent to PostScript printers. (gdevpsdf.h,
- gdevpdf.c, gdevps.c)
- - The EPS writer put a %%EOF at the end of the file, which might
- cause problems for some spoolers if the file is embedded in another.
- (gdevps.c)
- Changes the implementation of printer drivers so that they flush the output
- stream after each page. We aren't absolutely sure that this is a good idea,
- but it prevents certain anomalous behavior where the last page isn't ejected
- properly. (gdevprn.c)
- Implements a long-delayed update to the mgr drivers, to restore the color
- mapping to an older one. (gdevmgr.h, gdevmgr.c)
- Updates the uniprint driver with a number of changes from its author.
- (gdevupd.c)
- </pre><h3><a name="V5.01_Platforms"></a>Platforms</h3><pre>
- Adds the JPEG, Postscript, and PCL XL drivers, which are included on all
- other platforms, to the MS Windows platforms. (bcwin32.mak, msvc4.mak,
- msvc5.mak, watcw32.mak)
- </pre><h3><a name="V5.01_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - composefont defined the resource with the font name and font
- directory interchanged. (gs_cmap.ps)
- - With dFIXEDMEDIA, documents requesting other sizes caused an error
- instead of clipping the page. (gs_init.ps)
- - PageSize Policy = 7 wasn't implemented. (However, the current
- implementation is wrong.) (gs_setpd.ps, zmedia2.c)
- - FontType resource 42 wasn't defined even if Type 42 fonts were
- supported; similarly for FontType 9, 10, and 11 for CIDFonts. (gs_cidfn.ps,
- gs_res.ps)
- - The error handling machinery would break if the name /errordict
- was redefined. (gs_init.ps)
- - Level 1 systems got an /undefined in .doneshowpage. (zdevice.c,
- zdevice2.c)
- - Because of an initialization order problem, copy didn't work on
- gstates. (zgeneric.c)
- Adds a naive implementation of findcolorrendering. (gs_lev2.ps, gs_res.ps)
- Removes the 'stopped' around run_string[_begin/continue/end] so that, as in
- 4.03, errors print a hex dump and exit with a non-zero code instead of
- printing a readable message and continuing. (We aren't sure that this
- change didn't undo the fix in 5.0 regarding calling startjob from
- run_string.) (gs_init.ps)
- </pre><h3><a name="V5.01_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - stdin redirection failed for PDF files even if the new stdin was
- seekable. This was fixed in 4.02, but the fix stopped working with the
- introduction of .runexec. (pdf_main.ps)
- Makes the cross-reference reader accept a startxref value that points at the
- EOL before the xref line. The Adobe documentation doesn't allow this, but
- some real files are this way. (pdf_main.ps)
- </pre><h3><a name="V5.01_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The bounding box of a completely empty path was reported as
- garbage. (gxpath2.c)
- - Stroking a path with more than one segment didn't produce correct
- output when anti-aliasing was used. (gspaint.c)
- - The alpha-buffer device returned an incorrect clipping box,
- causing output to be discarded. (gdevabuf.c)
- - gx_forward_get_clipping_box passed the wrong device to the target
- procedure, producing incorrect results. (gdevnfwd.c)
- - The sin/cos procedure did some unnecessary computations
- (performance bug only). (gsmisc.c)
- - The procedure for adjusting the ends of curves to match the
- tangents did some unnecessary computations (performance bug only).
- (gxpcopy.c)
- - RAM-based banding always gave an invalidfileaccess error, due to a
- typo in memfile_fopen. (gxclmem.c)
- - The algorithms for deciding whether a line is thin still weren't
- correct. (gxstroke.c)
- - The fill adjustment values for the any-part-of-pixel case (adjust
- = 0.5) were (0.5-epsilon, 0.5+epsilon), which colored inappropriate
- additional pixels if the higher coordinate was integral. With considerable
- trepidation, we have changed this to (0.5-epsilon,0.5), which does the right
- thing in every case we can think of. (gxfill.c)
- - When banding, paths were clipped to only 0.5 pixel outside their
- bounding box, which may be slightly too conservative; 1 pixel is safer.
- (gxclpath.c)
- - The algorithm for testing whether an adjusted Y value spanned a
- pixel center was incorrect, causing some pixels to get colored incorrectly.
- (gxfill.c)
- - 24-bit devices could cause a memory fault, by accessing a pointer
- just beyond the end of the line pointer array. (gdevm24.c)
- - Astonishingly enough, the determination of which hints were
- applicable to a given segment of a Type 1 character was wrong in several
- different places. Fixing this in a way that correctly handled all allowed
- permutations of the coordinate system was not simple. (gxfont1.h,
- gxhint1.c, gxhint3.c)
- - The debugging printout macros didn't include the syntactic hack to
- prevent an 'else' from begin assigned to the wrong 'if'. (gdebug.h)
- - The bbox device was accidentally limited to 130 x 130 pixels (not
- 130" x 130"). (bug introduced in 5.0) (gdevbbox.c)
- - The bbox device didn't recognize PageBoundingBox in put_params,
- causing a possible /undefined error on [g]restore. (gdevbbox.c)
- - setlinewidth didn't take the absolute value of its operand.
- (zgstate.c)
- - Some code formatting was slightly off. (gximage5.c)
- - Some extra pixels were written for Interpolated images, but they
- were immediately overwritten, so the output was correct. (gximage5.c)
- Changes the data flipping API from a macro to a procedure, adds a return
- value, and makes the individual flipping procedures private. (gsflip.h,
- gsflip.c)
- Adds (under an #ifdef FUTURE) code to allow passing multi-plane images
- through the band list. (gxclpath.h, gxclimag.c, gxclread.c)
- Adds (under an #ifdef FUTURE) code to allow passing interpolated images
- through the band list. NOTE: interpolated images will appear slightly
- different than without banding, because the part of the image intersecting
- each band will be scaled slightly differently in the (device) Y direction.
- (gxclpath.h, gxclimag.c, gxclread.c, gximage.c)
- Changes Type 1 hinting so that when it moves points on a curve, it does so
- by properly scaling the curve in the given direction. (gxhint3.c)
- </pre>
- <hr>
- <h2><a name="Version5.0"></a>Version 5.0 (6/6/97)</h2>
- <p>
- This is the first public release since 4.03.
- <h3><a name="V5.0_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - Fontmap.Sol was incorrectly referred to as Fontmap.Solaris.
- (use.txt)
- - There was still a reference to pstoppm in the documentation.
- (psfiles.txt)
- - The JPEG DOS source site information was out of date. (jpeg.mak)
- - The list of devices included in the distributed Unix makefiles was
- out of date. (make.txt)
- - The MCU size limitation on the DCT filters was documented
- incorrectly. (current.txt)
- - The URL for the uniprint driver home page was incorrect.
- (devices.txt)
- - The makefiles referred to sfilefd.c, which is now named sfxfd.c.
- (gs.mak, *.mak)
- Adds a VMS help file. (gs-vms.hlp)
- Removes documentation for Digital Unix (OSF/1) 1.2 and 1.3, which are now
- long obsolete, and updates the documentation for current versions.
- (make.txt)
- Notes that there may be a problem with libpng version 0.95. (libpng.mak)
- Adds some specific documentation for the JPEG drivers. (devices.txt)
- Adds a suggestion that people compiling Ghostscript check the values of
- JVERSION and PVERSION. (make.txt)
- Removes the requirement for setting the LIB environment variable when
- compiling with MSVC. (make.txt)
- </pre><h3><a name="V5.0_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - There were a number of small errors in the new OpenVMS makefile.
- (openvms.mak)
- - The MSVC makefiles omitted a necessary switch to work around some
- "unspecified Pentium bugs". (msvccom.mak)
- - The Borland makefile wasn't even close to working; fixing it
- required moving the compilation rule for genarch.exe into the
- compiler-specific makefiles. (bcwin32.mak, msvccom.mak, watcw32.mak,
- wincom.mak)
- - There were some (harmless) undefined macro references in the MSVC
- makefile. (msvccom.mak)
- Makes it unnecessary to set the LIB environment variable for MSVC.
- (msvc4.mak, msvc5.mak, wincom.mak)
- Adds a note on compiling with the cygwin32 gcc compiler for Windows NT.
- (make.txt)
- Updates vms.mak yet again, hopefully for the last time. (vms.mak)
- Moves the CGM, JPEG, and MIFF file formats from DEVICE_DEVS8 to
- DEVICE_DEVS14 to shorten command lines; adds pcxcmyk to all platforms that
- include PCX format at all; adds jpeggray to all platforms that include jpeg.
- (devs.mak, *.mak)
- Adds -DPNG_USE_CONST for compiling libpng, to get rid of compiler warning
- messages. (gs.mak)
- Removes obsolete makefiles from the fileset. (tccommon.mak, tctail.mak)
- </pre><h3><a name="V5.0_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - restore was broken if -dNOBIND was invoked. This fix should have
- been in the 4.81 fileset, but was left out due to operator error.
- (gs_dps1.ps)
- - Some compilers complained about macro argument replacement within
- a string literal. (isave.c)
- -dSAFER didn't allow opening the %stdxxx files, which caused the
- combination of -dSAFER and -dNOBIND to cause an infinite error.
- (gs_init.ps)
- - If C code used run_string to execute a startjob, an error
- occurred. (gs_init.ps)
- </pre><h3><a name="V5.0_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Some compilers complained about macro argument replacement within
- a string literal. (gxclbits.c, gdevpdfi.c)
- - At certain resolutions, a 1-pixel line of the wrong color could
- appear at one edge of landscape-oriented monobit images. (This is the 4th
- or 5th time we have "fixed" this one infuriatingly fragile piece of code.)
- (gxfixed.h, gximage1.c)
- - The optimized code for landscape monobit images overlooked the
- possibility of partial images, causing parts of images to be translated and
- possibly clipped. (Yes, it's that same fragile piece of code.)
- (gximage1.c)
- - The bounding box device allowed resetting its resolution, which
- could cause limitchecks from coordinate overflow. Our fix is to initialize
- the device to a very high resolution (4000 dpi), which reduces the maximum
- page size it can handle to about 130" on a side. (gdevbbox.c)
- - The bounding box device wasn't identified as a page device.
- (gdevbbox.c)
- - The bounding box device used alone disregarded changes in page
- size. (gdevbbox.c)
- - One old compiler didn't allow a structure member name to be the
- same as a typedef name. (gximage.h, gximage.c, gximage4.c)
- - The height and band intersection computations for banded images
- still weren't right, leading to inconsistencies in the band list and errors
- in the output (typically, thin horizontal white stripes at band boundaries).
- (gxclimag.c)
- Adds an extensive memory dump facility to the standard allocator.
- Eventually this should be moved into a separate file, but it would be too
- disruptive to do this just before a release. (gsalloc.c)
- </pre>
- <!-- [2.0 end contents] ==================================================== -->
- <!-- [3.0 begin visible trailer] =========================================== -->
- <hr>
- <p>
- <small>Copyright © 1997, 1998, 1999, 2000 Aladdin Enterprises.
- All rights reserved.</small>
- <p>
- <small>This file is part of AFPL Ghostscript. See the
- <a href="Public.htm">Aladdin Free Public License</a> (the "License") for
- full details of the terms of using, copying, modifying, and redistributing
- AFPL Ghostscript.</small>
- <p>
- <small>Ghostscript version 7.04, 31 January 2002
- <!-- [3.0 end visible trailer] ============================================= -->
- </body>
- </html>
|