1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460 |
- <!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.41 2005/10/20 19:46:23 ray 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>
- This software is provided AS-IS with no warranty, either express or
- implied.
- This software is distributed under license and may not be copied,
- modified or distributed except as expressly authorized under the terms
- of the license contained in the file LICENSE in this distribution.
- For more information about licensing, please refer to
- http://www.ghostscript.com/licensing/. For information on
- commercial licensing, go to http://www.artifex.com/licensing/ or
- contact Artifex Software, Inc., 101 Lucas Valley Road #110,
- San Rafael, CA 94903, U.S.A., +1(415)492-9861.
- <p>
- <small>Ghostscript version 8.53, 20 October 2005
- <!-- [3.0 end visible trailer] ============================================= -->
- </body>
- </html>
|