| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628 |
- Release 1.14.12 (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>)
- ========================================================================
- Another bugfix release rolling up backported fixes for the past half year.
- For a complete log of changes since 1.14.10, please see:
- http://cairographics.org/releases/ChangeLog.cairo-1.14.12
- Features
- --------
- None
- API Changes
- -----------
- None
- Dependency Changes
- ------------------
- None
- Performance Optimizations
- -------------------------
- None
- Bug Fixes
- ---------
- * Fix assertion hit with PDFs using Type 4 fonts rendered with user
- fonts, due to error when destroying glyph page.
- (Bug #103335)
- * Fix build error with util/font-view
- * Fix handling of truetype fonts with excessively long font names
- (Bug #103249)
- * Fix falling back to system font with PDFs using certain embedded
- fonts, due to truncated font names.
- (Bug #103249)
- * Fix sigabrt printing documents with fonts lacking the mandatory .nodef
- glyph.
- (Bug #102922)
- * Fix undefined-behavior with integer math.
- * Fix various warnings and typos
- Release 1.14.10 (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>)
- ========================================================================
- Bugfix release rolling up backported fixes for the past half year.
- For a complete log of changes since 1.14.8, please see:
- http://cairographics.org/releases/ChangeLog.cairo-1.14.10
- Features
- --------
- None
- API Changes
- -----------
- None
- Dependency Changes
- ------------------
- None
- Performance Optimizations
- -------------------------
- None
- Bug Fixes
- ---------
- * Clarify documentation regarding device scale inheritance and the units
- used in cairo_surface_create_similar_image.
- Bug #99094.
- * Fix error reporting in the xcb backend if fallback fails. Instead of
- returning NULL when the X11 server can't do some operation, return a
- surface in an error state.
- * Call XSync in the xlib backend before setting the error handler to
- ignore errors for certain requests, to make sure all pending errors
- are handled first.
- * For opentype fonts, always use gid to lookup glyph.
- * If glyph 0 used for rendering, remap to different index.
- * Set font size to em size when retrieving unhinted metrics.
- * Flush ASCII85Decode file after use with Postscript files.
- * pdf: Don't fail subsetting if unable to convert utf8 to utf16.
- * For truetype, reverse cmap search should end when 0xffff- 0xffff range
- reached.
- * Fix bug in line wrapping with the PDF operators.
- * Fix an off by one check in cairo-image-info.c.
- Release 1.14.8 (2016-12-07 Bryce Harrington <bryce@osg.samsung.com>)
- ========================================================================
- Bugfix release rolling up backported fixes for the past year.
- For a complete log of changes since 1.14.6, please see:
- http://cairographics.org/releases/ChangeLog.cairo-1.14.8
- Features
- --------
- None
- API Changes
- -----------
- None
- Dependency Changes
- ------------------
- None
- Performance Optimizations
- -------------------------
- None
- Bug Fixes
- ---------
- * Fix "invalidfont" error on some printers when printing PDFs with
- embedded fonts that have glyphs (such as spaces) with
- num_contours == 0. (Bug #79897)
- * Fix deadlock when destruction of a scaled font indirectly triggers
- destruction of a second scaled font, causing the global cache to be
- locked twice. (Bug #93891)
- * Fix X errors reported to applications when shmdt() is called before
- the Attach request is processed, due to missing xcb and xlib calls.
- * Fix random failure in record-paint-alpha-clip-mast test case, caused
- by an incorrect assumption that a deferred clear can be skipped.
- (Bug #84330)
- * Fix crash when dealing with an XShmGetImage() failure, caused by a
- double free in _get_image_surface(). (Bug #91967)
- * Fix build issue when using non-GNU strings utility. (Bug #88639)
- * Cleanup debugging text sent to stdout instead of log. (Bug #95227)
- Release 1.14.6 (2015-12-09 Bryce Harrington <bryce@osg.samsung.com>)
- ========================================================================
- Simple bugfix release to fix one Windows issue.
- For a complete log of changes since 1.14.4, please see:
- http://cairographics.org/releases/ChangeLog.cairo-1.14.6
- Features
- --------
- None
- API Changes
- -----------
- None
- Dependency Changes
- ------------------
- None
- Performance Optimizations
- -------------------------
- None
- Bug Fixes
- ---------
- * Fix failure on Windows due to reference of the function
- cairo_win32_surface_create_with_format(), which isn't included in the
- 1.14.4 release. (Bug #92771)
- Release 1.14.4 (2015-10-28 Bryce Harrington <bryce@osg.samsung.com>)
- ========================================================================
- Just in time for Halloween we see another bug-fix release for Cairo.
- This brings a few dozen straightforward bug fixes with no API changes.
- In addition, this includes a typical assortment of fixes to tests,
- cleanup of warnings and memory leaks, correction of misspellings,
- updates to documentation, etc.
- For a complete log of changes since 1.14.2, please see:
- http://cairographics.org/releases/ChangeLog.cairo-1.14.4
- Features
- --------
- None
- API Changes
- -----------
- None
- Dependency Changes
- ------------------
- None
- Performance Optimizations
- -------------------------
- None
- Bug Fixes
- ---------
- * Avoid appending empty slots to user data arrays. Fixes a memory
- consumption regression since commit 9341c254a.
- * Return a better error (file-not-found) when setting up pango on
- devices where the font files don't have read permissions.
- * Fix regression in the font size of canvas text in Inkscape when
- compiled with the Quartz backend. (Bug #84324)
- * Fix _cairo_gl_shader_bind_matrix() to maintain compatibility with
- OpenGL ES 2.0. Manually transpose the matrix.
- * Fix incorrect font descriptor conversion when the font matrix yy is
- negative. (Bug #90538)
- * Fix crash when using a complex path for clip and stroke due to
- discarding the intersection exactly at the top edge.
- (Bug #74779)
- * Fix cairo_get_locale_decimal_point() on Android
- * Fix compilation problem on AIX due to conflicting usage of symbol
- 'jmpbuf'. (Bug #89339)
- * Fix broken rendering with XCB due to snapshotting of uploaded part of
- surfaces. (Bug #67505)
- * Fix loss of alpha when copying a mask for a cairo recording surface,
- resulting in a double copy. (Bugs #73038, #73901)
- * Fix incorrect recording of certain paths with script surfaces.
- (Bug #91054)
- * Fix typo in definition of MAYBE_WARN in configure script.
- (Bug #89750)
- * Fix use of filename variable after it's been freed.
- (Bug #91206)
- * Fix out of bounds access when printing pattern.
- (Bug #91266)
- * Fix incorrect size calculation in glyph cache unlocking for Cairo GL
- compositor.
- (Bug #91321)
- * Fix memory leak in _cairo_gl_pattern_texture_setup()
- (Bug #91537)
- * Fix transparent images in win32-print.
- (Bug #91835)
- * Fix _put_shm_image_boxes and _put_image_boxes when no SHM available
- with XCB.
- Release 1.14.2 (2014-03-09 Bryce Harrington <bryce@osg.samsung.com>)
- ====================================================================
- This release provides collected bug fixes, along with one feature
- enhancement for the xcb backend, and a small performance improvement for
- fonts.
- The running theme of the bug fixes is platform-specific issues, both
- build and run-time. Platforms with fixes include Sparc, AIX, Windows
- (mingw), and Windows (MSVC8). Memory leaks, valgrind issues, and PDF
- issues round out our list.
- It's come to light that changes in cairo 1.14 resulted in breakage on
- MacOS X 10.4. We've not yet determined whether to fix up the support,
- or excise the 10.4-specific code and support only OS X 10.5 or newer.
- Meantime, we'll only advertise cairo as working on OS X 10.5.
- Features
- --------
- * Improve xcb's handling of per-screen subpixel ordering. If no
- Xft.rgba property is specified, default to the screen's subpixel
- order.
- API Changes
- -----------
- None
- Dependency Changes
- ------------------
- None
- Performance Optimizations
- -------------------------
- * Improve performance of cpu_to_be32 and be32_to_cpu, making truetype
- subsetting of large fonts run about 15% faster.
- Bug Fixes
- ---------
- * Fix unaligned access on sparc with the compact font format (CFF).
- Unlike truetype, all data in CFF is not aligned.
- (Debian bug #712836)
- * Fix unaligned access on sparc with tor-scan-converter's memory pool.
- * Fix crash when loading a PDF with a transformed image.
- (fdo bug #85151)
- * Fix regression on mingw for bigendian test due to removal of file
- extension for executables.
- (fdo bug #85120)
- * Fix handling of backslash in PDF interpreter
- (fdo bug #85662)
- * Fix crash in xlib and xcb renderers when swapping a 0-sized glyph
- * Fix bug with RTL text in PDF operators
- (fdo bug #86461)
- * Fix compilation 'cairo-path-stroke-traps.c' with MSVC8
- (fdo bug #84908)
- * Fix crash in _fill_xrgb32_lerp_opaque_spans when a span length is
- negative.
- * Fix valgrind error by releasing pattern created by
- cairo_pattern_create_rgb().
- * Fix valgrind errors when running cairo-test-suite.
- * Fix memory leak in recording surface replays
- (fdo bug #87898)
- * Fix destruction of fonts in api-special-cases test.
- (fdo bug #87567)
- * Fix duplicated surface push on similar-image, preventing trivial GTK3
- program traces from being replayable, with an error message about
- invalid values for the size of the input.
- (fdo bug #73580)
- * Fix crash when win32 surface's image size does not cover the entire
- surface.
- (fdo bug #53121)
- * Fix crash due to obsolete CGFontGetGlyphPath call
- (fdo bug #84324)
- * Fix several build issues on AIX
- (fdo bugs #89338, #89340, #89356, #89354)
- * Fix various documentation warnings and errors
- Release 1.14.0 (2014-10-13 Bryce Harrington <bryce@osg.samsung.com>)
- ====================================================================
- Hard to believe it's been over a year since our last release, but it's
- not for lack of activity. This release includes contributions of a wide
- assortment of bug fixes, build system improvements, warnings cleanups,
- codebase refactoring, test suite repairs, and static analysis work.
- This release is lighter on features (compared with 1.12.10) but includes
- a highly demanded rehaul of our image downscaling functionality, which
- solves a serious problem experienced by Inkscape users when shrinking
- embedded bitmaps in SVG files. The new scaling algorithms are used by
- the image backend and by other backends as needed for fallbacks.
- Features
- --------
- Filtering improvements for the image backend, in particular
- down-scaling of images produces filtered images that depend on all the
- pixels of the source. When using the image backend you get the
- following settings:
- CAIRO_FILTER_GOOD: uses a box filter for scales less than .75 in
- either direction. For scales larger than this, the same filter as
- CAIRO_FILTER_BILINEAR is used.
- CAIRO_FILTER_BEST: uses a Catmull-Rom filter always. When upscaling
- more than 2x this will produce anti-aliased square pixels, similar
- to OS/X.
- CAIRO_FILTER_GAUSSIAN: uses PIXMAN_FILTER_BEST, which in current
- pixman is the same as BILINEAR. (This is subject to change in the
- future).
- xlib and xcb also use the image fallback for GOOD/BEST filters, but
- note that other backends do not implement these filtering fixes yet,
- however other actions may cause them to use an image fallback which
- will cause these filters to be used.
- Improve handling of device transformation and scaling, allowing Cairo
- to now support scaling at a device level, permitting easier, more
- transparent HiDPI support.
- Support JBIG2 mime data in PDF. This allows embedding of more
- compressed JPEG formats within PDF, rather than including the full
- uncompressed image. Also, reduce the number of transparency groups
- used by PDF to keep the file size small and viewing/printing of the
- PDF fast.
- Expand the embedding section to include stencil mask support.
- Reorder font declarations to be in natural order.
- Update the Skia backend to build against current Skia (as of June
- 2014).
- Drop Link-Time Optimization (LTO) support from build system. This
- seems to have caused much trouble for unclear benefit, and most
- distros are reverting or disabling it anyway.
- Optimize VBO size on GL to 1M and to 16k for EGL. This improves
- (theoretical) performance for desktop GLX use cases while avoiding
- hitting VBO memory size limitations on embedded devices.
- API Changes
- -----------
- cairo_surface_set_device_scale, cairo_surface_get_device_scale:
- Sets a scale that is multiplied to the device coordinates
- determined by the CTM when drawing to @surface. One common use for
- this is to render to very high resolution display devices at a scale
- factor, so that code that assumes 1 pixel will be a certain size
- will still work.
- cairo_egl_device_get_display, cairo_egl_device_get_context:
- Support get/set of EGLContext and EGLDisplay for egl-based cairo
- devices, similar to GLX.
- Dependency Changes
- ------------------
- Cairo now requires glib 2.14 for its gobject helper functions,
- and pixman 0.30 for downscaling.
- Bug fixes
- ---------
- Don't embed CMYK Jpeg images in svg.
- Fix tests to place output in proper location.
- Fix determination of alpha for all surfaces when recording.
- Extend oversize check to cairo_gl_surface_create_for_texture, so an
- error surface is returned if the texture is too large to render to.
- Fix embedding of mime data in PDF and PS files.
- Remove useless error handling in *_reply() functions in XCB.
- Fix a double-free exposed by multithreaded apps creating and
- destroying the same font concurrently.
- https://bugs.freedesktop.org/show_bug.cgi?id=69470
- Fix corrupt stacks produced by bugs in operand emission for trace.
- Fix out of bounds array access in format cache for xlib
- Don't rename glyphs used by seac operator. This can cause certain
- combined characters to use their decorations (e.g. umlauts on ö) to be
- lost during printing of PDFs using evince.
- https://bugs.freedesktop.org/show_bug.cgi?id=70364
- Fix crash on calling cairo_create with a finished surface
- Fix SSIZE_T definition problem when making with MSYS on Windows7
- Fix one off issue in gl context cleanup
- Fix usage of CAIRO_STACK_ARRAY_LENGTH
- Fix rectangle stroke with non rectilinear pen
- Fix imagemask with pattern source failure on some printers. This bug
- could cause files converted using pdftops to fail for example on Ricoh
- printers, or opening in Adobe Distiller on Windows.
- https://bugs.freedesktop.org/show_bug.cgi?id=69485
- Fix whitespace in font names
- Fix page size in generated PDFs. When printing using pdftocairo on
- larger page sizes, such as 11x17, the image would be cropped to letter
- size.
- https://bugs.freedesktop.org/show_bug.cgi?id=73452
- Fix path-currentpoint test by preserving current-point in
- copy_path()/append_path() sequence
- Fix generation of HTML in code docs for
- cairo-format-stride-for-width. Raw HTML code was being passed
- to the browser, instead of displaying normally.
- https://bugs.freedesktop.org/show_bug.cgi?id=63257
- Fix spelling of "tessellator" throughout code. We're using the
- American rather than British spelling of this word.
- https://bugs.freedesktop.org/show_bug.cgi?id=50411
- Fix crash in pixman_image_composite32
- Fix crash when trying to modify a (const) all-clipped cairo_clip_t
- https://bugs.freedesktop.org/show_bug.cgi?id=75819
- Add check_composite method to all compositors, to fix crashes in the
- test suite.
- Fix crash in Firefox when scrolling on certain pages.
- Fix memory leaks found by static analysis.
- Fix build of any2ppm if fork is not available.
- Fix broken build for Qt backend, due to missing libstdc++.
- Fix typo in two cairo_uint128 functions. Fixes potential build issues
- on systems without a uint128 type.
- Fix build when --enable-pdf=no
- Fix cache_frozen assertions for Win32 print.
- Correctly check for xcb image surface for inplace upload
- Fix webkit-based web browser crashes due to empty boxes by skipping
- over them when tesselating.
- Make pixman, libpng, and zlib paths commandline configurable for win32
- builds.
- Fix image scale on Win32 when GDI scale is not identity.
- Fix float endian configure test when using clang -O4
- Fix compilation with Android bionic libc
- Don't try to build util/sphinx on Windows
- Fix loss of precision when emitting joins. This was caused by
- discrepancies in line gradients when passing trapezoids around.
- Fix loss of precision and associated rendering issues in
- cairo-tor-scan-converter from projection onto sample grid.
- Fix pixman oversampling of neighbouring edges within a cell by
- eliminating self-intersections for the pixman traps compositor.
- Fix multi-line string splitting in PDFs
- Various cleanups and fixes to warnings, documentation, tests, and
- build system. Improve error handling and return value checks.
- Cleanup XFAIL tests and reference images. Cover recently added
- functionality.
- Release 1.12.16 (2013-08-21 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- Thanks to everybody who reported a bug and helped us develop a fix,
- we have amassed quite a few bug fixes. There are still more outstanding
- bugs that seek attention and a little bit of TLC, but this release has
- been delayed long enough...
- Bug fixes
- ---------
- Set the correct orientation for simple boxes with a negative scale
- factor.
- Fix the creation of the shading dictionary in PDF.
- Fix a crash in PDF when incorporating an image with CAIRO_EXTEND_PAD.
- https://bugs.freedesktop.org/show_bug.cgi?id=61451
- Avoid upscaling bitmap fonts if possible.
- Fix an assertion failure within the mempool allocator for shared memory.
- Fix allocation size for CFF subsets.
- Export cairo_matrix_t for GObject bindings.
- Fix a double free in the Quartz backend.
- https://bugs.freedesktop.org/show_bug.cgi?id=62885
- Fix origin of GDI StretchBlits for the Windows backend
- https://bugs.freedesktop.org/show_bug.cgi?id=61876
- Fix error propagation for requests to create a similar surface with
- negative size.
- https://bugs.freedesktop.org/show_bug.cgi?id=63196
- Fix complex clipping of trapezoids with regions
- https://bugzilla.gnome.org/show_bug.cgi?id=697357
- Stop leaking the image data when loading PNGs
- Fix unbounded operations with a clip mask through the span compositor
- https://bugs.freedesktop.org/show_bug.cgi?id=61592
- Add missing checks before rendering to a finished surface - so we return
- an error rather than hit an assert.
- https://bugs.freedesktop.org/show_bug.cgi?id=68014
- Prevent an assertion failure when creating similar GL surfaces larger
- than supported by hardware.
- Prevent a double free of a similar image under Windows.
- https://bugs.freedesktop.org/show_bug.cgi?id=63787
- Release 1.12.14 (2013-02-10 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- In the last week we had a few more bugs reported and promptly resolved.
- As these are a combination of regressions and stability issues, it is
- time for a prompt update and release. Many thanks to everyone for
- testing and reporting issues, and helping to make Cairo better.
- Bug fixes
- ---------
- Prevent user callbacks accessing user-data during destroy to prevent
- use-after-free bugs.
- https://bugzilla.mozilla.org/show_bug.cgi?id=722975
- Use standard names for glyphs in subset fonts (PDF).
- https://bugs.freedesktop.org/show_bug.cgi?id=60248
- Fix detection of Win98. The logic for detecting Win98 (and its broken
- AlphaBlend()) was inverted, disabling AlphaBlend() for everyone.
- Prevent numeric overflow from extrapolating polygon edges to the clip
- boundary and causing severe render artifacts.
- https://bugs.freedesktop.org/show_bug.cgi?id=60489
- Fix computation of glyph string coordinates when breaking up runs
- for xlib.
- Fix an assertion in the win32 backend for failing to clear its
- similar-images.
- https://bugs.freedesktop.org/show_bug.cgi?id=60519
- Release 1.12.12 (2013-01-31 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- The goal of this release is to fix the synchronisation problems that
- were exhibited in the SHM transport for cairo-xlib. This cropped up
- any place that tried to rapidly push fresh pixel data to the X server
- through an ordinary image surface, such as gimp-2.9 and evince.
- Bug fixes
- ---------
- Avoid replacing the entire image when uploading subimages
- https://bugs.freedesktop.org/show_bug.cgi?id=59635
- Force synchronisation for scratch SHM image buffers, so that we do
- not overwrite data as it is being read by X.
- https://bugs.freedesktop.org/show_bug.cgi?id=59635 (also)
- Fix typos in detecting multisampling for the GL (MSAA) backend.
- Fix a memory leak in the GL (MSAA) backend.
- Fix a reference counting bug when mapping a GL surface to an image.
- Release 1.12.10 (2013-01-16 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- A heap of bug fixes everywhere, and the gradual completion of the MSAA
- backend for cairo-gl. Perhaps the most noteworthy set of the bugfixes
- was the crusage lead by Behdad Eshfabod to make font handling by
- pango/cairo/fontconfig fully threadsafe. This testing revealed a couple
- of races that needed fixing in Cairo's scaled-font and glyph cache.
- Bug fixes
- ---------
- Append coincident elements to the recording's surface bbtree so that
- the list is not corrupted and the overlapping elements lost.
- Fix cairo-trace to correctly record map-to-image/unmap-image and then
- replay them.
- Ignore MappingNotifies when running the XCB testsuite as they are sent
- to all clients when the keyboard changes. The testsuite would detect
- the unexpected event and complain.
- Handle very large images in the XCB backend.
- Fix a memory leak in the xlib/shm layer, and prevent use of the SHM
- surfaces after the display is closed.
- https://bugs.freedesktop.org/show_bug.cgi?id=58253
- Handle resizing of bitmap fonts, in preparation for a fix to
- fontconfig to correctly pass on the user request for scaling.
- Always include subroutine 4 (hint replacement idion) when subsetting
- type 1 fonts in order to prevent a crash in cgpdftops on Mac OS/X
- Fix a couple of typos in the cairo-gobject.h header files for
- introspection.
- Prevent a mutex deadlock when freeing a scaled-glyph containing a
- recording-surface that itself references another scaled-glyph.
- https://bugs.freedesktop.org/show_bug.cgi?id=54950
- Make scaled-font cache actually thread-safe and prevent
- use-after-frees.
- Restore support for older versions of XRender. A couple of typos and a
- few forgotten chunks prevented the xlib compositor from running
- correctly with XRender < 0.10. Note that there are still a few
- regressions remaining.
- Release 1.12.8 (2012-11-24 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- Another couple of weeks and a few more bugs have been found and fixed,
- it is time to push the next point release. Many thanks to everyone who
- reported their issues and helped us track down the bugs and helped
- testing the fixes.
- Bug fixes
- ---------
- Expand the sanity checking for broken combinations of XSendEvent and
- ShmCompletionEvent.
- Notice that "The X.Org Foundation" sometimes also identifies itself
- as "The Xorg Foundation".
- Handle various ages of libXext and its Shm headers.
- Fix the invalid clipping of the source drawable when using SHM
- transport to upload images.
- https://bugs.freedesktop.org/show_bug.cgi?id=56547
- Handle all Type1 postscript operators for better font compatibility.
- https://bugs.freedesktop.org/show_bug.cgi?id=56265
- Fix a couple of memory leaks in Type1 font subsetting
- https://bugs.freedesktop.org/show_bug.cgi?id=56566
- Tighten the evaluation of the start/stop pen vertices, and catch a few
- instances where we would use a fan instead of a bevel.
- https://bugs.freedesktop.org/show_bug.cgi?id=56432
- Fix assumption that geometric clipping always succeeds with the
- span-compositor.
- https://bugs.freedesktop.org/show_bug.cgi?id=56574
- Fix call to spline intersection when evaluating whether a stoke is
- visible.
- Remember to copy inferior sources when using SHM to readback the
- surface for use as a source.
- Release 1.12.6 (2012-10-22 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- Thanks to everyone who download cairo-1.12.4 and gave us their feedback.
- It truly was invaluable and has helped us to fix many portability issues
- that crept in with some of the new features. This release aims to fix
- those stability issues and run on a wider range of systems.
- Bug fixes
- ---------
- Fix the recording surface to actually snapshot the source and so fix
- PDF drawing.
- Calling XSendEvent with an XShmCompletionEvent is incompatabile with
- older Xorg servers.
- Reorder CloseDisplay chain so that XShm is not reinstantiated after
- shutdown, causing a potential crash if the Display was immediately
- recreated using the same memory address.
- Make sure that the Xserver has attached to the SHM segment before
- deleting it from the global namespace on systems that do not support
- deferred deletion.
- Type1 subsetting support for PDF (and PS) was once again improved to
- work with a larger number of PDF readers.
- GLESv2 build fixes and improved support for embedded GPUs.
- Tweak the invisible pen detection for applications that are currently
- using too large values for geometric tolerance.
- A build fix for older freetype libraries.
- Release 1.12.4 (2012-10-05 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- More bugs, and more importantly, more fixes. On the cairo-gl side, we
- have refinements to the MSAA compositor which enables hardware
- acceleration of comparatively low-quality antialiasing - which is useful
- in animations and on very high density screens. For cairo-xlib, we have
- finally enabled SHM transport for image transfers to and from the X
- server. A long standing required feature, SHM transport offers a notable
- reduction in rendering latency by reducing the number of copies
- required to upload image data - given hardware and driver support,
- cairo-xlib can now perform zero copy uploads onto the GPU. And as usual
- Adrian Johnson has been very busy fixing many different corner cases in
- cairo-pdf, impoving opacity groups and font subsetting. Last, but not
- least, for cairo-image Søren Sandmann Pedersen added support for
- rendering glyphs to pixman and using that from within cairo. The new
- glyph rendering facility reduces the overhead for setting up the
- compositing operation, improving glyph thoughput for the image backend
- by a factor of about 4. And before he did so, he also fixed up a few
- bugs in the existing glyph rendering code. So many thanks to Andrea
- Canciani, Adrian Johnson, Chuanbo Weng, Dongyeon Kim, Henry Song, Martin
- Robinson, Søren Sandmann Pedersen and Uli Schlachter for their
- contributions, finding and fixing bugs.
- Bug fixes
- ---------
- Interior boxes were being dropped when amalgamating regions during
- tesselation.
- https://bugs.freedesktop.org/show_bug.cgi?id=49446
- Allow building without gtk-doc installed
- Invalid edge generation whilst reducing complex polygons.
- https://bugs.freedesktop.org/show_bug.cgi?id=50852
- Stroking around tight cusps
- Use locale correct formats for reading font subsetting and valid
- buffers.
- https://bugs.freedesktop.org/show_bug.cgi?id=51443
- Ensure that the type1 subset includes all the glyph encodings
- https://bugs.freedesktop.org/show_bug.cgi?id=53040
- Upload the whole source for a repeating pattern.
- https://bugs.freedesktop.org/show_bug.cgi?id=51910
- Fix damage tracking to handle continuation chunks corectly and so
- prevent crashes on win32.
- https://bugs.freedesktop.org/show_bug.cgi?id=53384
- Avoid emitting miter joins for degenerate line segments
- https://bugzilla.mozilla.org/show_bug.cgi?id=407107
- Convert the relative path semgents into the backend coordinates
- and then back again to user coordinates (cairo_copy_path,
- cairo_append_path)
- https://bugs.freedesktop.org/show_bug.cgi?id=54732
-
- Fix extents computations for a degenerate path consisting only of a
- move-to
- https://bugs.freedesktop.org/show_bug.cgi?id=54549
- Prevent crashing on a degenerate project edge after polygon
- intersection
- https://bugs.freedesktop.org/show_bug.cgi?id=54822
-
- Release 1.12.2 (2012-04-29 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- After such a long gestation period for the release of Cairo 1.12, we
- inevitably accumulated a few bugs that were flushed out by broadening the
- test base. Thanks to everybody who tried the release, apologies to any one
- unfortunate enough to encounter a bug and many thanks for reporting it. As
- a result Adrian Johnson, Alexandros Frantzis, Andrea Canciani, Kalev
- Lember, Maarten Bosman, Marcus Meissner, Nis Martensen and Uli Schlachter
- have squashed many more bugs and improved the documentation. I would
- strongly recommend everyone to upgrade to cairo-1.12.2.
- -Chris
- Bug fixes
- ---------
- Allow applications to create 0x0 xlib surfaces, such as used by LibreOffice.
- https://bugs.freedesktop.org/show_bug.cgi?id=49118
-
- Trim composite extents for SOURCE/CLEAR operators to the mask.
- Use fallback fonts in PDF for unhandled computed glyph widths
- https://bugs.freedesktop.org/show_bug.cgi?id=48349
- Handle snapshots of recording surfaces for analysing pattern extents.
- Fixes a regression of reporting the PDF bounding box as being the page size.
- Fix allocation size for PDF pattern ids.
- Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49089
- Fix emission of rectilinear dashed segments, with and without scaling, and
- application of degenerate line joins.
- Clamp unbounded fixup polygons to the clip extents.
- Prevent infinite loop due to rounding errors whilst incrementing along dashes.
- Prevent overflow for inline a8 span filling.
- Miscellaneous build fixes for Cygwin on Windows and Solaris.
- Release 1.12.0 (2012-03-23 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- It's taken over 18 months, but the wait is finally over. A new cairo release!
- We are pleased to annouce a new stable release of Cairo that brings many
- new features and performance improvements, all whilst maintaining
- compatibility with cairo-1.0 and all releases since. We recommend anyone
- using a previous release of Cairo to upgrade to 1.12.0.
- The major feature of this release is the introduction of a new procedural
- pattern; the mesh gradient. This, albeit complex, gradient is constructed
- from a set of cubic Bezier patches and is a superset of all other gradient
- surfaces which allows for the construction of incredibily detailed patterns.
- In PDF parlance, the mesh gradient corresponds with type 7 patterns. Many
- thanks to Andrea Canciani for bringing this to Cairo, and for his work on
- making gradient handling robust.
- Not content with just adding another procedural pattern, Cairo 1.12 also
- adds new API to create a callback pattern,
- cairo_pattern_create_raster_source, that allows the application to
- provide the pixel data for the region of interest at the time of
- rendering. This can be used for instance, by an application to decode
- compressed images on demand and to keep a cache of those decompressed
- images, independently of Cairo. When combined with the recording
- surface, it should form a useful basis for a deferred renderer.
- With the release of cairo-1.12, we also introduce a new supported
- backend for interoperating with X using XCB. Uli Schlachter, also
- maintainer of awesome and contributor to libxcb, has volunteered to
- maintain cairo-xcb for us. Thanks Uli!
- For cairo-1.12, we have also added some common API to address any
- surface as an image and so allow direct modification of the raster data.
- Previously, only the Quartz and Win32 backends supported a very narrow
- interface to allow for efficient pixel upload. Now with
- cairo_surface_create_similar_image, cairo_surface_map_to_image, and
- cairo_surface_unmap_image, Cairo exports a consistent method for
- treating those surfaces as an image and so allow modification inplace.
- These are the same routines used internally, and should support
- efficient transfer or direct mapping of the target surfaces as
- applicable.
- Another focus over the past year has been to address many performance
- issues, without sacrificing the composition model. To accomplish the
- goal, once again the rasterisation pipeline was overhauled and made
- explicit, giving the backends the freedom to implement their own
- specific pipeline whilst also providing a library of common routines
- from which to build the pipeline. For instance, this allows the image
- backend and the gl backend to composite scan line primitives inplace,
- and to then implement custom fallbacks to catch the corner cases that do
- not map onto their fastest paths. Similarly, this allows for the Xlib
- backend to implement trapezoidation without compromising the other
- backends, yet still allow for the pipeline to be used elsewhere for
- testing and fallbacks. Clipping was once again overhauled, so that the
- common cases for the raster pipelines could be captured and processed
- with fast paths with the emphasis on performing geometric clipping to
- reduce the frequency of using multi-pass clipmasks. Stroking was made
- faster, both by providing specialised fast-paths for simple, yet frequent,
- cases (such as stroking around a rectangle) and by reducing the number
- of edges generated by the general stroker.
- As part of the focus on performance, Cairo 1.12 introduces some
- antialias hints (NONE, FAST, GOOD, BEST) that are interpolated by the
- rasterisers to fine tune their performance versus quality. Cairo 1.12
- also introduces a new observation architecture,
- cairo_surface_observer_t, which can be used to analyse the amount of
- time consumed by drawing commands and help identify inefficiencies in
- both Cairo and the application.
- Last, but by no means least, the OpenGL backend has seen significant
- work including the port to GLESv2 and the exploitation of advanced
- hardware features. Interesting times.
- As always, I would like to thank everyone who contributed to Cairo,
- not only through writing code, but also submitting documentation, bug
- reports, suggestions and generally having fun with Cairo! In particular
- though this release could not have happened without the efforts of
- Adrian Johnson, Alexandros Frantiz, Andrea Canicani, Martin Robinson,
- Nis Martensen, and Uli Schlachter. Thanks.
- -Chris
- Snapshot 1.11.4 (2012-13-12)
- ============================
- The cairo community is pleased to finally announce the long aniticpated
- release candidate for 1.12, 1.11.4, of the cairo graphics library. This
- is the first major update to cairo in over a year and brings a large
- number of new features; undoubtably a few bugs as well.
- While many people have contributed and have helped to test the release,
- providing feedback on 1.10 and suggesting improvements, this release
- is the result of a few persevering souls who deserve recognition for their
- outstanding contributions: Andrea Canciani (all round bug fixing,
- performance tuning and master of the gradients), Adrian Johnson (PDF
- supremo) and Uli Schlachter (who stepped forward as maintainer for the
- XCB backend).
- Major additions since 1.11.2:
- * cairo_surface_map_to_image API for pixel level access to any surface
- * New antialias hints to control the trade-off between speed and quality
- * A callback pattern, cairo_pattern_create_raster_source, for lazy
- decoding of image data.
- * cairo_surface_observer_t, a new type of surface to gather performance
- statistics
- * XCB as a supported backend
- * A rewritten compositor pipeline for performance improvements for, but not
- limited to, the xlib and image backends.
- From ION and PineView through to SandyBridge, every machine I have shows
- across the board performance improvement on the cairo-traces:
- i5-2520m gnome-system-monitor: 5.97x speedup
- pnv gnome-system-monitor: 4.86x speedup
- i5-2520m firefox-asteroids: 4.66x speedup
- pnv firefox-asteroids: 4.43x speedup
- image firefox-canvas: 3.82x speedup
- i5-2520m firefox-canvas-alpha: 3.49x speedup
- image firefox-asteroids: 2.87x speedup
- pnv firefox-talos-svg: 2.83x speedup
- ion grads-heat-map: 2.75x speedup
- pnv firefox-canvas-alpha: 2.66x speedup
- image gnome-system-monitor: 2.66x speedup
- image swfdec-giant-steps: 2.46x speedup
- image firefox-canvas-alpha: 2.14x speedup
- i5-2520m firefox-talos-svg: 2.03x speedup
- image grads-heat-map: 2.02x speedup
- ion gnome-system-monitor: 2.00x speedup
- pnv firefox-particles: 1.99x speedup
- i5-2520m grads-heat-map: 1.96x speedup
- pnv firefox-canvas: 1.92x speedup
- ion firefox-particles: 1.80x speedup
- image poppler-reseau: 1.77x speedup
- pnv xfce4-terminal-a1: 1.72x speedup
- image firefox-talos-svg: 1.65x speedup
- pnv grads-heat-map: 1.63x speedup
- i5-2520m firefox-canvas: 1.63x speedup
- pnv swfdec-youtube: 1.62x speedup
- image ocitysmap: 1.59x speedup
- i5-2520m firefox-fishbowl: 1.56x speedup
- i5-2520m poppler-reseau: 1.50x speedup
- i5-2520m evolution: 1.50x speedup
- i5-2520m midori-zoomed: 1.43x speedup
- pnv firefox-planet-gnome: 1.42x speedup
- i5-2520m firefox-talos-gfx: 1.41x speedup
- i5-2520m gvim: 1.41x speedup
- pnv ocitysmap: 1.37x speedup
- image poppler: 1.31x speedup
- ion firefox-canvas-alpha: 1.35x speedup
- ion firefox-talos-svg: 1.34x speedup
- i5-2520m ocitysmap: 1.32x speedup
- pnv poppler-reseau: 1.31x speedup
- i5-2520m firefox-planet-gnome: 1.31x speedup
- pnv firefox-fishbowl: 1.30x speedup
- pnv evolution: 1.28x speedup
- image gvim: 1.27x speedup
- i5-2520m swfdec-youtube: 1.25x speedup
- pnv gnome-terminal-vim: 1.27x speedup
- pnv gvim: 1.25x speedup
- image firefox-planet-gnome: 1.25x speedup
- image swfdec-youtube: 1.25x speedup
- ...
- And a plethora of minor improvements everywhere!
- -Chris
- Snapshot 1.11.2 (2011-01-23)
- ===========================
- In this first snapshot along the way to cairo-1.12.0, we are very excited
- to announce the introduction of Bezier surface gradients, known as type
- 6/7 gradients in PS/PDF parlance. This is the culmination of much work by
- the dynamic duo: Adrian Johnson and Andrea Canciani. Thanks guys!
- Also, I want to warmly welcome Uli Schlachter who recently joined the
- Cairo community on a mission. That mission is to make cairo-xcb a
- supported backend for 1.12. And for this snapshot he has made great
- strides in fixing all the bugs I had left behind. Thanks Uli!
- And we have also seen a new contributor, Alexandros Frantzis, who has
- begun bringing up cairo-gl for GLESv2 devices. Thanks Alex!
- And lastly, I must also thank Adrian and Andrea for the vast numbers of
- bugs that they have tackled between them, fixing all those little corner
- cases that lie hidden until too late.
- API additions:
- The ability to construct piece-wise Bezier surface gradients:
- cairo_pattern_create_mesh
- constructs a pattern of type CAIRO_PATTERN_TYPE_MESH using
- cairo_pattern_mesh_begin_patch
- cairo_pattern_mesh_end_patch
- cairo_pattern_mesh_curve_to
- cairo_pattern_mesh_line_to
- cairo_pattern_mesh_move_to
- cairo_pattern_mesh_set_control_point
- cairo_pattern_mesh_set_corner_color_rgb
- cairo_pattern_mesh_set_corner_color_rgba
- cairo_pattern_mesh_get_patch_count
- cairo_pattern_mesh_get_path
- cairo_pattern_mesh_get_corner_color_rgba
- cairo_pattern_mesh_get_control_point
- The introduction of a unique ID accessible via the mime data type:
- CAIRO_MIME_TYPE_UNIQUE_ID
- Release 1.10.2 (2010-12-25 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- The cairo community is pleased to announce the 1.10.2 release of the
- cairo graphics library. This is the first update to cairo's stable 1.10
- series and contains a large number of bug fixes.
- While many people have contributed and have help to test the release,
- 2 people deserve special recognition for their efforts in tracking down
- and fixing bugs, Andrea Canciani and Adrian Johnson. Thanks to their
- tremendous efforts, and of all cairo contributors, it is much
- appreciated.
- We recommend everyone upgrade to cairo 1.10.2 and hope that everyone
- will continue to have lots of fun with cairo!
- -Chris
- Bug fixes
- ---------
- Fix embedding of grayscale jpegs in PS.
- https://bugs.freedesktop.org/show_bug.cgi?id=31632
- Fix the reported path of extents containing a curve.
- Fix the compositing of unaligned boxes.
- Reset the clipper in PDF upon finish.
- Fix degenerates arcs to become a degenerate line.
- Build support for autoconf 2.67
- Fix painting of transformed patterns in PS
- Fix the EPS bounding box for PS
- https://bugs.freedesktop.org/show_bug.cgi?id=24688
- Fix the missing content for EPS
- https://bugs.freedesktop.org/show_bug.cgi?id=24688
- Fix regression upon changing page size in PS/PDF
- https://bugs.freedesktop.org/show_bug.cgi?id=24691
- Only use ActualText with PDF-1.5 documents
- Fix the bbox for type1 fallbacks.
- Reset the color after ending the context in PDF
- https://bugs.freedesktop.org/show_bug.cgi?id=31140
- Fix the advance of subsetted type1 fonts
- https://bugs.freedesktop.org/show_bug.cgi?id=31062
- Fix handling of EXTEND_NONE gradients for PDF
- Restrict in-place optimisation for a8 image masks with SOURCE
- Release 1.10.0 (2010-09-06 Chris Wilson <chris@chris-wilson.co.uk>)
- ===================================================================
- The cairo community is astounded (and flabbergast) to finally announce
- the 1.10.0 release of the cairo graphics library. This is a major update
- to cairo, with new features and enhanced functionality which maintains
- compatibility for applications written using any previous major cairo
- release, (1.8, 1.6, 1.4, 1.2, or 1.0). We recommend that anybody using
- a previous version of cairo upgrade to cairo 1.10.0.
- One of the more interesting departures for cairo for this release is the
- inclusion of a tracing utility, cairo-trace. cairo-trace generates a
- human-readable, replayable, compact representation of the sequences of
- drawing commands made by an application. This can be used to inspecting
- applications to understand issues and as a means for profiling
- real-world usage of cairo.
- The traces generated by cairo-trace have been collected in
- git://git.cairographics.org/git/cairo-traces
- and have driven the performance tuning of cairo over the last couple of
- years. In particular, the image backend is much faster with a new
- polygon rasterisation and a complete overhaul of the tessellator. Not
- only is this faster, but also eliminates visual artifacts from
- self-intersecting strokes. Not only has cairo-trace been driving
- performance improvements within cairo, but as a repeatable means of
- driving complex graphics it has been used to tune OpenGL, DDX, and
- pixman.
- Cairo's API has been extended to better support printing, notably
- through the ability to include a single compressed representation of an
- image for patterns used throughout a document, leading to dramatic file
- size reductions. Also the meta-surface used to record the vector
- commands compromising a drawing sequence is now exposed as a
- CAIRO_SURFACE_TYPE_RECORDING, along with a new surface that is a child of a
- larger surface, CAIRO_SURFACE_TYPE_SUBSURFACE. One typical usage of a
- subsurface would be as a source glyph in a texture atlas, or as a
- restricted subwindow within a canvas.
- Cairo's API has also resurrected the RGB16 format from the past as
- the prevalence of 16-bit framebuffers has not diminished and is a
- fore-taste of the extended format support we anticipate in the future.
- Increasing cairo's utility, we introduce the cairo_region_t for handling
- sets of pixel aligned rectangles commonly used in graphics applications.
- This is a merger of the GdkRegion and the pixman_region_t, hopefully
- providing the utility of the former with the speed of the latter.
- Furthermore cairo has been reworked to interoperate more closely with
- various acceleration architectures, gaining the ability to share
- those hardware resources through the new cairo_device_t. For instance,
- with the new OpenGL backend that supersedes the Glitz backend, hardware
- and rendering operations can be shared between a classic OpenGL
- application mixing libVA for the hardware assisted video decode with
- cairo for high quality overlays all within the same OpenGL canvas.
- Many thanks for the hard work of Adrian Johnson, Andrea Canciani, Behdad
- Esfahbod, Benjamin Otte, Carl Worth, Carlos Garcia Campos, Chris Wilson,
- Eric Anholt, Jeff Muizelaar, Karl Tomlinson, M Joonas Pihlaja, Søren
- Sandmann Pedersen and many others that have contributed over the last
- couple of years to cairo. Thank you all!
- Snapshot 1.9.14 (2010-07-26)
- ============================
- A quiet couple of weeks, hopefully Cairo is seeing widescale deployment and
- we are being to see the results of the stabilisation effort. Clipping bugs
- seems to have been the order of the last couple of weeks, with a couple
- reported and duly fixed. Thank you Igor Nikitin and Karl Tomlinsion for
- finding those regressions. At this point all that seems to remain to do is
- to fix the outstanding regressions in the PDF backend...
- Bugs fixes
- ----------
- Clip doesn't work for text on the image backend
- https://bugs.freedesktop.org/show_bug.cgi?id=29008
- Add explicit dependency for cxx
- https://bugs.freedesktop.org/show_bug.cgi?id=29114
- Fix regressions in reporting clip extents
- https://bugs.freedesktop.org/show_bug.cgi?id=29120
- https://bugs.freedesktop.org/show_bug.cgi?id=29121
- https://bugs.freedesktop.org/show_bug.cgi?id=29122
- https://bugs.freedesktop.org/show_bug.cgi?id=29124
- https://bugs.freedesktop.org/show_bug.cgi?id=29125
- Snapshot 1.9.12 (2010-07-12)
- ============================
- A couple of weeks spent fixing those annoying bugs and cleaning up the build
- system; the list of outstanding tasks to complete for the stable release is
- finally shrinking. The chief bug fixer has been Benjamin Otte who not only
- made sure that the public API is consistent and being tested for its
- consistency, but also ensured that the documentation was up-to-date and
- spent time clarifying cases where even the Cairo developers have come
- unstuck in the past. Many thanks, Benjamin. However, he was not alone,
- as Andrea Canciani continued his fine work in isolating broken corner cases
- and proceeding to fix them, and tidying up the quartz backend. And last, but
- definitely not least, M Joonas Pihlaja tried building Cairo across a
- perverse range of systems and fixed up all the loose bits of code that came
- unravelled. Thanks everybody!
- API Changes
- -----------
- cairo_surface_set_mime_data, cairo_surface_get_mime_data:
- The length parameter is now an unsigned long (as opposed to an unsigned
- int). The parameter is intended to be an equivalent to a size_t without
- requiring POSIX types and be large enough to store the size of the
- largest possible allocation.
- cairo_gl_surface_create_for_texture:
- This a new surface constructor for cairo-gl that explicitly enables
- render-to-texture for foreign, i.e. application, textures.
- cairo_region_xor, cairo_region_xor_rectangle
- A couple of utility routines add to the region handling interface for
- the purpose of replacing existing GdkRegion functionality.
- Bugs fixes
- ----------
- https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622
- Inkscape was caught in the act of attempting to modify a finished surface.
- Unfortunately, we had the ordering of our guards and assertions wrong and
- so an ordinary application error was triggering an assert in Cairo. This
- lead Benjamin to add a test case to ensure that the entire public API
- could handle erroneous input and then proceeded to fix a whole slew of
- uncovered bugs.
- https://bugs.freedesktop.org/show_bug.cgi?id=28888
- A regression introduced by the special casing of uploading images to an
- xlib surface in-place which was ignoring the translation applied to the
- image.
- Snapshot 1.9.10 (2010-06-26)
- ============================
- The first "quick" snapshot in the run up to the stable release. The
- last snapshot was picked up by the bleeding edge distributions and so the
- bug reports have to started to roll in. The most frequent of these are the
- introduction of rendering errors by applications that modify a surface
- without subsequently calling cairo_surface_mark_dirty(). Make sure the
- application developers are aware of increased reliance on strict use of the
- Cairo API before 1.10 is released!
- The usual slew of bugs reported and we would like to thank Zoxc for
- contributing the WGL interface for cairo-gl, and finding more build
- failures on win32. And it just wouldn't be a 1.9 snapshot unless
- Benjamin Otte improved the error handling within cairo-gl, as well as
- isolating and fixing some more errors in the test suite. The biggest bug of
- the snapshot turned out to be a major sign extension issue that had lain
- hidden for many years and was suddenly exposed by incorrectly rounding
- rectangles when performing non-antialiased rendering. Also to the relief
- of many we have included the downstream patch to honour the user's LCD
- filtering preferences for subpixel rendering of fonts. The interface
- remains private for the time being, whilst the proposed public API is
- finalized.
- API changes
- -----------
- None.
- Snapshot 1.9.8 (2010-06-12)
- ===========================
- One major API changes since the last snapshot, and a whole slew of bugs
- fixed and inconsistencies eliminated. Far too many bugs fixed to
- individually identify. We need to thank Benjamin Otte for his fantastic
- work on the cairo-gl backend making it faster and more robust, Andrea
- Canciani for finding so many bugs and developing test cases for them, as
- well fixing them. And last but not least we must all thank Adrian Johnson for
- continuing to eliminate bugs and improving the PostScript and PDF backends.
- This snapshot represents almost 4 months of bug fixing, bringing Cairo to
- a point where we consider it almost ready to be a candidate for release.
- There are a few known bugs left to be fixed, being tracked in
- https://bugs.freedesktop.org/show_bug.cgi?id=24384, so please give Cairo a
- whirl and report any regressions. The plan is to release a new snapshot
- every other week leading to a 1.10 release with a target date of
- 2010-08-16.
- API additions
- -------------
- CAIRO_FORMAT_RGB16_565
- 16 bit devices still remain popular, and so with great demand,
- CAIRO_FORMAT_RGB16_565 has been restored enabling applications to create
- and use 16 bit images as sources and render targets.
- cairo_surface_create_for_rectangle()
- It is common practice to cut an image up into many smaller pieces and use
- each of those as a source - a technique called texture atlasing.
- cairo_surface_create_for_rectangle() extends Cairo to directly support use
- of these subregions of another cairo_surface_t both as a source and as a
- render target.
- cairo_region_create()
- cairo_region_create_rectangle()
- cairo_region_create_rectangles()
- cairo_region_copy()
- cairo_region_reference()
- cairo_region_destroy()
- cairo_region_equal()
- cairo_region_status()
- cairo_region_get_extents()
- cairo_region_num_rectangles()
- cairo_region_get_rectangle()
- cairo_region_is_empty()
- cairo_region_contains_rectangle()
- cairo_region_contains_point()
- cairo_region_translate()
- cairo_region_subtract()
- cairo_region_subtract_rectangle()
- cairo_region_intersect()
- cairo_region_intersect_rectangle()
- cairo_region_union()
- cairo_region_union_rectangle()
- The Cairo region API was actually added a couple of snapshots ago, but we
- forgot to mention it at the time. A simple API for the handling of
- rectangular pixel-aligned regions by Soeren Sandmann.
-
- Backend-specific improvements
- -----------------------------
- cairo-gl
- Benjamin Otte made more than 200 commits in which he refactored the cairo-gl
- backend, reducing a lot of code duplication and enabled him to begin working
- on improving performance by reducing state changes and associated overhead.
- cairo-xlib
- Access to the underlying connection to the Display is now thread-safe
- enabling cairo-xlib to be used in a multi-threaded application without fear
- of random corruption. Thanks Benjamin Otte!
- cairo-xlib will now attempt to use PolyModeImprecise when compositing
- trapezoids (i.e. a fill or a stroke operation with a non-trivial path) which
- should allow hardware drivers more scope for accelerating the operation at
- the cost of potentially incurring minute rendering errors. The mode can be
- forced back to PolyModePrecise by setting the antialias parameter to
- CAIRO_ANTIALIAS_SUBPIXEL.
- cairo-svg
- A notable improvement was contributed by Alexander Shulgin to enable SVG to
- reference external image through the use an extended MIME data type.
- Snapshot 1.9.6 (2010-02-19)
- ===========================
- API additions
- -------------
- Add cairo_device_t
- The device is a generic method for accessing the underlying interface
- with the native graphics subsystem, typically the X connection or
- perhaps the GL context. By exposing a cairo_device_t on a surface and
- its various methods we enable finer control over interoperability with
- external interactions of the device by applications. The use case in
- mind is, for example, a multi-threaded gstreamer which needs to serialise
- its own direct access to the device along with Cairo's across many
- threads.
- Secondly, the cairo_device_t is a unifying API for the mismash of
- backend specific methods for controlling creation of surfaces with
- explicit devices and a convenient hook for debugging and introspection.
- The principal components of the API are the memory management of:
- cairo_device_reference(),
- cairo_device_finish() and
- cairo_device_destroy();
- along with a pair of routines for serialising interaction:
- cairo_device_acquire() and
- cairo_device_release()
- and a method to flush any outstanding accesses:
- cairo_device_flush().
- The device for a particular surface may be retrieved using:
- cairo_surface_get_device().
- The device returned is owned by the surface.
- API changes (to API new in the cairo 1.9.x series)
- --------------------------------------------------
- cairo_recording_surface_create()
- cairo_recording_surface_ink_extents()
- These are the replacement names for the functions previously named
- cairo_meta_surface_create and cairo_meta_surface_ink_extents.
- cairo_surface_set_mime_data
- This interface is now changed such that the MIME data will be
- detached if the surface is modified at all. This guarantees that
- the MIME data will not become out of synch due to surface
- modifications, and also means that for the MIME data to be useful,
- it must be set after all modifications to the surface are
- complete.
- API removal (of experiment API)
- -------------------------------
- The cairo-glitz backend is removed entirely, (in favor of the new
- cairo-gl backend). See below for more on cairo-gl.
- Generic fixes
- -------------
- Many improvements for drawing of dashed strokes
- Fix incorrect handling of negative offset
- Faster computation of first dash (avoids near-infinite looping)
- Approximate extremely fine dash patterns with appropriate alpha value
- Optimize spans-based renderers for repeated rows, (such as in a rounded rectangle)
- Backend-specific improvements
- -----------------------------
- cairo-drm
- This is a new, direct-rendering backend that supports Intel graphics
- chipsets in the i915 and i965 families. It's still experimental and
- will likely remain that way for a while. It's already got extremely
- good performance on the hardware it supports, so if nothing else
- provides a working proof and performance target for the cairo-gl
- work for Intel graphics.
- cairo-gl
- Start using GLSL to accelerate many operations. Many thanks to Eric
- Anholt and T. Zachary Laine for this work. For the first time, we
- have what looks like what will be a very compelling OpenGL-based
- backend for cairo (in terms of both quality and performance).
- See this writeup from Eric for more details on recent progress of
- cairo-gl (which he presented at FOSDEM 2010):
- http://anholt.livejournal.com/42146.html
- cairo-image
- The image backend is made dramatically faster (3-5 times faster for
- benchmarks consisting primarily of glyph rendering).
- cairo-quartz fixes:
- Many fixes from Robert O'Callahan and Andrea Canciani including:
- Fixed gradient pattern painting
- Improved A8 image handling
- Fixes for "unbounded" and other compositing operators
- cairo-pdf fixes:
- Improvements to embedding of JPEG and JPEG2000 data.
- cairo-ps fixes:
- Fix printing of rotated user fonts.
- Snapshot 1.9.4 (2009-10-15)
- ===========================
- API additions:
- cairo_meta_surface_create()
- cairo_meta_surface_ink_extents()
- Finally exporting the internal meta-surface so that applications
- have a method to record and replay a sequence of drawing commands.
- cairo_in_clip()
- Determines whether a given point is inside the current clip.
- ??? Should this be called cairo_in_paint() instead? in-clip is the test
- that is performed, but in-paint would be similar to in-fill and in-stroke.
- New utilities:
- cairo-test-trace
- A companion to cairo-perf-trace, this utility replays a trace against
- multiple targets in parallel and looks for differences in the output,
- and then records any drawing commands that cause a failure.
- Future plans:
- Further minimisation of the fail trace using "delta debugging".
- More control over test/reference targets.
- Backend improvements:
- xlib
- Server-side gradients. The theory is that we can offload computation
- of gradients to the GPU and avoid pushing large images over the
- connection. Even if the driver has to fallback and use pixman to render
- a temporary source, it should be able to do so in a more efficient manner
- than Cairo itself. However, cairo-perf suggests otherwise:
- On tiny, Celeron/i915:
- before: firefox-20090601 211.585
- after: firefox-20090601 270.939
- and on tiger, CoreDuo/nvidia:
- before: firefox-20090601 70.143
- after: firefox-20090601 87.326
- In particular, looking at tiny:
- xlib-rgba paint-with-alpha_linear-rgba_over-512 47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%): 2.62x slowdown
- █▋
- xlib-rgba paint-with-alpha_linear3-rgba_over-512 47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%): 2.62x slowdown
- █▋
- New experimental backends:
- QT
- OpenVG - The initial work was done by Øyvind Kolås, and made ready for
- inclusion by Pierre Tardy.
- OpenGL - An advanced OpenGL compositor. The aim is to write a integrate
- directed rendering using OpenGL at a high-level into Cairo. In
- contrast to the previous attempt using Glitz which tried to
- implement the RENDER protocol on top of OpenGL, using the
- high-level interface should permit greater flexibility and
- more offloading onto the GPU.
- The initial work on the backend was performed by Eric Anholt.
- Long standing bugs fixed:
- Self-intersecting strokes.
- A long standing bug where the coverage from overlapping semi-opaque
- strokes (including neighbouring edges) was simply summed in lieu of
- a costly global calculation has been fixed (by performing the costly
- global calculation!) In order to mitigate the extra cost, the
- tessellator has been overhauled and tune, which handles the fallback
- for when we are unable to use the new span rasteriser on the stroke
- (e.g. when using the current RENDER protocol). The large number of
- pixel artefacts that implementing self-intersection elimination
- removes is ample justification for the potential performance
- regression. If you unfortunately do suffer a substantial performance
- regression in your application, please consider obtaining a
- cairo-trace and submitting it to us for analysis and inclusion into
- our performance suite.
- Special thanks:
- To the AuroraUX team for providing access to one of their OpenSolaris
- machines for cairo and pixman development. http://www.auroraux.org/
- Snapshot 1.9.2 (2009-06-12)
- ===========================
- API additions:
- cairo_surface_set_mime_data()
- cairo_surface_get_mime_data()
- Should this take unsigned int, unsigned long or size_t for the length
- parameter? (Some datasets may be >4GiB in size.)
- Associate an alternate, compressed, representation for a surface.
- Currently:
- "image/jp2" (JPEG2000) is understood by PDF >= 1.5
- "image/jpeg" is understood by PDF,PS,SVG,win32-printing.
- "image/png" is understood by SVG.
- cairo_pdf_version_t
- cairo_pdf_surface_restrict_to_version()
- cairo_pdf_get_versions()
- cairo_pdf_version_to_string()
- Similar to restrict to version and level found in SVG and PS,
- these limit the features used in the output to comply with the PDF
- specification for that version.
- CAIRO_STATUS_INVALID_SIZE
- Indicates that the request surface size is not supported by the
- backend. This generally indicates that the request is too large.
- CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED
- Indicates that a required callback for a user-font was not implemented.
- CAIRO_STATUS_LAST_STATUS
- This is a special value to indicate the number of status values enumerated
- at compile time. (This may differ to the number known at run-time.)
- The built-in twin font is now called "@cairo:" and supports a limited set
- of options like "@cairo:mono". Where are these specified?
- cairo_in_fill() now uses HTML Canvas semantics, all edges are inside.
- New experimental backends:
- CairoScript
- New utility:
- cairo-trace and cairo-perf-trace
- cairo-trace generates a human-readable, replayable, compact(-ish!)
- representation of the sequences of drawing commands made by an
- application.
- Under the util/cairo-script directory is a library to replay traces.
- perf/cairo-perf-trace replays traces against multiple backends
- and makes useful benchmark reports. This is integrated with
- 'make perf'. You may collect your own traces or take advantage
- of traces collected by the community:
- git://git.cairographics.org/git/cairo-traces
- (Put this into perf/cairo-traces to run these as part of "make perf".)
- There is additional WIP in building a debugging tool for cairo applications
- based on CairoScript (currently very preliminary, mostly serves to show
- that GtkSourceView is too slow) :
- people.freedesktop.org:~ickle/sphinx
- Test suite overhaul:
- The test suite is undergoing an overhaul, primarily to improve its speed
- and utility. (Expect more changes in the near future to improve XFAIL
- handling.)
- Optimisations:
- polygon rasterisation! Joonas implemented the Tor polygon scan converter,
- on typical geometry is about 30% faster for the image backend.
- Bovine Polaroids! For those not in on the joke, this is the long
- awaited "copy-on-write snapshot" or "COW snapshot" support. The
- user-visible feature is that including the same image multiple times
- into a PDF file should result in only a single instance of that
- image in the final output. This is unlike previous versions of cairo
- which would generate very large PDF files with multiple copies of
- the same image. Adrian says that the PDF is not quite working as
- well as it should yet, so we hope for further improvements before
- cairo 1.10.
- Bug fixes:
- EXTEND_PAD.
- Better handling of large scale-factors on image patterns.
- Emit /Interpolate for PS,PDF images.
- Global glyph cache - cap on the total number of inactive glyphs,
- should prove fairer for fonts with larger glyph sets.
- Compilation without fontconfig
- Improved handling of low-bitdepth sources (e.g. copying the contents
- of 16-bit xserver windows)
- Regressions:
- cairo_traps_extract_region >10x slower. Fix pending.
- Still to come:
- Region tracking API (ssp) for damage tracking, hit testing etc
- mime-surface
- An expiremental OpenGL backend?
- Tweaks to tessellator, allocations of patterns, delayed
- initialisation of the xlib backend (reduce the cairo overhead of
- render_bench by ~80%).
- Release 1.8.8 (2009-06-16 Chris Wilson <chris@chris-wilson.co.uk>)
- ==================================================================
- The cairo community is pleased to announce the 1.8.8 release of the
- cairo graphics library. This is the fourth update to cairo's stable
- 1.8 series and contains a small number of bug fixes (in particular a
- few corrections to the documentation and a few fixes in the FreeType font
- backend). This is being released just over six months after cairo 1.8.6.
- We recommend that everyone using cairo upgrade to 1.8.8.
- -Chris
- Build fixes
- -----------
- There were reports of incompatibilities with the autotools bundled in with
- the 1.8.6 tarball. This release has been built with automake-1.10.2 and
- autoconf-2.63.
- The configure check for FreeType has been improved:
- typo in check for version of freetype in configure script
- https://bugs.freedesktop.org/show_bug.cgi?id=19283
- Compilation on 64-bit MacOS/X fixes:
- Cannot build cairo_quartz_font_face_create_for_atsu_font_id on 64-bit Mac OS X
- https://bugs.freedesktop.org/show_bug.cgi?id=15702
- Bug fixes
- ---------
- Uninitialised status return within _cairo_clip_intersect_mask(). This caused
- random crashes and general mayhem as an error could be generated causing all
- rendering to the context to stop.
- Avoid transforming nearly-degenerate matrices into degenerate matrices:
- Painting stops in this case, using -moz-transform: scale, rotate and video
- https://bugzilla.mozilla.org/show_bug.cgi?id=467423
- A few FreeType font handling bugs were fixed:
- Rendering with PANGO_GRAVITY_EAST leads to different results with image and pdf
- https://bugs.freedesktop.org/show_bug.cgi?id=21985
- Don't call FT_Done_Face() on faces we did not create
- zombie ft_font_face / ft_unscaled_font mutual referencing problems
- http://bugs.freedesktop.org/show_bug.cgi?id=21706
- Ensure win32 font backend sets the return value to -1 (indicating the absent
- glyph) if the font index lookup for the unicode character fails. And
- similarly fix a bug where a fatal error was raised for an invalid glyph.
- cairo_scaled_font_glyph_extents breaks with invalid glyph id
- http://bugs.freedesktop.org/show_bug.cgi?id=20255
- Various improvements to the documentation, reported by Truc Troung:
- https://bugs.freedesktop.org/show_bug.cgi?id=20095
- https://bugs.freedesktop.org/show_bug.cgi?id=20154
- https://bugs.freedesktop.org/show_bug.cgi?id=20180
- https://bugs.freedesktop.org/show_bug.cgi?id=20183
- https://bugs.freedesktop.org/show_bug.cgi?id=20182
- https://bugs.freedesktop.org/show_bug.cgi?id=20441
- Release 1.8.6 (2008-12-13 Chris Wilson <chris@chris-wilson.co.uk>)
- ==================================================================
- The cairo community is pleased to announce the 1.8.6 release of the
- cairo graphics library. This is the third update to cairo's stable
- 1.8 series and contains a small number of bug fixes (in particular a
- few fixes for failures of cairo 1.8.4 on Quartz and PDF, and build fixes for
- a couple of backends). This is being released just under a month after
- cairo 1.8.4.
- We recommend that everyone using cairo upgrade to 1.8.6.
- -Chris
- Build fixes
- -----------
- Fix build of DirectFB backend with debugging enabled:
- Bug in _cairo_directfb_surface_release_source_image function
- http://bugs.freedesktop.org/show_bug.cgi?id=18322
- Fix build on OS/2.
- Bug fixes
- ---------
- Workaround a mis-compilation of cairo_matrix_invert() that generated invalid
- matrices and triggered assertion failures later. The issue was reported by
- Peter Hercek.
- Invalid computation of the modulus:
- https://bugzilla.mozilla.org/show_bug.cgi?id=466258
- Invalid referencing of patterns in the Quartz backend:
- Failed assertion `CAIRO_REFERENCE_COUNT_HAS_REFERENCE
- (&pattern->ref_count)' when using cairo quartz backend
- http://bugs.freedesktop.org/show_bug.cgi?id=18632
- Invalid references to glyphs after early culling, causing segmentation faults
- in the PDF backend:
- http://lists.cairographics.org/archives/cairo/2008-December/015976.html
- Check for XRender in the XCB backend, or else we may attempt an invalid memory
- access:
- XCB backend fails with missing render.
- https://bugs.freedesktop.org/show_bug.cgi?id=18588
- Release 1.8.4 (2008-11-14 Carl Worth <cworth@cworth.org>)
- =========================================================
- The cairo community is pleased to announce the 1.8.4 release of the
- cairo graphics library. This is the second update to cairo's stable
- 1.8 series and contains a small number of bug fixes, (in particular a
- few fixes for build failures of cairo 1.8.2 on various systems). This
- is being released just over two weeks after cairo 1.8.2.
- We recommend that everyone using cairo upgrade to 1.8.4.
- -Carl
- Build fixes
- -----------
- Fix build with older XRender that doesn't define RepeatNone:
- Build of xlib backend fails against old XRender (RepeatNone undeclared)
- https://bugs.freedesktop.org/show_bug.cgi?id=18385
- Fix build with bash version <= 3.0:
- doltlibtool broken on linux with bash 3.00.0
- https://bugs.freedesktop.org/show_bug.cgi?id=18363
- Bug fixes
- ---------
- Avoid triggering a bug in X.org server 6.9 resulting in a hung machine
- requiring a reboot:
- https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2
- Fix display of user fonts as exercised by proposed support for type3
- fonts in poppler (unsigned promotion fixes):
- Use cairo user-font for Type 3 fonts
- http://lists.freedesktop.org/archives/poppler/2008-October/004181.html
- Avoid miscomputing size of fallback images required when rendering
- with CLEAR, IN, or SOURCE operator to vector surfaces, (PS, PDF, SVG,
- etc.).
- Be more tolerant of broken fonts when subsetting type1 fonts:
- Error handling in cairo_type1_font_subset_get_glyph_names_and_widths
- http://lists.cairographics.org/archives/cairo/2008-October/015569.html
- Fix cairo_fill_extents, cairo_stroke_extents, cairo_path_extents, to
- correctly allow NULL parameters as documented.
- Fix potential crash on emitting a type3 glyph after having drawn text
- paths from the same font, (for example with cairo_text_path).
- Release 1.8.2 (2008-10-29 Carl Worth <cworth@cworth.org>)
- =========================================================
- The cairo community is pleased to announce the 1.8.2 release of the
- cairo graphics library. This is the first update to cairo's stable 1.8
- series and contains a large number of bug fixes. It is being released
- just over one month since cairo 1.8.0.
- This release consists primarily of bug fixes, but there is one notable
- new feature, (the ability to build cairo without an external font
- backend), and there are a few optimizations as well. See below for
- details on these changes and the most important bug fixes.
- While many people have contributed to this release, Chris Wilson
- deserves particular mention. He has contributed well over twice as
- many changes to cairo since 1.8.0 than everyone else combined. We
- greatly appreciate the tremendous efforts of Chris and all cairo
- contributors.
- We recommend everyone upgrade to cairo 1.8.2 and hope that everyone
- will have lots of fun with cairo!
- -Carl
- New feature
- -----------
- It is now possible to build cairo without any font backend, (such as
- freetype, win32 or quartz). This is most useful when the application
- provides custom font rendering through the user-font API. But in the
- case where no external font backend is available, and no user-font is
- provided, cairo will render with a failsafe font, (a stroked font
- covering visible ASCII character). (Behdad Esfahbod)
- Optimizations
- -------------
- Dramatically speed up compilation with dolt (removes much of the
- libtool overhead) (Behdad Esfahbod with thanks to Josh Triplett).
- Several minor optimizations to tessellator (special-cased comparisons,
- faster insert for skiplist, etc.) (Chris Wilson).
- Optimize away fractional translation component when doing
- EXTEND_NEAREST filtering, (for better performance).
- General bug fixes
- -----------------
- Allow cloning sub-regions of similar surfaces to fix this bug
- (Chris Wilson):
- Crafted gif file will crash firefox
- [XError: 'BadAlloc (insufficient resources for operation)']
- https://bugzilla.mozilla.org/show_bug.cgi?id=424333
- Fix some matrix confusion to fix this regression (Chris Wilson):
- Translucent star exports in a wrong way to PDF
- https://bugs.launchpad.net/inkscape/+bug/234546
- Fix some long-standing bugs with respect to properly computing the
- extents of transformed, filtered surfaces (Owen Taylor, Carl Worth,
- and Chris Wilson):
- Bad clipping with EXTEND_NONE
- http://bugs.freedesktop.org/show_bug.cgi?id=15349
- Improve filtering handling in cairo-pattern.c
- http://bugs.freedesktop.org/show_bug.cgi?id=15367
- Many thanks to Chris Wilson for digging out and cleaning up
- these fixes.
- Fix compilation on Solaris 10 (Chris Wilson):
- Cairo requires -DREENTRANT (along with -D_POSIX_THREAD_SEMANTICS)
- to compile on Solaris 10 with pthreads
- https://bugs.freedesktop.org/show_bug.cgi?id=18010
- Fix very old bug causing dashes to be rendered at the wrong length in
- fallback images (Adrian Johnson)
- Dashed strokes too long in fallback images
- https://bugs.freedesktop.org/show_bug.cgi?id=9189
- Fix broken dashing when a dashed path starts outside the clip region
- (Chris Wilson).
- Avoid range overflow when computing large patterns (Benjamin Otte and
- Chris Wilson).
- Avoid crashing due to an invalid font with an incorrect entry in its
- CMAP table (Adrian Johnson).
- Fix bugs in computing maximum size of text requests that can be sent
- with the Render extension, (avoiding potential crashes when rendering
- large amounts of text) (Behdad Esfahbod and Chris Wilson).
- Fix rendering of operators unbounded by the mask (Chris Wilson).
- Fix compilation on systems without compiler support for a native
- 64-bit type (Chris Wilson).
- Fix several cases of missing error-status propagation. (Chris Wilson,
- doing the work he seems to never tire of).
- Fix several locking issues found with the lockdep valgrind skin (Chris
- Wilson).
- Backend-specific bug fixes
- --------------------------
- xlib: Avoid crash due to attempting XRender calls on pixmaps with
- formats not supported by the Render extension (Chris Wilson):
- XRender crashes due to NULL pointer from Cairo on SGI O2
- https://bugs.freedesktop.org/show_bug.cgi?id=11734
- xlib: Add support for XImages with depth of 4, 20, 24, or 28 bits
- (Chris Wilson):
- cairo doesn't support 24 bits per pixel mode on X11
- https://bugs.freedesktop.org/show_bug.cgi?id=9102
- xlib: Avoid mistakenly considering two surfaces as similar just
- because their depths match (while their Render formats do not) (Karl
- Tomlinson).
- ps: Fix slight mis-scaling of bitmapped fonts (Adrian Johnson)
- svg: Correctly emit comp-op for paint, mask, and show_glyphs
- operations (Emmanuel Pacaud).
- svg: Use finer-grained fallbacks for SVG 1.2 (as PS and PDF backends
- have been doing since 1.6.0) (Chris Wilson).
- win32: Fallback to DIB if DDB create fails for
- cairo_surface_create_similar (Vladimir Vukicevic).
- win32: Fix compatibility with Windows Mobile (Vladimir Vukicevic).
- win32: Fix static builds to not do __declspec(dllimport) on public
- functions. This requires the user to set a CAIRO_WIN32_STATIC_BUILD
- environment variable when compiling (Behdad Esfahbod).
- Release 1.8.0 (2008-09-25 Carl Worth <cworth@cworth.org>)
- =========================================================
- The cairo community is happy (and relieved) to announce the 1.8.0
- release of the cairo graphics library. This is a major update to
- cairo, with new features and enhanced functionality which maintains
- compatibility for applications written using any previous major cairo
- release, (1.6, 1.4, 1.2, or 1.0). We recommend that anybody using a
- previous version of cairo upgrade to cairo 1.8.0.
- The dominant theme of this release is improvements to cairo's ability
- to handle text. The highlights include a new "user fonts" feature as
- well as a new cairo_show_text_glyphs API which allows glyphs to be
- embedded in PDF output along with their original text, (for searching,
- selection, and copy-and-paste). Another major feature is a revamp of
- cairo's build system making it much easier to build cairo on various
- platforms.
- See below for more details.
- User fonts
- ----------
- This new API allows the user of cairo API to provide drawings for
- glyphs in a font. A common use for this is implementing fonts in
- non-standard formats, like SVG fonts and Flash fonts. This API can
- also be used by applications to provide custom glyph shapes for fonts
- while still getting access to cairo's glyph caches. See
- test/user-font.c and test/user-font-proxy.c for usage examples. This
- is based on early work by Kristian Høgsberg. Thanks Kristian!
- This new API consists of the following functions (and corresponding
- _get functions):
- cairo_user_font_face_create
- cairo_user_font_face_set_init_func
- cairo_user_font_face_set_render_glyph_func
- cairo_user_font_face_set_text_to_glyphs_func
- cairo_user_font_face_set_unicode_to_glyph_func
- An additional, new API is
- cairo_scaled_font_text_to_glyphs
- We were previously reluctant to provide this function as
- text-to-glyphs support in cairo was limited to "toy" font
- functionality, not really interesting for real-world text
- processing. However, with user fonts landing, this API is needed to
- expose full access to how user fonts convert text to glyphs. This is
- expected to be used by text toolkits like Pango, as well as "proxy"
- user-font implementations.
- cairo_show_text_glyphs
- ----------------------
- This new API allows the caller of cairo to provide text data
- corresponding to glyphs being drawn. The PDF backend implements this
- new API so that complex text can be copied out of cairo's PDF output
- correctly and reliably, (assuming the user of cairo calls
- cairo_show_text_glyphs). The cairo_show_text_glyphs API is definitely
- the most daunting API to debut in cairo. It is anticipated that pango
- (and similar high-level text libraries) will be the primary users of
- this API. In fact, pango 1.22 already uses cairo_show_text_glyphs.
- Behdad was the architect and implementor of this effort. Thanks,
- Behdad!
- The cairo_show_text_glyphs API includes the following new functions:
- cairo_show_text_glyphs
- cairo_glyph_allocate
- cairo_glyph_free
- cairo_text_cluster_allocate
- cairo_text_cluster_free
- cairo_surface_has_show_text_glyphs
- Build system revamp
- -------------------
- The primary goal of the revamp is to make the build system less
- fragile, (particularly for non-Linux platforms). For example, now
- people building on win32 will no longer need to maintain a
- platform-specific list of files to be built. See the new README.win32
- for details. Also, the .so file will now be installed with a different
- naming scheme, (for example, 1.7.6 will install with a .10800
- suffix). Many thanks to Behdad and his small army of helpers!
- Assorted API additions
- ----------------------
- For API completeness, several missing "getter" functions were added:
- cairo_scaled_font_get_scale_matrix
- cairo_surface_get_fallback_resolution
- cairo_toy_font_face_create
- cairo_toy_font_face_get_family
- cairo_toy_font_face_get_slant
- cairo_toy_font_face_get_weight
- The new cairo_toy_font_face functions provide access to functionality
- and settings provided by cairo_select_font_face(). Thanks Behdad!
- cairo-ps/cairo-pdf: More efficient output
- -----------------------------------------
- Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF
- backends, as well making them generate much more compact output by
- avoiding things like re-emitting the color or linestyle on every
- drawing operation. Thanks Adrian!
- cairo-xlib: dithering
- ---------------------
- Dithering: Cairo now does simple dithering when rendering to legacy X
- servers. This is most visible with 8-bit visuals. Thanks Behdad!
- cairo-xlib: Avoid rendering glyphs out of surface bounds
- --------------------------------------------------------
- This seemingly harmless optimization exposed a bug in OpenOffice.org 3
- versions where OO.o was passing bogus surface extents to cairo,
- resulting in no text rendered in OO.o. Please contact your
- distribution's OO.o maintainers if you see this bug and point them to
- the following URL:
- https://bugs.freedesktop.org/show_bug.cgi?id=16209
- cairo-xlib: Improved performance with X server without Render
- -------------------------------------------------------------
- Cairo now performs better on remote X servers that lack the Render
- extension by being smarter about using X core protocol facilities
- instead of falling back to doing all rendering on the client side.
- cairo-ft: respecting FC_FT_FACE
- -------------------------------
- Previously it was impossible to instruct cairo to do emboldening on a
- font face object created from an FT_Face. Cairo now respects and uses
- the FC_FT_FACE fontconfig pattern element, so emboldening can be
- achieved by using cairo_ft_font_face_create_for_pattern() and a
- carefully crafted pattern using FC_FT_FACE and FC_EMBOLDEN. Thanks
- Behdad!
- cairo-directfb: backend improvements
- ------------------------------------
- The directfb backend, though still unsupported, has seen a good deal
- of improvements. Thanks Vlad!
- Bug fixing and optimizations
- ----------------------------
- xlib: Faster bookkeeping (Karl Tomlinson)
- https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5
- PS: Fix gradients with non-constant alpha (Chris Wilson)
- Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod)
- http://bugs.freedesktop.org/show_bug.cgi?id=16819
- Countless other bugs have been fixed and optimizations made, many of
- them thanks to Chris Wilson. Thanks Chris and others!
- Note also that the code that had been in cairo 1.7.x calling into
- freetype's optional lcd_filter function was removed from cairo before
- the 1.8.0 release. We do expect this code to come back in some form in
- the future.
- Snapshot 1.7.6 (2008-09-17 Carl Worth <cworth@cworth.org>)
- ==========================================================
- The cairo community is happy to announce the 1.7.6 snapshot of the
- cairo graphics library. This is a "release candidate" for the upcoming
- 1.8.0 release, so we will greatly appreciate any reports of problems
- in this release, and no major changes are currently planned before
- 1.8.
- Notable changes in 1.7.6
- ------------------------
- The largest number of changes since 1.7.4 did not change the
- implementation of cairo itself, but instead revamped cairo's build
- system. The primary goal of the revamp is to make the build system
- less fragile, (particularly for non-Linux platforms). For example, now
- people building on win32 will no longer need to maintain a
- platform-specific list of files to be built. Also, the .so file will
- now be installed with a different naming scheme, (for example, 1.7.6
- will install with a .10706 suffix). Much thanks, Behdad!
- And, as usual, Chris Wilson has made another large round of robustness
- improvements, (eliminating dead code, fixing propagation of error
- status values, test suite improvements, etc. etc.). Thanks as always,
- Chris!
- API changes since 1.7.4
- -----------------------
- There have been a few changes of API that was new during the 1.7
- series:
- * Remove cairo_font_options_set_lcd_filter
- and cairo_font_options_get_lcd_filter
- Motivation: At the Cairo Summit, this API was determined to be too
- specific to the freetype font backend to be in the general
- API. A similar API with a cairo_ft prefix might be introduced
- in the future. Note that cairo will still respect the
- corresponding fontconfig settings for these options.
- * Replace cairo_has_show_glyphs
- with cairo_surface_has_show_glyphs
- Motivation: This really is a surface-specific interface, and the
- convenience function on the cairo_t is not obviously
- necessary. An application can easily call:
- cairo_surface_has_show_glyphs (cairo_get_target (cr));
- as needed.
- * Add cairo_text_cluster_flags_t
- to cairo_show_text_glyphs
- cairo_scaled_font_text_to_glyphs
- cairo_user_scaled_font_text_to_glyphs_func_t
- Motivation: This flag, (and specifically the
- CAIRO_TEXT_CLUSTER_FLAG_BACKWARD value), replaces the
- cairo_bool_t backward argument in each of the above
- interfaces. This leads to more readable user code, and also
- allows future extensibility.
- As always, there are no changes to any API from any major cairo
- release, (1.0.x, 1.2.x, 1.4.x, 1.6.x). Cairo maintains the same
- compatibility promise it always has.
- Bug fixes since 1.7.4
- ---------------------
- xlib: Faster bookkeeping (Karl Tomlinson)
- https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5
- PS: Fix gradients with non-constant alpha (Chris Wilson)
- Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod)
- http://bugs.freedesktop.org/show_bug.cgi?id=16819
- Several other minor fixes.
- Snapshot 1.7.4 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>)
- ===============================================================
- The cairo community is embarrassed to announce availability of the 1.7.4
- snapshot of the cairo graphics library. This is a followup release to the
- 1.7.2 snapshot to ship a tarball that can actually be built. The only
- change since 1.7.4 is including the missing header file
- cairo-user-font-private.h in the distribution.
- Snapshot 1.7.2 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>)
- ===============================================================
- The cairo community is finally ready to announce availability of the 1.7.2
- snapshot of the cairo graphics library. This is embarrassingly the first
- snapshot in the 1.7 unstable series of cairo, leading to the eventual release
- of cairo 1.8, currently planned for late September.
- This snapshot comes four months after the 1.6.4 release. We have done a
- really bad job on getting development snapshots out this cycle, but
- hopefully all the API changes for 1.8 are now finished and the remaining
- weeks will be spent on bug-fixing. There is more than 400 commits worth
- of changes in this snapshot, and those can use some testing. Read on!
- Text, text, and more text!
- --------------------------
- The dominant theme of this release, and 1.8 in general, is improvements
- around cairo text API. Here is a high-level list of changes with text
- handling:
- User fonts
- ----------
- This is new API allowing the user of cairo API to provide drawings for glyphs
- in a font. This is most useful in implementing fonts in non-standard formats,
- like SVG fonts and Flash fonts, but can also be used by games and other
- applications to draw "funky" fonts. See test/user-font.c and
- test/user-font-proxy.c for usage examples. This is based on early work by
- Kristian Høgsberg. Thanks Kristian!
- show_text_glyphs
- ----------------
- This new API allows the caller of cairo to mark text glyphs with their
- original text. The PDF backend implements this new API and latest Pango
- master uses it. The result is (when bugs are fixed) that complex text can be
- copied out of pangocairo's PDF output correctly and reliably. There are bugs
- to fix though. A few poppler bugs, and some more in cairo and pango.
- To test show_text_glyph, just grab pango master and this cairo snapshot and
- print text in gedit. Open in acroread or evince, select all, copy, paste
- in gedit and compare. The Arabic text with diacritic marks is particularly
- showing bad. Try with pango/pango-view/HELLO.txt if you are brave
- enough. The Indic text is showing improvements, but is still coming out
- buggy.
- LCD subpixel filtering using FreeType
- -------------------------------------
- FreeType 2.3.5 added support for various LCD subpixel filtering, and
- fontconfig 2.6.0 added support for configuring LCD filter on a font by font
- basis. Cairo now relies on FreeType and fontconfig for subpixel filtering.
- This work is based on David Turner's original patch to cairo, maintained
- and tested by Sylvain Pasche and others. Thanks all!
- Toy font face constructor and getter
- ------------------------------------
- Mostly for API completion, but also useful for higher level (like Pango) to
- hook into what the user has set using cairo_select_font_face(), making that
- toy API a bit more useful.
- FreeType: respecting FC_FT_FACE
- -------------------------------
- Previously it was impossible to instruct cairo to do emboldening on a font
- face object created from an FT_Face. Cairo now respects and uses the
- FC_FT_FACE fontconfig pattern element, so emboldening can be achieved by
- using cairo_ft_font_face_create_for_pattern() and a carefully crafted pattern
- using FC_FT_FACE and FC_EMBOLDEN.
- PS/PDF: More efficient output
- -----------------------------
- Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF
- backends, as well making them generate much more compact output by avoiding
- things like re-emitting the color or linestyle on every drawing operation.
- Thanks Adrian!
- Xlib: Dithering
- ---------------
- Cairo now does simple dithering when rendering to legacy X servers. This is
- mostly visible with 8-bit visuals.
- Xlib: Avoid rendering glyphs out of surface bounds
- --------------------------------------------------
- This seemingly harmless change manifested a bug with OpenOffice.org 3 versions
- where OO.o was passing bogus surface extents to cairo, resulting in no text
- rendered in OO.o. Please contact your distro's OO.o maintainers if you see
- this bug and point them to the following URL:
- https://bugs.freedesktop.org/show_bug.cgi?id=16209
- Xlib: Improved performance with Xrender-less X servers
- ------------------------------------------------------
- Cairo now performs better on remote, Xrender-less X servers by being smarter
- about using X core protocol facilities instead of falling back to doing all
- rendering on the client side.
- Directfb: backend improvements
- ------------------------------
- The directfb backend, though still unsupported, has seen a good deal of
- improvements. Thanks Vlad!
- Bug fixing and optimizations
- ----------------------------
- Countless bugs have been fixed and optimizations made, many of them thanks to
- Chris Wilson. Thanks Chris!
- API additions
- -------------
- cairo_show_text_glyphs
- This is a new text rendering API. Being a more advanced version of
- cairo_show_glyphs(), it is aimed for use by higher-level text toolkits like
- Pango, and enables better text extraction from output generated by backends
- like PDF and SVG. The PDF backend already implements it, and the upcoming
- Pango release will use it.
- To make that API work, a bunch of other additions were made:
- cairo_glyph_allocate
- cairo_glyph_free
- cairo_text_cluster_t
- cairo_text_cluster_allocate
- cairo_text_cluster_free
- cairo_surface_has_show_text_glyphs
- cairo_user_font_face_create
- This is the "user" font face constructor, accompanied by a variety of method
- signatures, getters, and setters for a callback-based font backend:
- CAIRO_FONT_TYPE_USER
- cairo_user_scaled_font_init_func_t
- cairo_user_scaled_font_render_glyph_func_t
- cairo_user_scaled_font_text_to_glyphs_func_t
- cairo_user_scaled_font_unicode_to_glyph_func_t
- cairo_user_font_face_set_init_func
- cairo_user_font_face_set_render_glyph_func
- cairo_user_font_face_set_text_to_glyphs_func
- cairo_user_font_face_set_unicode_to_glyph_func
- cairo_user_font_face_get_init_func
- cairo_user_font_face_get_render_glyph_func
- cairo_user_font_face_get_text_to_glyphs_func
- cairo_user_font_face_get_unicode_to_glyph_func
- cairo_scaled_font_text_to_glyphs
- We were previously reluctant to provide this function as text-to-glyphs
- support in cairo was limited to "toy" font functionality, not really
- interesting for real-world text processing. However, with user-fonts
- landing, this API is needed to expose full access to how user-fonts
- convert text to glyphs. This is expected to be used by text toolkits like
- Pango, as well as "proxy" user-font implementations.
- cairo_lcd_filter_t
- cairo_font_options_set_lcd_filter
- cairo_font_options_get_lcd_filter
- These add the possibility to choose between various available LCD subpixel
- filters. The available filter values are modelled after what FreeType
- provides.
- cairo_toy_font_face_create
- cairo_toy_font_face_get_family
- cairo_toy_font_face_get_slant
- cairo_toy_font_face_get_weight
- These provide access to functionality and settings provided by
- cairo_select_font_face().
- cairo_scaled_font_get_scale_matrix
- cairo_surface_get_fallback_resolution
- For API completeness.
- Various new values for cairo_status_t enum
- Known issues:
- - Type3 fonts generated by cairo's PDF backend may show up in poppler/Evince
- in a different color than expected. This is fixed in poppler master branch.
- This mostly affects cairo user fonts. The test case test/user-font.c
- demonstrates this.
- - User fonts using other fonts in their rendering are currently embedded in
- PDF as fallback bitmap glyphs. This will be (hopefully) fixed before 1.8.
- The test case test/user-font-proxy.c demonstrates this.
- Release 1.6.4 (2008-04-11 Carl Worth <cworth@cworth.org>)
- =========================================================
- The cairo community is wildly embarrassed to announce the 1.6.4
- release of the cairo graphics library. This release reverts the xlib
- locking change introduced in 1.6.4, (and the application crashes that
- it caused). The community would be glad to sack its current release
- manager and is accepting applications for someone who could do the job
- with more discipline.
- Revert 'add missing locking in cairo-xlib'
- ------------------------------------------
- This change was introduced in cairo 1.6.2, but also introduced a bug
- which causes many cairo-xlib applications to crash, (with a
- segmentation fault inside of XSetClipMask). Instead of attempting
- another fix for the broken fix, the change in 1.6.2 has been
- reverted. The original bug which the change was addressing has been
- present since at least cairo 1.4, so it is not expected that leaving
- this bug unfixed will cause any new problems for applications moving
- from cairo 1.4 to cairo 1.6.
- At this point, the code of cairo 1.6.4 differs from cairo 1.6.0 only
- in the fix for the PostScript-printer crashes.
- Tweak build to avoid linking with g++
- -------------------------------------
- Cairo 1.6.4 avoids a quirk in automake that was causing the cairo
- library to be linked with g++ and linked against libstdc++ even when
- only C source files were compiled for the library.
- Release 1.6.2 (2008-04-11 Carl Worth <cworth@cworth.org>)
- =========================================================
- The cairo community is pleased (but somewhat sheepish) to announce the
- 1.6.2 release of the cairo graphics library. This is an update to
- yesterday's 1.6.0 release with an important fix to prevent cairo's
- PostScript output from crashing some printers. This release also
- includes a locking fix for cairo's xlib backend to improve thread
- safety. There are no changes beyond these two fixes.
- Fix for PostScript printer crash
- --------------------------------
- Adrian Johnson discovered that cairo 1.6.0 was being a bit hard on
- PostScript printers, by changing the font matrix very frequently. This
- causes some PostScript interpreters to allocate new font objects every
- few glyphs, eventually exhausting available resources. The fix
- involves leaving translational components of the font matrix as zero,
- so that the PostScript interpreter sees an identical font matrix
- repeatedly, and can more easily share internal font object resources.
- This fix has been tested to resolve the bugs posted here, (for both
- Xerox and Dell printers):
- Printing some PDFs from evince is crashing our Xerox printer
- http://bugs.freedesktop.org/show_bug.cgi?id=15348
- Cairo-generated postscript blocks Dell 5100cn
- http://bugs.freedesktop.org/show_bug.cgi?id=15445
- Add missing locking in cairo-xlib
- ---------------------------------
- Chris Wilson noticed that cairo 1.6.0 was manipulating an internal
- cache of GC object within cairo's Xlib backend without proper
- locking. The missing locking could cause failures for multi-threaded
- applications. He fixed this in 1.6.2 by adding the missing locks.
- Release 1.6.0 (2008-04-10 Carl Worth <cworth@cworth.org>)
- =========================================================
- The cairo community is quite pleased to announce the 1.6.0 release of
- the cairo graphics library. This is a major update to cairo, with new
- features and enhanced functionality which maintains compatibility for
- applications written using cairo 1.4, 1.2, or 1.0. We recommend that
- anybody using a previous version of cairo upgrade to cairo 1.6.0.
- The most significant new features in this release are dramatically
- improved PDF and PostScript[*] output, support for arbitrary X server
- visuals (including PseudoColor), a new Quartz backend, and and a new
- "win32 printing" backend. See below for more details on these and
- other new features.
- New dependency on external pixman library (Thanks, Søren!)
- ----------------------------------------------------------
- As of cairo 1.6, cairo now depends on the pixman library, for which
- the latest release can be obtained alongside cairo:
- http://cairographics.org/releases/pixman-0.10.0.tar.gz
- This library provides all software rendering for cairo, (the
- implementation of the image backend as well as any image fallbacks
- required for other backends). This is the same code that was
- previously included as part of cairo itself, but is now an external
- library so that it can be shared by both cairo and by the X server,
- (which is where the code originated).
- Improved PDF, PostScript, and SVG output (Thanks, Adrian!)
- ----------------------------------------------------------
- Users of the cairo-pdf, cairo-ps, and cairo-svg should see a dramatic
- improvement from cairo 1.2/1.4 to 1.6. With this release there are now
- almost no operations that will result in unnecessary rasterization in
- the PDF and PostScript. Rasterized "image fallbacks" are restricted
- only to minimal portions of the document where something is being
- drawn with cairo that is beyond the native capabilities of the
- document, (this is rare for PDF or SVG, but occurs when blending
- translucent objects for PostScript).
- This means that the final output will be of higher quality, and will
- also be much smaller, and therefore will print more quickly. The
- machinery for doing analysis and minimal fallbacks also benefits the
- win32-printing surface described below.
- In addition to doing less rasterization, the PostScript and PDF output
- also has several other improvements to make the output more efficient
- and more compatible with specifications.
- [*] Note: Just before this release, a bug has been reported that the
- PostScript output from cairo can crash some printers, (so far the
- following models have been reported as problematic Xerox Workcentre
- 7228 or 7328 and Dell 5100cn). We will implement a workaround as soon
- as we can learn exactly what in cairo's output these printers object
- to, (and we could use help from users that have access to misbehaving
- printers). This bug is being tracked here:
- Printing some PDFs from evince is crashing our Xerox printer
- http://bugs.freedesktop.org/show_bug.cgi?id=15348
- New support for arbitrary X server visuals (Thanks, Keith and Behdad!)
- ----------------------------------------------------------------------
- As of cairo 1.6, cairo should now work with an arbitrary TrueColor or
- 8-bit PseudoColor X server visual. Previous versions of cairo did not
- support these X servers and refused to draw anything. We're pleased to
- announce that this limitation has been lifted and people stuck with
- ancient display systems need no longer be stuck with ancient software
- just because of cairo.
- New, supported Quartz backend for Mac OS X (Thanks, Brian and Vladimir!)
- ------------------------------------------------------------------------
- As of cairo 1.6, the cairo-quartz backend is now marked as "supported"
- rather than "experimental" as in previous cairo releases. Its API now
- has guarantees of API stability into future cairo releases, and its
- output quality is comparable to other backends. There have been
- significant improvements to cairo-quartz since 1.4. It now uses many
- fewer image fallbacks, (meaning better performance), and has greatly
- improved text rendering.
- New, "win32 printing" backend (Thanks, Adrian and Vladimir!)
- ------------------------------------------------------------
- A new win32-printing surface has been added with an interface very
- similar to the original win32 surface, (both accept an HDC
- parameter). But this new surface should only be called with a printing
- DC, and will result in all drawing commands being stored into a
- meta-surface and emitted after each page is complete. This allows
- cairo to analyze the contents, (as it does with PDF, PostScript, and
- SVG backends), and to do minimal image-based fallbacks as
- necessary. The analysis keeps things as efficient as possible, while
- the presence of fallbacks, (when necessary), ensure the consistent,
- high-quality output expected from cairo.
- Robustness fixes (Thanks, Chris!)
- ---------------------------------
- There has been a tremendous number of improvements to cairo's
- robustness. Areas that have been improved include:
- * Proper reporting of errors
- * Responding correctly to invalid input
- * Avoiding integer overflows
- * Avoiding memory leaks on error-recovery paths
- * Making reference counting thread safe
- * Exhaustive testing of memory allocation points
- Other fixes (Thanks, everybody!)
- --------------------------------
- Cairo's internal fixed-point representation has been changed from
- 16.16 to 24.8. This has a direct impact on applications as it allows
- much larger objects to be drawn before internal limits in cairo make
- the drawing not work.
- The CAIRO_EXTEND_PAD mode is now fully supported by surface
- patterns. This mode allows applications to use cairo_rectangle and
- cairo_fill to draw scaled images with high-quality bilinear filtering
- for the internal of the image, but without any objectionably blurry
- edges, (as would happen with the default EXTEND_NONE and cairo_paint).
- Rendering with CAIRO_ANTIALIAS_NONE has been fixed to be more
- predictable, (previously image rendering and geometry rendering would
- be slightly misaligned with respect to each other).
- The reference manual at http://cairographics.org/manual now documents
- 100% of the functions and types in cairo's public API.
- API additions
- -------------
- Several small features have been added to cairo with new API functions:
- cairo_format_stride_for_width
- Must be called to compute a properly aligned stride value before
- calling cairo_image_surface_create_for_data.
- cairo_has_current_point
- Allows querying if there is a current point defined for the
- current path.
- cairo_path_extents
- Allows querying for path extents, (independent of any fill or
- stroke parameters).
- cairo_surface_copy_page
- cairo_surface_show_page
- Allow beginning a new document page without requiring a cairo_t
- object.
- cairo_ps_surface_restrict_to_level
- cairo_ps_get_levels
- cairo_ps_level_to_string
- cairo_ps_surface_set_eps
- Allow controlling the Post PostScript level, (2 or 3), to
- target, as well as to generate Encapsulated PostScript (EPS).
- cairo_quartz_font_face_create_for_cgfont
- Create a quartz-specific cairo_font_face_t from a CGFontRef.
- cairo_win32_font_face_create_for_logfontw_hfont
- Create a win32-specific cairo_font_face from a LOGFONTW and an
- HFONT together.
- Thanks, Everyone!
- -----------------
- I've accounted for 32 distinct people with attributed code added to
- cairo between 1.4.14 and 1.6.0, (their names are below). That's an
- impressive number, but there are certainly dozens more that
- contributed with testing, suggestions, clarifying questions, and
- encouragement. I'm grateful for the friendships that have developed as
- we have worked on cairo together. Thanks to everyone for making this
- all so much fun!
- Adrian Johnson, Alp Toker, Antoine Azar, Behdad Esfahbod,
- Benjamin Otte, Bernardo Innocenti, Bertram Felgenhauer,
- Boying Lu, Brian Ewins, Carl Worth, Chris Heath, Chris Wilson,
- Claudio Ciccani, Emmanuel Pacaud, Jeff Muizelaar, Jeremy Huddleston,
- Jim Meyering, Jinghua Luo, Jody Goldberg, Jonathan Gramain,
- Keith Packard, Ken Herron, Kouhei Sutou, Kristian Høgsberg,
- Larry Ewing, Martin Ejdestig, Nis Martensen, Peter Weilbacher,
- Richard Hult, Shailendra Jain, Søren Sandmann Pedersen,
- Vladimir Vukicevic
- Snapshot 1.5.20 (2008-04-04 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the tenth snapshot in cairo's unstable 1.5 series. It comes
- just two days (and only one working day) after the 1.5.18
- snapshot. The quick snapshot is due to two embarrassing bugs (both
- affecting cairo-xlib) that had been introduced in the 1.5.18
- snapshot. The fixes for these are described below along with a few
- other fixes, (which hopefully aren't introducing new bugs this time).
- cairo-xlib
- ----------
- Revert fix from 1.5.18 to allow pattern expansion based on the filter
- mode. This fix seemed so boring, (the use case it addresses is almost
- never used in practice), that it didn't even get mentioned in the
- 1.5.18 release notes. However, the "fix" happened to break rendering
- that is always used resulting in corrupt image rendering in mozilla,
- evolution, and probably everything else that uses cairo.
- Fix to avoid BadMatch errors in cairo_surface_create_similar. These
- were introduced, (inadvertently, of course), as part of the fix in
- 1.5.18 for creating similar surfaces without the Render
- extension. Again, thanks to mozilla, (and Vladimir Vukicevic in
- particular), for noticing our mistake.
- general
- -------
- Correctly handle an in-error surface in
- cairo_surface_write_to_png. Previously this function would cause an
- assertion failure if you gave it a finished surface. Now it cleanly
- returns a CAIRO_STATUS_SURFACE_FINISHED result instead.
- Avoid potentially infinite wandering through memory inside
- _cairo_hull_prev_valid. Thanks to Jonathan Watt for noticing this
- problem:
- https://bugzilla.mozilla.org/show_bug.cgi?id=306649#c21
- cairo-pdf
- ---------
- Fix generation of "soft" masks made by drawing to a similar surface
- and then calling cairo_mask_surface() with it.
- cairo-svg
- ---------
- Fix for code that uses cairo_mask() on an intermediate surface which
- is later passed to cairo_mask_surface().
- Snapshot 1.5.18 (2008-04-05 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the ninth snapshot in cairo's unstable 1.5 series. It comes
- just 4 days after the 1.5.16 snapshot. We had hoped to not need
- another snapshot before the final 1.6.0 release, but several critical
- bugs were found and fixed in the last few days, so we thought it
- important to let people test the fixes with this snapshot. See below
- for details.
- documentation
- -------------
- The README now lists necessary dependencies.
- Various graphics state defaults are now documented, (source pattern is
- opaque black, line width is 2.0, line join is miter, line cap is butt,
- miter limit is 10.0, etc.).
- general
- -------
- Several cleanups have been made along many error-path returns,
- (carefully propagating up the original error status values, cleaning
- up memory leaks during error recovery, etc.). This is yet another in
- Chris "ickle" Wilson's long series of error-handling cleanups during
- the 1.5 series.
- Avoid undesired clipping when drawing scaled surface patterns with
- bilinear filtering.
- cairo-pdf
- ---------
- Fix emission of 1-bit alpha masks in PDF output.
- Fix a bug that would cause glyphs to be misplaced along the Y axis:
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136
- Originally, an issue about a crash, but later leading to the
- misplaced glyphs issue being discovered.
- cairo-ps
- --------
- Fix misplaced glyphs in cairo's PostScript output.
- This issue occurs when consecutive glyphs are placed far
- apart. This case is exercised by the new ft-show-glyphs-table test
- case, which was originally inspired by the Debian bug #23474136
- mentioned above.
- Fix more misplaced glyphs in cairo's PostScript output:
- The issue here showed up under very particular circumstance, (when
- converting a PDF file with a CFF font with CID Identity-H encoding
- and using glyph 0, (defined by the CFF specification as .notdef)
- as a space instead). More concretely, this problem appeared when
- converting the UbuntuDesktop.pdf file mentioned in this bug
- report:
- https://bugs.freedesktop.org/show_bug.cgi?id=15348#c3
- As usual with arcane font-encoding-specific bugs like this, many
- thanks to Adrian Johnson for his magical ability to dive into
- specifications and emerge almost instantaneously with fixes. And
- thanks to Sebastien Bacher for bringing the bug to our attention.
- cairo-xlib
- ----------
- Fix serious failure on X servers without the Render extension.
- Since the 1.5.14 snapshot (with support for PseudoColor visuals),
- any application attempting to create a "similar" xlib surface would
- fail on an X server without the Render extension. Thanks to
- Frederic Crozat for pointing out that cairo's test suite was
- entirely failing when run against Xvfb.
- Avoid crashing cairo-xlib applications for too-large glyphs
- Naively sending glyphs of any size to the X server will eventually
- violate the X limit on maximum request sizes. We now properly
- detect when a glyph would be too large and use existing fallbacks
- to render the glyph rather than trying to send it to the X server.
- Enable the buggy_repeat workaround for Xorg servers < 1.4
- We have determined that Xorg 1.3.0 (as packaged in Fedora 8 at
- least) has a bug that can result in an X server crash when cairo
- uses certain X Render repeat operations, (as exercised by cairo's
- extend-reflect test). We avoid this crash by using fallbacks
- whenever a repeating surface is needed for any Xorg server with a
- version less than 1.4. This is slower, but should prevent the
- crash.
- (Meanwhile, there appears to be a separate bug where some X
- servers or specific X-server drivers will use random pixmap data
- when asked to draw a repeating surface. The buggy_repeat
- workaround would also avoid those problems, but we have not yet
- characterized whether the new "version < 1.4" is a good
- characterization of those problems or not.)
- cairo-quartz-font
- -----------------
- Implement cairo_font_extents for this backend.
- The cairo-quartz-font implementation added in the 1.5.14 snapshot was
- entirely missing support for the cairo_font_extents function. Thanks to
- Richard Hult for pointing out this obvious shortcoming, (and obvious
- lack of coverage in our test suite):
- CGFont backend returns 0 font extents
- https://bugs.freedesktop.org/show_bug.cgi?id=15319
- Snapshot 1.5.16 (2008-04-01 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the eighth snapshot in cairo's unstable 1.5 series. It comes
- less than two weeks after the 1.5.14 snapshot and it really is a
- legitimate snapshot, (in spite of sharing this date with that of many
- bogus announcements). The major change in this snapshot is that the
- cairo-quartz backend is now officially "supported", including new API
- to construct a font face from a CGFontRef . Also several bug fixes
- have been fixed in many backends. See below for details.
- general
- -------
- Cairo now depends on pixman 0.10.0 which was recently released. The
- latest pixman release can always be found alongside cairo releases at:
- http://cairographics.org/releases
- Increase the precision of color stops for gradients. This fixes a
- regression in gradient rendering that had been present since the
- 1.5.12 snapshot.
- paginated (all of ps, pdf, svg, and win32-printing)
- ---------------------------------------------------
- Fix assertion failure when some drawing elements are outside the page
- boundaries, (this bug was noticed when using Inkscape to print a
- drawing with landscape orientation to a portrait-oriented piece of
- paper).
- cairo-ps
- --------
- Fix of bug causing incorrect glyph positioning.
- Fix handling of CAIRO_OPERATOR_SOURCE.
- cairo-pdf
- ---------
- More reduction of unnecessary digits of precision in PDF output.
- Fix handling of CAIRO_OPERATOR_SOURCE.
- cairo-svg
- ---------
- Fix bug in usage of libpng that was preventing cairo_mask from working
- with the svg backend.
- Fix transformation of source pattern for cairo_stroke().
- cairo-win32-printing
- --------------------
- Fix fallback resolution, (thanks again to inkscape users/developers
- for helping us find this one).
- cairo-quartz
- ------------
- Mark the cairo-quartz backend as "supported" rather than
- "experimental". This means the following:
- * The backend will now be built by default (if possible).
- * We are committing that the backend-specific API (as published in
- cairo-quartz.h) are stable and will be supported in all future
- cairo 1.x releases.
- * We are committing that the output quality of this backend
- compares favorably with other cairo backends, (and that quality
- is ensured by good results from the cairo test suite).
- * We recommend that distributions build and distribute this
- backend when possible.
- Note that the cairo_quartz_image API (in cairo-quartz-image.h) is
- still experimental, will not build by default, (pass
- --enable-quartz-image to configure to build it), and may see API
- changes before it is marked as "supported" in a future release.
- Put the CAIRO_FONT_TYPE_ATSUI name back into
- cairo-deprecated.h. Without this, the cairo 1.5.14 snapshot broke all
- builds for applications using the C++ cairomm bindings (and perhaps
- others) which have the CAIRO_FONT_TYPE_ATSUI name in their header
- files. This breakage happened even for applications not using
- cairo-quartz at all.
- Note: Even though the CAIRO_FONT_TYPE_ATSUI name is provided to
- avoid this build breakage, we still recommend that bindings and
- applications move to the new, and more accurate,
- CAIRO_FONT_TYPE_QUARTZ name.
- Replace the implementation of cairo-quartz-font to use CFFont instead
- of ATSUI. The CGFont API is a better fit than ATSUI, and this new
- implementation is also more correct than the old one as well.
- This also adds the following new API call:
- cairo_public cairo_font_face_t *
- cairo_quartz_font_face_create_for_cgfont (CGFontRef font);
- The previous cairo_quartz_font_face_create_for_atsu_font_id function
- continues to exist and is part of the supported API going
- forward. (However, the old name of that same function, which was
- cairo_atsui_font_face_create_for_atsu_font_id is officially
- deprecated. Any source code using the old name should be updated to
- use the new name.)
- Fix transformation of source pattern for cairo_stroke().
- cairo-win32
- -----------
- Avoid crash in create_similar is cairo_win32_surface_create fails.
- Snapshot 1.5.14 (2008-03-20 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the seventh snapshot in cairo's unstable 1.5 series. It comes
- 3 weeks after the 1.5.12 snapshot. This snapshot includes support for
- arbitrary X server visuals, (including PseudoColor), which was the
- final remaining cairo-specific item on the cairo 1.6 roadmap. It also
- includes a huge number of improvements to the cairo-quartz backend. So
- this is effectively a cairo 1.6 release candidate. We expect very few
- changes from now until 1.6 and only for specific bug fixes.
- API Change
- ----------
- Rename ATSUI font backend to Quartz font backend. This affects the
- following usage:
- --enable-atsui -> --enable-quartz-font
- CAIRO_HAS_ATSUI_FONT -> CAIRO_HAS_QUARTZ_FONT
- CAIRO_FONT_TYPE_ATSUI -> CAIRO_FONT_TYPE_QUARTZ
- cairo_atsui_font_face_create_for_atsu_font_id ->
- cairo_quartz_font_font_create_for_atsu_font_id
- This API change is justified by the cairo-quartz backend still be
- marked as "experimental" rather than "supported", (though this is one
- step toward making the change to "supported" before 1.6). Cairo will
- still provide ABI compatibility with the old symbol name, however.
- paginated (all of ps, pdf, svg, and win32-printing)
- ---------------------------------------------------
- Optimize by not analyzing an image surface for transparency more than
- once, (previously all images were analyzed twice).
- cairo-ps and cairo-pdf
- ----------------------
- Avoiding emitting a matrix into the stroke output when unnecessary,
- (making output size more efficient).
- Reduce rounding error of path shapes by factoring large scale factors
- out of the path matrix, (ensuring that a fixed-number of printed
- digits for path coordinates contains as much information as possible).
- Reduce excess digits for text position coordinates. This makes the
- output file size much smaller without making the result any less
- correct.
- cairo-ps
- --------
- Eliminate bug causing extraneous text repetition on Linux PostScript
- output in some cases.
- See: Mozilla Bug 419917 – Printed page contents are reflected
- inside bordered tables (Linux-only)
- https://bugzilla.mozilla.org/show_bug.cgi?id=419917
- Optimize output when EXTEND_PAD is used.
- cairo-pdf
- ---------
- Fix to not use fill-stroke operator with transparent fill, (else PDF
- output doesn't match the cairo-defined correct result). See:
- https://bugs.launchpad.net/inkscape/+bug/202096
- cairo-svg
- ---------
- Fix stroke of path with a non-solid-color source pattern:
- http://bugs.freedesktop.org/show_bug.cgi?id=14556
- cairo-quartz
- ------------
- Fix text rendering with gradient or image source pattern.
- Handling antialiasing correctly for cairo_stroke(), cairo_clip(), and
- cairo_show_text()/cairo_show_glyphs().
- Correctly handle gradients with non-identity transformations:
- Fixes http://bugs.freedesktop.org/show_bug.cgi?id=14248
- Add native implementation of REPEAT and REFLECT extend modes for
- gradients.
- Fix implementation for the "unbounded" operators, (CAIRO_OPERATOR_OUT,
- _IN, _DEST_IN, and _DEST_ATOP).
- Correctly handle endiannees in multi-architecture compiles on Mac OS
- X.
- Avoid behavior which would cause Core Graphics to print warnings to
- the console in some cases.
- cairo-win32
- -----------
- Fix handling of miter limit.
- cairo-win32-printing
- --------------------
- Fix to not use a 1bpp temporary surface in some cases while printing,
- (so grayscale data is preserved rather than just becoming black and
- white).
- cairo-xlib
- ----------
- Add support for rendering to arbitrary TrueColor X server
- visuals. This fixes at least the following bugs:
- cairo doesn't support 8-bit truecolor visuals
- https://bugs.freedesktop.org/show_bug.cgi?id=7735
- cairo doesn't support 655 xlib format
- https://bugs.freedesktop.org/show_bug.cgi?id=9719
- Add support for rendering to 8-bit PseudoColor X server visuals. This
- fixes the following bug:
- Cairo doesn't support 8-bit pseudocolor visuals
- https://bugs.freedesktop.org/show_bug.cgi?id=4945
- Snapshot 1.5.12 (2008-02-28 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the sixth snapshot in cairo's unstable 1.5 series. It comes 1
- week after the 1.5.10 snapshot. This snapshot includes the
- long-awaited change from 16.16 to 24.8 fixed-point values, (see below
- for why you should care). It also includes several backend-specific
- bug fixes.
- 24.8 fixed-point format
- -----------------------
- Cairo has always converted path coordinates to a fixed-point
- representation very early in its processing. Historically, this has
- been a 32-bit representation with 16 bits of integer for the
- device-pixel grid and 16 bits of sub-pixel positioning. The choice of
- 16 bits for the integer coordinate space was based on the 16-bit limit
- for X Window drawables.
- This 16-bit limit has proven problematic for many applications. It's
- an especially vexing problem when targeting non-X backends that don't
- have any 16-bit restriction. But even when targeting cairo-xlib, it's
- often desirable to draw a large shape, (say a background rectangle),
- that extends beyond the surface bounds and expect it to fill the
- surface completely, (rather than overflowing and triggering random
- behavior).
- Meanwhile, nobody has ever really needed 16 bits of sub-pixel
- precision.
- With this snapshot, the fixed-point system is still in place and is
- still using a 32-bit representation, (future versions of cairo might
- move entirely to floating-point when targeting PDF output for
- example). But the representation now provides 24 bits of pixel
- addressing and only 8 bits of sub-pixel positioning. This should give
- a much less stifling space to many applications.
- However, the underlying pixman library still has 16-bit limitations in
- many places, (it has its roots in the X server as well). Until those
- are also fixed, applications targeting cairo image surfaces, or
- hitting software fallbacks when targeting other surfaces will still
- encounter problems with device-space values needing more than 16
- integer bits.
- generic fixes
- -------------
- Add a few tests to the test suite to increase coverage.
- Cleanup a few error-handling paths, (propagate error correctly).
- cairo-ft
- --------
- Fix handling of font sizes smaller than 1 device pixel.
- cairo-pdf
- ---------
- Fix to properly save/restore clip when analyzing meta-surface
- patterns, (fixing a couple of test-suite failures).
- Implement native support for CAIRO_OPERATOR_SOURCE when the source
- pattern is opaque.
- Emit rectangles as PDF rectangles ("re" operator) rather than as
- general paths.
- cairo-ps
- --------
- Fix to work properly with the 16.16->24.8 change.
- cairo-svg
- ---------
- Fix CAIRO_EXTEND_REFLECT by using an image fallback, (there's no
- direct SVG support for reflected patterns).
- Fix the use of alpha-only masks, (such as CAIRO_FORMAT_A8).
- cairo-quartz
- ------------
- Add new API for efficiently using image data as a source:
- cairo_surface_t *
- cairo_quartz_image_surface_create (cairo_surface_t *image_surface);
- cairo_surface_t *
- cairo_quartz_image_surface_get_image (cairo_surface_t *surface);
- For full documentation, see:
- http://cairographics.org/manual/cairo-Quartz-Surfaces.html#cairo-quartz-image-surface-create
- Several fixes for cairo_mask().
- cairo-atsui
- -----------
- Change default from from Monaco to Helvetica to be more consistent
- with other font backends.
- Snapshot 1.5.10 (2008-02-20 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the fifth snapshot in cairo's unstable 1.5 series. It comes 3
- weeks after the 1.5.8 snapshot. This snapshot adds one new API
- function, (cairo_has_current_point), and the usual mix of
- improvements, (more efficient PostScript/PDF output, optimized
- stroking), and fixes (more robust error-handling, etc.). See below for
- details.
- New API
- -------
- Add a new function to query if there is a current point:
- cairo_bool_t
- cairo_has_current_point (cairo_t *cr);
- There is no current point immediately after cairo_create(), nor after
- cairo_new_path() or cairo_new_sub_path(). There is a current point
- after any of the path-creation functions, (cairo_move_to,
- cairo_line_to, cairo_curve_to, etc.).
- With this new function, we also revert the change of the return type
- of cairo_get_current_point from cairo 1.5.8, (it's now a void function
- again).
- Optimizations
- -------------
- Optimize stroking code to avoid repeated calculation of redundant
- values, (particularly significant for very large, offscreen paths).
- General fixes
- -------------
- Patch a few more potential buffer overruns, (due to integer
- overflow).
- Many fixes and improvements to cairo's error-handling, (ensure that
- correct error values are returned, clean up memory leaks on
- error-handling paths, etc.).
- Fix a potential infinite loop when stroking a spline with a pen that
- has been transformed to a line segment.
- Remove treating NULL as a synonym for a valid cairo_font_options_t*
- with default values, (a change that had been introduced as of cairo
- 1.5.8).
- Remove the altered handling of tolerance and fallback-resolution that
- had been introduced as of cairo 1.5.4.
- cairo-xlib
- ----------
- Pass the original Drawable, (as opposed to the root window), to
- XCreatePixmap when creating a similar surface. This gives the X server
- more information so that it can be clever and efficient.
- cairo-pdf
- ---------
- Fix the rendering of repeating and reflecting patterns.
- Ensure miter limit is always >= 1, (smaller limits are not meaningful,
- but they can cause some PDF viewers to fail to display pages).
- Generate more efficient output when the same path is used for both
- fill and stroke.
- cairo-ps
- --------
- Start sharing much of the cairo-pdf code rather than implementing very
- similar code in cairo-ps.
- Implement native support for repeating and reflecting linear
- gradients.
- Implement reflected surface patterns.
- Ensure miter limit is always >= 1, (smaller limits are not meaningful,
- but they can cause some PostScript viewers to crash).
- Generate PostScript that will perform more efficiently and use less
- memory on printers, (use currentfile instead of a giant string array
- for image data, and avoid using PostScript patterns for paint() and
- fill() when possible).
- cairo-svg
- ---------
- Avoid unnecessary rasterization when copying a "similar" surface to
- another svg surface, (allow the SOURCE operator to be implemented with
- all-vector operations if there are no underlying objects).
- cairo-atsui
- -----------
- Eliminate infinite loop when attempting to render an empty string.
- Snapshot 1.5.8 (2008-01-30 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the fourth snapshot in cairo's unstable 1.5 series. It comes 2
- weeks after the 1.5.6 snapshot. It adds a few new API functions. Most
- notably all callers of cairo_image_surface_create_for_data should now
- be calling cairo_format_stride_for_width to compute a legal stride
- value. See below for more details.
- New API in cairo 1.5.8
- ----------------------
- We've added a new function that should be called to compute a legal
- stride value before allocating data to be used with
- cairo_image_surface_create_for_data:
- int
- cairo_format_stride_for_width (cairo_format_t format,
- int width);
- We've also added a new cairo_path_extents function that can be used to
- compute a bounding box for geometry such as a single line segment,
- (contrast with cairo_path_extents and cairo_stroke_extents):
- void
- cairo_path_extents (cairo_t *cr,
- double *x1, double *y1,
- double *x2, double *y2);
- And finally, we've added a function to allow for querying the
- XRenderPictFormat of a cairo-xlib surface:
- XRenderPictFormat *
- cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface);
- API changes
- -----------
- Fix return types of cairo_surface_show_page and
- cairo_surface_copy_page. This is an API change to functions that are
- new in the 1.5 series, so not an API break compared to any stable
- cairo release, (1.0.x, 1.2.x, 1.4.x).
- Change the return type of cairo_get_current_point() from void to
- cairo_status_t. This allows the caller to receive a
- CAIRO_STATUS_NO_CURRENT_POINT value to distinguish the a current point
- at the origin from no current point existing.
- Performance improvement
- -----------------------
- Improve performance of clipping by using an optimized code path
- internally, (with the ADD operator instead of IN).
- General bug fixes
- -----------------
- Fix various cairo_*_extents functions to initialize the return-value
- variables even in the case of a cairo_t in error.
- Treat NULL as a legitimate value for cairo_font_options_t*. [NOTE:
- On discussion afterwards, we decided against this change so it has
- been removed as of cairo 1.5.10.]
- Fix rendering with CAIRO_ANTIALIAS_NONE to be more predictable, (that
- is, to avoid seams appearing when geometry and imagery share an
- identical edge). Portions of this fix are in the pixman library and
- will appear in a future release of that library.
- Avoid triggering an error for a font size of 0.
- Miscellaneous changes
- ---------------------
- Require pixman >= 0.9.6.
- There has been a tremendous amount improvement to cairo's
- documentation. We're delighted that 100% of the public API has at
- least some documentation in the API reference manual. Many thanks to
- Behdad Esfahbod and Nis Martensen for leading this effort.
- cairo-pdf and cairo-ps
- ----------------------
- Eliminate failure when a Type 1 font is embedded with an explicit
- glyph 0.
- cairo-pdf
- ---------
- Implement a more correct and more efficient approach for patterns with
- an extend mode of CAIRO_EXTEND_REFLECT.
- cairo-ps
- --------
- Fix image masks to properly pack and pad mask bits.
- cairo-quartz
- ------------
- Take care to only use DrawTiledImage for integer-aligned images, (and
- use slower paths to get the correct result in other cases).
- cairo-win32
- -----------
- Fix for older versions of mingw.
- Improve the handling of the clipping with the win32 and win32-printing
- surfaces.
- Fix rendering of non black/white text.
- Snapshot 1.5.6 (2008-01-15 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the third snapshot in cairo's unstable 1.5 series. It comes
- about 6 weeks after the 1.5.4 snapshot. The only API addition compared
- to 1.5.4 is very minor, (a new value CAIRO_STATUS_TEMP_FILE_ERROR).
- The remainder of the changes are the usual accumulation of bug fixes
- and improvements. See below for details.
- General bug fixes
- -----------------
- Fix handling of fonts that contain a mixture of outline and bitmapped
- glyphs. There was a change in this handling in 1.5.4 that improved
- some cases and also regressed other cases. Now, all cases should be
- handled quite well.
- Fix alignment issues that were causing SIGBUS failures on SPARC.
- Fix a regression (which first appeared in 1.5.2) where stroking under
- a large scale would sometimes incorrectly replace a miter join with a
- bevel join. (Thanks to Keith Packard.)
- Fix reporting of zero-sized extents to be {0,0} rather than
- {INT_MAX,INT_MIN}. This avoids several integer overflow and
- allocations of massive regions in some cases.
- Fix failures of gradients with no stops, (quartz, ps, and pdf).
- Fix handling of Type 1 fonts on Windows platforms.
- Fix handling of Type 1 fonts with no specific family name in the font
- itself, (generate a CairoFont-x-y name).
- Handle NULL string values in cairo_show_text, cairo_show_glyphs, and
- friends.
- Many robustness improvements along error-handling paths, (thanks as
- always, to Chris "ickle" Wilson).
- Various other minor fixes.
- Paginated backends (PDF/PostScript/win32-printing)
- --------------------------------------------------
- Avoid unnecessary rasterization when using a paginated surface as a
- source, (such as drawing from one pdf surface to another).
- Fix replaying of paginated surface with more than one level of push/pop
- group.
- cairo-xlib
- ----------
- Fix xlib backend to not consider recent X server release as having a
- buggy repeat implementation in the Render extension.
- cairo-pdf
- ---------
- Fix PDF output to avoid triggering very slow rendering in PDF viewers,
- (avoid starting and stopping the content stream for each pattern
- emission).
- Support CAIRO_OPERATOR_SOURCE in cases where there is nothing below
- the object being drawn.
- Fix to avoid seams appearing between multiple fallback regions.
- cairo-ps (PostScript)
- ---------------------
- Use correct bounding box in Type 3 fonts.
- Fix several bugs in cairo's PostScript output. These include making
- the PostScript output more compatible with recent versions of
- ghostscript that are more strict about Type 3 fonts, for
- example.
- Fix for win32 to not attempt to create temporary files in the root
- directory, (where the user may not have write permission).
- Avoid generating Level 3 PostScript if Level 2 is sufficient. Also,
- add code in output documents to alert the user if Level 3 PostScript
- is handed to a device that cannot handle PostScript beyond Level
- 2.
- cairo-directfb
- --------------
- Various performance optimizations.
- Fixed support for small surfaces (less than 8x8).
- Provide support for environment variables CAIRO_DIRECTFB_NO_ACCEL to
- disable acceleration and CAIRO_DIRECTFB_ARGB_FONT to enable ARGB fonts
- instead of A8.
- cairo-os2
- ---------
- Allow OS/2 APIs instead of C library allocation functions.
- Snapshot 1.5.4 (2007-12-05 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the second snapshot in cairo's unstable 1.5 series. It comes
- just over 1 month after the 1.5.2 snapshot. There are no API changes
- or additions in 1.5.4 compared to 1.5.2, but there are several bug
- fixes, and some optimizations. Most of these apply to particular
- backends. See below for details.
- General improvements
- --------------------
- Use less memory for spline approximation calculations.
- Change how the tolerance value is interpreted with regard to
- fallback-resolution. [Note: On further discussion, we decided against
- this change for now. It is removed as of cairo 1.5.10.]
- Fix precision of floating-point values in vector-output backends to
- avoid rounding errors with very small numbers.
- Xlib improvements
- -----------------
- Fix bug in glyph rendering with xlib, (due to everything being clipped
- out). This was a regression in the 1.5.2 snapshot that was visible in
- the GIMP, for example. See:
- cairo 1.5.2 causes font problems in GIMP 2.4 status bar and evolution 2.12.1
- https://bugs.freedesktop.org/show_bug.cgi?id=13084
- PostScript improvements
- -----------------------
- Fix bug leading to invalid PostScript files when rendering
- text, (need "0 0 xyshow" instead of "0 xyshow").
- Fix many issues with Type 3 fonts, including making the resulting text
- extractable.
- Quartz improvements
- -------------------
- Fix font metrics height value for ATSUI, (helps webkit on GTK+ OS X
- layout nicely).
- Fix gradients.
- Fix EXTEND_NONE mode for patterns.
- Fix cairo_quartz_surface_create to properly clear the new surface
- in cairo_quartz_surface_create.
- Fix to correctly handle 0x0 sized surfaces.
- Optimize drawing of EXTEND_REPEAT patterns for OS X 10.5.
- Snapshot 1.5.2 (2007-10-30 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the first snapshot in cairo's unstable 1.5 series. It comes 4
- months after the 1.4.10 release. This snapshot includes significant
- improvements to PDF and PostScript output, which is one of the things
- in which we're most interested in getting feedback. There are a couple
- of minor API additions, and several optimizations, (primarily in the
- "print/vector" backends). And there are dozens of bug fixes and
- robustness improvements.
- New dependency on external pixman library
- -----------------------------------------
- A significant change in this snapshot compared to all previous cairo
- releases is that cairo now depends on an external "pixman" library for
- its software rendering. Previously this same code was compiled
- internally as part of cairo, but now the code is separate so that both
- cairo and the X server can now share common code, (thanks very much to
- Søren Sandmann for his work on separating pixman and maintaining it).
- So users will need to acquire and build pixman before being able to
- build cairo. The current release is 0.9.6 and can be obtained from
- here:
- http://cairographics.org/releases/pixman-0.9.6.tar.gz
- which can be verified with:
- http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1
- 66f01a682c64403a3d7a855ba5aa609ed93bcb9e pixman-0.9.6.tar.gz
- http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1.asc
- (signed by Carl Worth)
- Major PDF/PostScript improvements
- ---------------------------------
- Adrian Johnson has done some long-awaited work to make cairo's PDF and
- PostScript output more interesting than ever before. First, many
- operations that previously triggered image fallbacks will now be
- rendered as native vectors. These operations include:
- PDF: cairo_push_group, cairo_surface_create_similar,
- cairo_mask, A8/A1 surface sources, repeating/reflecting linear
- gradients.
- PostScript: cairo_push_group, cairo_surface_create_similar,
- gradients, bilevel alpha masks, (for example, all values either 0 or
- 255 for an A8 mask).
- Not only that, but when an image fallback is required, it will now be
- limited to only the necessary region. For example, a tiny translucent
- image overlaying a small portion of text would previously caused an
- entire PostScript page to be rendered as a giant image. Now, the
- majority of that page will be nice text, and there will only be a tiny
- image in the output.
- Additionally, the PostScript output now carefully encodes text so that
- if it is subsequently converted to PDF, the text will be
- selectable.
- This is very exciting progress, and we're hoping to hear from users
- during the 1.5 series about how things have improved, (for example,
- inkscape users doing cairo-based PDF export: please let us know how
- things look). And feel free to pass your thanks along to Adrian for his excellent work.
- NOTE: This much improved PDF output makes more sophisticated use of
- functionality in the PDF specification. This means that cairo's output
- will sometimes expose bugs in some free software PDF viewers, (evince,
- poppler, and xpdf, for example), that are not yet ready for such PDF
- files. We're working with the poppler maintainers to get these bugs
- fixed as quickly as possible. In the meantime, please double-check
- with other PDF viewers if cairo-generated PDF files are not being
- rendered correctly. It may be due to a bug in the viewer rather than
- in the PDF file that cairo has created.
- Robustness improvements
- -----------------------
- Chris Wilson has made the largest contribution by far to cairo 1.5.2,
- (in number of commits). His more than 150 commits include a huge
- number of fixes to increase cairo's robustness. These fixes make cairo
- more robust against invalid and degenerate input, (NaN, empty path,
- etc.), against size-0 malloc calls, against memory leaks on
- error-recovery paths, and against other failures during error
- handling. He also implemented atomic operations to cairo, and used
- them to fix cairo's previously non-thread-safe reference counting,
- again improving robustness.
- Chris has put a tremendous amount of time and effort into writing
- analysis tools for this work, and in running those tools and fixing
- the problems they report. We're very grateful for this work, and hope
- that all cairo users appreciate the more robust implementation that
- results from it.
- This work is largely thankless, so it might make sense to notice
- sometime that cairo has been running quite smoothly for you, and when
- you do, send a quick "thank you" off to Chris Wilson, since it
- is all definitely running smoother thanks to his work.
- New API
- -------
- There are no major additions to cairo's core API. The only new,
- generic functions are:
- void
- cairo_surface_copy_page (cairo_surface_t *surface);
- void
- cairo_surface_show_page (cairo_surface_t *surface);
- which can now be used much more conveniently than the existing
- cairo_copy_page and cairo_show_page functions in some
- situations. These functions act identically, but require only a
- cairo_surface_t* and not a cairo_t*.
- All other API additions are specific to particular backends.
- New cairo-win32 API (new font face function and "win32 printing" surface)
- -------------------------------------------------------------------------
- There is a new function for creating a win32 font face for both a
- logfontw and an hfont together. This complements the existing
- functions for creating a font face from one or the other:
- cairo_font_face_t *
- cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont,
- HFONT font);
- There is also a new "win32 printing" surface:
- cairo_surface_t *
- cairo_win32_printing_surface_create (HDC hdc);
- This interface looks identical to the original
- cairo_win32_surface_create, (both accept and HDC), but the behavior of
- this new surface is very different. It should only be called with a
- printing DC, and will result in all drawing commands being stored into
- a meta-surface and emitted after each page is complete, with analysis
- to do as minimal image-based fallbacks as necessary. The behavior and
- implementation shares much with the PDF and PostScript backends.
- New cairo-ps API (EPS and PostScript level control)
- ---------------------------------------------------
- An often requested feature has been the ability to generate
- Encapsulated PostScript (EPS) with cairo. We have that now with the
- following very simple API. Just do cairo_ps_surface_create as usual
- then call this function with a true value:
- void
- cairo_ps_surface_set_eps (cairo_surface_t *surface,
- cairo_bool_t eps);
- [NOTE: As always with snapshots, it's possible---though not very
- likely---that the API could still be modified before a final
- release. For example, this is the first public cairo function that
- accepts a Boolean parameter. I'm generally opposed to Boolean
- parameters, but this is probably the one case where I'm willing to
- accept one, (namely a "set" function that accepts a single Boolean).]
- Also, it is now possible to control what PostScript level to target,
- (either level 2 or level 3), with the following new API:
- typedef enum _cairo_ps_level {
- CAIRO_PS_LEVEL_2,
- CAIRO_PS_LEVEL_3
- } cairo_ps_level_t;
- void
- cairo_ps_surface_restrict_to_level (cairo_surface_t *surface,
- cairo_ps_level_t level);
- void
- cairo_ps_get_levels (cairo_ps_level_t const **levels,
- int *num_levels);
- const char *
- cairo_ps_level_to_string (cairo_ps_level_t level);
- Improvement for cairo-quartz
- ----------------------------
- Brian Ewins had contributed several improvements to cairo-quartz. These
- include an implementation of EXTEND_NONE for linear and radial
- gradients, (so this extend mode will no longer trigger image fallbacks
- for these gradients), as well as native surface-mask clipping, (only
- on OS X 10.4+ where the CGContextClipToMask function is available).
- He also fixed a semantic mismatch between cairo and quartz for dashing
- with an odd number of entries in the dash array.
- We're grateful for Brian since not many quartz-specific improvements
- to cairo would be happening without him.
- Optimizations
- -------------
- Optimize SVG output for when the same path is both filled and stroked,
- and avoid unnecessary identity matrix in SVG output. (Emmanuel Pacaud).
- Optimize PS output to take less space (Ken Herron).
- Make PS output more compliant with DSC recommendations (avoid initclip
- and copy_page) (Adrian Johnson).
- Make PDF output more compact (Adrian Johnson).
- Release glyph surfaces after uploading them to the X server, (should
- save some memory for many xlib-using cairo application). (Behdad
- Esfahbod).
- Optimize cairo-win32 to use fewer GDI objects (Vladimir Vukicevic).
- win32-printing: Avoid falling back to images when alpha == 255
- everywhere. (Adrian Johnson).
- win32-printing: Avoid falling back for cairo_push_group and
- cairo_surface_create_similar. (Adrian Johnson)
- Bug fixes
- ---------
- Avoid potential integer overflows when allocating large buffers
- (Vladimir Vukicevic).
- Preparations to allow the 16.16 fixed-point format to change to
- 24.8 (Vladimir Vukicevic).
- Fix bugs for unsupported X server visuals (rgb565, rgb555, bgr888, and
- abgr8888). (Carl Worth and Vladimir Vukicevic)
- Fix bugs in PDF gradients (Adrian Johnson).
- Fix cairo-xlib to build without requiring Xrender header
- files (Behdad Esfahbod).
- Make cairo more resilient in the case of glyphs not being available in
- the current font. (Behdad Esfahbod)
- Prevent crashes when both atsui and ft font backends are compiled in
- (Brian Ewins).
- Make font subsetting code more robust against fonts that don't include
- optional tables (Adrian Johnson).
- Fix CFF subsetting bug, (which manifested by generating PDF files that
- Apple's Preview viewer could not read) (Adrian Johnson).
- Fixed error handling for quartz and ATSUI backends (Brian Ewins).
- Avoid rounding problems by pre-transforming to avoid integer-only
- restrictions on transformation in GDI (Adrian Johnson).
- Fixed an obscure bug (#7245) computing extents for some stroked
- paths (Carl Worth).
- Fix crashes due to extreme transformation of the pen, (seems to show
- up in many .swf files for some reason) (Carl Worth).
- Release 1.4.10 (2007-06-27 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the fifth update in cairo's stable 1.4 series. It comes
- roughly three weeks after the 1.4.8 release. The most significant
- change in this release is a fix to avoid an X error in certain cases,
- (that were causing OpenOffice.org to crash in Fedora). There is also a
- semantic change to include child window contents when using an xlib
- surface as a source, an optimization when drawing many rectangles, and
- several minor fixes.
- Eliminate X errors that were killing OO.o (Chris Wilson)
- --------------------------------------------------------
- Cairo is fixed to avoid the X errors propagated when cleaning up
- Render Pictures after the application had already destroyed the
- Drawable they reference. (It would be nice if the X server wouldn't
- complain that some cleanup work is already done, but there you have
- it.) This fixes the bug causing OpenOffice.org to crash as described
- here:
- XError on right click menus in OOo.
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811
- Use IncludeInferiors when using xlib surface as a source (Ryan Lortie)
- ----------------------------------------------------------------------
- When an xlib surface is used as the source of a draw operation the
- contents of child windows are now included in the source data. The
- semantics of drawing to xlib surfaces are unchanged (ie: draws are
- still clipped by child windows overlapping the destination window).
- Optimize drawing of many rectangles (Vladimir Vukicevic)
- --------------------------------------------------------
- Avoid O(N*N) loop when filling many axis-aligned rectangles, (either
- many rectangles as separate sub-paths or due to dashing).
- Miscellaneous fixes
- -------------------
- Fix cairo-perf on Solaris by linking to librt. (Behdad Esfahbod)
- Fix make check for systems that require executable files to have a
- particular extension. (Behdad Esfahbod)
- Eliminate some warnings in cairo-quartz. (Brian Ewins)
- Fix build-breaking typo for cairo-directfb. (Chris Wilson)
- Release 1.4.8 (2007-06-07 Carl Worth <cworth@cworth.org>)
- =========================================================
- This is the fourth update in cairo's stable 1.4 series. It comes just
- over five weeks after the 1.4.6 release. This release includes a
- thread-safe surface-cache for solid patterns which significantly
- improves text rendering with the xlib backend. Also, dozens of error
- paths in cairo have been fixed thanks to extensive fault-injection
- testing by Chris Wilson.
- Surface cache for solid patterns
- --------------------------------
- Originally written by Jorn Baayen, the introduction of a small cache
- for surfaces created for solid patterns improves performance
- dramatically. For example, this reduces the volume of X requests
- during text rendering to the same level as Xft.
- This cache first made its appearance in a 1.3.x snapshot, but was
- removed before appearing in any previous major release due to
- complications with multi-threaded programs. For example, programs like
- evince that would carefully restrict usage of cairo-xlib to a single
- thread were unpleasantly surprised to find that using cairo-image in a
- separate thread could trigger X requests.
- Behdad Esfahbod designed a fix which was implemented by Chris
- Wilson. Now, the necessary X requests are queued up until the next
- time the application directly operates on an xlib surface.
- Improved error handling paths
- ------------------------------
- Chris Wilson continued the excellent work he started in cairo 1.4.4 to
- make cairo much more robust against out-of-memory and other errors. He
- applied his memory allocation fault injection cairo's main test suite,
- (previously he had applied it to cairo's performance suite).
- Chris's testing found dozens of bugs which he fixed. Many of these
- bugs had perhaps never been hit by any users. But at least one was
- hit by the gnome-about program which resulted in dozens of duplicated
- bug reports against that program:
- http://bugzilla.gnome.org/show_bug.cgi?id=431990
- We were very pleasantly surprised to see this bug get fixed as a
- side-effect of Chris's work. Well done, Chris!
- Other fixes
- -----------
- Cleanup of mutex declarations (Behdad Esfahbod)
- Remove unnecessary clip region from SVG output (Emmanuel Pacaud)
- Remove Xsun from the buggy_repeat blacklist (Elaine Xiong)
- ATSUI: Fix glyph measurement: faster and more correct (Brian Ewins)
- Quartz: fixed 'extend' behaviour for patterns, improved pattern performance,
- and a few smaller correctness fixes. (Brian Ewins, Vladimir Vukicevic)
- Release 1.4.6 (2007-05-01 Carl Worth <cworth@cworth.org>)
- =========================================================
- This is the third update in cairo's stable 1.4 series. It comes a
- little less than three weeks since the 1.4.4 release. This release
- fixes the broken mutex initialization that made cairo 1.4.4 unusable
- on win32, OS/2, and BeOS systems. This release also adds significant
- improvements to cairo's PDF backend, (native gradients!), and a couple
- of performance optimizations, (one of which is very significant for
- users of the xlib backend). See below for more details.
- Repaired mutex initialization
- -----------------------------
- We apologize that cairo 1.4.4 did little more than crash on many
- platforms which are less-frequently used by the most regular cairo
- maintainers, (win32, OS/2, and BeOS). The mutex initialization
- problems that caused those crashes should be fixed now. And to avoid
- similar problems in the future, we've now started posting pre-release
- snapshots to get better testing, (subscribe to cairo@cairographics.org
- if you're interested in getting notified of those and testing them).
- PDF Improvements
- ----------------
- Thanks to Adrian Johnson, (cairo PDF hacker extraordinaire), we have
- several improvements to cairo's PDF backend to announce:
- Native gradients:
- As of cairo 1.4.6, cairo will now generate native PDF gradients in
- many cases, (previously, the presence of a gradient on any page
- would force rasterized output for that page). Currently, only
- gradients with extend types of PAD (the default) or NONE will
- generate native PDF gradients---others will still trigger
- rasterization, (but look for support for other extend modes in a
- future release). Many thanks to Miklós Erdélyi as well, who did the
- initial work for this support.
- Better compatibility with PDF viewers:
- The PDF output from cairo should now be displayed correctly by a
- wider range of PDF viewers. Adrian tested cairo's PDF output against
- many PDF viewers, identified a common bug in many of those viewers
- (ignoring the CTM matrix in some cases), and modified cairo's output
- to avoid triggering that bugs (pre-transforming coordinates and
- using an identity matrix).
- Better OpenType/CFF subsetting:
- Cairo will now embed CFF and TrueType fonts as CID fonts.
- Performance optimizations
- -------------------------
- Faster cairo_paint_with_alpha:
- The cairo_paint_with_alpha call is used to apply a uniform alpha
- mask to a pattern. For example, it can be used to gradually fade an
- image out or in. Jeff Muizelaar fixed some missing/broken
- optimizations within the implementation of this function resulting
- in cairo_paint_with_alpha being up to 4 times faster when using
- cairo's image backend.
- Optimize rendering of "off-screen" geometry:
- Something that applications often do is to ask cairo to render
- things that are either partially or wholly outside the current clip
- region. Since 1.4.0 the image backend has been fixed to not waste
- too much time in this case. But other backends have still been
- suffering.
- In particular, the xlib backend has often performed quite badly in
- this situation. This is due to a bug in the implementation of
- trapezoid rasterization in many X servers.
- Now, in cairo 1.4.6 there is a higher-level fix for this
- situation. Cairo now eliminates or clips trapezoids that are wholly
- or partially outside the clip region before handing the trapezoids
- to the backend. This means that the X server's performance bug is
- avoided in almost all cases.
- The net result is that doing an extreme zoom-in of vector-based
- objects drawn with cairo might have previously brought the X server
- to its knees as it allocated buffers large enough to fit all of the
- geometry, (whether visible or not). But now the memory usage should
- be bounded and performance should be dramatically better.
- Miscellaneous
- -------------
- Behdad contributed an impressively long series of changes that
- organizes cairo's internals in several ways that will be very
- beneficial to cairo developers. Thanks, Behdad!
- Behdad has also provided a utility for generating malloc statistics,
- (which was used during the great malloc purges of 1.4.2 and
- 1.4.4). This utility isn't specific to cairo so may be of benefit to
- others. It is found in cairo/util/malloc-stats.c and here are Behdad's
- notes on using it:
- To build, do:
- make malloc-stats.so
- inside util/, and to use, run:
- LD_PRELOAD=malloc-stats.so some-program
- For binaries managed by libtool, eg, cairo-perf, do:
- ../libtool --mode=execute /bin/true ./cairo-perf
- LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf
- Finally, the cairo-perf-diff-files utility was enhanced to allow for
- generating performance reports from several runs of the same backend
- while some system variables were changed. For example, this is now
- being used to allow cairo-perf to measure the performance of various
- different acceleration architectures and configuration options of the
- X.org X server.
- Release 1.4.4 (2007-04-13 Carl Worth <cworth@cworth.org>)
- =========================================================
- This is the second update release in cairo's stable 1.4 series. It
- comes just less than a month after 1.4.2. The changes since 1.4.2
- consist primarily of bug fixes, but also include at least one
- optimization. See below for details.
- Of all the work that went into the 1.4.4 release
- There have been lots of individuals doing lots of great work on cairo,
- but two efforts during the 1.4.4 series deserve particular mention:
- Internal cleanup of error handling, (Chris Wilson)
- --------------------------------------------------
- Chris contributed a tremendous series of patches (74 patches!) to
- improve cairo's handling of out-of-memory and other errors. He began
- by adding gcc's warn_unused_attribute to as many functions as
- possible, and then launched into the ambitious efforts of adding
- correct code to quiet the dozens of resulting warnings.
- Chris also wrote a custom valgrind skin to systematically inject
- malloc failures into cairo, and did all the work necessary to verify
- that cairo's performance test suite runs to completion without
- crashing.
- The end result is a much more robust implementation. Previously, many
- error conditions would have gone unnoticed and would have led to
- assertion failures, segmentation faults, or other harder-to-diagnose
- problems. Now, more than ever, cairo should cleanly let the user know
- of problems through cairo_status and other similar status
- functions. Well done, Chris!
- More malloc reduction, (Mathias Hasselmann)
- -------------------------------------------
- After 1.4.0, Behdad launched an effort to chase down excessive calls
- to malloc within the implementation of cairo. He fixed a lot of
- malloc-happy objects for 1.4.2, but one of the worst offenders,
- (pixman regions), was left around. Mathias contributed an excellent
- series of 15 patches to finish off this effort.
- The end result is a cairo that calls malloc much less often than it
- did before. Compared to 1.4.2, 55% of the calls to malloc have been
- eliminate, (and 60% have been eliminated compared to 1.4.0). Well
- done, Mathias!
- Other improvements since 1.4.2
- ------------------------------
- • Centralize mutex declarations (will reduce future build breaks),
- (Mathias Hasselmann)
- • Reduce malloc by caching recently freed pattern objects (Chris
- Wilson)
- • Fix some broken composite operations (David Reveman)
- https://bugs.freedesktop.org/show_bug.cgi?id=5777
- Backend-specific fixes
- ----------------------
- PDF:
- • Use TJ operator for more compact representation of glyphs (Adrian
- Johnson)
- • Fix glyph positioning bug when glyphs are not horizontal
- http://lists.freedesktop.org/archives/cairo/2007-April/010337.html
- win32:
- • Fix crash when rendering with bitmap fonts (Carl Worth)
- https://bugzilla.mozilla.org/show_bug.cgi?id=376498
- xlib:
- • Turn metrics-hinting on by default (Behdad Esfahbod)
- • Fix edge-effect problem with transformed images drawn to xlib
- (Behdad Esfahbod)
- https://bugs.freedesktop.org/show_bug.cgi?id=10508
- • Avoid dereferencing a NULL screen. (Chris Wilson)
- https://bugs.freedesktop.org/show_bug.cgi?id=10517
- Quartz/ATSUI:
- • Fix scaling of glyph surfaces
- (Brian Ewins)
- https://bugs.freedesktop.org/show_bug.cgi?id=9568
- • Fix compilation failure when both xlib and quartz enabled
- (Brian Ewins)
- • Fix rounding bug leading to incorrectly positioned glyphs
- (Robert O'Callahan)
- https://bugs.freedesktop.org/show_bug.cgi?id=10531
- Release 1.4.2 (2007-03-19 Carl Worth <cworth@cworth.org>)
- =========================================================
- This is the first update release in cairo's stable 1.4 series. It
- comes just less than 2 weeks after 1.4.0. We hadn't anticipated an
- update this early, but we've managed to collect some important fixes
- that we wanted to get out to cairo users as soon as possible, (6 fixes
- for crashes, 1 case where graphical elements would not be drawn at
- all, a handful of backend-specific bugs, and several important build
- fixes).
- There's almost nothing but bug fixes in this release, (see below one
- optimization that Behdad did sneak in), so we recommend that everyone
- upgrade to this release when possible.
- Thanks to the many people that worked to fix these bugs, and those
- that did the work to report them and to test the fixes, (wherever
- possible both names are credited below).
- Critical fixes
- --------------
- • Fix a crash due to a LOCK vs. UNLOCK typo (M. Drochner fixing Carl
- Worth's embarrassing typo).
- http://bugs.freedesktop.org/show_bug.cgi?id=10235
- • Fix potential buffer overflow, which on some systems with a checking
- variant of snprintf would lead to a crash (Adrian Johnson, Stanislav
- Brabec, and sangu).
- https://bugs.freedesktop.org/show_bug.cgi?id=10267
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232576
- • Fix a crash in cairo_stroke_extents or cairo_in_stroke when line
- width is 0.0. (Carl Worth and Sebastien Bacher)
- https://bugs.freedesktop.org/show_bug.cgi?id=10231
- • Fix a crash on certain combinations of X server/video drivers (Carl
- Worth and Tomas Carnecky).
- https://bugs.freedesktop.org/show_bug.cgi?id=10250
- • Fix a crash due to mishandling of invalid user input (Carl Worth and
- Alexander Darovsky).
- https://bugs.freedesktop.org/show_bug.cgi?id=9844
- • xlib: Cleanup server-side glyph caches on XCloseDisplay. This
- eliminated a crash detected by the perf suite, (and that
- applications could have run into as well). (Chris Wilson)
- Other bug fixes
- ---------------
- • Fix for some geometry which simply disappeared under some
- transformations---a stroked line with an extreme skew in X, for
- example (Carl Worth and Jonathan Watt).
- https://bugzilla.mozilla.org/show_bug.cgi?id=373632
- • SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 > r1
- (Emmanuel Pacaud).
- • PDF: Set page group color space to DeviceRGB.
- This fixes incorrect (muddy) transparent colors when rendering cairo
- PDF output in some viewers. (Adrian Johnson, Adam Goode, and
- MenTaLguY).
- http://lists.freedesktop.org/archives/cairo/2006-November/008551.html
- • win32: Return correct metrics when hinting is off, and fix font
- descent computation (Behdad Esfahbod).
- • quartz: Fix glyph interfaces to correctly return user-space rather
- than device-space coordinates (Brian Ewins).
- https://bugs.freedesktop.org/show_bug.cgi?id=9568
- • xcb: Fix parameter-order confusion with xcb_create_pixmap, which now
- makes all tests that pass with xlib now pass with xcb (Carl Worth,
- Jamey Sharp).
- • Fix some memory leaks in the perf suite (Chris Wilson).
- • Fix perf suite to consider changes in pixman/src (Mathias
- Hasselmann).
- Build fixes
- -----------
- • Don't include pre-generated cairo-features.h file. This was causing
- build failures when building with the directfb backend enabled
- (Behdad Esfahbod).
- https://bugs.freedesktop.org/show_bug.cgi?id=10189
- • Eliminate use of maintainer mode from cairo's automake/configure
- script. This means that updates to files such as Makefile.am will
- take effect, (by rerunning automake and friends as necessary) when
- invoking make rather than being silently ignored. (Behdad Esfahbod)
- • Don't compile cairo-deflate-stream.c, which depends on zlib, unless
- building the pdf backend which requires it. (Carl Worth, Tor
- Lillqvist)
- https://bugs.freedesktop.org/show_bug.cgi?id=10202
- • Don't make the ps backend link against zlib anymore, since it
- doesn't require it (Carl Worth).
- • Use "find !" rather than "find -not" for better portability (Thomas
- Klausner).
- https://bugs.freedesktop.org/show_bug.cgi?id=10226
- • Don't use unsupported visibility attribute "hidden" on Solaris
- (Gilles Dauphin, Thomas Klausner).
- https://bugs.freedesktop.org/show_bug.cgi?id=10227
- Optimization
- ------------
- • It was Behdad that suggested we focus strictly on bug fixes now that
- we shipped so many performance improvements in 1.4.0, but it was
- also Behdad that got distracted by the chance to remove a lot of
- mallocs from cairo. Paths, gstates, trapezoids, splines, polygons,
- and gradient color stops will now use small, stack-allocated buffers
- in the most common cases rather than calling malloc as
- often. (Behdad Esfahbod). And look for more from Mathias Hasselmann
- soon.
- Release 1.4.0 (2007-03-06 Carl Worth <cworth@cworth.org>)
- =========================================================
- The many people[*] who have been working hard on cairo are very
- pleased to announce the long-awaited release of cairo 1.4. This
- release comes 4 months after the last stable update release (1.2.6)
- and 9 months since the initial release of 1.2.0.
- The release notes below are intended to capture the highlights of the
- changes that have occurred from the 1.2 series to the new 1.4.0
- release.
- Performance improvements
- ------------------------
- Within the cairo project, the last 6 months or so has seen an intense
- effort focusing on the performance of cairo itself. That effort has
- paid off considerably, as can be seen in the following highlights of
- some of the performance differences from cairo 1.2.6 to cairo 1.4.0.
- (Note: The performance results reported here were measured on an x86
- laptop. Many of the improvements in 1.4---particular those involving
- text rendering---are even more dramatic on embedded platforms without
- hardware floating-point units. Such devices played an important part
- of many of the optimizations that found their way into cairo over the
- last few months.)
- • Dramatic improvement when drawing objects that are mostly off-screen
- with the image backend (with the xlib backend this case is still
- slow due to an X server bug):
- image-rgba long-lines-uncropped-100 479.64 -> 4.98: 96.24x speedup
- ███████████████████████████████████████████████▋
- • Dramatic improvement when copying a small fraction of an image
- surface to an xlib surface:
- xlib-rgba subimage_copy-512 3.93 -> 0.07: 54.52x speedup
- ██████████████████████████▊
- • Dramatic improvement to tessellation speed for complex objects:
- image-rgb tessellate-256-100 874.16 -> 34.79: 25.13x speedup
- ████████████▏
- xlib-rgba zrusin_another_fill-415 148.40 -> 13.85: 10.72x speedup
- ████▉
- xlib-rgb world_map-800 680.20 -> 345.54: 1.97x speedup
- ▌
- • Dramatic improvement to the speed of stroking rectilinear shapes,
- (such as the outline of a rectangle or "box"):
- image-rgb box-outline-stroke-100 0.18 -> 0.01: 24.22x speedup
- ███████████▋
- xlib-rgb box-outline-stroke-100 0.46 -> 0.06: 8.05x speedup
- ███▌
- • Dramatic improvements to text rendering speeds:
- xlib-rgba text_image_rgba_over-256 63.12 -> 9.61: 6.57x speedup
- ██▊
- • 3x improvements to floating-point to fixed-point conversion speeds:
- image-rgba pattern_create_radial-16 9.29 -> 3.44: 2.70x speedup
- ▉
- • 2x improvements to linear gradient computation:
- image-rgb paint_linear_rgb_source-512 26.22 -> 11.61: 2.26x speedup
- ▋
- • 2x improvement to a case common in PDF rendering:
- image-rgb unaligned_clip-100 0.10 -> 0.06: 1.81x speedup
- ▍
- • 1.3x improvement to rectangle filling speed (note: this improvement
- is new since 1.3.16---previously this test case was a 1.3x slowdown
- compared to 1.2.6):
- image-rgba rectangles-512 6.19 -> 4.37: 1.42x speedup
- ▎
- xlib-rgba rectangles-512 7.48 -> 5.58: 1.34x speedup
- ▏
- NOTE: In spite of our best efforts, there are some measurable
- performance regressions in 1.4 compared to 1.2. It appears that the
- primary problem is the increased overhead of the new tessellator when
- drawing many, very simple shapes. The following test cases capture
- some of that slowdown:
- image-rgba mosaic_tessellate_lines-800 11.03 -> 14.29: 1.30x slowdown
- ▏
- image-rgba box-outline-fill-100 0.01 -> 0.01: 1.26x slowdown
- ▏
- image-rgba fill_solid_rgb_over-64 0.20 -> 0.22: 1.12x slowdown
- image-rgba fill_image_rgba_over-64 0.23 -> 0.25: 1.10x slowdown
- xlib-rgb paint_image_rgba_source-256 3.24 -> 3.47: 1.07x slowdown
- We did put some special effort into eliminating this slowdown for the
- very common case of drawing axis-aligned rectangles with an identity
- matrix (see the box-outline-stroke and rectangles speedup numbers
- above). Eliminating the rest of this slowdown will be a worthwhile
- project going forward.
- Also note that the "box-outline-fill" case is a slowdown while
- "box-outline-stroke" is a (huge) speedup. These two test cases
- resulted from the fact that some GTK+ theme authors were filling
- between two rectangles to avoid slow performance from the more natural
- means of achieving the same shape by stroking a single rectangle. With
- 1.4 that workaround should definitely be eliminated as it will now
- cause things to perform more slowly.
- Greatly improved PDF output
- ---------------------------
- We are very happy to be able to announce that cairo-generated PDF
- output will now have text that can be selected, cut-and-pasted, and
- searched with most capable PDF viewer applications. This is something
- that was not ever possible with cairo 1.2.
- Also, the PDF output now has much more compact encoding of text than
- before. Cairo is now much more careful to not embed multiple copies of
- the same font at different sizes. It also compresses text and font
- streams within the PDF output.
- API additions
- -------------
- There are several new functions available in 1.4 that were not
- available in 1.2. Curiously, almost all of the new functions simply
- allow the user to query state that has been set in cairo (many new
- "get" functions) rather than providing any fundamentally new
- operations. The new functionality is:
- • Getting information about the current clip region
- cairo_clip_extents
- cairo_copy_clip_rectangle_list
- cairo_rectangle_list_destroy
- • Getting information about the current dash setting
- cairo_get_dash_count
- cairo_get_dash
- • Getting information from a pattern
- cairo_pattern_get_rgba
- cairo_pattern_get_surface
- cairo_pattern_get_color_stop_rgba
- cairo_pattern_get_color_stop_count
- cairo_pattern_get_linear_points
- cairo_pattern_get_radial_circles
- • Getting the current scaled font
- cairo_get_scaled_font
- • Getting reference counts
- cairo_get_reference_count
- cairo_surface_get_reference_count
- cairo_pattern_get_reference_count
- cairo_font_face_get_reference_count
- cairo_scaled_font_get_reference_count
- • Setting/getting user data on objects
- cairo_set_user_data
- cairo_get_user_data
- cairo_pattern_set_user_data
- cairo_pattern_get_user_data
- cairo_scaled_font_set_user_data
- cairo_scaled_font_get_user_data
- • New cairo-win32 functions:
- cairo_win32_surface_create_with_ddb
- cairo_win32_surface_get_image
- cairo_win32_scaled_font_get_logical_to_device
- cairo_win32_scaled_font_get_device_to_logical
- API deprecation
- ---------------
- The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
- worked as a format value for cairo_image_surface_create, and it wasn't
- necessary for supporting 16-bit 565 X server visuals.
- A sampling of bug fixes in cairo 1.4
- ------------------------------------
- • Fixed radial gradients
- • Fixed dashing (degenerate and "leaky" cases)
- • Fixed transformed images in PDF/PS output (eliminate bogus repeating)
- • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
- • cairo_show_page no longer needed for single-page output
- • SVG: Fix bug preventing text from appearing in many viewers
- • cairo-ft: Return correct metrics when hinting is off
- • Eliminate crash in cairo_create_similar if nil surface is returned
- • Eliminate crash after INVALID_RESTORE error
- • Fix many bugs related to multi-threaded use and locking
- • Fix for glyph spacing 32 times larger than desired (cairo-win32)
- • Fixed several problems in cairo-atsui (assertion failures)
- • Fix PDF output to avoid problems when printing from Acrobat Reader
- • Fix segfault on Mac OS X (measuring a zero-length string)
- • Fix text extents to not include the size of non-inked characters
- • Fix for glyph cache race condition in glitz backend (Jinghua Luo)
- • Fix make check to work on OPD platforms (IA64 or PPC64)
- • Fix compilation problems of cairo "wideint" code on some platforms
- • Many, many others...
- Experimental backends (quartz, XCB, OS/2, BeOS, directfb)
- ---------------------------------------------------------
- None of cairo's experimental backends are graduating to "supported"
- status with 1.4.0, but two of them in particular (quartz and xcb), are
- very close.
- The quartz baceknd has been entirely rewritten and is now much more
- efficient. The XCB backend has been updated to track the latest XCB
- API (which recently had a 1.0 release).
- We hope to see these backends become supported in a future release,
- (once they are passing all the tests in cairo's test suite).
- The experimental OS/2 backend is new in cairo 1.4 compared to cairo
- 1.2.
- Documentation improvements
- --------------------------
- We have added documentation for several functions and types that
- were previously undocumented, and improved documentation on other
- ones. As of this release, there remain only two undocumented
- symbols: cairo_filter_t and cairo_operator_t.
- [*]Thanks to everyone
- ---------------------
- I've accounted for 41 distinct people with attributed code added to
- cairo between 1.2.6 and 1.4.0, (their names are below). That's an
- impressive number, but there are certainly dozens more that
- contributed with testing, suggestions, clarifying questions, and
- encouragement. I'm grateful for the friendships that have developed as
- we have worked on cairo together. Thanks to everyone for making this
- all so much fun!
- Adrian Johnson, Alfred Peng, Alp Toker, Behdad Esfahbod,
- Benjamin Otte, Brian Ewins, Carl Worth, Christian Biesinger,
- Christopher (Monty) Montgomery, Daniel Amelang, Dan Williams,
- Dave Yeo, David Turner, Emmanuel Pacaud, Eugeniy Meshcheryakov,
- Frederic Crozat, Hans Breuer, Ian Osgood, Jamey Sharp, Jeff Muizelaar,
- Jeff Smith, Jinghua Luo, Jonathan Watt, Joonas Pihlaja, Jorn Baayen,
- Kalle Vahlman, Kjartan Maraas, Kristian Høgsberg, M Joonas Pihlaja,
- Mathias Hasselmann, Mathieu Lacage, Michael Emmel, Nicholas Miell,
- Pavel Roskin, Peter Weilbacher, Robert O'Callahan,
- Soren Sandmann Pedersen, Stuart Parmenter, T Rowley,
- Vladimir Vukicevic
- Snapshot 1.3.16 (2007-03-02 Carl Worth <cworth@cworth.org>)
- ===========================================================
- New API functions
- -----------------
- A few new public functions have been added to the cairo API since the
- 1.3.14 snapshot. These include a function to query the current scaled
- font:
- cairo_get_scaled_font
- New functions to query the reference count of all cairo objects:
- cairo_get_reference_count
- cairo_surface_get_reference_count
- cairo_pattern_get_reference_count
- cairo_font_face_get_reference_count
- cairo_scaled_font_get_reference_count
- And new functions to allow the use of user_data with any cairo object,
- (previously these were only available on cairo_surface_t and
- cairo_font_face_t objects):
- cairo_set_user_data
- cairo_get_user_data
- cairo_pattern_set_user_data
- cairo_pattern_get_user_data
- cairo_scaled_font_set_user_data
- cairo_scaled_font_get_user_data
- Usability improvement for PDF/PS/SVG generation
- -----------------------------------------------
- In previous versions of cairo, generating single-page output with the
- cairo-pdf, cairo-ps, or cairo-svg backends required a final call to
- cairo_show_page. This was often quite confusing as people would port
- functional code from a non-paginated backend and be totally mystified
- as to why the output was blank until they learned to add this call.
- Now that call to cairo_show_page is optional, (it will be generated
- implicitly if the user does not call it). So cairo_show_page is only
- needed to explicitly separate multiple pages.
- Greatly improved PDF output
- ---------------------------
- We are very happy to be able to announce that cairo-generated PDF
- output will now have text that can be selected, cut-and-paste, and
- searched with most capable PDF viewer applications. This is something
- that was not ever possible with cairo 1.2.
- Also, the PDF output now has much more compact encoding of text than
- before. Cairo is now much more careful to not embed multiple copies of
- the same font at different sizes. It also compresses text and font
- streams within the PDF output.
- Major bug fixes
- ---------------
- • Fixed radial gradients
- The rendering of radial gradients has been greatly improved. In
- the cairo 1.2 series, there was a serious regression affecting
- radial gradients---results would be very incorrect unless one of
- the gradient circles had a radius of 0.0 and a center point within
- the other circle. These bugs have now been fixed.
- • Fixed dashing
- Several fixes have been made to the implementation of dashed
- stroking. Previously, some dashed, stroked rectangles would
- mis-render and fill half of the rectangle with a large triangular
- shape. This bug has now been fixed.
- • Fixed transformed images in PDF/PS output
- In previous versions of cairo, painting with an image-based source
- surface pattern to the PDF or PS backends would cause many kinds
- of incorrect results. One of the most common problems was that an
- image would be repeated many times even when the user had
- explicitly requested no repetition with CAIRO_EXTEND_NONE. These
- bugs have now been fixed.
- • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
- In the 1.2 version of cairo any use of CAIRO_EXTEND_REFLECT or
- CAIRO_EXTEND_PAD with a surface-based pattern resulted in an
- error, (cairo would stop rendering). This bug has now been
- fixed.
- Now, CAIRO_EXTEND_REFLECT should work properly with surface
- patterns.
- CAIRO_EXTEND_PAD is still not working correctly, but it will now
- simply behave as CAIRO_EXTEND_NONE rather than triggering the
- error.
- New rewrite of quartz backend (still experimental)
- --------------------------------------------------
- Cairo's quartz backend has been entirely rewritten and is now much
- more efficient. This backend is still marked as experimental, not
- supported, but it is now much closer to becoming an officially
- supported backend. (For people that used the experimental nquartz
- backend in previous snapshots, that implementation has now been
- renamed from "nquartz" to "quartz" and has replaced the old quartz
- backend.)
- Documentation improvements
- --------------------------
- We have added documentation for several functions and types that
- were previously undocumented, and improved documentation on other
- ones. As of this release, there remain only two undocumented
- symbols: cairo_filter_t and cairo_operator_t.
- Other bug fixes
- ---------------
- • cairo-svg: Fix bug that was preventing text from appearing in many
- viewers
- • cairo-ft: Return correct metrics when hinting is off
- • Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or
- _cairo_ft_unscaled_font_lock_face
- https://bugs.freedesktop.org/show_bug.cgi?id=10035
- • cairo crashes in cairo_create_similar if nil surface returned by
- other->backend->create_similar
- https://bugs.freedesktop.org/show_bug.cgi?id=9844
- • evolution crash in _cairo_gstate_backend_to_user()
- https://bugs.freedesktop.org/show_bug.cgi?id=9906
- • Fix memory leak in rectilinear stroking code
- Things not in this release
- --------------------------
- • Solid-surface-pattern cache: This patch had been applied during
- the 1.3.x series, but it was reverted due to some inter-thread
- problems it caused. The patch is interesting since it made a big
- benefit for text rendering performance---so we'll work to bring a
- corrected version of this patch back as soon as possible.
- Snapshot 1.3.14 (2006-02-13 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the seventh development snapshot in the 1.3 series, (and there
- likely won't be many more before the 1.4.0 release). It comes just
- over 3 weeks after the 1.3.12 snapshot.
- Since we're so close to the 1.4.0 release, there are not a lot of new
- features nor even a lot of new performance improvements in this
- snapshot. Instead, there are a great number of bug fixes. Some are
- long-standing bugs that we're glad to say goodbye to, and several are
- fixes for regressions that were introduced as part of the optimization
- efforts during the 1.3.x series.
- PDF text selection fixed
- ------------------------
- The inability to correctly select text in cairo-generated PDF has been
- a defect ever since the initial support for the PDF backend in the
- cairo 1.2.0 release. With the 1.3.14 snapshot, in most situations, and
- with most PDF viewer applications, the PDF generated by cairo will
- allow text to be correctly selected for copy-and-paste, (as well as
- searching).
- We're very excited about this new functionality, (and very grateful to
- Adrian Johnson, Behdad Esfahbod, and others that have put a lot of
- work into this lately). Please test this new ability and give feedback
- on the cairo@cairographics.org list.
- Many thread-safety issues fixed
- -------------------------------
- We've discovered that no release of cairo has ever provided safe text
- rendering from a multi-threaded application. With the 1.3.14 snapshot
- a huge number of the bugs in this area have been fixed, and multiple
- application dvelopers have now reported success at writing
- multi-threaded applications with cairo.
- Other fixes
- -----------
- Fixed a bug that was causing glyph spacing to be 32 times larger than
- desired when using cairo-win32.
- Fixed a regression in the rendering of linear gradients that had been
- present since the 1.3.8 snapshot.
- Fixed several problems in cairo-atsui that were leading to assertion
- failures when rendering text.
- Fix corrupted results when rendering a transformed source image
- surface to an xlib surface. This was a regression that had been
- present since the 1.3.2 snapshot.
- Fixed PDF output to prevent problems printing from some versions of
- Acrobat Reader, (a single glyph was being substituted for every
- glyph).
- And many other fixes as well, (see the logs for details).
- Snapshot 1.3.12 (2007-01-20 Carl Worth <cworth@cworth.org>)
- ===========================================================
- The relentless march toward the cairo 1.4 release continues, (even if
- slightly late out of the starting blocks in 2007). This is the sixth
- development snapshot in the 1.3 series. It comes 4 weeks after the
- 1.3.10 snapshot.
- Performance
- -----------
- As usual, this snapshot has some fun performance improvements to show
- off:
- image-rgba long-lines-uncropped-100 470.08 -> 4.95: 94.91x speedup
- ███████████████████████████████████████████████
- image-rgb long-lines-uncropped-100 461.60 -> 4.96: 93.02x speedup
- ██████████████████████████████████████████████
- This 100x improvement, (and yes, that's 100x, not 100%), in the image
- backend occurs when drawing large shapes where only a fraction of the
- shape actually appears in the final result, (the rest being outside
- the bounds of the destination surface). Many applications should see
- speedups here, and the actual amount of speedup depends on the ratio
- of non-visible to visible portions of geometry.
- [Note: There remains a similar performance bug when drawing mostly
- non-visible objects with the xlib backend. This is due to a similar
- bug in the X server itself, but we hope a future cairo snapshot will
- workaround that bug to get a similar speedup with the xlib backend.]
- image-rgba unaligned_clip-100 0.09 -> 0.06: 1.67x speedup
- ▍
- image-rgb unaligned_clip-100 0.09 -> 0.06: 1.66x speedup
- ▍
- This speedup is due to further MMX optimization by Soeren Sandmann for
- a case commonly hit when rendering PDF files, (and thanks to Jeff
- Muizelaar for writing code to extract the test case for us).
- There's another MMX optimization in this snapshot (without a fancy
- speedup chart) by Dan Williams which improves compositing performance
- specifically for the OLPC machine.
- Thanks to Adrian Johnson, cairo's PDF output is now much more
- efficient in the way it encodes text output. By reducing redundant
- information and adding compression to text output streams, Adrian
- achieved a ~25x improvement in the efficiency of encoding text in PDF
- files, (was ~45 bytes per glyph and is now ~1.6 bytes per glyph).
- Bug fixes
- ---------
- In addition to those performance improvements, this snapshot includes
- several bug fixes:
- * A huge number of bug fixes for cairo-atsui text rendering, (for mac
- OS X). These bugs affect font selection, glyph positioning, glyph
- rendering, etc. One noteworthy bug fixes is that
- cairo_select_font_face will no longer arbitrarily select bold nor
- italic when not requested, (at least not when using a standard CSS2
- font family name such as "serif", "sans-serif", "monospace", etc.).
- All these fixes are thanks to Brian Ewins who continues to do a
- great job as the new cairo-atsui maintainer.
- * Fix PDF output so that images that are scaled down no longer
- mysteriously repeat (Carl Worth).
- * Fix segfault on Mac OS X dues to attempt to measure extents of a
- zero-length string (Behdad Esfahbod).
- * Fix text extents to not include the size of initial/trailing
- non-inked characters (Behdad Esfahbod).
- API tweaks
- ----------
- Three functions have had API changes to improve consistency. Note that
- the API functions being changed here are all functions that were
- introduced as new functions during these 1.3.x snapshots. As always,
- there will not be any API changes to functions included in a major
- release (1.2.x, 1.4.x, etc.) of cairo.
- The changes are as follows:
- * Rename of cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list.
- * Change cairo_get_dash_count to return an int rather than accepting a
- pointer to an int for the return value.
- * Change cairo_get_dash to have a void return type rather than
- returning cairo_status_t.
- It's possible there will be one more round of changes to these
- functions, (and perhaps cairo_get_color_stop as well), as we seek to
- establish a unifying convention for returning lists of values.
- Snapshot 1.3.10 (2006-12-23 Carl Worth <cworth@cworth.org>)
- ===========================================================
- Santa Claus is coming just a little bit early this year, and he's
- bringing a shiny new cairo snapshot for all the good little boys and
- girls to play with.
- This is the fifth development snapshot in the 1.3 series. It comes 9
- days after the 1.3.8 snapshot, and still well within our goal of
- having a new snapshot every week, (though don't expect one next
- week---we'll all be too stuffed with sugar plums).
- Speaking of sugar plums, there's a sweet treat waiting in this cairo
- snapshot---greatly improved performance for stroking rectilinear
- shapes, like the ever common rectangle:
- image-rgb box-outline-stroke-100 0.18 -> 0.01: 25.58x speedup
- ████████████████████████▋
- image-rgba box-outline-stroke-100 0.18 -> 0.01: 25.57x speedup
- ████████████████████████▋
- xlib-rgb box-outline-stroke-100 0.49 -> 0.06: 8.67x speedup
- ███████▋
- xlib-rgba box-outline-stroke-100 0.22 -> 0.04: 5.39x speedup
- ████▍
- In past releases of cairo, some people had noticed that using
- cairo_stroke to draw rectilinear shapes could be awfully slow. Many
- people had worked around this by using cairo_fill with a more complex
- path and gotten a 5-15x performance benefit from that.
- If you're one of those people, please rip that workaround out, as now
- the more natural use of cairo_stroke should be 1.2-2x faster than the
- unnatural use of cairo_fill.
- And if you hadn't ever implemented that workaround, then you just
- might get to see your stroked rectangles now get drawn 5-25x faster.
- Beyond that performance fix, there are a handful of bug fixes in this
- snapshot:
- * Fix for glyph cache race condition in glitz backend (Jinghua Luo)
- * Many fixes for ATSUI text rendering (Brian Ewins)
- * Un-break recent optimization-triggered regression in rendering text
- with a translation in the font matrix (Behdad Esfahbod)
- * Fix make check to work on OPD platforms (IA64 or PPC64)
- (Frederic Crozat)
- * Fix a couple of character spacing issues on Windows
- (Jonathan Watt)
- Have fun with that, everybody, and we'll be back for more in the new
- year, (with a plan to add the last of our performance improvements in
- this round, fix a few bad, lingering bugs, and then finish off a nice,
- stable 1.4 release before the end of January).
- -Carl
- Snapshot 1.3.8 (2006-12-14 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the fourth development snapshot in the 1.3 series. It comes
- just slightly more than one week after the 1.3.6 snapshot.
- After the bug fixes in 1.3.6, we're back to our original program of
- weekly snapshots, each one faster than the one from the week
- before. Cairo 1.3.8 brings a 2x improvement in the speed of rendering
- linear gradients (thanks to David Turner), and a significant reduction
- in X traffic when rendering text (thanks to Xan Lopez and Behdad
- Esfahbod), making cairo behave very much like Xft does.
- A few other things in the 1.3.8 snapshot worth noting include a more
- forgiving image comparator in the test suite, (using the "perceptual
- diff" metric and GPL implementation by Hector Yee[*]), a bug fix for
- broken linking on x86_64 (thanks to M Joonas Pihlaja) and an even
- better implementation of _cairo_lround, (not faster, but supporting a
- more complete input range), from Daniel Amelang.
- [*] http://pdiff.sourceforge.net/
- Snapshot 1.3.6 (2006-12-06 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the third development snapshot in the 1.3 series. It comes two
- weeks after the 1.3.4 snapshot.
- We don't have fancy performance charts this week as the primary
- changes in this snapshot are bug fixes. The performance work continues
- and the next snapshot (planned for one week from today) should include
- several improvements. The bug fixes in this snapshot include:
- * Fix undesirable rounding in glyph positioning (Dan Amelang)
- This bug was noticed by several users, most commonly by seeing
- improper text spacing or scrambled glyphs as drawn by nautilus. For
- example:
- Update to cairo-1.3.4 worsen font rendering
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217819
- * Fix reduced range of valid input coordinates to tessellator
- (M Joonas Pihlaja)
- This bug was causing lots of assertion failures in mozilla as
- mentioned here:
- CAIRO_BO_GUARD_BITS and coordinate space?
- http://lists.freedesktop.org/archives/cairo/2006-December/008743.html
- * Fix several regressions in new tessellator (M Joonas Pihlaja)
- Joonas just had a good eye for detail here. I don't think any
- external cairo users had noticed any of these bugs yet.
- * Fix compilation problems of cairo "wideint" code on some platforms
- (Mathieu Lacage)
- * Fix failed configure due to broken grep (Dan Amelang)
- This bug was reported here:
- AX_C_FLOAT_WORDS_BIGENDIAN doesn't work because grep doesn't
- work with binary file
- https://bugs.freedesktop.org/show_bug.cgi?id=9124
- * Remove the pkg-config minimum version requirement (Behdad Esfahbod)
- Some systems ship with pkg-config 0.15 and there was really no good
- reason for cairo to insist on having version 0.19 before it would
- build.
- There is also one new (but inert) feature in this snapshot. There's a
- new option that can be passed to cairo's configure script:
- --disable-some-floating-point
- Disable certain code paths that rely heavily on double precision
- floating-point calculation. This option can improve
- performance on systems without a double precision floating-point
- unit, but might degrade performance on those that do.
- As of this snapshot, this option does not make any change to cairo,
- but it is possible that future versions of cairo will respect this
- option and change the implementation of various functions as
- appropriate.
- Snapshot 1.3.4 (2006-11-22 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the second development snapshot in the 1.3 series. It comes
- one week after the 1.3.2 snapshot.
- This snapshot has a couple of significant performance improvements,
- and also adds new support for producing multi-page SVG output, (when
- targeting SVG 1.2)---thanks to Emmanuel Pacaud. The details of the
- performance improvements are as follows:
- 1. The long-awaited "new tessellator".
- The credit for this being an improvement goes to Joonas Pihlaja. He
- took my really slow code and really put it through its paces to get
- the dramatic performance improvement seen below (up to 38x faster
- on realistic cases, and more than 10x faster for the zrusin_another
- test).
- His own writeup of the work he did is quite thorough, but more than
- can be quoted here. Please see his post for the interesting details:
- http://lists.freedesktop.org/archives/cairo/2006-November/008483.html
- (Though note that this snapshot also includes some additional,
- significant improvements that were only sketched out in that
- email---see "Generating fewer trapezoids").
- 2. More floating-point improvements
- Daniel Amelang continues to work the magic he began in the 1.3.2
- snapshot. This time he short-circuits floating-point
- transformations by identity matrices and applies the earlier
- floating-to-fixed-point technique to the problem of rounding.
- The improvements here will primarily benefit text performance, and
- will benefit platforms without hardware floating-point more than
- those that have it, (some text tests show 20% improvement on an x86
- machine and closer to 80% improvement on arm).
- The performance chart comparing 1.3.2 to 1.3.4 really speaks for
- itself, (this is on an x86 laptop). This is quite a lot of progress
- for one week:
- xlib-rgb stroke_similar_rgba_over-256 74.99 1.45% -> 2.03 68.38%: 36.86x speedup
- ███████████████████████████████████▉
- xlib-rgb stroke_similar_rgba_source-256 78.23 1.43% -> 3.30 67.05%: 23.71x speedup
- ██████████████████████▊
- xlib-rgba tessellate-256-100 820.42 0.15% -> 35.06 2.84%: 23.40x speedup
- ██████████████████████▍
- image-rgba tessellate-256-100 819.55 0.32% -> 35.04 3.56%: 23.39x speedup
- ██████████████████████▍
- xlib-rgb stroke_image_rgba_over-256 78.10 1.43% -> 4.33 65.56%: 18.04x speedup
- █████████████████
- xlib-rgb stroke_image_rgba_source-256 80.11 1.63% -> 5.75 63.99%: 13.94x speedup
- █████████████
- xlib-rgba zrusin_another_tessellate-415 89.22 0.35% -> 8.38 5.23%: 10.65x speedup
- █████████▋
- image-rgba zrusin_another_tessellate-415 87.38 0.89% -> 8.37 5.22%: 10.44x speedup
- █████████▍
- image-rgba zrusin_another_fill-415 117.67 1.34% -> 12.88 2.77%: 9.14x speedup
- ████████▏
- xlib-rgba zrusin_another_fill-415 140.52 1.57% -> 15.79 2.88%: 8.90x speedup
- ███████▉
- image-rgba tessellate-64-100 9.68 3.42% -> 1.42 0.60%: 6.82x speedup
- █████▉
- xlib-rgba tessellate-64-100 9.78 4.35% -> 1.45 0.83%: 6.72x speedup
- █████▊
- xlib-rgb stroke_linear_rgba_over-256 46.01 2.44% -> 7.74 54.51%: 5.94x speedup
- █████
- xlib-rgb stroke_linear_rgba_source-256 48.09 2.15% -> 9.14 53.00%: 5.26x speedup
- ████▎
- xlib-rgb stroke_radial_rgba_over-256 50.96 2.34% -> 12.46 47.99%: 4.09x speedup
- ███▏
- xlib-rgb stroke_radial_rgba_source-256 53.06 1.57% -> 13.96 46.57%: 3.80x speedup
- ██▊
- image-rgba paint_similar_rgba_source-256 0.12 1.57% -> 0.08 9.92%: 1.42x speedup
- ▍
- image-rgba paint_image_rgba_source-256 0.12 2.49% -> 0.08 10.70%: 1.41x speedup
- ▍
- image-rgba world_map-800 356.28 0.46% -> 275.72 1.15%: 1.29x speedup
- ▎
- xlib-rgba world_map-800 456.81 0.39% -> 357.95 1.39%: 1.28x speedup
- ▎
- image-rgb tessellate-16-100 0.09 0.57% -> 0.07 3.43%: 1.23x speedup
- ▎
- image-rgba tessellate-16-100 0.09 0.06% -> 0.07 2.46%: 1.23x speedup
- ▎
- image-rgba text_solid_rgb_over-256 5.39 4.01% -> 4.47 0.70%: 1.21x speedup
- ▎
- image-rgba text_solid_rgba_over-256 5.37 0.82% -> 4.45 0.75%: 1.21x speedup
- ▎
- image-rgba text_image_rgb_over-64 0.78 0.10% -> 0.65 0.74%: 1.20x speedup
- ▎
- image-rgba text_image_rgba_over-64 0.78 0.29% -> 0.65 0.68%: 1.19x speedup
- ▎
- image-rgb text_solid_rgb_over-64 0.76 2.45% -> 0.63 0.81%: 1.19x speedup
- ▎
- image-rgba text_solid_rgba_over-64 0.76 0.33% -> 0.64 0.66%: 1.19x speedup
- ▎
- image-rgba text_similar_rgba_over-256 5.99 4.72% -> 5.04 1.09%: 1.19x speedup
- ▎
- We should point out that there is some potential for slowdown in this
- snapshot. The following are the worst slowdowns reported by the cairo
- performance suite when comparing 1.3.2 to 1.3.4:
- image-rgba subimage_copy-256 0.01 0.87% -> 0.01 3.61%: 1.45x slowdown
- ▌
- xlib-rgb paint_solid_rgb_over-256 0.31 10.23% -> 0.38 0.33%: 1.26x slowdown
- ▎
- image-rgba box-outline-fill-100 0.01 0.30% -> 0.01 2.52%: 1.21x slowdown
- ▎
- image-rgba fill_solid_rgb_over-64 0.20 1.22% -> 0.22 1.59%: 1.12x slowdown
- ▏
- image-rgb fill_similar_rgb_over-64 0.21 1.04% -> 0.24 1.06%: 1.11x slowdown
- ▏
- image-rgba fill_image_rgb_over-64 0.21 1.19% -> 0.24 0.72%: 1.11x slowdown
- ▏
- image-rgba fill_similar_rgb_over-64 0.21 0.18% -> 0.24 0.30%: 1.11x slowdown
- ▏
- image-rgb fill_solid_rgba_over-64 0.22 1.66% -> 0.24 1.15%: 1.11x slowdown
- ▏
- image-rgb fill_image_rgb_over-64 0.21 0.14% -> 0.24 0.80%: 1.11x slowdown
- ▏
- image-rgba fill_image_rgba_over-64 0.22 1.34% -> 0.25 0.20%: 1.11x slowdown
- ▏
- image-rgba fill_solid_rgba_over-64 0.22 1.48% -> 0.24 0.95%: 1.11x slowdown
- ▏
- image-rgb fill_similar_rgba_over-64 0.22 1.13% -> 0.25 1.25%: 1.10x slowdown
- ▏
- The 45% slowdown for subimage_copy is an extreme case. It's unlikely
- to hit many applications unless they often use cairo_rectangle;
- cairo_fill to copy a single pixel at a time. In any case, it shows a
- worst-case impact of the overhead of the new tessellator. The other
- slowdowns (~ 10%) are probably more realistic, and still very
- concerning.
- We will work to ensure that performance regressions like these are not
- present from one major release of cairo to the next, (for example,
- from 1.2 to 1.4).
- But we're putting this 1.3.4 snapshot out there now, even with this
- potential slowdown so that people can experiment with it. If you've
- got complex geometry, we hope you will see some benefit from the new
- tessellator. If you've got primarily simple geometry, we hope things
- won't slowdown too much, but please let us know what slowdown you see,
- if any, so we can calibrate our performance suite against real-world
- impacts.
- Thanks, and have fun with cairo!
- Snapshot 1.3.2 (2006-11-14 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the first development snapshot since the 1.2 stable series
- branched off shortly after the 1.2.4 release in August 2006.
- This snapshot includes all the bug fixes from the 1.2.6 release,
- (since they originated here on the 1.3 branch first and were
- cherry-picked over to 1.2). But more importantly, it contains some new
- API in preparation for a future 1.4 release, and most importantly, it
- contains several performance improvements.
- The bug fixes will not be reviewed here, as most of them are already
- described in the 1.2.6 release notes. But details for the new API and
- some performance improvements are included here.
- As with all snapshots, this is experimental code, and the new API
- added here is still experimental and is not guaranteed to appear
- unchanged in any future release of cairo.
- API additions
- -------------
- Several new API additions are available in this release. There is a
- common theme among all the additions in that they allow cairo to
- advertise information about its state that it was refusing to
- volunteer earlier. So this isn't groundbreaking new functionality, but
- it is essential for easily achieving several tasks.
- The new functions can be divided into three categories:
- Getting information about the current clip region
- -------------------------------------------------
- cairo_clip_extents
- cairo_copy_clip_rectangles
- cairo_rectangle_list_destroy
- Getting information about the current dash setting
- --------------------------------------------------
- cairo_get_dash_count
- cairo_get_dash
- Getting information from a pattern
- ----------------------------------
- cairo_pattern_get_rgba
- cairo_pattern_get_surface
- cairo_pattern_get_color_stop_rgba
- cairo_pattern_get_color_stop_count
- cairo_pattern_get_linear_points
- cairo_pattern_get_radial_circles
- In each of these areas, we have new API for providing a list of
- uniform values from cairo. The closest thing we had to this before was
- cairo_copy_path, (which is rather unique in providing a list of
- non-uniform data).
- The copy_clip_rectangles/rectangle_list_destroy functions follow a
- style similar to that of cairo_copy_path. Meanwhile, the dash and
- pattern color stop functions introduce a new style in which there is a
- single call to return the number of elements available (get_dash_count
- and get_color_stop_count) and then a function to be called once to get
- each element (get_dash and get_color_stop_rgba).
- I'm interested in hearing feedback from users of these new API
- functions, particularly from people writing language bindings. One
- open question is whether the clip "getter" functionality should adopt
- a style similar to that of the new dash and color_stop interfaces.
- API deprecation
- ---------------
- The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
- worked as a format value for cairo_image_surface_create, and it wasn't
- necessary for supporting 16-bit 565 X server visuals.
- XCB backend changes
- -------------------
- The XCB backend has been updated to track the latest XCB API (which
- recently had a 1.0 release).
- New quartz backend
- ------------------
- Vladimir Vukicevic has written a new "native quartz" backend which
- will eventually replace the current "image-surface wrapping" quartz
- backend. For now, both backends are available, (the old one is
- "quartz" and the new one is "nquartz"). But it is anticipated that the
- new backend will replace the old one and take on the "quartz" name
- before this backend is marked as supported in a release of cairo.
- New OS/2 backend
- ----------------
- Doodle and Peter Weilbacher have contributed a new, experimental
- backend for using cairo on OS/2 systems.
- Performance improvements
- ------------------------
- Here are some highlights from cairo's performance suite showing
- improvements from cairo 1.2.6 to cairo 1.3.2. The command used to
- generate this data is:
- ./cairo-perf-diff 1.2.6 HEAD
- available in the perf/ directory of a recent checkout of cairo's
- source, (the cairo-perf-diff script does require a git checkout and
- will not work from a tar file---though ./cairo-perf can still be used
- to generate a single report there and ./cairo-perf-diff-files can be
- used to compare two reports).
- Results are described below both for an x86 laptop (with an old Radeon
- video card, recent X.org build, XAA, free software drivers), as well
- as for a Nokia 770. First the x86 results with comments on each, (all
- times are reported in milliseconds).
- Copying subsets of an image surface to an xlib surface (much faster)
- --------------------------------------------------------------------
- xlib-rgba subimage_copy-512 10.50 -> : 53.97x speedup
- █████████████████████████████████████████████████████
- Thanks to Christopher (Monty) Montgomery for this big performance
- improvement. Any application which has a large image surface and is
- copying small pieces of it at a time to an xlib surface, (imagine an
- application that loads a single image containing all the "sprites" for
- that application), will benefit from this fix. The larger the ratio of
- the image surface to the portion being copied, the larger the benefit.
- Floating-point conversion (3x faster)
- -------------------------------------
- xlib-rgba pattern_create_radial-16 27.75 -> 3.93 : 2.94x speedup
- ██
- image-rgb pattern_create_radial-16 26.06 -> 3.74 : 2.90x speedup
- █▉
- Thanks to Daniel Amelang, (and others who had contributed the idea
- earlier), for this nice improvement in the speed of converting
- floating-point values to fixed-point.
- Text rendering (1.3 - 2x faster)
- ------------------------------
- xlib-rgba text_image_rgba_source-256 319.73 -> 62.40 : 2.13x speedup
- █▏
- image-rgb text_solid_rgba_over-64 2.85 -> 0.88 : 1.35x speedup
- ▍
- I don't think we've ever set out to improve text performance
- specifically, but we did it a bit anyway. I believe the extra
- improvement in the xlib backend is due to Monty's image copying fix
- above, and the rest is due to the floating-point conversion speedup.
- Thin stroke improvements (1.5x faster)
- ---------------------------------------------
- image-rgb world_map-800 1641.09 -> 414.77 : 1.65x speedup
- ▋
- xlib-rgba world_map-800 1939.66 -> 529.94 : 1.52x speedup
- ▌
- The most modest stuff to announce in this release is the 50%
- improvement I made in the world_map case. This is in improvement that
- should help basically anything that is doing strokes with many
- straight line segments, (and the thinner the better, since that makes
- tessellation dominate rasterization). The fixes here are to use a
- custom quadrilateral tessellator rather than the generic tessellator
- for straight line segments and the miter joins.
- Performance results from the Nokia 770
- --------------------------------------
- xlib-rgba subimage_copy-512 55.88 -> 2.04 : 27.34x speedup
- ██████████████████████████▍
- xlib-rgb text_image_rgb_over-256 1487.58 -> 294.43 : 5.05x speedup
- ████
- image-rgb pattern_create_radial-16 187.13 -> 91.86 : 2.04x speedup
- █
- xlib-rgba world_map-800 21261.41 -> 15628.02 : 1.36x speedup
- ▍
- Here we see that the subimage_copy improvement was only about half as
- large as the corresponding improvement on my laptop, (27x faster
- compared to 54x) and the floating-point conversion fix also was quite
- as significant, (2x compared to 3x). Oddly the improvement to text
- rendering performance was more than twice as good (5x compared to
- 2x). I don't know what the reason for that is, but I don't think it's
- anything anybody should complain about.
- Release 1.2.6 (2006-11-02 Behdad Esfahbod <behdad@behdad.org>)
- ==============================================================
- This is the third bug fix release in the 1.2 series, coming less than
- two months after the 1.2.4 release made on August 18.
- The 1.2.4 release turned out to be a pretty solid one, except for a crasher
- bug when forwarding an X connection where the client and the server have
- varying byte orders, eg. from a PPC to an i686. Other than that, various
- other small bugs have been fixed.
- Various improvements have been made in the testing infrastructure to prevent
- false positives, and to make sure the generated cairo shared object behaves as
- expected in terms of exported symbols and relocations.
- There were a total of 89 changes since 1.2.4. The following list the most
- important ones:
- Common fixes
- ------------
- - Avoid unsigned loop control variable to eliminate infinite,
- memory-scribbling loop. (#7593)
- - Fix cairo_image_surface_create to report INVALID_FORMAT errors.
- Previously the detected error was being lost and a nil surface was
- returned that erroneously reported CAIRO_STATUS_NO_MEMORY.
- - Change _cairo_color_compute_shorts to not rely on any particular
- floating-point epsilon value. (#7497)
- - Fix infinite-join test case (bug #8379)
- - Pass correct surface to create_similar in _cairo_clip_init_deep_copy().
- PS/PDF fixes
- ------------
- - Fix Type 1 embedding in PDF.
- - Correct the value of /LastChar in the PDF Type 1 font dictionary.
- - Improve error checking in TrueType subsetting.
- - Compute right index when looking up left side bearing. (bug #8180)
- - Correct an unsigned to signed conversion problem in truetype subsetting
- bbox.
- - Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs.
- - Add cairo version to PS header / PDF document info dictionary.
- - Set CTM before path construction.
- Win32 fixes
- -----------
- - Get correct unhinted outlines on win32. (bug 7603)
- - Make cairo as a win32 static library possible.
- - Use CAIRO_FORMAT_RGB24 for BITSPIXEL==32 surfaces too.
- Build system fixes
- ------------------
- - Define WINVER if it's not defined. (bug 6456)
- - Fix the AMD64 final link by removing SLIM from pixman.
- - Misc win32 compilation fixes.
- - Add Sun Pro C definition of pixman_private.
- - Use pixman_private consistently as prefix not suffix.
- - Added three tests check-plt.sh, check-def.sh, and check-header.sh that check
- that the shared object, the .def file, and the public headers agree about
- the exported symbols.
- - Require pkg-config 0.19. (#8686)
- Release 1.2.4 (2006-08-18 Carl Worth <cworth@cworth.org>)
- =========================================================
- This is the second bug fix release in the 1.2 series, coming less than
- two weeks after the 1.2.2 release made on August 8.
- The big motivation for a quick release was that there were a log of
- build system snags that people ran into with the 1.2.2 release. But,
- by the time we got those all done, we found that we had a bunch of
- fixes for cairo's rendering as well. So there's a lot of goodness in
- here for such a short time period.
- Rendering fixes
- ---------------
- Fix image surfaces to not be clipped when used as a source (Vladimir Vukicevic)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=72e25648c4c4bc82ddd938aa4e05887a293f0d8b
- Fix a couple of corner cases in dashing degenerate paths (Jeff Muizelaar)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=fbb1758ba8384650157b2bbbc93d161b0c2a05f0
- Fix support for type1 fonts on win32 (Adrian Johnson)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=da1019c9138695cb838a54f8b871bbfd0e8996d7
- Fix assertion failure when rotating bitmap fonts (Carl Worth)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0bfa6d4f33b8ddb5dc55bbe419c15df4af856ff9
- Fix assertion failure when calling cairo_text_path with bitmap fonts (Carl Worth)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9878a033531e6b96b5f27e69e10e90dee7440cd9
- Fix mis-handling of cairo_close_path in some situations (Tim Rowley, Carl Worth)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=53f74e59faf1af78f2f0741ccf1f23aa5dad4efc
- Respect font_matrix translation in _cairo_gstate_glyph_path (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f183b835b111d23e838889178aa8106ec84663b3
- Fix vertical metrics adjustment to work with non-identity shapes (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7bc263842a798d657a95e539e1693372448837f
- [PS] Set correct ImageMatrix in _cairo_ps_surface_emit_bitmap_glyph_data (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=d47388ad759b0a1a0869655a87d9b5eb6ae2445d
- Build system fixes
- ------------------
- Fix xlib detection to prefer pkg-config to avoid false libXt dependency (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0e78e7144353703cbd28aae6a67cd9ca261f1d68
- Fix typos causing win32 build problem with PS,PDF, and SVG backends (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=aea83b908d020e26732753830bb3056e6702a774
- Fix configure cache to not use stale results (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6d0e3260444a2d5b6fb0cb223ac79f1c0e7b3a6e
- Fix to not pass unsupported warning options to the compiler (Jens Granseuer)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=97524a8fdb899de1ae4a3e920fb7bda6d76c5571
- Fix to allow env. variables such as png_REQUIRES to override configure detection (Jens Granseuer)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=abd16e47d6331bd3811c908e524b4dcb6bd23bf0
- Fix test suite to not use an old system cairo when converting svg2png (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6122cc85c8f71b1ba2df3ab86907768edebe1781
- Fix test suite to not require signal.h to be present (Behdad Esfahbod)
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6f8cf53b1e1ccdbe1ab6a275656b19c6e5120e40
- Code cleanups
- -------------
- Many useful warnings cleanups from sparse, valgrind, and careful eyes
- (Kjartan Maraas, Pavel Roskin)
- Release 1.2.2 (2006-08-08 Carl Worth <cworth@cworth.org>)
- =========================================================
- This is the first bug fix release in the 1.2 series since the original
- 1.2.0 release made six weeks ago.
- There were some very serious bugs in the 1.2.0 release, (see below),
- so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2
- release maintains source and binary compatibility with 1.2.0 and does
- not make any API additions.
- Fix crashes with BGR X servers
- ------------------------------
- With cairo 1.2.0 many people reported problems with all cairo-using
- programs, (including all GTK+ programs with GTK+ >= 2.8) immediately
- crashing with a complaint about an unsupported image format. This bug
- affected X servers that do not provide the Render extension and that
- provide a visual with BGR rather than RGB channel order.
- report: https://bugs.freedesktop.org/show_bug.cgi?id=7294
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59
- Fix the "disappearing text" bug
- -------------------------------
- With cairo 1.2.0 many people reported that text would disappear from
- applications, sometimes reappearing with mouse motion or
- selection. The text would disappear after the first space in a string
- of text. This bug was caused by an underlying bug in (very common) X
- servers, and only affected text rendered without antialiasing, (either
- a bitmap font or a vector font with antialiasing disabled). The bug
- was also exacerbated by a KDE migration bug that caused antialiasing
- to be disabled more than desired.
- report: https://bugs.freedesktop.org/show_bug.cgi?id=7494
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14
- see also:
- Xorg: https://bugs.freedesktop.org/show_bug.cgi?id=7681
- KDE: http://qa.mandriva.com/show_bug.cgi?id=23990
- Fix broken image fallback scaling (aka. "broken printing")
- ----------------------------------------------------------
- The various "print" backends, (pdf, ps, and svg), sometimes fallback
- to using image-based rendering for some operations. In cairo 1.2.0
- these image fallbacks were scaled improperly. Applications using cairo
- can influence the resolution of the image fallbacks with
- cairo_surface_set_fallback_resolution. With the bug, any value other
- than 72.0 would lead to incorrect results, (larger values would lead
- to increasingly shrunken output).
- report: https://bugs.freedesktop.org/show_bug.cgi?id=7533
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb
- Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod)
- ----------------------------------------------------------------------------
- The 1.2.0 release introduced an inadvertent change to how the
- translation components of a font matrix are interpreted. In the 1.0
- series, font matrix translation could be used to offset the glyph
- origin, (though glyph metrics were reported incorrectly in
- 1.0). However in 1.2.0, the translation was applied to the advance
- values between each glyph. The 1.2.0 behavior is fairly useless in
- practice, and it was not intentional to introduce a semantic
- change. With 1.2.2 we return to the 1.0 semantics, with a much better
- implementation that provides correct glyph metrics.
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051
- Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod)
- -------------------------------------------------------------------------------------
- There has been a long-standing issue with cairo_surface_create_similar
- such that font options and other settings from the original
- destination surface would not be preserved to the intermediate
- "similar" surface. This could result in incorrect rendering
- (particularly with respect to text hinting/antialiasing) with
- fallbacks, for example.
- report: https://bugs.freedesktop.org/show_bug.cgi?id=4106
- fixes: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0
- http://gitweb.freedesktop.org/?p=cairo;a=commit;h=bdb4e1edadb78a2118ff70b28163f8bd4317f1ec
- xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic)
- ----------------------------------------------------------------------------
- Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0
- caused a significant performance regression when using the xlib
- backend. This performance regression was particularly noticeable when
- doing lots of text rendering and when using a high-latency connection
- to the X server, (such as a remote X server over an ssh
- connection). The slowdown was identified and fixed in 1.2.2.
- report: https://bugs.freedesktop.org/show_bug.cgi?id=7514
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c
- PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson)
- -------------------------------------------------------------------------
- The cairo 1.2 series adds a supported pdf backend to cairo. In cairo
- 1.2.0 this backend required the freetype library, which was an
- undesirable dependency on systems such as win32, (cairo is designed to
- always prefer the "native" font system). As of cairo 1.2.2 the
- freetype library is not required to use the pdf backend on the win32
- platform.
- report: https://bugs.freedesktop.org/show_bug.cgi?id=7538
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691
- PDF: Fix broken output on amd64 (Adrian Johnson)
- ------------------------------------------------
- report: http://bugzilla.gnome.org/show_bug.cgi?id=349826
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60
- PS: Fix broken output for truetype fonts > 64k (Adrian Johnson)
- ---------------------------------------------------------------
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94
- PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop)
- ------------------------------------------------------------
- Kent notices that with the PDF backend in cairo 1.2.0 as soon as a
- stroke was performed with dashing, all subsequent strokes would also
- be dashed. There was no way to turn dashing off again.
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256
- Fix memory leaks in failure paths in gradient creation (Alfred Peng)
- --------------------------------------------------------------------
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2
- Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson)
- ------------------------------------------------------------
- report: https://bugs.freedesktop.org/show_bug.cgi?id=7766
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd
- Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng)
- -----------------------------------------------------------------------------
- report: https://bugzilla.mozilla.org/show_bug.cgi?id=341874
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6
- Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron)
- -------------------------------------------------------------------------------------
- report: https://bugs.freedesktop.org/show_bug.cgi?id=7483
- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235
- Various memory leak fixes
- -------------------------
- Fix memory leak in _cairo_surface_show_glyphs (bug 7766)
- Fix file handle leak in failure path (bug 7616)
- Fix some memory leaks in the test cases.
- Fix some memory leaks in font subsetting code used in print backends.
- Documentation improvements (Behdad Esfahbod)
- --------------------------------------------
- Added new documentation for several functions (cairo_show_page,
- cairo_copy_page, cairo_in_stroke, cairo_in_fill).
- Fixed some syntax errors that were preventing some existing
- documentation from being published.
- Fixed several minor typographical errors.
- Added an index for new symbols in 1.2.
- Release 1.2.0 (2006-06-27 Carl Worth <cworth@cworth.org>)
- =========================================================
- This is the culmination of the work that has gone on within the 1.1
- branch of cairo.
- There has been one API addition since the cairo 1.1.10 snapshot:
- cairo_xlib_surface_get_width
- cairo_xlib_surface_get_height
- There's also a new feature without any API change:
- Dots can now be drawn by using CAIRO_LINE_CAP_ROUND with
- degenerate sub-paths, (cairo_move_to() followed by either
- cairo_close_path() or a cairo_line_to() to the same location).
- And at least the following bugs have been fixed:
- 6759 fontconfig option AntiAlias doesn't work in cairo 1.1.2
- 6955 Some characters aren't displayed when using xlib (cache u...
- 7268 positive device_offset values don't work as source
- * PDF emit_glyph function needs to support bitmapped glyphs
- * PS emit_glyph function needs to support bitmapped glyphs
- * SVG emit_glyph function needs to support bitmapped glyphs
- * PDF: minefield page one is falling back unnecessarily
- * PS/PDF: Fix broken placement for vertical glyphs
- * PS: Fix to not draw BUTT-capped zero-length dash segments
- * Do device offset before float->fixed conversion
- http://bugzilla.gnome.org/show_bug.cgi?id=332266
- * PS: Fix source surfaces with transformations
- * PS: Fix to not draw BUTT-capped degnerate sub-paths
- * PS: Don't walk off end of array when printing "~>"
- * Fix some memory leaks in the test suite rig
- * SVG: Fix memory leak when using cairo_mask
- * Fix EXTEND_REFLECT and EXTEND_PAD to not crash (though these are
- still not yet fully implemented for surface patterns).
- This has been a tremendous effort by everyone, and I'm proud to have
- been a part of it. Congratulations to all contributors to cairo!
- Snapshot 1.1.10 (2006-06-16 Carl Worth <cworth@cworth.org>)
- ===========================================================
- This is the fifth in a series of snapshots working toward the 1.2
- release of cairo.
- The primary motivation for this snapshot is to fix a long-standing bug
- that had long been silent, but as of the 1.1.8 snapshot started
- causing crashes when run against 16-bit depth X servers, (often Xvnc
- or Xnest). The fix for this adds a new CAIRO_FORMAT_RGB16_565 to the
- API.
- This snapshot also includes a rewrite of cairo's SVG backend to
- eliminate the dependency on libxml2. With this in place, cairo 1.2
- will not depend on any libraries that cairo 1.0 did not.
- As usual, there are also a few fixes for minor bugs.
- Snapshot 1.1.8 (2006-06-14 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the fourth in a series of snapshots working toward the 1.2
- release of cairo. At this point, all major features of the 1.2 release
- are in place, leaving just a few bug fixes left.
- In particular, there well be no additional API changes between this
- 1.1.8 snapshot and the 1.2 release.
- The announcement for 1.1.6 mentioned several API changes being
- considered. Only one of these changes was actually implemented
- (set_dpi -> fallback_resolution). This change does introduce one
- source-level incompatibility with respect to previous 1.1.x snapshots,
- so see below for details.
- Here is an abbreviated summary of changes since the 1.1.6 snapshot:
- ** API Change **
- ----------------
- According to the plan mentioned in the 1.1.6 notes, one source-level
- incompatible change has been implemented. The following three
- functions have been removed from cairo's API:
- cairo_pdf_surface_set_dpi
- cairo_ps_surface_set_dpi
- cairo_svg_surface_set_dpi
- and in their place the following function has been added:
- cairo_surface_set_fallback_resolution
- The signature and semantics of the function remains the same, so it is
- a simple matter of changing the name of the function when calling
- it. As a transition mechanism, this snapshot will (on many systems)
- build to include the old symbols so that code previously compiled will
- still run. However, all source code using the old names must be
- updated before it will compile. And the upcoming 1.2 release is not
- anticipated to include the old symbols.
- Finally, it should be pointed out that the old symbols never existed
- in the supported API of any stable release of cairo. (In the stable
- 1.0 releases the PDF, PS, and SVG backends were advertised as
- experimental and unstable.)
- And, as always, cairo continues to maintain source and binary
- compatibility between major releases. So applications compiled against
- supported backends in a stable release of cairo (1.0.4 say) will
- continue to compile and run without modification against new major
- releases (1.2.0 say) without modification.
- API additions
- -------------
- The following new functions have been added to cairo's API:
- cairo_surface_get_content
- cairo_debug_reset_static_data
- cairo_image_surface_get_data
- cairo_image_surface_get_format
- cairo_image_surface_get_stride
- cairo_win32_font_face_create_for_hfont
- New, backend-specific pkg-config files
- --------------------------------------
- In addition to the original cairo.pc file, cairo will also now install
- a pkg-config files for each configured backend, (for example
- cairo-pdf.pc, cairo-svg.pc, cairo-xlib.pc, cairo-win32.pc, etc.) this
- also includes optional font backends (such as cairo-ft.pc) and the
- optional png functionality (cairo-png.pc).
- These new pkg-config files should be very convenient for allowing
- cairo-using code to easily check for the existing of optional
- functionality in cairo without having to write complex rules to grub
- through cairo header files or the compiled library looking for
- symbols.
- Printing backend (PS, PDF, and SVG)
- -----------------------------------
- Improving the quality of the "printing" backends has been a priority
- of the development between cairo 1.1.6 and cairo 1.1.8.
- The big improvement here is in the area of text output. Previously, at
- best, text was output as paths without taking advantage of any font
- support available in the output file format.
- Now, at the minimum text paths will be shared by using type3 fonts
- (for PS and PDF---and similarly, defs for SVG). Also, if possible,
- type3 and truetype fonts will be embedded in PostScript and PDF
- output. There are still some known bugs with this, (for example,
- selecting text in a cairo-generated PDF file with an embedded truetype
- font does not work). So there will be some more changes in this area
- before cairo 1.2, but do try test this feature out as it exists so
- far.
- Many thanks to Kristian Høgsberg for the truetype and type1 font
- embedding.
- win32 backend
- -------------
- Performance improvements by preferring GDI over pixman rendering when possible.
- Fixes for text rendering.
- xlib backend
- ------------
- Fix potentially big performance bug by making xlib's create_similar
- try harder to create a pixmap of a depth matching that of the screen.
- Bug fixes
- ---------
- Among various other fixes, the following bugs listed in bugzilla have
- been fixed:
- Bug 2488: Patch to fix pixman samping location bug (#2488).
- https://bugs.freedesktop.org/show_bug.cgi?id=2488
- Bug 4196: undef MIN an MAX before defining to avoid duplicate definition
- https://bugs.freedesktop.org/show_bug.cgi?id=4196
- Bug 4723: configure.in: Fix m4 quoting when examining pkg-config version
- https://bugs.freedesktop.org/show_bug.cgi?id=4723
- Bug 4882: Flag Sun's X server has having buggy_repeat.
- https://bugs.freedesktop.org/show_bug.cgi?id=4882
- Bug 5306: test/pdf2png: Add missing include of stdio.h
- https://bugs.freedesktop.org/show_bug.cgi?id=5306
- Bug 7075: Fix make clean to remove cairo.def
- https://bugs.freedesktop.org/show_bug.cgi?id=7075
- (Many thanks to Behdad Esfahbod for helping us track down and fix many
- of these.)
- Snapshot 1.1.6 (2006-05-04 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the third in a series of snapshots working toward the imminent
- 1.2 release of cairo. For a list of items still needing work on the
- cairo 1.2 roadmap, please see:
- http://cairographics.org/ROADMAP
- As can be seen in that list, there are no longer any API additions
- left on the roadmap. Instead, there is a feature (PDF type 3 fonts) a
- performance optimization (X server gradients) and a list of bug
- fixes. This gives us a fair amount of freedom to cut the 1.2 release
- at almost any point by deciding to defer remaining bug fixes to
- subsequent maintenance releases such as 1.2.2 and 1.2.4.
- Before we will do that, we must first be wiling to commit to all the
- new API additions. As a heads-up, there are a couple of potential API
- changes being considered. (Note that these are changes to new API
- introduced during 1.1 so these will not introduce API
- incompatibilities compared to the stable 1.0 series). The changes
- being considered are:
- cairo_get_group_target: may acquire x and y offset return
- parameters. May also be eliminated in favor of
- cairo_get_target assuming its role
- cairo_pdf_surface_set_dpi:
- cairo_ps_surface_set_dpi:
- cairo_svg_surface_set_dpi: These functions may be removed in favor
- of a new cairo_surface_set_fallback_resolution
- Additionally there is the possibility of a slight change in the
- semantics of cairo_set_line_width. We believe the current behavior of the sequence:
- cairo_set_line_width; ... change CTM ...; cairo_stroke;
- is buggy. It is currently behaving the same as:
- ... change CTM ...; cairo_set_line_width; cairo_stroke;
- We are considering fixing this bug before 1.2 with the hope that
- nobody is already relying on the buggy behavior described here. Do
- shout if you suspect you might be in that position.
- The items included in this snapshot (since the 1.1.4 snapshot) are
- described below.
- API additions
- -------------
- The long-awaited group-rendering support is now available with the
- following function calls:
- cairo_push_group
- cairo_push_group_with_content
- cairo_pop_group
- cairo_pop_group_to_source
- cairo_get_group_target
- This API provides a much more convenient mechanism for doing rendering
- to an intermediate surface without the need to manually create a
- temporary cairo_surface_t and a temporary cairo_t and clean them up
- afterwards.
- Add the following missing get function to complement
- cairo_surface_set_device_offset:
- cairo_surface_get_device_offset
- PDF backend (API addition)
- --------------------------
- The PDF backend now provides for per-page size changes, (similar to
- what the PostScript backend got in the 1.1.4 snapshot). The new API
- is:
- cairo_pdf_surface_set_size
- Xlib backend (API additions)
- ----------------------------
- The following functions have been added to allow the extraction of
- Xlib surface:
- cairo_xlib_surface_get_display
- cairo_xlib_surface_get_drawable
- cairo_xlib_surface_get_screen
- cairo_xlib_surface_get_visual
- cairo_xlib_surface_get_depth
- XCB backend (experimental)
- --------------------------
- Update backend so that it now compiles with the recent XCB 0.9 release.
- Bug fixes and memory leak cleanup
- ---------------------------------
- Various little things, nothing too significant though.
- Snapshot 1.1.4 (2006-05-03 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the second in a series of snapshots working toward the
- upcoming 1.2 release of cairo. For a list of items still needing work
- on the cairo 1.2 roadmap, please see:
- http://cairographics.org/ROADMAP
- The items included in this snapshot (since the 1.1.2 snapshot) are
- described below.
- PostScript backend: new printing-oriented API
- ---------------------------------------------
- We anticipate that with cairo 1.2, toolkits will begin to use cairo
- for printing on systems that use PostScript as the spool format. To
- support this use case, we have added 4 new function calls that are
- specific to the PostScript backend:
- cairo_ps_surface_set_size
- cairo_ps_surface_dsc_comment
- cairo_ps_surface_dsc_begin_setup
- cairo_ps_surface_dsc_begin_page_setup
- These functions allow variation of the page size/orientation from one
- page to the next in the PostScript output. They also allow the toolkit
- to provide per-document and per-page printer control options in a
- device-independent way, (for example, by using PPD options and
- emitting them as DSC comments into the PostScript output). This should
- allow toolkits to provide very fine-grained control of many options
- available in printers, (media size, media type, tray selection, etc.).
- SVG backend: builds by default, version control
- -----------------------------------------------
- The SVG backend continues to see major improvements. It is expected
- that the SVG backend will be a supported backend in the 1.2
- release. This backend will now be built by default if its dependencies
- (freetype and libxml2) are met.
- Additionally, the SVG backend now has flexibility with regard to what
- version of SVG it targets. It will target SVG 1.1 by default, which
- will require image fallbacks for some of the "fancier" cairo
- compositing operators. Or with the following new function calls:
- cairo_svg_surface_restrict_to_version
- cairo_svg_get_versions
- cairo_svg_version_to_string
- it can be made to target SVG 1.2 in which there is native support for
- these compositing operators.
- Bug fixes
- ---------
- At least the following bugs have been fixed since the 1.1.2 snapshot:
- crash at XRenderAddGlyphs
- https://bugs.freedesktop.org/show_bug.cgi?id=4705
- Can't build cairo-1.1.2 on opensolaris due to " void function cannot return value"
- https://bugs.freedesktop.org/show_bug.cgi?id=6792
- Missing out-of-memory check at gfx/cairo/cairo/src/cairo-atsui-font.c:185
- https://bugzilla.mozilla.org/show_bug.cgi?id=336129
- A couple of memory leaks.
- Snapshot 1.1.2 (2006-04-25 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is the first in a series of snapshots working toward the upcoming
- 1.2 release of cairo. (Subsequent snapshot will use successive even
- numbers for the third digit, 1.1.4, 1.1.6, etc.) This snapshot is
- backwards-compatible with the 1.0 series---it makes a few API
- additions but does not remove any API.
- PostScript and PDF backends are no longer "experimental"
- --------------------------------------------------------
- The major theme of the 1.2 release is improved PostScript and PDF
- backends for cairo. Unlike the 1.0 series, in the 1.2 series these
- backends will not be marked as experimental and will be enabled by
- default. We encourage people to test this snapshot and the PS/PDF
- backends in particular as much as possible.
- The PostScript and PDF output is not yet ideal.
- * One major problem with the PostScript output is that image
- fallbacks are used more often than strictly necessary, and the
- image fallbacks are at a lower resolution than desired, (the
- cairo_ps_surface_set_dpi call is ignored).
- * The major drawback of the current PDF backend implementation is
- its text support. Every glyph is represented by a filled path in
- the PDF file. The causes file sizes to be much larger and
- rendering to be much slower than desired.
- It is anticipated that both of these shortcomings will see some
- improvements before the final 1.2 release.
- In spite of those shortcomings, we hope that the PS and PDF backends
- will yield faithful results for pretty much any cairo operations you
- can throw at them. Please let us know if you are getting obviously
- "different" results from the PS/PDF backends than from the image or
- xlib backends.
- Other new experimental backends
- -------------------------------
- This snapshot includes three new backends that did not exist in the
- 1.0 series:
- * beos backend
- * directfb backend
- * svg backend
- These are all currently marked "experimental" and are disabled by
- default. But the SVG backend in particular has seen a lot of recent
- development and is very close to passing the entire cairo test
- suite. It is possible that this backend will become a fully supported
- backend by the time of the cairo 1.2 release.
- Public API additions
- --------------------
- There have been a few new API functions added to cairo, including:
- New get_type functions for querying sub-types of object:
- cairo_surface_get_type
- cairo_pattern_get_type
- cairo_font_face_get_type
- cairo_scaled_font_get_type
- More convenience in working with cairo_scaled_font_t with new getter
- functions:
- cairo_scaled_font_get_font_face
- cairo_scaled_font_get_font_matrix
- cairo_scaled_font_get_ctm
- cairo_scaled_font_get_font_options
- As well as a convenience function for setting a scaled font into a
- cairo context:
- cairo_set_scaled_font
- and a function to allow text extents to be queried directly from a
- scaled font, (without requiring a cairo_surface_t or a cairo_t):
- cairo_scaled_font_text_extents
- These new scaled font functions were motivated by the needs of the
- pango library.
- Finally, a new path-construction function was added which clears the
- current point in preparation for a new sub path. This makes cairo_arc
- easier to use in some situations:
- cairo_new_sub_path
- Before the 1.2 release is final we do still plan a few more API
- additions specifically motivated by the needs of Mozilla/Firefox.
- Optimizations and bug fixes
- ---------------------------
- Shortly after the 1.0 maintenance series branched off the mainline
- there was a major rework of the cairo font internals. This should
- provide some good performance benefits, but it's also another area
- people should look at closely for potential regressions.
- There has not yet been any widespread, systematic optimization of
- cairo, but various performance improvements have been made, (and some
- of them are fairly significant). So if some things seem faster than
- 1.0 then things are good. If there are any performance regressions
- compared to 1.0 then there is a real problem and we would like to hear
- about that.
- There has been a huge number of bug fixes---too many to mention in
- detail. Again, things should be better, and never worse compared to
- 1.0. Please let us know if your testing shows otherwise.
- Release 1.0.2 (2005-10-03 Carl Worth <cworth@cworth.org>)
- =========================================================
- For each bug number XXXX below, see:
- https://bugs.freedesktop.org/show_bug.cgi?id=XXXX
- for more details.
- General bug fixes
- -----------------
- * 4408 - Add support for dashing of stroked curves
- (Carl Worth)
- * 4409 - Fix dashing so that each dash is capped on both ends
- (Carl Worth)
- * 4414 - Prevent SIGILL failures (proper use of -mmmx and -msse flags)
- (Sebastien Bacher, Billy Biggs)
- * 4299 - Fix crashes with text display in multi-threaded program
- (Alexey Shabalin, Carl Worth)
- * 4401 - Do not use sincos function since it is buggy on some platforms)
- (Tim Mooney, Carl Worth)
- * 4245 - Fix several bugs in the test suite exposed by amd64 systems
- (Seemant Kulleen, Carl Worth)
- * 4321 - Add missing byteswapping on GetImage/PutImage
- (Sjoerd Simons, Owen Taylor)
- * 4220 - Make the check for rectangular trapezoids simpler and more accurate
- (Richard Stellingwerff, Owen Taylor)
- * 4260 - Add missing channel-order swapping for antialised fonts
- (Barbie LeVile, Owen Taylor)
- * 4283 - Fix compilation failure with aggressive inlining (gcc -O3)
- (Marco Manfredini, Owen Taylor)
- * 4208 - Fix some warnings from sparse
- (Kjartan Maraas, Billy Biggs)
- * 4269 - Fix to not crash when compiled with -fomit-frame-pointer
- (Ronald Wahl, Owen Taylor)
- * 4263 - Improve performance for vertical gradients
- (Richard Stellingwerff, Owen Taylor)
- * 4231
- * 4298 - Accommodate gentoo and Mandriva versions in X server vendor string check
- (Billy Biggs, Frederic Crozat, Owen Taylor)
- win32-specific fixes
- --------------------
- * 4599 - Fix "missing wedges" on some stroked paths (win32)
- (Tim Rowley, Jonathan Watt, Bertram Felgenhauer, Carl Worth, Keith Packard)
- * 4612 - Fix disappearing text if first character out of surface (win32)
- (Tim Rowley)
- * 4602 - Fix shutdown of cairo from failing intermediate, size-0 bitmaps (win32)
- Aka. the "white rectangles" bug from mozilla-svg testing
- (Tim Rowley)
- * Various portability improvements for win32
- (Hans Breuer, Owen Taylor, Carl Worth)
- * 4593 - Fix font sizes to match user expectations (win32)
- (Tor Lillqvist, Owen Taylor)
- * 3927 - Fix to report metrics of size 0 for glyph-not-available (win32)
- (Hans Breuer, Owen Taylor, Tor Lillqvist)
- * Add locking primitives for win32
- (Hans Breuer)
- xlib-specific fixes
- -------------------
- * Fix crash from size-0 pixmap due to empty clip region (xlib)
- (Radek Doulík, Carl Worth)
- Release 1.0.0 (2005-08-24 Carl Worth <cworth@cworth.org>)
- =========================================================
- Experimental backends
- ---------------------
- * The Glitz, PS, PDF, Quartz, and XCB backends have been declared
- experimental, and are not part of the API guarantees that accompany
- this release. They are not built by default, even when the required
- libraries are available, and must be enabled explicitly with
- --enable-ps, --enable-pdf, --enable-quartz or --enable-xcb.
- It is very painful for us to be pushing out a major release without
- these backends enabled. There has been a tremendous amount of work
- put into each one and all are quite functional to some
- extent. However, each also has some limitations. And none of these
- backends have been tested to the level of completeness and
- correctness that we expect from cairo backends.
- We do encourage people to experiment with these backends and report
- success, failure, or means of improving them.
- Operator behavior
- -----------------
- * Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators
- behaved in an inconsistent and buggy fashion and could affect areas
- outside the clip mask. In 0.9.0, these six "unbounded" operators
- were fixed to consistently clear areas outside the shape but within
- the clip mask. This is useful behavior for an operator such as IN,
- but not what was expected for SOURCE and CLEAR. So, in this release
- the behavior of SOURCE and CLEAR has been changed again. They now
- affect areas only within both the source and shape. We can write
- the new operators as:
- SOURCE: dest' = (mask IN clip) ? source : dest
- CLEAR: dest' = (mask IN clip) ? 0 : dest
- Behavior and API changes
- ------------------------
- * Setting the filter on a gradient pattern would change the
- interpolation between color stops away from the normal linear
- interpolation. This dubious behavior has been removed.
- * The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros --
- implementation details that leaked into cairo.h -- have been moved
- into an internal header.
- * The cairo_show_text function now advances the current point
- according to the total advance values of the string.
- API additions
- -------------
- * cairo_set_dash can now detect error and can set
- CAIRO_STATUS_INVALID_DASH.
- Features
- --------
- * When compiled against recent versions of fontconfig and FreeType,
- artificial bold fonts can now be turned on from fonts.conf using
- the FC_EMBOLDEN fontconfig key.
- Optimization
- ------------
- * The compositing code from the 'xserver' code tree has now been
- completely merged into libpixman. This includes MMX optimization of
- common operations.
- * The image transformation code in libpixman has been improved and
- now performs significantly faster.
- Bug fixes
- ---------
- * Several crashes related to corruption in the font caches have been
- fixed.
- * All test cases now match pixel-for-pixel on x86 and PPC; this
- required fixing bugs in the compositing, stroking, and pattern
- rendering code.
- * Negative dash offsets have been fixed to work correctly.
- * The stroking of paths with mutiple subpaths has now been fixed to
- apply caps to all subpaths rather than just the last one.
- * Many build fixes for better portability on various systems.
- * Lots of other bug fixes, but we're too tired to describe them in
- more detail here.
- Release 0.9.2 (2005-08-13 Carl Worth <cworth@cworth.org>)
- =========================================================
- Release numbering
- -----------------
- * You will notice that this release jumped from 0.9.0 to 0.9.2. We've
- decided to use an odd micro version number (eg. 0.9.1) to indicate
- in-progress development between releases. As soon as 0.9.2 is
- tagged, the version will be incremented in CVS to 0.9.3 where it
- will stay until just before 0.9.4 is built, uploaded, and tagged.
- So, even-micro == a released version, odd-micro == something in-between.
- Libpixman dependency dropped
- ----------------------------
- * As of this release, the dependency on an external libpixman has
- been dropped. Instead, the code from libpixman needed for cairo has
- been incorporated into the cairo source tree. The motivation for
- this change is that while cairo's API is stable and ready to be
- maintained after the 1.0 release, libpixman's API is not, so we do
- not want to expose it at this time.
- Also, the incorporation of libpixman into cairo also renames all
- previously-public libpixman symbols in order to avoid any conflict
- with a future release of libpixman
- API additions
- -------------
- * Macros and functions have been added so that the version of cairo
- can be queried at either compile-time or at run-time. The version
- is made available as both a human-readable string and as a single
- integer:
- CAIRO_VERSION_STRING eg. "0.9.2"
- CAIRO_VERSION eg. 000902
- const char*
- cairo_version_string (void); /* eg. "0.9.2" */
- int
- cairo_version (void); /* eg. 000902 */
- A macro is provided to convert a three-part component version into
- the encoded single-integer form:
- CAIRO_VERSION_ENCODE(X,Y,Z)
- For example, the CAIRO_VERSION value of 000902 is obtained as
- CAIRO_VERSION_ENCODE(0,9,2). The intent is to make version
- comparisons easy, either at compile-time:
- #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(0,9,2)
- ...
- #endif
- Or at run-time:
- if (cairo_version() >= CAIRO_VERSION_ENCODE(0,9,2)) { /* ... */ }
- Thread safety
- -------------
- * This release adds pthread-based locking (when available) to make
- the caches used by cairo safe for threaded programs. Some may
- remember a failed experiment with this locking between the 0.5.1
- and 0.5.2 snapshots, (where even single-threaded programs that
- linked with -lpthread would deadlock). We believe that that problem
- has been fixed, so we are looking forward to testing and reports
- from users with threaded applications.
- Bug fixes
- ---------
- * The XCB and Quartz backends failed to compiled in the 0.9.0 release
- due to minor syntax errors. These have now been fixed.
- * Various crashes in glitz and pixman due to size 0 glyphs have been
- fixed.
- Release 0.9.0 (2005-08-08 Carl Worth <cworth@cworth.org>)
- =========================================================
- Soname change
- -------------
- * In all prior snapshots, the libtool library versioning was set to
- 1:0:0. As this release is intended to mark the beginning of
- backwards-compatible releases, the versioning has been incremented
- to 2:0:0. You will notice that the numeric extension on the
- installed library filename will change similarly.
- This change will also require all cairo-using applications to be
- recompiled. We recognize that this may cause some frustration since
- this release is backwards-compatible with 0.6.0 and in that sense
- "shouldn't" require re-compilation. However, since all historical
- snapshots have used the same 1:0:0 version in spite of incompatible
- API changes between them, it was essential that the upcoming 1.0
- release series have distinct library versioning.
- All future releases will use the library versioning to properly
- indicate compatibility between releases. So, any application
- re-compiled now to work with the 0.9.0 will not need to be
- recompiled when a compatible 1.0 release of cairo is made in the
- future.
- API additions
- -------------
- * Add new function calls to set/get the current antialiasing mode in
- the graphics state:
- cairo_set_antialias
- cairo_get_antialias
- This call accepts the same modes recently added for font options
- (NONE or GRAY) but affects the rendering of geometry other than
- text. The intent of this call is to enable more precise control of
- which pixels are affected by each operation, for example to allow
- for full-scene antialiasing for seam-free rendering. It is not
- expected that non-antialiased rendering will perform better than
- anti-aliased rendering.
- * Three new functions were added to provide support for mixed cairo-
- and non-cairo drawing to the same surface:
- cairo_surface_mark_dirty
- cairo_surface_mark_dirty_rectangle
- cairo_surface_flush
- * The return type of the several "reference" functions was change,
- (API compatibly), from void to the same type as the argument. The
- affected functions are:
- cairo_font_face_reference
- cairo_scaled_font_reference
- cairo_pattern_reference
- cairo_surface_reference
- cairo_reference
- This allows a convenient way to assign and reference in a single
- statement.
- Semantic changes
- ----------------
- * The behavior of cairo_set_source with a pattern with a non-identity
- matrix was previously not well-defined. The new behavior is as
- follows:
- The pattern's transformation matrix will be locked to the
- user space in effect at the time of cairo_set_source(). This means
- that further modifications of the CTM will not affect the source
- pattern.
- cairo-win32
- -----------
- * Some portability improvements, (eg. workaround for missing stdint.h).
- cairo-ft
- --------
- * Updated to allow compilation with older versions of freetype.
- Bug fixes
- ---------
- * Fix the unbounded operators to actually produce a correct result,
- (previously the results were artificially restricted to the
- bounding box of whatever shape was being drawn rather than
- extending out infinitely). The fixed operators are:
- CAIRO_OPERATOR_CLEAR
- CAIRO_OPERATOR_SOURCE
- CAIRO_OPERATOR_OUT
- CAIRO_OPERATOR_IN
- CAIRO_OPERATOR_DEST_IN
- CAIRO_OPERATOR_DEST_ATOP
- * Fix cairo_mask and cairo_mask_surface to transform the mask by the
- current transformation matrix (CTM).
- * Fix cairo_set_source to lock the CTM used to transform the pattern.
- * Workaround for X server Render bug involving repeating patterns
- with a general transformation matrix.
- * cairo_get_font_face fixed to return a "nil" font face object rather
- than NULL on error.
- * cairo_set_font_face fixed to not crash if given a NULL font face,
- (which is the documented interface for restoring the default font
- face).
- * Fix xlib glyphset caching to not try to free a NULL glyph.
- Snapshot 0.6.0 (2005-07-28 Carl Worth <cworth@cworth.org>)
- ==========================================================
- API changes
- -----------
- * The prototypes of the following functions have changed:
- cairo_xlib_surface_create_with_xrender_format
- cairo_xlib_surface_create_for_bitmap
- A Screen* parameter has been added to each. This allows the cairo
- xlib backend to work correctly with multi-head X servers.
- * The following function has been modified:
- cairo_scaled_font_create
- to accept a cairo_font_options_t*. See below fore more details.
- * All opaque, reference-counted cairo objects have now been moved to a
- standard error-handling scheme. The new objects to receive this
- treatment are cairo_font_face_t, cairo_scaled_font_t, and
- cairo_surface_t. (Previous snapshots already provided this scheme
- for cairo_t, cairo_path_t, and cairo_pattern_t.)
- This changes two functions to have a return type of void rather than
- cairo_status_t:
- cairo_scaled_font_extent
- cairo_surface_finish
- And significantly, none of the create functions for any of the
- objects listed above will return NULL. The pointer returned from any
- function will now always be a valid pointer and should always be
- passed to the corresponding destroy function when finished
- The simplest strategy for porting code is to switch from:
- object = cairo_<object>_create ();
- if (object == NULL)
- goto BAILOUT;
- /* act on object */
- cairo_<object>_destroy (object);
- to:
- object = cairo_<object>_create ();
- if (cairo_<object>_status (object))
- goto BAILOUT;
- /* act on object */
- cairo_<object>_destroy (object);
- But significantly, it is not required to check for an error status
- before the "act on object" portions of the code above. All
- operations on an object with an error status are, by definition,
- no-ops without side effect. So new code might be written in an
- easier-to-read style of:
- object = cairo_<object>_create ();
- /* act on object */
- cairo_<object>_destroy (object);
- with cairo_<object>_status checks placed only at strategic
- locations. For example, passing an error object to another object,
- (eg. cairo_set_source with an in-error pattern), will propagate the
- error to the subsequent object (eg. the cairo_t). This means that
- error checking can often be deferred even beyond the destruction of
- a temporary object.
- API additions
- -------------
- * New functions for checking the status of objects that have been
- switched to the common error-handling scheme:
- cairo_font_face_status
- cairo_scaled_font_status
- cairo_surface_status
- * The _cairo_error function which was added in 0.5.1 has now been made
- much more useful. In 0.5.1 only errors on cairo_t objects passed
- through _cairo_error. Now, an error on any object should pass
- through _cairo_error making it much more reliable as a debugging
- mechanism for finding when an error first occurs.
- * Added new font options support with a myriad of functions:
- cairo_font_options_create
- cairo_font_options_copy
- cairo_font_options_destroy
- cairo_font_options_status
- cairo_font_options_merge
- cairo_font_options_equal
- cairo_font_options_hash
- cairo_font_options_set_antialias
- cairo_font_options_get_antialias
- cairo_font_options_set_subpixel_order
- cairo_font_options_get_subpixel_order
- cairo_font_options_set_hint_style
- cairo_font_options_get_hint_style
- cairo_font_options_set_hint_metrics
- cairo_font_options_get_hint_metrics
- cairo_surface_get_font_options
- cairo_ft_font_options_substitute
- cairo_set_font_options
- cairo_get_font_options
- This new font options support allows the application to have much
- more fine-grained control over how fonts are rendered.
- Significantly, it also allows surface backends to have some
- influence over the process. For example, the xlib backend now
- queries existing Xft properties to set font option defaults.
- * New function:
- cairo_xlib_surface_set_drawable
- which allows the target drawable for an xlib cairo_surface_t to be
- changed to another with the same format, screen, and display. This
- is necessary in certain double-buffering techniques.
- New features
- ------------
- * Sub-pixel text antialiasing is now supported.
- Bug fixes
- ---------
- * Fixed assertion failure in cairo_surface_create_similar when
- application commits an error by passing a cairo_format_t rather than
- a cairo_content_t.
- * Avoid division by zero in various places (cairo-ft).
- * Fix infinite loop when using non-default visuals (cairo-xlib).
- * Eliminate segfault in cairo_image_surface_create_from_png_stream.
- * Prevent errant sign-extension of masks on 64-bit architectures
- (cairo-xlib and cairo-xcb).
- * Other miscellaneous fixes.
- Snapshot 0.5.2 (2005-07-18 Carl Worth <cworth@cworth.org>)
- ==========================================================
- API changes
- -----------
- * New functions for creating patterns of a single color:
- cairo_pattern_create_rgb
- cairo_pattern_create_rgba
- * Change cairo_surface_create_similar to accept a new type of
- cairo_content_t rather than cairo_format_t:
- typedef enum _cairo_content {
- CAIRO_CONTENT_COLOR = 0x1000,
- CAIRO_CONTENT_ALPHA = 0x2000,
- CAIRO_CONTENT_COLOR_ALPHA = 0x3000
- } cairo_content_t;
- * Add new CAIRO_FORMAT_VALID and CAIRO_CONTENT_VALID macros.
- * Remove unused status value:
- CAIRO_STATUS_NO_TARGET_SURFACE
- * Add new status values:
- CAIRO_STATUS_INVALID_STATUS
- * Require libpixman >= 0.1.5 (for necessary bug fixes)
- Bug fixes
- ---------
- * Fix cairo_surface_write_to_png for RGB24 images.
- * Fix broken metrics and rendering for bitmap fonts. Add mostly
- useless bitmap glyph transformation.
- * Fix glyph caches to not eject entries that might be immediately
- needed, (fixing intermittent crashes when rendering text).
- * Fix all memory leaks found by running "make check-valgrind".
- ATSUI backend changes
- ---------------------
- * Allow building against < 10.3 SDK.
- * Prevent crash on empty strings.
- Glitz backend changes
- ---------------------
- * Require glitz >= 0.4.4.
- * Use frame buffer objects instead of pbuffers for accelerated
- offscreen drawing.
- * Minor improvement to gradient pattern creation.
- PostScript backend fixes
- ------------------------
- * Rewrite of the PS backend to generate more interesting output that
- the old big-image implementation.
- Win32 backend fixes
- -------------------
- * Implement glyph path support.
- * Fix swap of blue and green values in the fill_rectangles path.
- Xlib backend fixes
- ------------------
- * Add optimization to use XCopyArea rather than XRenderComposite when
- transforming only with an integer translation, and using SOURCE
- operator or OVER with a source pattern without alpha.
- Snapshot 0.5.1 (2005-06-20 Carl Worth <cworth@cworth.org>)
- ==========================================================
- API changes
- -----------
- * Removed cairo_status_string(cairo_t*) and add
- cairo_status_to_string(cairo_status_t) in its place. Code using
- cairo_status_string can be ported forward as follows:
- cairo_status (cr);
- ->
- cairo_status_to_string (cairo_status (cr));
- * Removed the BAD_NESTING restriction which means that two different
- cairo_t objects can now interleave drawing to the same
- cairo_surface_t without causing an error.
- * The following functions which previously had a return type of
- cairo_status_t now have a return type of void:
- cairo_pattern_add_color_stop_rgba
- cairo_pattern_set_matrix
- cairo_pattern_get_matrix
- cairo_pattern_set_extend
- cairo_pattern_set_filter
- See discussion of cairo_pattern_status below for more details.
- API additions
- -------------
- * Improved error handling:
- cairo_status_t
- cairo_pattern_status (cairo_pattern_t *pattern);
- This snapshot expands the status-based error handling scheme from
- cairo_t to cairo_path_t and cairo_pattern_t. It also expands the
- scheme so that object-creating functions, (cairo_create,
- cairo_pattern_create_*, cairo_copy_path_*), are now guaranteed to
- not return NULL. Instead, in the case of out-of-memory these
- functions will return a static object with
- status==CAIRO_STATUS_NO_MEMORY. The status can be checked with the
- functions cairo_status and cairo_pattern_status, or by direct
- inspection of the new status field in cairo_path_t.
- Please note that some objects, including cairo_surface_t and all of
- the font-related objects have not been converted to this
- error-handling scheme.
- * In addition to the above changes, a new private function has been added:
- _cairo_error
- This function can be used to set a breakpoint in a debugger to make
- it easier to find programming error in cairo-using code. (Currently,
- _cairo_error is called when any error is detected within a cairo_t
- context, but is not called for non-cairo_t errors such as for
- cairo_path_t and cairo_pattern_t).
- * Fixed cairo_path_data_t so that its enum is visible to C++ code, (as
- cairo_path_data_type_t).
- Performance improvements
- ------------------------
- * Made a minor performance improvement for clipping, (restrict clip
- surface to the new intersected bounds).
- * Optimize rendering of a solid source pattern with a pixel-aligned
- rectangular path to use backend clipping rather than rasterization
- and backend compositing.
- * Optimize cairo_paint_with_alpha to defer to cairo_paint when alpha
- is 1.0.
- Bug fixes
- ---------
- * Fixed memory leak in cairo_copy_path.
- * A build fix for non-srcdir builds.
- PDF backend fixes
- -----------------
- * New support for path-based clipping.
- * Fix for text rotated to angles other than multiples of π/2.
- Win32 backend fixes
- -------------------
- * Fix for text extents.
- Xlib backend
- ------------
- * Implemented a complex workaround for X server bug[*] related to
- Render-based compositing with untransformed, repeating source
- pictures. The workaround uses core Xlib when possible for
- performance, (ie. with CAIRO_OPERATOR_SOURCE or CAIRO_OPERATOR_OVER
- with an opaque source surface), and falls back to the pixman
- image-based compositing otherwise.
- [*] https://bugs.freedesktop.org/show_bug.cgi?id=3566
- * Various bug fixes, particularly in the fallback paths.
- Snapshot 0.5.0 (2005-05-17 Carl Worth <cworth@cworth.org>)
- ==========================================================
- This is a pretty big, and fairly significant snapshot. It represents
- between 2 and 3 months of solid work from a lot of people on improving
- the API as much as possible. I'd like to express my appreciation and
- congratulations to everyone who has worked on the big API Shakeup,
- (whether in email battles over names, or fixing my silly bugs).
- This snapshot will require some effort on the part of users, since
- there are a _lot_ of API changes (ie. no cairo program ever written is
- safe --- they're all broken now in at least one way). But, in spite of
- that, we do encourage everyone to move their code to this snapshot as
- soon as possible. And we're doing everything we can think of to make
- the transition as smooth as possible.
- The idea behind 0.5 is that we've tried to make every good API change
- we could want now, and get them all done with. That is, between now
- and the 1.0 release of cairo, we expect very few new API changes,
- (though some will certainly sneak in). We will have some significant
- additions, but the pain of moving code from cairo 0.4 to cairo 0.5
- should be a one time experience, and things should be much smoother as
- we continue to move toward cairo 1.0.
- And with so many changes coming out for the first time in this 0.5
- release, we really do need a lot of people trying this out to make
- sure the ideas are solid before we freeze the API in preparation for
- the 1.0 release.
- OK, enough introduction. Here is a (not-quite-complete) description of
- the API removals, changes and additions in this snapshot, (compared to
- 0.4.0)
- API removals
- ============
- The following public functions have been removed:
- - cairo_set_target_*
- This is a big change. See the description of cairo_create in
- the API changes section for how to deal with this.
- - cairo_set_alpha
- Alpha blending hasn't gone away; there's just a much more
- unified rendering model now. Almost all uses of
- cairo_set_alpha will be trivially replaced with
- cairo_set_source_rgba and a few others will be replaced just
- as easily with cairo_paint_with_alpha.
- - cairo_show_surface
- Another useful function that we realized was muddling up the
- rendering model. The replacement is quite easy:
- cairo_set_source_surface and cairo_paint.
- - cairo_matrix_create
- - cairo_matrix_destroy
- - cairo_matrix_copy
- - cairo_matrix_get_affine
- These functions supported an opaque cairo_matrix_t. We now
- have an exposed cairo_matrix_t structure, so these can be
- dropped.
- - cairo_surface_set_repeat
- - cairo_surface_set_matrix
- - cairo_surface_set_filter
- These properties don't belong on surfaces. If you were using
- them, you'll just want to instead use
- cairo_pattern_create_for_surface and then set these properties
- on the pattern.
- - cairo_copy
- This was a confusing function and hopefully nobody will miss
- it. But if you really don't find cairo_save/restore adequate,
- let us know and we have another idea for a potential
- replacement.
- And while we're on the subject of removals, we carefully tightened up
- the cairo header files so they no longer gratuitously include header
- files that are not strictly necessary, (stdio.h, stdint.h, pixman.h,
- Xrender.h, etc. and their dependencies). This may lead to some
- surprising errors, so keep your eyes open for that.
- API changes
- ===========
- Here are some of the API changes that have occurred:
- ~ cairo_create(void) -> cairo_create(cairo_surface_t *)
- This is the big change that breaks every program. The ability
- to re-target a cairo_t was not particularly useful, but it did
- introduce a lot of muddy semantic questions. To eliminate
- that, cairo_create now requires its target surface to be
- passed in at creation time. This isn't too hard to cope with
- as the typical first operation after cairo_create was often
- cairo_set_target_foo. So the order of those two swap and the
- application instead has cairo_foo_surface_create, then
- cairo_create.
- ~ cairo_current_* -> cairo_get_*
- We had a strange mixture of cairo_get and cairo_current
- functions. They've all been standardized on cairo_get, (though
- note one is cairo_get_current_point).
- ~ CAIRO_OPERATOR_SRC -> CAIRO_OPERATOR_SOURCE
- ~ CAIRO_OPERATOR_OVER_REVERSE -> CAIRO_OPERATOR_DEST_OVER
- Many of the cairo_operator_t symbolic values were renamed to
- reduce the amount of abbreviation. The confusing "OP_REVERSE"
- naming was also changed to use "DEST_OP" instead which is
- easier to read and has wider acceptance in other
- libraries/languages.
- ~ cairo_set_pattern -> cairo_set_source
- ~ cairo_set_rgb_color -> cairo_set_source_rgb
- All of the various functions that changed the source
- color/pattern were unified to use cairo_set_source names to
- make the relation more clear.
- ~ cairo_transform_point -> cairo_user_to_device
- ~ cairo_transform_distance -> cairo_user_to_device_distance
- ~ cairo_inverse_transform_point -> cairo_device_to_user
- ~ cairo_inverse_transform_distance -> cairo_device_to_user_distance
- These names just seemed a lot more clear.
- ~ cairo_init_clip -> cairo_reset_clip
- ~ cairo_concat_matrix -> cairo_transform
- More abbreviation elimination
- ~ cairo_current_path -> cairo_copy_path
- ~ cairo_current_path_flat -> cairo_copy_path_flat
- The former mechanism for examining the current path was a
- function that required 3 or 4 callbacks. This was more
- complexity than warranted in most situations. The new
- cairo_copy_path function copies the current path into an
- exposed data structure, and the documentation provides a
- convenient idiom for navigating the path data.
- API additions
- -------------
- + cairo_paint
- A generalized version of the painting operators cairo_stroke
- and cairo_fill. The cairo_paint call applies the source paint
- everywhere within the current clip region. Very useful for
- clearing a surface to a solid color, or painting an image,
- (see cairo_set_source_surface).
- + cairo_paint_with_alpha
- Like cairo_paint but applying some alpha to the source,
- (making the source paint translucent, eg. to blend an image on
- top of another).
- + cairo_mask
- A more generalized version of cairo_paint_with_alpha which
- allows a pattern to specify the amount of translucence at each
- point rather than using a constant value everywhere.
- + cairo_mask_surface
- A convenience function on cairo_mask for when the mask pattern
- is already contained within a surface.
- + cairo_surface_set_user_data
- + cairo_surface_get_user_data
- + cairo_font_face_set_user_data
- + cairo_font_face_get_user_data
- Associate arbitrary data with a surface or font face for later
- retrieval. Get notified when a surface or font face object is
- destroyed.
- + cairo_surface_finish
- Allows the user to instruct cairo to finish all of its
- operations for a given surface. This provides a safe point for
- doing things such as flushing and closing files that the
- surface may have had open for writing.
- + cairo_fill_preserve
- + cairo_stroke_preserve
- + cairo_clip_preserve
- One interesting change in cairo is that the path is no longer
- part of the graphics state managed by
- cairo_save/restore. This allows functions to construct paths
- without interfering with the graphics state. But it prevents
- the traditional idiom for fill-and-stroke:
- cairo_save; cairo_fill; cairo_restore; cairo_stroke
- Instead we know have alternate versions cairo cairo_fill,
- cairo_stroke, and cairo_clip that preserve the current path
- rather than consuming it. So the idiom now becomes simply:
- cairo_fill_preserve; cairo_stroke
- + cairo_surface_write_to_png
- + cairo_surface_write_to_png_stream
- In place of a single PNG backend, now a surface created
- through any backend (except PDF currently) can be written out
- to a PNG image.
- + cairo_image_surface_create_from_png
- + cairo_image_surface_create_from_png_stream
- And its just as easy to load a PNG image into a surface as well.
- + cairo_append_path
- With the new, exposed path data structure, it's now possible
- to append bulk path data to the current path, (rather than
- issuing a long sequence of cairo_move_to/line_to/curve_to
- function calls).
- Xlib and XCB backends
- ---------------------
- Any cairo_format_t and Colormap arguments have been dropped from
- cairo_xlib_surface_create. There are also two new
- cairo_xlib|xcb_surface_create functions:
- cairo_xlib|xcb_surface_create_for_bitmap
- (Particular for creating A1 surfaces)
- cairo_xlib|xcb_surface_create_with_xrender_format
- (For any other surface types, not described by a Visual*)
- All of these surface create functions now accept width and height. In
- addition, there are new cairo_xlib|xcb_surface_set_size functions
- which must be called each time a window that is underlying a surface
- changes size.
- Print backends (PS and PDF)
- ---------------------------
- The old FILE* based interfaces have been eliminated. In their place we
- have two different functions. One accepts a simple const char
- *filename. The other is a more general function which accepts a
- callback write function and a void* closure. This should allow the
- flexibility needed to hook up with various stream object in many
- languages.
- In addition, when specifying the surface size during construction, the
- units are now device-space units (ie. points) rather than inches. This
- provides consistency with all the other surface types and also makes
- it much easier to reason about the size of the surface when drawing to
- it with the default identity matrix.
- Finally, the DPI parameters, which are only needed to control the
- quality of fallbacks, have been made optional. Nothing is required
- during surface_create (300 DPI is assumed) and
- cairo_ps|pdf_surface_set_dpi can be used to set alternate values if
- needed.
- Font system
- -----------
- Owen very graciously listened to feedback after the big font rework he
- had done for 0.4, and came up with way to improve it even more. In 0.4
- there was a cairo_font_t that was always pre-scaled. Now, there is an
- unscaled cairo_font_face_t which is easier to construct, (eg. no
- scaling matrix required) and work with, (it can be scaled and
- transformed after being set on the graphics state). And the font size
- manipulation functions are much easier. You can set an explicit size
- and read/modify/write the font matrix with:
- cairo_set_font_size
- cairo_get_font_matrix
- cairo_set_font_matrix
- (Previously you could only multiply in a scale factor or a matrix.) A
- pleasant side effect is that we can (and do) now have a default font
- size that is reasonable, as opposed to the old default height of one
- device-space unit which was useless until scaled.
- Of course, the old pre-scaled font had allowed some performance
- benefits when getting many metrics for a font. Those benefits are
- still made available through the new cairo_scaled_font_t. And a
- cairo_font_face_t can be "promoted" to a cairo_scaled_font_t by
- suppling a font_matrix and the desired CTM.
- Quartz backend
- --------------
- Tim Rowley put in the work to bring the Quartz backend back after it
- had been disabled in the 0.4.0 snapshot. He was not able to bring back
- the function that allows one to create a cairo_font_t from an ATSUI
- style:
- cairo_font_t *
- cairo_atsui_font_create (ATSUStyle style);
- because he didn't have a test case for it. If you care about this
- function, please provide a fairly minimal test and we'll try to bring
- it back in an upcoming snapshot.
- Snapshot 0.4.0 (2005-03-08 Carl Worth <cworth@cworth.org>)
- ==========================================================
- New documentation
- -----------------
- Owen Taylor has converted cairo's documentation system to gtk-doc and
- has begun some long-needed work on the documentation, which can now be
- viewed online here:
- http://cairographics.org/manual/
- New backend: win32
- ------------------
- This is the first snapshot to include a functional win32 backend,
- (thanks to Owen Taylor). The interface is as follows:
- #include <cairo-win32.h>
- void
- cairo_set_target_win32 (cairo_t *cr,
- HDC hdc);
- cairo_surface_t *
- cairo_win32_surface_create (HDC hdc);
- cairo_font_t *
- cairo_win32_font_create_for_logfontw (LOGFONTW *logfont,
- cairo_matrix_t *scale);
- cairo_status_t
- cairo_win32_font_select_font (cairo_font_t *font,
- HDC hdc);
- void
- cairo_win32_font_done_font (cairo_font_t *font);
- double
- cairo_win32_font_get_scale_factor (cairo_font_t *font);
- And see also the documentation at:
- http://cairographics.org/manual/cairo-Microsoft-Windows-Backend.html
- Disabled backend: quartz
- ------------------------
- Unfortunately, the quartz backend code is currently out of date with
- respect to some recent backend interface changes. So, the quartz
- backend is disabled in this snapshot.
- If the quartz backend is brought up-to-date before the next snapshot,
- we would be glad to make a 0.4.1 snapshot that re-enables it, (we do
- not expect many more big backend interface changes).
- API Changes
- -----------
- The font system has been revamped, (as Owen Taylor's work with
- integrating pango and cairo gave us the first serious usage of the
- non-toy font API).
- One fundamental, user-visible change is that the cairo_font_t object
- now represents a font that is scaled to a particular device
- resolution. Further changes are described below.
- cairo.h
- -------
- Removed cairo_font_set_transform and cairo_font_current_transform.
- Added cairo_font_extents and cairo_font_glyph_extents. See
- documentation for details:
- http://cairographics.org/manual/cairo-cairo-t.html#cairo-font-extents
- cairo-ft.h
- ----------
- The cairo_ft_font API changed considerably. Please see the
- documentation for details:
- http://cairographics.org/manual/cairo-FreeType-Fonts.html
- Performance
- -----------
- Make the fast-path clipping (pixel-aligned rectangles) faster.
- Add optimization for applying a constant alpha to a pattern.
- Optimize gradients that are horizontal or vertical in device space.
- Xlib: When RENDER is not available, use image surfaces for
- intermediate surfaces rather than xlib surfaces.
- Backend-specific changes
- ------------------------
- Glitz
- -----
- Major update to glitz backend. The output quality should now be just
- as good as the image and xlib backends.
- Track changes to glitz 0.4.0.
- PDF
- ---
- Various improvements to produce more conformant output.
- Internals
- ---------
- David Reveman contributed a large re-work of the cairo_pattern_t
- implementation, providing cleaner code and more optimization
- opportunities.
- Backend interface changes
- -------------------------
- Rework backend interface to accept patterns, not surfaces for source
- and mask.
- Remove set_matrix, set_filter, and set_repeat functions.
- More sophisticated backend interface for image fallbacks,
- ({acquire,release}_{source,dest}_image() and clone_similar).
- Bug fixes
- ---------
- Only install header files for backends that have been compiled.
- Fixed some rounding errors leading to incorrectly placed glyphs.
- Many other minor fixes.
- Snapshot 0.3.0 (2005-01-21 Carl Worth <cworth@cworth.org>)
- ==========================================================
- Major API changes
- -----------------
- 1) The public header files will no longer be directly installed into
- the system include directory. They will now be installed in a
- subdirectory named "cairo", (eg. in /usr/include/cairo rather than
- in /usr/include).
- As always, the easiest way for applications to discover the
- location of the header file is to let pkg-config generate the
- necessary -I CFLAGS and -L/-l LDFLAGS. For example:
- cc `pkg-config --cflags --libs cairo` -o foo foo.c
- IMPORTANT: Users with old versions of cairo installed will need to
- manually remove cairo.h and cairo-features.h from the
- system include directories in order to prevent the old
- headers from being used in preference to the new ones.
- 2) The backend-specific portions of the old monolithic cairo.h have
- been split out into individual public header files. The new files
- are:
- cairo-atsui.h
- cairo-ft.h
- cairo-glitz.h
- cairo-pdf.h
- cairo-png.h
- cairo-ps.h
- cairo-quartz.h
- cairo-xcb.h
- cairo-xlib.h
- Applications will need to be modified to explicitly include the new
- header files where appropriate.
- 3) There are two new graphics backends in this snapshot, a PDF
- backend, and a Quartz backend. There is also one new font backend,
- ATSUI.
- PDF backend
- -----------
- Kristian Høgsberg has contributed a new backend to allow cairo-based
- applications to generate PDF output. The interface for creating a PDF
- surface is similar to that of the PS backend, as can be seen in
- cairo-pdf.h:
- void
- cairo_set_target_pdf (cairo_t *cr,
- FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
- cairo_surface_t *
- cairo_pdf_surface_create (FILE *file,
- double width_inches,
- double height_inches,
- double x_pixels_per_inch,
- double y_pixels_per_inch);
- Once a PDF surface has been created, applications can draw to it as
- any other cairo surface.
- This code is still a bit rough around the edges, and does not yet
- support clipping, surface patterns, or transparent gradients. Text
- only works with TrueType fonts at this point and only black text is
- supported. Also, the size of the generated PDF files is currently
- quite big.
- Kristian is still actively developing this backend, so watch this
- space for future progress.
- Quartz backend
- --------------
- Calum Robinson has contributed a new backend to allow cairo
- applications to target native Mac OS X windows through the Quartz
- API. Geoff Norton integrated this backend into the current
- configure-based build system, while Calum also provided Xcode build
- support in the separate "macosx" module available in CVS.
- The new interface, available in cairo-quartz.h, is as follows:
- void
- cairo_set_target_quartz_context (cairo_t *cr,
- CGContextRef context,
- int width,
- int height);
- cairo_surface_t *
- cairo_quartz_surface_create (CGContextRef context,
- int width,
- int height);
- There is an example program available in CVS in cairo-demo/quartz. It
- is a port of Keith Packard's fdclock program originally written for
- the xlib backend. A screenshot of this program running on Mac OS X is
- available here:
- http://cairographics.org/~cworth/images/fdclock-quartz.png
- ATSUI font backend
- ------------------
- This new font backend complements the Quartz backend by allowing
- applications to use native font selection on Mac OS X. The interface
- is a single new function:
- cairo_font_t *
- cairo_atsui_font_create (ATSUStyle style);
- Minor API changes
- -----------------
- Prototype for non-existent function "cairo_ft_font_destroy" removed.
- Now depends on libpixman 0.1.2 or newer, (0.1.3 is being released
- concurrently and has some useful performance improvements).
- Default paint color is now opaque black, (was opaque white). Default
- background color is transparent (as before).
- Renamed "struct cairo" to "struct _cairo" to free up the word "cairo"
- from the C++ identifier name space.
- Functions returning multiple return values through provided pointers,
- (cairo_matrix_get_affine, cairo_current_point, and
- cairo_current_color_rgb), will now accept NULL for values the user
- wants to ignore.
- CAIRO_HAS_FREETYPE_FONT has now been renamed to CAIRO_HAS_FT_FONT.
- Performance improvements
- ------------------------
- Alexander Larsson provided some fantastic performance improvements
- yielding a 10000% performance improvement in his application, (when
- also including his performance work in libpixman-0.1.3). These include
- * Fixed handling of cache misses.
- * Creating intermediate clip surfaces at the minimal size required.
- * Eliminating roundtrips when creating intermediate Xlib surfaces.
- Implementation
- --------------
- Major re-work of font metrics system by Keith Packard. Font metrics
- should now be much more reliable.
- Glitz backend
- -------------
- Updated for glitz-0.3.0.
- Bug fixes in reference counting.
- Test suite
- ----------
- New tests for cache crashing, rotating text, improper filling of
- complex polygons, and leaky rasterization.
- Bug fixes
- ---------
- Fixed assertion failure when selecting the same font multiple times in
- sequence.
- Fixed reference counting so cache_destroy functions work.
- Remove unintended copyright statement from files generated with
- PostScript backend.
- Fixed to eliminate new warnings from gcc 3.4 and gcc 4.
- Snapshot 0.2.0 (2004-10-27 Carl Worth <cworth@cworth.org>)
- ===========================================================
- New license: LGPL/MPL
- ---------------------
- The most significant news with this release is that the license of
- cairo has changed. It is now dual-licensed under the LGPL and the
- MPL. For details see the COPYING file as well as COPYING-LGPL-2.1 and
- COPYING-MPL-1.1.
- I express my thanks to everyone involved in the license change process
- for their patience and support!
- New font and glyph internals
- ----------------------------
- Graydon Hoare has put a tremendous amount of work into new internals
- for handling fonts and glyphs, including caches where appropriate.
- This work has no impact on the user-level API, but should result in
- great performance improvements for applications using text.
- New test suite
- --------------
- This snapshot of cairo includes a (small) test suite in
- cairo/test. The tests can be run with "make check". The test suite was
- designed to make it very easy to add new tests, and we hope to see
- many contributions here. As you find bugs, please try adding a minimal
- test case to the suite, and submit it with the bug report to the
- cairo@cairographics.org mailing list. This will make it much easier
- for us to track progress in fixing bugs.
- New name for glitz backend
- --------------------------
- The gl backend has now been renamed to the glitz backend. This means
- that the following names have changed:
- CAIRO_HAS_GL_SURFACE -> CAIRO_HAS_GLITZ_SURFACE
- cairo_set_target_gl -> cairo_set_target_glitz
- cairo_gl_surface_create -> cairo_glitz_surface_create
- This change obviously breaks backwards compatibility for applications
- using the old gl backend.
- Up-to-date with latest glitz snapshots
- --------------------------------------
- This snapshot of cairo is now up to date with the latest glitz
- snapshot, (currently 0.2.3). We know that the latest cairo and glitz
- snapshots have been incompatible for a very long time. We've finally
- fixed that now and we're determined to not let that happen again.
- Revert some tessellation regression bugs
- ----------------------------------------
- People that have been seeing some tessellation bugs, (eg. leaked
- fills), in the CVS version of cairo may have better luck with this
- release. A change since the last snapshot was identified to trigger
- some of these bugs and was reverted before making the snapshot. The
- behavior should be the same as the previous (0.1.23) snapshot.
- Miscellaneous changes
- ---------------------
- Changed CAIRO_FILTER_DEFAULT to CAIRO_FILTER_BEST to make gradients
- easier.
- Track XCB API change regarding iterators.
- Various bug fixes
- -----------------
- Fix calculation of required number of vertices for pen.
- Fix to avoid zero-dimensioned pixmaps.
- Fix broken sort of pen vertices.
- Fix bug when cairo_show_text called with a NULL string.
- Fix clipping bugs.
- Fix bug in computing image length with XCB.
- Fix infinite loop bug in cairo_arc.
- Fix memory management interactions with libpixman.
- Snapshot 0.1.23 (2004-05-11 Carl Worth <cworth@isi.edu>)
- ========================================================
- Fixes for gcc 3.4
- -----------------
- Fix prototype mismatches so that cairo can be built by gcc 3.4.
- Updates to track glitz
- ----------------------
- Various fixes to support the latest glitz snapshot (0.1.2).
- Gradient updates
- ----------------
- Radial gradients now support both inner and outer circles.
- Transformed linear gradients are now properly handled.
- Fixes for extend type reflect.
- Glitz updates
- -------------
- Converted shading routines to use fixed point values and introduced a
- shading operator structure for more efficient shading calculations.
- Support compositing with mask surface when mask is solid or
- multi-texturing is available.
- PNG backend cleanups
- --------------------
- Fix output to properly compensate for pre-multiplied alpha format in cairo.
- Add support for A8 and A1 image formats.
- Bug fixes
- ---------
- Avoid crash or infinite loop on null strings and degeneratively short
- splines.
- New? bugs in cairo_clip
- -----------------------
- There are some fairly serious bugs in cairo_clip. It is sometimes
- causing an incorrect result. And even when it does work, it is
- sometimes so slow as to be unusable. Some of these bugs may not be
- new, (indeed cairo_clip has only ever had a braindead-slow
- implementation), but I think they're worth mentioning here.
- Snapshot 0.1.22 (2004-04-16 Carl Worth <cworth@isi.edu>)
- ========================================================
- Cairo was updated to track the changes in libpixman, and now depends
- on libpixman version 0.1.1.
- Snapshot 0.1.21 (2004-04-09 David Reveman <c99drn@cs.umu.se>)
- =============================================================
- New OpenGL backend
- ------------------
- The OpenGL backend provides hardware accelerated output for
- X11 and OS X. The significant new functions are:
- cairo_set_target_gl
- cairo_gl_surface_create
- Automatic detection of available backends
- -----------------------------------------
- The configure script now automatically detect what backends are
- available, (use ./configure --disable-`backend' to prevent
- compilation of specific backends).
- Snapshot 0.1.20 (2004-04-06 Carl Worth <cworth@isi.edu>)
- ========================================================
- New pattern API
- ---------------
- David Reveman has contributed a new pattern API which enable linear
- and radial gradient patterns in addition to the original surface-based
- patterns. The significant new top-level functions are:
- cairo_pattern_create_linear
- cairo_pattern_create_radial
- cairo_pattern_create_for_surface
- cairo_pattern_add_color_stop
- cairo_set_pattern
- Any code using the old cairo_set_pattern, (which accepted a
- cairo_surface_t rather than a cairo_pattern_t), will need to be
- updated.
- Update to XCB backend
- ---------------------
- The XCB backend is now enabled by default, (use ./configure
- --disable-xcb to turn it off).
- Faster clipping
- ---------------
- Graydon Hoare has added optimizations that make cairo_clip much faster
- when the path is a pixel-aligned, rectangular region.
- Bug fixes.
- Snapshot 0.1.19 (2004-02-24 Carl Worth <cworth@isi.edu>)
- ========================================================
- New PNG backend
- ---------------
- Olivier Andrieu contributed a new PNG backend. It builds on the
- existing image backend to make it easy to render "directly" to a
- .png file. The user never needs to deal with the actual image
- buffer. The significant new functions are:
- cairo_set_target_png
- cairo_png_surface_create
- The PNG backend is not enabled by default so that by default there is
- not a new dependency on libpng. Use ./configure --enable-png to enable
- this backend.
- Snapshot 0.1.18 (2004-02-17 Carl Worth <cworth@isi.edu>)
- ========================================================
- Path query functionality
- ------------------------
- It's now possible to query the current path. The two new functions
- are:
- cairo_current_path
- cairo_current_path_flat
- Each function accepts a number of callback functions that will be
- called for each element in the path (move_to, line_to, curve_to,
- close_path). The cairo_current_path_flat function does not accept a
- curve_to callback. Instead, all curved portions of the path will be
- converted to line segments, (within the current tolerance value). This
- can be handy for doing things like text-on-path without having to
- manually interpolate Bézier splines.
- New XCB backend
- ---------------
- Jamey Sharp has contributed a second X backend that uses the new, lean
- XCB library rather than Xlib. It cannot currently be compiled at the
- same time as the Xlib backend. See ./configure --enable-xcb.
- Build fixes for cygwin.
- Bug fixes.
- Snapshot 0.1.17 (2003-12-16 Carl Worth <cworth@isi.edu>)
- ========================================================
- Better text support
- -------------------
- This snapshot provides much better text support by implementing the
- following four functions:
- cairo_text_extents
- cairo_glyph_extents
- cairo_text_path
- cairo_glyph_path
- The text/glyph_extents functions can be used to determine the bounding
- box (and advance) for text as if drawn by show_text/glyphs.
- The text/glyph_path objects functions place text shapes on the current
- path, where they can be subsequently manipulated. For example,
- following these functions with cairo_stroke allows outline text to be
- drawn. Calling cairo_clip allows clipping to a text-shaped region.
- Combined dependencies
- ---------------------
- The cairo core now depends only on the libpixman library. This single
- library replaces the three previous libraries libic, libpixregion, and
- slim. Thanks to Dave Beckett <dave.beckett@bristol.ac.uk> for all of
- the heavy lifting with this renaming effort.
- Conditional compilation of backends
- -----------------------------------
- Cairo now allows optional backends to be disabled at compile time. The
- following options may now be passed to the configure script:
- --disable-xlib
- --disable-ps
- Note that the first option is a change from the old --without-x option
- which will no longer have any effect.
- OS X supported - several byte-order issues resolved
- ---------------------------------------------------
- Cairo has now been successfully compiled under OS X. Testing revealed
- that there were some byte-order problems in the PostScript backend and
- the PNG generation in the demos. These have now been resolved.
- 2003-10
- =======
- Graydon Hoare <graydon@redhat.com> implemented the first real text
- support using Freetype/fontconfig, (previous versions of cairo used
- Xft and could only draw text when using an X backend).
- 2003-09
- =======
- Graydon Hoare <graydon@redhat.com> added the first real support for
- running cairo with a non-render-aware X server.
- Jamey Sharp <jamey@minilop.net> virtualized the backend font and
- surface interfaces in September, 2003.
- 2003-06
- =======
- Xr is renamed cairo to avoid confusion since it no longer had a strict
- dependence on X.
- 2003-05
- =======
- A new image surface backend is added to Xr. Keith Packard
- <keithp@keithp.com> wrote the image compositing code in libic that is
- used for the image_surface backend. This code was originally written
- as the software fallback for the render extension within the X
- server.
- 2002-06
- =======
- Carl Worth <cworth@isi.edu> wrote the first lines of Xr, after Keith
- Packard <keithp@keithp.com> proposed the plan for a stateful drawing
- library in C providing a PostScript-like rendering model.
- LocalWords: mutex BeOS extraordinaire distro's URL lcd bool tarball
|