| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562 |
- 2023-08-25 Werner Lemberg <[email protected]>
- * Version 2.13.2 released.
- ==========================
- Tag sources with `VER-2-13-2'.
- * docs/VERSION.TXT: Add entry for version 2.13.2.
- * docs/CHANGES: Updated.
- * docs/release, docs/README, builds/macs/README: Updated.
- * README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html, builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
- docs/freetype-config.1: s/2.13.1/2.13.2/, s/2131/2132/.
- * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
- * builds/unix/configure.raw (version_info): Set to 26:1:20.
- * CMakeLists.txt (VERSION_PATCH): Set to 2.
- 2023-08-25 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftcalc.c (FT_MulAddFix): Simplify 32-bit rounding.
- 2023-08-25 Werner Lemberg <[email protected]>
- Fix clang warnings.
- * src/cffload.c (cff_blend_doBlend): Fix type of `sum`.
- * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Fix type of
- `word_delta_count`.
- 2023-08-24 Werner Lemberg <[email protected]>
- * subprojects/*.wrap: Updated.
- 2023-08-24 Hugh McMaster <[email protected]>
- builds/unix/configure.raw: Use variable to specify minimum Python version.
- 2023-08-24 Alexei Podtelezhnikov <[email protected]>
- * builds/toplevel.mk: Simplify version extraction.
- 2023-08-22 Alexei Podtelezhnikov <[email protected]>
- [base] Improve the matrix degeneracy check.
- Also fixes #1251.
- * src/base/ftcalc.c (FT_Matrix_Check): To avoid overflow, scale by shifting.
- * include/freetype/internal/ftcalc.h (FT_Matrix_Check): Update description.
- 2023-08-22 Werner Lemberg <[email protected]>
- builds/toplevel.mk: Don't use `\#` in functions.
- The behaviour changed in GNU make 4.3, where `#` (without the backslash)
- would be necessary. Using a variable instead the code works with both older
- and newer GNU make versions.
- Fixes #1252.
- 2023-08-19 Hugh McMaster <[email protected]>
- builds/freetype.mk: Invoke `mkdocs` as a Python module
- FreeType's `refdoc` target currently allows users to override the
- default Python path, which is useful for testing and development.
- In contrast, `mkdocs` is invoked via the default Python path.
- Invoking `mkdocs` via Python's module syntax allows for greater
- flexibility, although there is no change for the default use case.
- 2023-08-17 Ben Wagner <[email protected]>
- [base] Avoid UB with memcpy
- `FT_NEW_ARRAY(p, 0)` sets `p` to `NULL`. `FT_Stream_ReadAt` with a
- memory based stream uses `FT_MEM_COPY` which is `memcpy` which specifies
- that it is undefined behavior for either the `src` or `dst` to be
- `NULL`. Instead of forcing all callers work around calling
- `FT_Stream_Read` when `buffer == NULL && count == 0` do the check in
- `FT_StreamRead`. This allows any call with `count == 0` to succesfully
- read zero bytes without UB.
- * src/base/ftstream.c (FT_Stream_ReadAt): skip `FT_MEM_COPY` when
- `count == 0`. (FT_Stream_TryRead): ditto
- Fixes: #1250
- 2023-08-12 Werner Lemberg <[email protected]>
- Fix warnings in tracing messages for 32bit compilation.
- Since we now require C99, use `%td` for `ptrdiff_t` and `%zu` for `size_t`.
- 2023-08-04 Ben Wagner <[email protected]>
- Avoid overflow in COLR bounds checks.
- The values read into `base_glyphs_offset_v1` and `layer_offset_v1` may
- be in the range 0xFFFFFFFD-0xFFFFFFFF. On systems where `unsigned long`
- is 32 bits adding 4 to such values will wrap and pass bounds checks but
- accessing values at such offsets will be out of bounds.
- On the other hand `table_size` has already been tested to be at least
- `COLRV1_HEADER_SIZE` (34) so it is safe to subtract 4 from it.
- * src/sfnt/ttcolr.c (tt_face_load_colr): subtract 4 from `table_size`
- instead of adding 4 to font data offsets in bounds checks
- Fixes: https://crbug.com/1469348
- 2023-08-02 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftobjs.c (open_face_from_buffer): Silence `maybe-uninitialized`.
- We never call this function without a `driver_name` (#1245).
- 2023-07-29 Alexei Podtelezhnikov <[email protected]>
- [truetype] Reduce v40 footprint.
- * src/truetype/ttgload.c (TT_HInt_Glyph, tt_loader_set_pp,
- tt_loader_init): Refactor code.
- 2023-07-27 Alexei Podtelezhnikov <[email protected]>
- [truetype] Remove Infinality for good (remaining bits).
- * src/truetype/ttobjs.h: Remove remaining fields.
- * src/truetype/ttinterp.c: Do not initialize them.
- * include/freetype/internal/tttypes.h: Remove descriptions.
- 2023-07-27 Alexei Podtelezhnikov <[email protected]>
- [truetype] Remove Infinality for good.
- Remove everything `#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY`,
- which was undefined for a while now.
- * include/freetype/internal/tttypes.h: Ditto.
- * src/truetype/truetype.c: Ditto.
- * src/truetype/ttdriver.c: Ditto.
- * src/truetype/ttgload.c: Ditto.
- * src/truetype/ttinterp.c: Ditto.
- * src/truetype/ttinterp.h: Ditto.
- * src/truetype/ttobjs.c: Ditto.
- * src/truetype/ttsubpix.[ch]: Remove files.
- * src/truetype/rules.mk: Don't mention "ttsubpix.c".
- 2023-07-21 Jouk Jansen <[email protected]>
- * vms_make.com: Provide separate library compiled with C++.
- Some types on OpenVMS x86_64 (for example, `long') have different sizes
- depending on whether compiled with either C or C++. In particular,
- X-Windows applications crash if linked with the C++ version.
- This patch makes `vms_make.com` create a second version of the FreeType
- library compiled with C++ if OpenVMS is running on the x86_64 platform.
- 2023-07-21 Jouk Jansen <[email protected]>
- * vms_make.com: Fix typos.
- 2023-07-21 Jouk Jansen <[email protected]>
- * src/smooth/ftgrays.c (FT_SSE2): Fix definition for VMS.
- 2023-07-19 Jouk Jansen <[email protected]>
- vms_make.com: Make use of additional libraries optional.
- Check whether `.olb` files are present.
- Also check for the HarfBuzz library.
- 2023-07-19 Jouk Jansen <[email protected]>
- vms_make.com: Add `/warn=noinfo` to `CFLAGS`.
- This reduces enormously the informationals while compiling on x86_64 (i.e.,
- which `.h` file is inluded form where).
- 2023-07-18 Ben Wagner <[email protected]>
- [woff2] Clean up on large brotli expansion
- * src/sfnt/sfwoff2.c (woff2_open_font): set error and goto cleanup
- Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60711
- 2023-07-16 Werner Lemberg <[email protected]>
- [woff2] Avoid allocation bomb.
- This is a fix for commit 85167dbd5, reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60615
- * src/sfnt/sfwoff2.c (MAX_SFNT_SIZE): New macro.
- (woff2_open_font): Use it to limit the maximum size of an uncompressed WOFF2
- font.
- 2023-07-14 Werner Lemberg <[email protected]>
- [cff] Fix compiler warning.
- * src/cff/cffparse.c, src/cff/cffparse.h: Make `cff_parse_fixed` a local
- function.
- 2023-07-14 Ben Wagner <[email protected]>
- [woff2] Remove sfnt size guess check
- In WOFF the `totalSfntSize` must be correct, however in WOFF2 this value
- is now just a hint and a conforming implementation must not reject
- otherwise valid data if the `totalSfntSize` turns out not to be exact.
- * src/sfnt/sfwoff2.c (woff2_open_font): remove check that uncompressed
- woff2 data would fit in the sfnt size guess.
- Fixes: #1235
- 2023-07-14 Skef Iterum <[email protected]>
- [cff] Make blend operator work with floats in private dicts.
- The CFF2 blend operator takes N default values and corresponding
- sets of deltas and pushes N values specific to a designspace
- location. CFF has a floating point numeric type and the FreeType
- blending code was not converting those into its internal 16.16
- Fixed type format.
- Fixes #1243.
- * src/cff/cffparse.c (do_fixed): Handle floating point numbers.
- Also fix scaling overflow check for integer-to-fixed conversion.
- * src/cff/cffload.c (cff_blend_doBlend): Updated.
- 2023-07-08 Hin-Tak Leung <[email protected]>
- * src/truetype/ttgload.c (TT_Hint_Glyph): More mostly cosmetic update.
- This is a follow-up to commit 49c74ac02, which creates a new local variable
- "exec = loader->exec", and shortening a lot of "loader->exec". This commit
- does two more such changes missed in that first commit.
- 2023-07-06 Hugh McMaster <[email protected]>
- [gzip] Don't compile internal zlib development files when using system zlib.
- `src/gzip/rules.mk` compiles the internal zlib sources even when using the
- zlib development files provided by a host system. If the internal zlib
- development files are not present, FreeType fails to build from source.
- This patch ensures the internal zlib development files are only
- prerequisites when not using zlib development files on a host system.
- * src/gzip/rules.mk (GZIP_DRV_SRCS): Define conditionally.
- 2023-06-24 Werner Lemberg <[email protected]>
- * Version 2.13.1 released.
- ==========================
- Tag sources with `VER-2-13-1'.
- * docs/VERSION.TXT: Add entry for version 2.13.1.
- * docs/CHANGES: Updated.
- * docs/release, docs/README, builds/macs/README: Updated.
- * README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html, builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
- docs/freetype-config.1: s/2.13.0/2.13/1/, s/2130/2131/.
- * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
- * builds/unix/configure.raw (version_info): Set to 26:0:20.
- * CMakeLists.txt (VERSION_PATCH): Set to 1.
- * subprojects/libpng.wrap, subprojects/zlib.wrap, subprojects/dlg: Updated.
- 2023-06-09 suzuki toshiya <[email protected]>
- Comment fixes.
- 2023-06-09 Werner Lemberg <[email protected]>
- [sdf] Correct handling of empty glyphs.
- This is a refinement of commit 7b3ebb9.
- * src/sdf/ftsdfrend.c (ft_sdf_render): Goto 'Exit' instead of directly
- returning.
- (fd_bsdf_render): Ditto, also taking care of setting `FT_GLYPH_OWN_BITMAP`
- correctly.
- 2023-06-05 Ben Wagner <[email protected]>
- Mark FT_Renderer_Class::raster_class as pointer to const
- The `FT_DEFINE_RASTER_FUNCS` macro declares a `const FT_Raster_Funcs`.
- The address of the definition is taken and assigned to
- `FT_Renderer_Class::raster_class` which is currently `FT_Raster_Funcs*`.
- Until recently the `const` was cast away and with the removal of the
- cast there are now warnings about dropping this `const`. Instead of
- adding back the casts, make `FT_Renderer_Class::raster_class` a pointer
- to const, as is done with pointers in other interfaces.
- * include/freetype/ftrender.h (FT_Renderer_Class_): mark `raster_class`
- as const.
- 2023-06-03 Ben Wagner <[email protected]>
- Fix some `FT_Fixed` vs. `FT_Long` confusion.
- `FT_Fixed` and `FT_Long` are both typedef'ed to be `signed long`. However,
- `FT_Fixed` implies that the lower 16 bits are being used to express
- fractional values and so these two types should not be confused.
- * include/freetype/internal/services/svmm.h (FT_Set_MM_Blend_Func): Use
- `FT_Fixed` for `coords`. Users are passing `FT_Fixed` and implementations
- are taking `FT_Fixed`.
- (FT_Get_MM_Blend_Func): Ditto.
- * src/autofit/afcjk.c (af_cjk_metrics_check_digits): Use `FT_Long` for
- `advance` and `old_advance`. `advance`'s address is passed as `FT_Long*` to
- `af_shaper_get_elem`, which writes the advance in em units (not fixed). The
- exact value is not important here as it is only compared to check whether it
- has changed.
- * src/autofit/aflatin.c (af_latin_metrics_check_digits): Ditto.
- 2023-06-03 Ben Wagner <[email protected]>
- */*: Remove many function pointer casts.
- In C it is undefined behavior to call a function through a function pointer
- of a different type. This is now detected by the Control Flow Integrity
- Sanitizer. All known issues have already been fixed. Prevent any
- accidental re-introduction by removing function pointer casts when defining
- services. The services will call the service functions through the function
- pointers on the service. As a result the functions must have the same type
- so there should be no need to cast. Removing the casts allows compilers to
- warn about assignment to an incompatible function pointer type.
- 2023-06-03 Werner Lemberg <[email protected]>
- Minor formatting.
- 2023-05-23 Werner Lemberg <[email protected]>
- Replace `sprintf` with `snprintf`.
- Fixes #1233.
- * include/freetype/config/ftstdlib.h (ft_sprintf): Replace with...
- (ft_snprintf): This new macro.
- * src/autofit/afhints.c (af_print_idx): Add argument to pass the buffer
- size.
- (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
- af_glyph_hints_dump_edges): Updated.
- * src/bdf/bdflib.c (BUFSIZE): New macro.
- (bdf_parse_properties_, bdf_parse_start_): Use `ft_snprintf`.
- * src/tools/ftrandom/ftrandom.c (do_test): Use `snprintf`.
- 2023-05-23 Werner Lemberg <[email protected]>
- docs/DEBUG: Formatting.
- 2023-05-20 suzuki toshiya <[email protected]>
- [doc] Type1 GX (sfnt-wrapped Type1) is not supported.
- * docs/formats.txt: Clarify the reference of Type1 GX,
- and state that this format is not supported. This
- is because the content `TYP1' table is not exactly same
- with the Type1 font format specification; no eexec
- encryption is used. For detail and concrete examples,
- see the analysis on:
- https://gitlab.freedesktop.org/freetype/freetype/-/issues/1231
- 2023-05-19 Craig White <[email protected]>
- Add missing end quote of a string in the example code of FT_Trace_Set_Level
- 2023-05-19 Seigo Nonaka <[email protected]>
- [truetype] Reduce heap allocation of `deltaSet` variation data.
- `deltaSet` is an array of packed integers that can be 32 bits, 16 bits, or
- 8 bits. Before this change, these values were unpacked to 32-bit integers.
- However, this can cause big heap allocations, e.g., around 500 KByte for
- 'NotoSansCJK'. To reduce this amount, store the packed integers and unpack
- them just before passing to the calculation. At calculation time, due to
- the variable length of region indices, temporary heap allocations are
- necessary. This heap allocation is not negligible and visible in `ftbench`
- results. So, use stack-allocated arrays for short array calculations.
- Fixes #1230.
- * include/freetype/internal/ftmmtypes.h (GX_ItemVarDataRec): New fields
- `wordDeltaCount` and `longWords`.
- * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Load packed
- data.
- (tt_var_get_item_delta): Unpack data before applying.
- 2023-05-17 Jouk Jansen <[email protected]>
- vms_make.com: Create shared executable for x86 version of OpenVMS.
- 2023-05-15 Werner Lemberg <[email protected]>
- Add new load flag `FT_LOAD_NO_SVG`.
- Modern color fonts often contain both an 'SVG' and 'COLR' table. FreeType
- always preferred 'SVG' over 'COLR' (this was a design decision), however,
- this might not be the right choice for the user. The new flags makes
- FreeType ignore the 'SVG' table while loading a glyph.
- Fixes #1229.
- * include/freetype/freetype.h (FT_LOAD_NO_SVG): New macro.
- * src/base/ftobjs.c (FT_Load_Glyph), src/cff/cffgload.c (cff_slot_load),
- src/truetype/ttgload.c (TT_Load_Glyph): Use it.
- 2023-05-13 Werner Lemberg <[email protected]>
- .mailmap: Updated.
- 2023-05-13 Alexei Podtelezhnikov <[email protected]>
- [cache] Merge functions.
- * src/cache/ftccache.c (FTC_Cache_Init): Merge into...
- (ftc_cache_done): ... this function, with unnecessary checks removed.
- 2023-05-13 Alexei Podtelezhnikov <[email protected]>
- [cache] Minor casting and cosmetic updates.
- * src/cache/ftcglyph.c (ftc_gcache_{init,done}): Remove casting.
- (FTC_GCache_Lookup): Cosmetic variable renaming.
- * src/cache/ftcsbits.c (ftc_snode_compare): Formatting.
- 2023-05-12 Werner Lemberg <[email protected]>
- * include/freetype/ftcache.h: Typo, punctuation.
- 2023-05-12 Alexei Podtelezhnikov <[email protected]>
- * include/freetype/ftcache.h: Formatted and updated.
- 2023-05-12 suzuki toshiya <[email protected]>
- * include/freetype/internal/t1types.h: Fix the indentation.
- 2023-05-11 Alexei Podtelezhnikov <[email protected]>
- [cache] Revise the dynamic hash table accounting.
- Instead of counting entries relative to the middle of the hash table,
- this switches to the absolute counter with the full index range mask.
- As a result, some calculations become a bit simpler. The cache resizing
- logic stays largely the same.
- * src/cache/ftccache.h (FTC_NODE_TOP_FOR_HASH): Revised with new counter.
- * src/cache/ftccache.c (ftc_get_top_node_for_hash): Ditto.
- (ftc_cache_resize): Simplify reallocations and stop their zeroing.
- (ftc_cache_init): Stop over-allocating but keep zeroing initially.
- (FTC_Cache_Clear, FTC_Cache_RemoveFaceID): Updated accordingly.
- 2023-05-11 suzuki toshiya <[email protected]>
- [t1cid] Set FT_FACE_FLAG_CID_KEYED.
- * cidobjs.c (cid_face_init): Set FT_FACE_FLAG_CID_KEYED.
- * cidriver.c (cid_get_is_cid): Comment about the case that
- is_cid cannot guarantee the glyph collection specification.
- 2023-05-09 Jouk Jansen <[email protected]>
- * src/smooth/ftgrays.c (FT_SSE2): Don't define for VMS.
- 2023-05-08 Werner Lemberg <[email protected]>
- * src/cff/cffdrivr.c (cff_glyph_load): Fix guard for `size`.
- This was forgotten to change in commit 2b54eba36b (in May 2004).
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58739
- 2023-05-08 Werner Lemberg <[email protected]>
- Minor compiler warning fixes.
- * src/autofit/afcjk.c (af_cjk_get_standard_widths), src/autofit/aflatin.c
- (af_latin_get_standard_widths): Use `FT_CALLBACK_DEF`.
- * src/cff/cffparse.c (cff_parser_run): Initialize and fix allocation of `q`.
- 2023-05-08 Werner Lemberg <[email protected]>
- * src/psaux/t1cmap.c: Signature fixes.
- 2023-05-08 Werner Lemberg <[email protected]>
- * src/bzip2/ftbzip2.c: Signature fixes.
- 2023-05-08 Werner Lemberg <[email protected]>
- [cache] Signature fixes.
- * src/cache/ftcglyph.c, src/cache/ftcglyph.h (FTC_GNode_Compare): Remove
- redundant function. It is equivalent to `ftc_gnode_compare` and becomes
- completely meaningless with fixed signatures.
- Update all callers.
- * src/cache/ftcsbits.c, src/cache/ftcsbits.h (FTC_SNode_Compare): Remove
- redundant function. It is equivalent to `ftc_snode_compare` and becomes
- completely meaningless with fixed signatures.
- Update all callers.
- 2023-05-07 Werner Lemberg <[email protected]>
- [sdf] Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/svg/ftsvg.c: Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- [raster] Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- [smooth] Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- [pshinter] Signature fixes.
- * src/pshinter/pshrec.c (t1_hints_close, t1_hints_apply): New wrapper
- functions.
- (t1_hints_funcs_init): Use them.
- (t2_hints_close, t2_hints_apply): New wrapper functions.
- (t2_hints_funcs_init): Use them.
- 2023-05-07 Werner Lemberg <[email protected]>
- [autofit] Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/sfnt/ttcmap: Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/pcf/pcfdrivr.c: Signature fix.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/winfonts/winfnt.c: Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/type42/t42parse.c: Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- [pfr] Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/cid/cidload.c: Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/cff/cffcmap.c: Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/type1/t1load.c: Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- [truetype] Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- [base] Signature fixes.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/type42/t42drivr.c: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/type1/*: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/truetype/*: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/sfnt/sfdriver.c, src/sfnt/ttbdf.c: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- * src/sfnt/sfdriver.c (sfnt_load_table): New wrapper function.
- (sfnt_service_sfnt_table): Use it.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/psnames/psmodule.c: Use `FT_CALLBACK_DEF`.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/pfr/pfrdrivr.c: face -> pfrface, pfrface -> face.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/pcf/pcfdrivr.c: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/cid/cidriver.c: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/bdf/bdfdrivr.c: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- 2023-05-07 Werner Lemberg <[email protected]>
- * src/cff/*: Clean up interface.
- Ensure that all driver functions use the signature of the service or driver.
- This avoids pointer mismatches, which are technically undefined behaviour.
- Recent compilers are more picky in catching them as part of Control Flow
- Integrity tests.
- 2023-05-06 Werner Lemberg <[email protected]>
- [truetype] Fix style name handling for variation fonts.
- * include/freetype/internal/tttypes.h (TT_FaceRec): New field
- `non_var_style_name`.
- * src/sfnt/sfobjs.c (sfnt_load_face): Initialize `non_var_style_name`.
- (sfnt_done_face): Free `non_var_style_name`.
- * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Restore non-VF style name
- if switching back to non-VF mode.
- 2023-05-06 Werner Lemberg <[email protected]>
- [truetype] Fix PostScript name handling for variation fonts.
- A variation font's PostScript name of a named instance is usually different
- from the PostScript name of an unnamed instance. However, if a change
- between a named instance and an unnamed instance with exactly the same
- design axis values happened, it was possible that the PostScript name wasn't
- correctly updated.
- This commit reorganizes the code to handle this issue within the top-level
- API functions, using a new service to trigger recomputation of the
- PostScript name.
- * include/freetype/internal/services/svmm.h (FT_Construct_PS_Name_Func): New
- typedef.
- (FT_Service_MultiMasters): New field `construct_ps_name`.
- (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
- * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
- FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Call
- `mm->construct_ps_name` to handle `postscript_name`.
- (FT_Set_Named_Instance): Call `mm->construct_ps_name` to handle
- `postscript_name`.
- Use shortcut.
- * src/cff/cffdrivr.c (cff_construct_ps_name): New function.
- (cff_service_multi_masters): Updated.
- * src/truetype/ttgxvar.c (tt_set_mm_blend): Don't handle `postscript_name`.
- (TT_Set_MM_Blend): Simplify.
- (TT_Set_Named_Instance): Return -1 if axis values haven't changed.
- Don't set `face_index`.
- (tt_construct_ps_name): New function.
- * src/truetype/ttgxvar.h: Updated.
- * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
- * src/type1/t1driver.c (t1_service_multi_masters): Updated.
- * src/type1/t1load.c (T1_Set_MM_Blend): Simplify.
- 2023-05-06 Werner Lemberg <[email protected]>
- * include/freetype/internal/services/svmm.h: Minor changes.
- 2023-05-06 Werner Lemberg <[email protected]>
- [truetype] Fix deactivation of variation font handling.
- According to the documentation, the functions `FT_Set_Named_Instance`,
- `FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and
- `FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag.
- (The same is true for `FT_Set_MM_WeightVector` but this information was
- accidentally omitted from the documentation.)
- However, if a call of these functions didn't change the axis values this
- could fail because internal shortcuts exited too early.
- This commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the
- top-level API functions, also taking care of the issue at hand.
- * src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector,
- FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
- FT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`.
- * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design,
- TT_Set_Named_Instance) Don't handle `FT_FACE_FLAG_VARIATION`.
- * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector,
- T1_Set_MM_Design): Ditto.
- * src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of
- low-level functions.
- * src/truetype/ttobjs.c (tt_face_init): Ditto.
- 2023-05-06 Werner Lemberg <[email protected]>
- s/set_instance/set_named_instance/
- * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func): Renamed
- to...
- (FT_Set_Named_Instance_Func): ...this.
- (FT_Service_MultiMasters): Rename `set_instance` to `set_named_instance`.
- (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
- * src/base/ftmm.c (FT_Set_Named_Instance): Updated.
- * src/cff/cffdrivr.c (cff_set_instance): Renamed to...
- (cff_set_named_instance): ...this.
- (cff_service_multi_masters): Updated.
- * src/cff/cffobjs.c (cff_face_init): Updated.
- * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
- * src/type1/t1driver.c (t1_service_multi_masters): Updated.
- 2023-05-06 Werner Lemberg <[email protected]>
- New Variation Font function `FT_Get_Default_Named_Instance`.
- * include/freetype/ftmm.h, src/base/ftmm.c (FT_Get_Default_Named_Instance):
- New function.
- * include/freetype/internal/services/svmm.h
- (FT_Get_Default_Named_Instance_Func): New typedef.
- (FT_Service_MultiMasters): New field `get_default_named_instance`.
- (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
- * include/freetype/internal/tttypes.h (TT_Face): New field
- `var_default_named_instance`.
- * src/sfnt/sfobjc.s (sfnt_init_face): Initialize
- `var_default_named_instance`.
- * src/cff/cffdrivr.c (cff_get_default_named_instance): New function.
- (cff_service_multi_masters): Updated.
- * src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize
- `var_default_named_instance`.
- (TT_Get_Default_Named_Instance): New function.
- * src/truetype/ttgxvar.h: Updated.
- * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
- * src/type1/t1driver.c (t1_service_multi_masters): Updated.
- * docs/CHANGES: Updated.
- 2023-05-06 Werner Lemberg <[email protected]>
- [cid] Improve tracing messages; formatting.
- 2023-05-04 Alexei Podtelezhnikov <[email protected]>
- * src/cache/ftccache.c (ftc_node_hash_unlink): Minor.
- 2023-05-04 Alexei Podtelezhnikov <[email protected]>
- * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Purge backwards.
- 2023-05-04 Alexei Podtelezhnikov <[email protected]>
- [cache] Revise list cleansing.
- * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Use one loop to
- do it.
- * src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_FlushN):
- Streamline loops.
- 2023-05-03 suzuki toshiya <[email protected]>
- [t1cid] Improve cid_get_cid_from_glyph_index().
- Update cid_get_cid_from_glyph_index() to
- return an error and CID=0 in the case that
- the specified glyph index points to an invalid
- entry.
- cidgload.h (cid_compute_fd_and_offsets):
- Declare new helper function to set the
- fd_select and 2 offsets to access the glyph
- description data.
- cidgload.c (cid_compute_fd_and_offsets):
- Move the part loading fd_select and 2 offsets
- from cid_load_glyph() to here. If the loaded
- parameters are broken, return the Invalid_Offset
- error. This function does not load the glyph
- data, only fills these parameters.
- (cid_load_glyph): Use new helper function in above.
- cidriver.c (cid_get_cid_from_glyph_index):
- Check whether the requested glyph index points
- to a valid entry, by calling cid_compute_fd_and_offsets().
- If it is valid, fill the cid by the glyph
- index (=CID). If it is invalid, return an
- error and fill the cid by 0.
- 2023-04-30 Werner Lemberg <[email protected]>
- API documentation: Re-organize chapters and sections
- * Split the very long 'Base Interface' section into smaller sections.
- * Split the 'Core API' chapter into two chapters.
- * Remove single enumeration values from `@order` fields since they have no
- effect.
- 2023-04-29 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/pngshim.c (Load_SBit_Png): Remove FALL_THROUGH warning.
- 2023-04-28 Werner Lemberg <[email protected]>
- * src/sfnt/ttload.c (tt_face_load_font_dir): Add another guard.
- Reject 'OTTO' fonts with no valid tables.
- 2023-04-28 Werner Lemberg <[email protected]>
- * src/cff/cffdrivr/c (cff_get_ps_name): Avoid unnecessary crash.
- The situation can happen if `FT_New_Face` (or one of its siblings) is called
- with a negative index to get the number of contained faces, followed
- immediately by a call to `FT_Get_Postscript_Name`. While this is not a valid
- use of the FreeType library there is no need for a crash.
- Fixes #1219.
- 2023-04-28 Werner Lemberg <[email protected]>
- * src/cff/cffdrivr.c (cff_ps_get_font_info): Reject 'CFF2' format.
- 2023-04-28 Werner Lemberg <[email protected]>
- * src/cid/cidgload.c (cid_load_glyph): Fix compiler warnings.
- 2023-04-28 Werner Lemberg <[email protected]>
- Minor documentation updates.
- 2023-04-27 Werner Lemberg <[email protected]>
- * src/ttgxvar.c: Minor changes.
- (TT_Get_MM_Var): Improve tracing messages.
- (tt_set_mm_blend): Minor speed-up.
- 2023-04-27 Werner Lemberg <[email protected]>
- s/this is,/that is,/
- 2023-04-27 Alexei Podtelezhnikov <[email protected]>
- [bdf] Clean up the atom property parsing.
- * src/bdflib.c (bdf_is_atom_): Refactor code with fewer checks.
- (bdf_list_join_): Return NULL.
- (bdf_add_comment_): Use const argument.
- (bdf_get_property): Ditto, ditto, make the function static.
- * src/bdf.h (bdf_get_property): Remove prototype.
- 2023-04-25 Werner Lemberg <[email protected]>
- Improve/add source comments and documentation.
- 2023-04-25 Werner Lemberg <[email protected]>
- [sfnt] Fix handling of PS names for Variation Fonts.
- * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Continue
- construction of string if an invalid character is encountered.
- Fixes #1218.
- 2023-04-24 suzuki toshiya <[email protected]>
- [t1cid] Change the trace messages of the charstrings retrieval errors.
- The t1cid driver catches 3 types of errors in
- the charstrings retrieval;
- A) The invalid FD number, there are 2 subtypes;
- A-1) FD number is the maximum number fitting to FDBytes.
- A-2) FD number is greater than num_dicts.
- B) Declared length is overrunning.
- C) Declared length is invalid (its end is before its head).
- Considering that some widely distributed fonts
- (e.g., "CJKV" book by O'Reilly) have A-1 errors
- in the unimplemented glyphs, the trace level for
- A-1 is calmed to level 1.
- The errors A-2, B, and C would be irregular;
- their trace levels are kept at level 0, but
- the updated trace messages include the CID number.
- 2023-04-24 suzuki toshiya <[email protected]>
- [truetype] Fix `make multi'.
- * src/truetype/ttgxvar.c: Include freetype/internal/services/svmetric.h
- for the FT_Service_MetricsVariations type definition.
- 2023-04-19 Ben Wagner <[email protected]>
- [services] FT_Size_Reset_Func to return FT_Error
- The `MetricsVariations` `FT_Size_Reset_Func` is currently defined to
- return `void`, but the implementations return `FT_Error`. Even though
- the pointers passed will be the same at runtime, calling a function
- through a pointer of a different type from the original function pointer
- type is undefined behavior. This may be caught at runtime by Control
- Flow Integrity with something like clang's `cfi-icall`.
- Issue: https://crbug.com/1433651
- * include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func):
- return `FT_Error` instead of `void`.
- 2023-04-17 Ben Wagner <[email protected]>
- [truetype] tt_size_reset_height to take FT_Size
- The `MetricsVariations` `FT_Size_Reset_Func` is defined to take an
- `FT_Size`. Because `tt_size_reset_height` is to be used as such a
- function, it must also take an `FT_Size` instead of a `TT_Size`. Even
- though the pointers passed will be the same at runtime, calling a
- function through a pointer of a different type from the original
- function pointer type is undefined behavior. This may be caught at
- runtime by Control Flow Integrity with something like clang's
- `cfi-icall`.
- Issue: https://crbug.com/1433651
- * src/truetype/ttobjs.h (tt_size_reset_height): take `FT_Size`
- * src/truetype/ttobjs.c (tt_size_reset_height): take `FT_Size` and
- update documentation
- 2023-04-13 Werner Lemberg <[email protected]>
- * src/truetype/ttinterp.c: Remove outdated comments.
- 2023-04-11 Ben Wagner <[email protected]>
- [sfnt, truetype] Add `size_reset` to `MetricsVariations`.
- This is a generalization of commit
- ```
- commit e6699596af5c5d6f0ae0ea06e19df87dce088df8
- Author: Werner Lemberg <[email protected]>
- Date: Thu Feb 2 11:38:04 2017 +0100
- [truetype] Fix MVAR post-action handling.
- ```
- It is also possible for plain `CFF ` style fonts to contain an `fvar` and
- `MVAR` table and use `cff_metrics_adjust`. `tt_size_reset` should only be
- called with `TT_Size` and never with `CFF_Size`.
- Allow the "metrics-variations" service to specify the correct function (if
- any) to reset `FT_Size`s after adjusting metrics.
- * src/truetype/ttobjs.c (tt_size_reset): Split off some functionality
- into...
- (tt_size_reset_height): ... this new function.
- * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
- `size_reset`.
- (tt_size_select, tt_size_request): Updated.
- * src/truetype/ttobjs.h: Updated.
- * include/freetype/internal/services/svmetric.h (MetricsVariations): Add
- `size_reset`.
- (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Updated.
- * include/freetype/internal/tttypes.h (TT_FaceRec_): Rename `var` to
- `tt_var` and add `face_var`.
- * src/cff/cffdrivr.c (cff_service_metrics_variations): Add `size_reset`.
- (cff_hadvance_adjust, cff_metrics_adjust): Updated.
- * src/cff/cffobjs.c (cff_face_init): Use `face_var`.
- * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `face_var`.
- * src/sfnt/ttmtx.c (tt_face_get_metrics): Use `tt_var`.
- * src/truetype/ttgxvar.c (tt_size_reset_iterator): Renamed to...
- (ft_size_reset_iterator): ... this new function.
- Call `size_reset`.
- (tt_apply_mvar): Pass `size_reset` to `ft_size_reset_iterator`.
- Fixes #1211
- 2023-04-10 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffcmap.c (cff_cmap_encoding_char_next): Abbreviate.
- 2023-04-10 Alexei Podtelezhnikov <[email protected]>
- Align `char_next` return types.
- This is mostly cosmetic because FT_UInt and FT_UInt32 are likely identical.
- * src/sfnt/ttcmap.c, src/cff/cffcmap.c, src/psaux/t1cmap.c,
- src/psnames/psmodule.c, include/freetype/internal/service/svpcsmap.h,
- src/pfr/pfrcmap.c, src/winfonts/winfnt.c (*_char_next): return FT_UInt.
- 2023-04-09 Alexei Podtelezhnikov <[email protected]>
- [sfnt] Clean up CMAP{4,12,13} handling.
- This moves the charcode overflow checks upstream and turns some
- while-loops into the do-while ones to avoid the uninitialized warnings.
- This should slightly reduce the number of checks and jumps.
- * src/sfnt/ttcmap.c (tt_cmap{4,12,13}_next,
- tt_cmap{4.12.13}_char_map_linear): Remove the charcode overflow check.
- (tt_cmap{4,12,13}_char_map_binary): Ditto and use do-while.
- (tt_cmap{12,13}_char_next): Add the overflow check.
- 2023-04-03 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttpost.c (load_format_25): Do not abort frame reading.
- 2023-04-03 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttpost.c (load_format_*): Streamline frame reading.
- 2023-04-02 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttpost.c: Formatting and comments.
- 2023-04-02 Alexei Podtelezhnikov <[email protected]>
- [sfnt] Consolidate POST version 2.0 and 2.5 (pt 2).
- * src/sfnt/ttpost.c (load_format_20, load_format_25): Update arguments
- and move shared calls and checks upstream to...
- (load_post_names): ... this function.
- (tt_face_free_ps_names, tt_face_get_ps_name): Updated.
- 2023-04-02 Alexei Podtelezhnikov <[email protected]>
- [sfnt] Consolidate POST version 2.0 and 2.5 (pt 1).
- The deprecated POST version 2.5 can be handled using the data
- structures of version 2.0. The goal is to reduce the footprint.
- * include/freetype/internal/tttypes.h (TT_Post_Names): Absorb and...
- (TT_Post_20, TT_Post_25): ... remove these structures.
- src/sfnt/ttpost.c (load_post_names, tt_face_get_ps_name,
- tt_face_free_ps_names, load_format_20): Updated accordingly.
- (load_format_25): ditto and convert offsets to glyph indices.
- 2023-04-01 Alexei Podtelezhnikov <[email protected]>
- [sfnt] Miscellaneous POST clean-ups.
- * src/sfnt/ttpost.c (load_format_20): Decrease casts.
- (load_format_25): Check the table length and impose a theoretical
- glyph number limit usable with 8-bit offset. Decrease casts.
- (load_post_names): Pass the mapping data length without 2 bytes.
- 2023-03-30 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttpost.c (load_format_20): Simplify comutations.
- 2023-03-29 Alexei Podtelezhnikov <[email protected]>
- [sfnt] Streamline POST format 2.0 handing (cont'd).
- * src/sfnt/ttpost.c (load_format_20): Co-allocate the string data and
- their pointers, which makes it easier to handle and free them.
- (tt_face_free_ps_names): Updated.
- * include/freetype/internal/tttypes.h (TT_Post_20): Update type.
- 2023-03-20 Alexei Podtelezhnikov <[email protected]>
- [cff] Simplify `t2_strings` management in the old engine.
- * src/cff/cffparse.c (cff_parser_run): Allocate the charstring buffers
- and the list nodes together so that they can be freed at once.
- (finalize_t2_strings): Removed as no longer needed.
- (cff_parser_done): Updated.
- 2023-03-19 Alexei Podtelezhnikov <[email protected]>
- [cff] Rework the stream limit checks.
- The old stream limit checks, before 6986ddac1ece, were good but
- pointless for the crafted t2_strings. Checking limits there is
- not necessary as they are created to hold all data. By using two
- conditions, we can detect the actual crossing of the stream boundary
- as appropriate for the stream pointer only. The t2_strings parsing
- will not be triggering these checks.
- * src/cff/cffparse.c (cff_parser_within_limits): Removed.
- (cff_parse_real, cff_parse_integer): Redesign the stream limit check.
- (cff_parse_num, do fixed, cff_parse_fixed_dynamic): Update callers.
- 2023-03-18 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use for-loop.
- Even though we never call `TT_Load_Simple_Glyph` with zero contours,
- out of abundance of precaution, let's handle this case properly.
- 2023-03-18 Alexei Podtelezhnikov <[email protected]>
- [truetype] Clean up zeroing and local variables.
- * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Avoid zeroing.
- (load_truetype_glyph): Avoid zeroing and clean local variables.
- 2023-03-16 Werner Lemberg <[email protected]>
- * include/freetype/ftsystem.h (FT_Stream_IoFunc): Improve documentation.
- Fixes #1208.
- 2023-03-16 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API.
- 2023-03-16 Alexei Podtelezhnikov <[email protected]>
- [truetype] Clean up glyph loading.
- * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean space checking.
- (TT_Hint_Glyph): Don't copy the outline structure.
- (TT_Process_Simple_Glyph): Cosmetic update.
- 2023-03-15 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean up.
- 2023-03-13 Werner Lemberg <[email protected]>
- builds/vms/apinames_vms.bash: Fix `unzip` artifact
- The problem occured when unpacking a zip file created on OpenVMS on Linux.
- While OpenVMS knows many different file formats, Unix only knows stream-LF
- and binary. In principle `zip` on Linux should have translated the file to
- stream-LF but failed to do so. That caused the file to incorrectly contain
- only one line with control-characters.
- 2023-03-11 Alexei Podtelezhnikov <[email protected]>
- [truetype] Fix recent fallout in memory management.
- * src/truetype/ttgload.c (TT_Process_Composite_Glyph,
- TT_Load_Simple_Glyph): Clean up old instructions regardless of
- new ones, postpone setting `control_len` and `control_data` until...
- (TT_Load_Glyph): ... the exit from this function.
- 2023-03-10 Jouk Jansen <[email protected]>
- Update VMS installation support.
- 2023-03-10 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgload.c (TT_Hint_Glyph): Mostly cosmetic update.
- The number of instructions is now taken from the executed context.
- Technically, this means that `control_len` and `control_data`
- values are no longer _used_ internally but only expose them.
- 2023-03-08 Werner Lemberg <[email protected]>
- apinames.c: Add comment.
- 2023-03-07 Werner Lemberg <[email protected]>
- [gzip] File `infback.c` is not needed.
- * src/gzip/infback.c: Remove.
- * src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
- 2023-03-07 Werner Lemberg <[email protected]>
- [apinames] Fix VMS handling of overly long function names.
- Based on ideas from Jouk Jansen <[email protected]>.
- * src/tools/vms_shorten_symbol.c: New file, taken from
- https://sourceforge.net/p/vms-ports/vmsshortsym/ci/default/tree/vms_shorten_symbol.c
- with some minor edits to allow compilation with C++ and being included in
- another source code file.
- * src/tools/apinames.c: Include `vms_shorten_symbol.c`.
- (PROGRAM_VERSION): Set to '0.5'.
- (names_dump) [OUTPUT_VMS_OPT]: Call `vms_shorten_symbol` to get unique function
- identifiers not longer than 31 characters.
- 2023-03-07 Werner Lemberg <[email protected]>
- * src/tools/apinames.c (panic): Accept variable number of arguments.
- 2023-03-07 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix leak too.
- 2023-03-07 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Triage memory leak.
- This leak has been introduced in the previous commit and immediately
- detected:
- https://chromium-review.googlesource.com/c/chromium/src/+/4313202
- 2023-03-06 Alexei Podtelezhnikov <[email protected]>
- [truetype] Simplify memory management.
- Instead of using `Update_Max`, switch to regular FreeType memory
- allocation macros, stop pre-allocating the glyph instruction arrays.
- * src/truetype/ttgload.c (TT_Load_Simple_Glyph,
- TT_Process_Composite_Glyph): Switch to regular memory allocation.
- * src/truetype/ttinterp.c (Update_Max): Removed.
- (TT_Load_Context): Reallocate stack and free old instructions.
- (Modify_CVT_Check, Ins_WS): Switch to regular memory allocation.
- * src/truetype/ttinterp.h (Update_Max): Removed.
- 2023-03-06 David PROVENT <[email protected]>
- Added information about the zlib version update in the changelog
- 2023-03-06 Alexei Podtelezhnikov <[email protected]>
- Fix a couple of MSVC warnings.
- * src/base/ftcalc.c (FT_MulAddFix): Add cast.
- * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Ditto.
- 2023-03-05 Alexei Podtelezhnikov <[email protected]>
- * builds/windows/vc2010/freetype.vcxproj: Suppress C4267 on _WIN64.
- This usually comes from `strlen` returning 64-bit `size_t`, which
- we often assign to 32-bit `FT_ULong` on Windows-64 (LLP64).
- 2023-03-05 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffparse.c (cff_parser_run): Thinko.
- 2023-03-05 Alexei Podtelezhnikov <[email protected]>
- [cff] Clean up CharString number encoding.
- * src/cff/cffparser.c (cff_parser_run): Work with signed numbers.
- 2023-03-05 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffparse.c (cff_parser_run): Fix variable type.
- 2023-03-04 Alexei Podtelezhnikov <[email protected]>
- [cff] Clean up memory management in the old engine.
- * src/cff/cffparse.c (finalize_t2_strings): Fix NULL-dereferencing
- in the out-of-memory situation, use `FT_FREE`.
- (cff_parser_run): Use FreeType memory allocation macros and avoid
- uninitialized pointers.
- 2023-03-04 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffobjs.c (cff_size_init): Synonymous change.
- 2023-03-04 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/sfobjs.c (sfnt_load_face): Shorten de-referencing.
- 2023-03-04 Alexei Podtelezhnikov <[email protected]>
- [pfr] Shorten de-referencing.
- * src/pfr/pfrobjs.c (pfr_face_done, pfr_face_init): Use closer `memory`.
- * src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove `loader`.
- 2023-03-03 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffobjs.c (cff_size_get_globals_funcs): Shorten de-referencing.
- 2023-03-03 Alexei Podtelezhnikov <[email protected]>
- [cff,cid,type1] Shorten de-referencing.
- * src/cff/cffobjs.c (cff_clot_init): Use immediate library reference.
- * src/cid/cidobjs.c (cid_slot_init): Ditto.
- * src/type1/t1objs.c (T1_GlyphSlot_Init): Ditto.
- 2023-03-02 Alexei Podtelezhnikov <[email protected]>
- * configure: Use `sed` instead of `grep`.
- This is more portable and consistent with `autogen.sh`.
- 2023-03-02 Ben Wagner <[email protected]>
- Avoid strtol on non-null-terminated data.
- Technically, `strtol` can only be used with C strings terminated with
- `\0`. CID data is not generally null-terminated and often does not
- contain a `\0` if it is hex-encoded. AddressSanitizer with `ASAN_OPTIONS`
- containing `strict_string_checks=1` verifies this by using an adversarial
- `strtol` that always reads to the terminating `\0`.
- To avoid undefined behavior from `strtol` in `cid_parser_new`, use the
- parser to parse the tokens instead of attempting to parse them ad-hoc.
- This will internally use `PS_Conv_Strtol` to parse the integer, which
- respects the parser's limits and directly implements the PostScript
- parsing rules for integers.
- * src/cid/cidparse.c (cid_parser_new): Use the parser to parse the
- tokens.
- Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1420329
- 2023-03-02 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffload.c (cff_subfont_load): Synonymous update.
- 2023-03-01 ubawurinna <[email protected]>
- * src/gzip/README.freetype: Update version.
- 2023-03-01 ubawurinna <[email protected]>
- [gzip] Fix static linking.
- Without this patch, static linking with MS Visual Studio causes linking
- errors.
- * src/gzip/ftgzip.c: Set `ZEXPORT` to nothing and `ZEXTERN` to static for
- all compilers.
- 2023-03-01 Werner Lemberg <[email protected]>
- * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update.
- This follows
- https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00200.html
- 2023-02-28 Alexei Podtelezhnikov <[email protected]>
- [truetype] Treat 38 as 40 without Infinality.
- * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Reinstate.
- * src/truetype/ttdriver.c (tt_property_set): Fallback from 38 to 40.
- 2023-02-26 Werner Lemberg <[email protected]>
- * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update.
- This follows
- https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00159.html
- 2023-02-26 Werner Lemberg <[email protected]>
- * src/*: Replace leading underscores with trailing ones in dummy variables.
- This is to avoid clang warnings.
- 2023-02-26 Karl Berry <[email protected]>
- * configure: Don't hardcode `grep -E`.
- TeXLive still supports Solaris 5.10, where the system's `grep` doesn't
- accept the `-E` option. We thus introduce an `EGREP` variable that is set
- to either `grep -E` or `-egrep`.
- 2023-02-26 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffload.c (cff_encoding_load): Optimize array zeroing.
- This is unnecessary for predefined standard and expert encodings.
- Even for custom encodings the arrays might be already zeroed when
- CFF_FontRec is created but we keep it just in case.
- 2023-02-25 Alexei Podtelezhnikov <[email protected]>
- * src/type1/t1load.c (T1_Get_MM_Var): Optimize array zeroing.
- 2023-02-25 Tamir Duberstein <[email protected]>
- * src/base/ftsystem.c (ft_ansi_stream_io): Avoid undefined behaviour.
- Also short-circuit on `offset` to avoid checking `count` a second time when
- `ft_ansi_stream_io` is used for reading.
- Per ISO/IEC 9899:
- If an argument to a function has an invalid value (such as a value outside
- the domain of the function, or a pointer outside the address space of the
- program, or a null pointer, or apointer to non-modifiable storage when the
- corresponding parameter is not const-qualified) or a type (after
- promotion) not expected by a function with variable number of arguments,
- the behavior is undefined. If a function argument is described as being
- an array, the pointer actually passed to the function shall have a value
- such that all address computations and accesses to objects (that would be
- valid if the pointer did point to the first element of such an array) are
- in fact valid.
- Per IEEE Std 1003.1:
- size_t fread(void *restrict ptr, size_t size, size_t nitems,
- FILE *restrict stream);
- The `fread` function shall read into the array pointed to by `ptr` up to
- `nitems` elements whose size is specified by `size` in bytes, from the
- stream pointed to by `stream`.
- Since the first argument to `fread` is described as being an array, its
- behavior is undefined when that argument is a null pointer.
- Per the documentation on `ft_ansi_stream_io`:
- If `count' is zero (this is, the function is used for seeking), a non-zero
- return value indicates an error.
- Thus the intent is clear, and the call to `fread` can be skipped, avoiding
- undefined behaviour.
- 2023-02-21 Alexei Podtelezhnikov <[email protected]>
- [raster] Clean up contour indexing.
- * src/raster/ftraster.c (Decompose_Curve, Convert_Glyph): Use consistent
- index types (Int) and compact iterations.
- 2023-02-21 Alexei Podtelezhnikov <[email protected]>
- [autofit] Clean up contour indexing.
- * src/autofit/aflatin.c (af_latin_metrics_init_blues): Refactor.
- * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Ditto.
- 2023-02-21 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftoutln.c (FT_Outline_Check): Fix C4701 warning.
- 2023-02-21 Alexei Podtelezhnikov <[email protected]>
- * src/sdf/ftsdf.c (get_min_distance_cubic): Fix C4701, typos.
- 2023-02-20 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftstroke.c (FT_Stroker_ParseOutline): Clean up contour indexing.
- 2023-02-20 Alexei Podtelezhnikov <[email protected]>
- [base] Clean up contour indexing.
- * src/base/ftoutln.c (FT_Outline_Reverse, FT_Outline_EmboldenXY,
- FT_Outline_Get_Orientation): Set the first and last indexes together.
- (FT_Outline_Decompose): Ditto and check them more stringently.
- * src/smooth/ftgrays.c (FT_Outline_Decompose)[STANDALONE_]: Ditto.
- 2023-02-20 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftoutln.c (FT_Outline_Check): Update error code, clean up.
- 2023-02-17 Alexei Podtelezhnikov <[email protected]>
- [truetype] Hide Infinality.
- Remove Infinality as an option before its complete extraction.
- * include/freetype/ftoption.h: Remove the Infinality option.
- * devel/ftoption.h: Ditto.
- * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Is 40 now.
- 2023-02-17 Alex Ringlein <[email protected]>
- * src/base/ftoutln.c (FT_Outline_Reverse): Anchor first contour points.
- A cubic contour has to always start from an on-point. Therefore, we
- should not swap the first with the last point, which might be off, and
- obtain an invalid contour. This does not matter for conic contours.
- If anything, it also saves one swap there. Fixes #1207.
- 2023-02-16 Werner Lemberg <[email protected]>
- Documentation improvement for `FT_Bitmap`.
- Fixes #1205.
- 2023-02-10 Alexei Podtelezhnikov <[email protected]>
- [type1/MM] Round design coordinates.
- The design coordinates for MM fonts were not rounded. For example,
- `FT_Get_Var_Design_Coordinates` returned values with fractional part.
- * src/type1/t1load.c (mm_axis_unmap): Refactor with rounding.
- * include/freetype/ftmm.h (FT_Var_Axis, FT_Set_Var_Design_Coordinates,
- FT_Get_Var_Design_Coordinates): Reword documentation.
- 2023-02-09 Jan Alexander Steffens (heftig) <[email protected]>
- * builds/meson/parse_modules_cfg.py: Handle `gxvalid` and `otvalid`.
- These need a name mapping similar to what was done for other modules,
- or linking will fail.
- 2023-02-09 Werner Lemberg <[email protected]>
- * build/toplevel.mk (do_dist): Fix typo.
- 2023-02-09 Werner Lemberg <[email protected]>
- * Version 2.13 released.
- ==========================
- Tag sources with `VER-2-13-0'.
- * docs/VERSION.TXT: Add entry for version 2.13.
- * docs/CHANGES: Updated.
- * README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html, builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
- docs/freetype-config.1: s/2.12.1/2.13/, s/2121/2130/.
- * include/freetype/freetype.h (FREETYPE_MINOR): Set to 13.
- (FREETYPE_PATCH): Set to 0.
- * builds/unix/configure.raw (version_info): Set to 25:0:19.
- * CMakeLists.txt (VERSION_MINOR): Set to 13.
- (VERSION_PATCH): Set to 0.
- 2023-02-09 Alexei Podtelezhnikov <[email protected]>
- Comment on `FT_GlyphSlot_Slant'.
- 2023-02-08 Werner Lemberg <[email protected]>
- [autofit] Fix 'multi' compilation.
- * src/autofit/ft-hb.c: Decorate with `FT_LOCAL_DEF`.
- Add ANSI boilerplate code for otherwise empty file.
- * src/autofit/ft-hb.h: Include `compiler-macros.h` and `freetype.h`.
- Use `FT_BEGIN_HEADER` and `FT_END_HEADER`.
- Decorate with `FT_LOCAL`.
- * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `ft-hb.c`.
- 2023-02-08 Werner Lemberg <[email protected]>
- Fix `FT_LOCAL` and `FT_LOCAL_DEF` tags.
- 2023-02-08 Werner Lemberg <[email protected]>
- Fix 'fall-through' warning messages.
- Modern compilers get more insistent on that...
- * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Define.
- * src/*: Use it instead of `/* fall through */` comments.
- 2023-02-08 Werner Lemberg <[email protected]>
- For debugging, avoid implicit conversion from integer to double.
- Otherwise we get zillions of clang 15 warnings.
- * src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c,
- src/base/ftobjs.c, src/base/ftoutln.c, src/cff/cffparse.c,
- src/raster/ftraster.c, src/sfnt/pngshim.c, src/truetype/ttgload.c,
- src/truetype/ttgxvar.c, src/truetype/ttobjs.c, src/type1/t1gload.c: Use
- `double` cast in debugging and tracing macros.
- 2023-02-08 Werner Lemberg <[email protected]>
- Avoid reserved identifiers that are globally defined.
- This is mandated by the C99 standard, and clang 15 produces zillions of
- warnings otherwise.
- * devel/ftoption.h, include/freetype/config/ftoption.h,
- include/freetype/internal/ftmemory.h, src/autofit/afhints.h,
- src/autofit/afmodule.c, src/autofit/aftypes.h, src/base/ftadvanc.c,
- src/base/ftdbgmem.c, src/base/ftstream.c, src/bdf/bdflib.c,
- src/truetype/ttinterp.c: Replace identifiers of the form `_foo` with `foo_`.
- 2023-02-08 Werner Lemberg <[email protected]>
- Fix minor clang and clang++ warnings.
- 2023-02-08 Alexei Podtelezhnikov <[email protected]>
- [truetype, type1] Additional variation tags.
- Sync with
- https://learn.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg#registered-axis-tags
- * src/truetype/ttgxvar.h (TTAG_ital): New tag.
- * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use it.
- * src/type1/t1load.c (T1_Get_MM_Var): Handle 'slnt' and 'ital'.
- 2023-02-08 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftsynth.c (FT_GlyphSlot_Slant): Add vertical slant.
- * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Update it.
- 2023-02-08 anuj <[email protected]>
- [sdf] Use 32-bit integers internally.
- * src/sdf/ftsdfcommon.h (FT_16D16, FT_26D6): Use 32-bit integers
- instead of `FT_Fixed` for internal data types. `FT_Fixed` i.e.
- `signed long` is 64-bit on some architectures.
- 2023-02-07 Werner Lemberg <[email protected]>
- docs/CHANGES: Updated.
- 2023-02-04 Alexei Podtelezhnikov <[email protected]>
- Comment on optional ascender and descender.
- 2023-02-04 Alexei Podtelezhnikov <[email protected]>
- * src/type1/t1afm.c (T1_Read_Metrics): Reaffirm ascender and descender.
- 2023-02-04 Alexei Podtelezhnikov <[email protected]>
- * src/type1/t1afm.c (T1_Read_Metrics): Validate ascender and descender.
- The ascender and descender are optional in the AFM specifications.
- They could be omitted or even set to zero, e.g., in the current release
- of URW++ base 35 fonts.
- 2023-02-02 Werner Lemberg <[email protected]>
- * src/cff/cffgload.c (cff_slot_load): Avoid memory leak.
- Fixes issue #1204.
- 2023-02-01 Werner Lemberg <[email protected]>
- * src/truetype/ttgxvar.c (tt_var_get_item_delta): Check `face->blend`.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=55581
- 2023-02-01 Werner Lemberg <[email protected]>
- * docs/CHANGES: Add news for 'freetype-demos'.
- 2023-01-30 Werner Lemberg <[email protected]>
- * subprojects/harfbuzz.wrap, subprojects/libpng.wrap: Updated.
- 2023-01-28 Werner Lemberg <[email protected]>
- Minor changes.
- Comment fixes, typos, removing of unnecessary parentheses.
- 2023-01-28 Werner Lemberg <[email protected]>
- Whitespace.
- 2023-01-27 Behdad Esfahbod <[email protected]>
- [ttgxvar] Fix crash in COLRv1.
- This is a stopgap until issue #1202 is properly fixed.
- * src/truetype/ttxgvar.c (tt_var_get_item_delta): Check `normalizedcoords`.
- 2023-01-19 Werner Lemberg <[email protected]>
- The 'COLR' v1 API will no longer be experimental in the next release.
- 2023-01-18 Alexei Podtelezhnikov <[email protected]>
- * docs/oldlogs/ChangeLog.210: Typos.
- 2023-01-18 Ben Wagner <[email protected]>
- [base] Fix typo.
- * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Request module 't1cid',
- not 'cid'.
- 2023-01-18 Ben Wagner <[email protected]>
- [base] Return error if requested driver is not found.
- In `open_face_from_buffer` it is possible that a driver is requested but
- FreeType was built without the requested module. Return an error in this
- case to indicate that the request could not be satisfied, rather than trying
- all existing driver modules.
- * src/base/ftobjs.c (open_face_from_buffer): Return `FT_Err_Missing_Module`
- if a driver is specified but not found.
- 2023-01-18 Dominik Röttsches <[email protected]>
- [sfnt] Avoid nullptr dereference in reading malformed 'COLR' v1 table.
- Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1408044.
- * src/sfnt/ttcolr.c (tt_face_load_colr): When the 'COLR' v1 table header is
- too small, don't deallocate delta set index map structures.
- 2023-01-17 Werner Lemberg <[email protected]>
- * src/tools/update-copyright: Allow execution from other repositories.
- We use this for `freetype-demos`.
- 2023-01-17 Werner Lemberg <[email protected]>
- Update all copyright notices.
- 2023-01-17 Werner Lemberg <[email protected]>
- * src/tools/no-copyright: Updated.
- 2023-01-17 Ben Wagner <[email protected]>
- [base] 'close' callback may not use `stream->memory`.
- The documentation for `FT_StreamRec::memory` states that it 'shouldn't be
- touched by stream implementations'. This is true even for internal
- implementations of the 'close' callback, since it is not guaranteed that
- `memory` will even be set when the 'close' callback occurs.
- * src/base/ftobjs.c (new_memory_stream): stash current `memory` in
- `stream->descriptor`.
- (memory_stream_close): Use it.
- 2023-01-17 Ben Wagner <[email protected]>
- [base] Always close user-provided stream.
- The `FT_Open_Face` documentation states
- > If `FT_OPEN_STREAM` is set in `args->flags`, the stream in `args->stream`
- > is automatically closed before this function returns any error (including
- > `FT_Err_Invalid_Argument`).
- However, if the user provides a stream in `args.stream` with
- `FT_OPEN_STREAM` set and a `close` function, but then for some reason passes
- NULL for `aface` and a non-negative `face_index`, the error
- `Invalid_Argument` is returned but the `close` callback will not be called
- on the user-provided stream. This may cause resource leaks if the caller is
- depending on the `close` callback to free resources.
- The difficulty is that a user may fill out a `FT_StreamRec` and pass its
- address as `args.stream`, but the stream isn't really 'live' until
- `FT_Stream_New` is called on it (and `memory` is set). In particular, it
- cannot really be cleaned up properly in `ft_open_face_internal` until the
- stream pointer has been copied into the `stream` local variable.
- * src/base/ftobj.c (ft_open_face_internal): Ensure that user-provided
- `args.stream.close` is called even with early errors.
- 2023-01-17 Ben Wagner <[email protected]>
- [base] Fix leak of internal stream marked external.
- `open_face_from_buffer` allocates a new `FT_Stream` to pass to
- `ft_open_face_internal`. Because this is an `FT_OPEN_STREAM`,
- `ft_open_face_internal` will mark this as an 'external stream', which the
- caller must free. However, `open_face_from_buffer` cannot directly free it
- because the stream must last as long as the face. There is currently an
- attempt at this by clearing the 'external stream' bit after
- `open_face_from_buffer` returns successfully. However, this is too late as
- the original stream may have already been closed and the stream on the face
- may not be the same stream as originally passed.
- It is tempting to use `FT_OPEN_MEMORY` and let `ft_open_face_internal`
- create the stream internally. However, with this method there is no means
- to pass through a 'close' function to the created stream to free the
- underlying data, which must be owned by the stream.
- A possibility is to check on success if the stream of the face is the same
- as the original stream. If it is then unset the external flag. If not,
- then free the original stream. Unfortunately, while no current
- implementation does so, it is possible that the face still has the original
- stream somewhere other than as the `FT_FaceRec::stream`. The stream needs
- to remain available for the life of the face or until it is closed,
- whichever comes earlier.
- The approach taken here is to let the stream own itself. When the stream is
- closed it will free itself.
- * src/base/ftobjs.c (memory_stream_close): Free `stream`.
- (open_face_from_buffer): Simplify error handling, since
- `ft_open_face_internal` always closes `args.stream` on any error.
- Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54930
- 2023-01-16 Werner Lemberg <[email protected]>
- sr/*.c: Various minor fixes.
- * src/autofit/ft-hb.c (_hb_ft_reference_table): Call `FT_UNUSED` after
- variable declarations.
- * src/gxvalid/gxvjust.c (gxv_just_widthDeltaClusters_validate): Eliminate
- unused variable.
- * src/gzip/ftgzip.c: Don't call GCC '-Wstrict-prototypes' pragma for C++
- compiler.
- * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): Remove final semicolon to avoid
- compiler warning.
- * src/sfnt/ttsvg.c (tt_face_load_svg_doc): Fix signedness warning.
- 2023-01-16 Dominik Röttsches <[email protected]>
- [sfnt] Remove temporary runtime flag for variable 'COLR' v1.
- Fixes #1187.
- * src/sfnt/ttcolr.c (top level, read_paint, tt_face_load_colr,
- tt_face_free_colr, get_deltas_for_var_index_base,
- tt_face_get_color_glyph_clipbox, tt_face_get_colorline_stops): Remove macro
- definition `VARIABLE_COLRV1_ENABLED` and its usage.
- * src/truetype/ttdriver.c (tt_property_set): Remove parsing of
- 'TEMPORARY-enable-variable-colrv1' property name.
- * src/truetype/ttobjs.h (TT_DriverRec): Remove `enable_variable_colrv1`
- flag.
- 2023-01-07 Werner Lemberg <[email protected]>
- * src/autofit/ft-hb.c (_hb_ft_reference_table): Minor integration fixes.
- 2023-01-07 Ben Wagner <[email protected]>
- [truetype] Reset cvt and storage in context load.
- Currently the cvt and storage are saved and restored in `TT_RunIns`.
- However, this is too granular as the cvt and storage area should be set to
- the original cvt and storage area only when setting up the hinting context.
- This allows for the cvt and storage area to be modified while parsing
- multiple glyphs, as is the case with composite glyphs.
- * src/truetype/ttinterp.h (TT_ExecContextRec): Remove `origCvt` and
- `origStorage`.
- * src/truetype/ttinterp.c (TT_RunIns): Don't save and restore the cvt and
- storage area.
- (Modify_CVT_Check, Ins_WS): Switch from "if in glyph and using original data
- do copy on write" to "if in glyph and not using glyph specific data do copy
- on write".
- 2023-01-06 Matthias Clasen <[email protected]>
- [autofit] Don't depend on 'hb-ft'.
- The circular dependency is still there, but at least we no longer depend on
- the HarfBuzz API that is only present if HarfBuzz has been built with
- FreeType support, making the bootstrapping a bit easier.
- * src/autofit/ft-hb.c, src/autofit/ft-hb.h: New files, providing
- `_hb_ft_font_create`, which is more or less a verbatim copy of the
- corresponding HarfBuzz code from file `hb-ft.cc`.
- * src/autofit/afglobal.c (af_face_globals_new): Use it.
- * src/autofit/afshaper.h: Don't include `hb-ft.h` but `ft-hb.h`.
- * src/autofit/autofit.c: Include `ft-hb.c`.
- * LICENSE.TXT: Updated.
- 2023-01-06 Ben Wagner <[email protected]>
- [truetype] Keep variation store consistent.
- `tt_var_load_item_variation_store` fills out a `GX_ItemVarStore`. While it
- may return an error, the item store must be left in a consistent state so
- that any use or destruction of the item store can properly use or free the
- data in it. Before this change the counts from the font data were read
- directly into the item store before the actual allocation of the arrays to
- which they referred. There exist many opportunities between the time the
- counts are read and the arrays are allocated to return early due to invalid
- data. When this happened the item store claimed to have entires it actually
- did not, leading to crashes later when it was used.
- Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54449
- * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Read the counts
- into local variables and store them in the item store only after the related
- arrays are actually created on the item store.
- 2023-01-05 Ben Wagner <[email protected]>
- [base] Report used stream's external status.
- In `open_face` the initial stream is set on the face, along with the
- information about if FreeType is the owner of the stream object itself. The
- loaders may in the course of their work replace this stream with a new
- stream (as is the case for 'woff' and 'woff2'), which may have a different
- ownership than the initial stream object (likely the original stream object
- is owned by the user and is external, while the new stream object is created
- internally to FreeType and is internal). When the stream is replaced, the
- face's flags are updated with the new ownership status.
- However, `open_face` cannot itself free this stream as its caller
- `ft_open_face_internal` is responsible for this. In addition, in the case
- of an error `open_face` cannot return an actual face with the new stream and
- its ownership status to the caller. As a result, it must pass this
- information back to the caller as a sort of "failed face" so that the caller
- can clean up.
- `open_face` was already passing back the new stream but was not passing back
- the stream ownership information. As a result the stream may not have been
- free'd when needed.
- Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54700
- * src/base/ftobjs.c (open_face): Pass back the ownership information as
- well.
- (ft_open_face_internal): Updated.
- 2023-01-05 Noah Cabral <[email protected]>
- fix spelling err in LICENSE.txt
- 2023-01-05 Dominik Röttsches <[email protected]>
- [sfnt] Fix color stop bounds check calculation at table end.
- Fixes https://bugs.chromium.org/p/skia/issues/detail?id=14021
- * src/sfnt/ttcolr.c (VAR_IDX_BASE_SIZE): New macro.
- (tt_face_get_colorline_stops): Fix off-by-one bounds check calculation, take
- `VarColorStop` into account, and hopefully make it easier to read.
- 2023-01-05 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftobjs.c (FT_Request_Metrics): Avoid division by zero.
- The division-by-zero might happen in broken fonts (see #1194).
- Instead of returning a huge number from FT_DivFix and failing
- to scale later, we now bail immediately.
- 2022-12-20 Alexei Podtelezhnikov <[email protected]>
- [psaux] Delay the upem validity assertion.
-
- Fixes #1194.
-
- * src/psaux/psft.c (cf2_getUnitsPerEm): Remove the upem assert.
- (cf2_checkTransform): Assert the upem validity after checking the scale.
- 2022-12-14 David Vanderson <[email protected]>
- Werner Lemberg <[email protected]>
- [gzip] Make static compilation not leak global symbols.
- * src/gzip/ftgzip.c (HAVE_HIDDEN): Do not define; it is no longer needed
- because everything is static.
- (HAVE_MEMCPY): Define.
- (zcalloc, zcfree): Remove no longer needed definitions (because `Z_SOLO` is
- active).
- * src/gzip/patches/freetype-zlib.diff: Regenerated.
- Fixes #1146.
- 2022-12-14 Werner Lemberg <[email protected]>
- * src/gzip/ftzconf.h: Updated to zlib 1.2.13.
- I forgot to copy that file.
- 2022-12-14 Werner Lemberg <[email protected]>
- * builds/unix/configure.raw: Don't check for `memcpy` and `memmove`.
- We expect a C99 compiler, and both functions are part of this standard.
- 2022-12-13 Werner Lemberg <[email protected]>
- [sdf, sfnt] Handle minor compiler warnings.
- * src/sdf/ftsdf.c (get_min_distance_conic): Initialize `nearest_point`.
- * src/sfnt/ttsvg.c (find_doc): Initialize `mid_doc`.
- Fixes #1195.
- 2022-12-07 Werner Lemberg <[email protected]>
- * subprojects/zlib.wrap: Micro-update from upstream.
- 2022-12-06 Jiří Malák <[email protected]>
- * include/freetype/internal/ftcalc.h (FT_MSB): Support Open Watcom 2.0.
- Closes !232.
- 2022-11-23 Luca Bacci <[email protected]>
- * src/base/ftdbgmem.c (ft_mem_source_compare): Add FT_COMPARE_DEF.
- Closes !230.
- 2022-11-21 Alexei Podtelezhnikov <[email protected]>
- * src/autofit/afloader.c (af_loader_load_glyph): Remove `size` check.
- This is done by `FT_Load_Glyph`.
- 2022-11-18 Alexei Podtelezhnikov <[email protected]>
- Comments added.
- 2022-11-16 Johan Matsson <mjunix@ at github>
- * src/autofit/afloader.c (af_loader_load_glyph): Fix dereference.
- This must happen after the NULL check.
- Taken from
- https://github.com/freetype/freetype/pull/2
- 2022-11-15 Alexei Podtelezhnikov <[email protected]>
- * src/pcf/pcfutil.c ({Two,Four}ByteSwap): Use builtins or shifts.
- We trust glibc which uses shifts or builtins to swap bytes. This
- must be more efficient.
- 2022-11-14 Werner Lemberg <[email protected]>
- * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Integer overflow.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50462
- 2022-11-14 Loïc Yhuel <[email protected]>
- [meson] Use generated ftmodule.h
- ftmodule.h is generated at the root of the build directory, but FT_CONFIG_MODULES_H
- (freetype/config/ftmodule.h) is used instead.
- This makes the build fail when disabling modules in modules.cfg.
- * meson.build (harfbuzz_dep): Add '-DFT_CONFIG_MODULES_H=<ftmodule.h>'.
- 2022-11-14 Loïc Yhuel <[email protected]>
- [meson] Fix generated ftmodule.h
- The sdf module wasn't recognized, so the generated ftmodule.h had "None_renderer_class".
- * builds/meson/parse_modules_cfg.py: Handle sdf in RASTER_MODULES.
- 2022-11-12 Dominik Röttsches <[email protected]>
- Add `TT_CONFIG_OPTION_NO_BORING_EXPANSION` configuration macro.
- This gives users a possibility to deactivate new features not (yet) in the
- OpenType standard.
- * include/freetype/config/ftoption.h, devel/ftoption.h
- (TT_CONFIG_OPTION_NO_BORING_EXPANSION): New macro.
- * src/truetype/ttgxvar.c (ft_var_load_avar): Use it to disable 'avar'
- version 2.0 support.
- 2022-11-12 Behdad Esfahbod <[email protected]>
- [truetype] Improve bounds checks for `ItemVariationStore`.
- * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Move bounds check ...
- (tt_var_get_item_delta): ... to this function, because it is safer. For
- example, the 'avar' table 2.0 codepath was not performing a bounds check at
- all.
- 2022-11-12 Behdad Esfahbod <[email protected]>
- [truetype] In `ItemVariationStore`, value 0xFFFF for `dataCount` is valid.
- It corresponds to outer indices of 0 to 0xFFFE.
- * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Remove invalid
- code.
- 2022-11-11 Alexei Podtelezhnikov <[email protected]>
- [pcf] Improve CMap efficiency and readability.
- * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Check and walk
- the encoding array indexes.
- 2022-11-10 Sam James <[email protected]>
- Fix `-Wstrict-prototypes`.
- * builds/unix/configure.raw: Fix `-Wstrict-prototypes`.
- Clang 16 warns on these and they will be dropped in C23.
- * builds/unix/freetype2.m4: Ditto.
- 2022-11-09 Ben Wagner <[email protected]>
- [truetype] Check avar_segment before access
- * src/truetype/ttgxvar.c (tt_done_blend): check `avar_segment` before
- accessing to free its `correspondence`.
- Reported as:
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53062
- 2022-11-09 Ben Wagner <[email protected]>
- [truetype] Restore behavior of ft_var_load_hvvar
- * src/truetype/ttgcvar.c (ft_var_load_hvvar): restore previous behavior
- In a previous change [0] the behavior of `ft_var_load_hvvar` was changed
- to not load the item variation store if it was at offset 0, but not
- return an error when this happened. This broke any users, like
- `tt_hvadvance_adjust`, that rely on successful completion of
- `ft_var_load_hvvar` to imply that returned table's `itemStore` had been
- initialized. This lead such users to dereference NULL.
- This change appears to have been unintentional and unrelated to the
- actual avar2 changes. As a result, fix these NULL dereferences by
- restoring the code to always attempt to initialize the `itemStore`.
- [0] ae4eb996 "[truetype] Add support for `avar` table 2.0 format."
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53061
- 2022-11-08 Werner Lemberg <[email protected]>
- docs/CHANGES: Updated.
- 2022-11-08 suzuki toshiya <[email protected]>
- [build] use AC_CHECK_PROG() macro for libpng-config detection
- * builds/unix/configure.raw: use AC_CHECK_PROG() instead of `which` to find `libpng-config`.
- 2022-11-08 suzuki toshiya <[email protected]>
- [build] fix for make multi
- Fix "make multi" by MR !223
- * include/freetype/internal/services/svmm.h: include ftmm.h to define FT_Get_MM_Func.
- * src/truetype/ttgxvar.h: include ftmmtypes.h to use GX_AVarTable properly.
- * src/base/ftmac.c: include ftdebug.h to use FT_THROW() properly.
- 2022-11-08 Alexei Podtelezhnikov <[email protected]>
- * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search.
- This is mostly for consistency because PFR fonts with bitmap strikes
- do not seem to exist.
- 2022-11-06 Alexei Podtelezhnikov <[email protected]>
- [bdf, pfr, psnames] Accelarate charmap searches.
- The binary searches within charmaps can be accelerated because they
- often contain dense continuous blocks of character codes. Within such
- blocks, you can predict matches based on misses. This method has been
- deployed in `bdf` since 0f122fef34; we only refactor it there. We now
- use it in `pfr` and `psnames`, which speeds up the unicode charmap
- access by about 50% in PFR and Type 1 fonts.
- * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Refactor.
- * src/pfr/pfrcmap.c (pfr_cmap_char_{index,next}): Predict `mid` based
- on the mismatch distance.
- * src/psnames/psmodule.c (ps_unicodes_char_{index,next}): Ditto.
- 2022-11-04 Behdad Esfahbod <[email protected]>
- [truetype] Add support for `avar` table 2.0 format.
- See
- https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md
- for the specification.
- Currently, this is implemented only in most recent OS versions on Apple
- platforms and in the HarfBuzz library, but it is expected to be added to the
- OpenType standard soon.
- * src/truetype/ttgxvar.h (GX_AVarTableRec): New structure.
- (GX_BlendRec): Use it to replace `avar_segment` with `avar_table`.
- * src/truetype/ttgxvar.c (ft_var_load_avar): Load new table version.
- (ft_var_to_normalized, tt_done_blend): Extend for new format.
- (ft_var_load_hvvar, ft_var_to_design): Updated.
- 2022-10-24 Werner Lemberg <[email protected]>
- Replace '1/64th' (and similar entries) with '1/64' in docs and comments.
- 2022-10-24 Ivan Panchenko <[email protected]>
- * include/freetype/*: Fix documentation typos.
- 2022-10-21 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgload.c: Cosmetic changes.
- 2022-10-21 Alexei Podtelezhnikov <[email protected]>
- [cff, truetype] Simplify SVG metrics scaling.
- Use pre-calculated scaling factors. Also, the advance widths used
- to be rounded, which was incorrect.
- * src/cff/cffgload.c (cff_slot_load): Use `x_scale` and `y_scale`.
- * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
- 2022-10-20 Werner Lemberg <[email protected]>
- * subprojects/zlib.wrap: Update to zlib version 1.2.13.
- 2022-10-18 Dominik Röttsches <[email protected]>
- [sfnt] Additional bounds checks for `COLR` v1 table handling.
- * src/sfnt/ttcolr.c (read_paint): Add `colr` argument, necessary for...
- ... another use of `ENSURE_READ_BYTES`.
- Update callers.
- (tt_face_get_paint_layers): Ensure that the 4-byte paint table
- offset can be read.
- This is a follow-up to !124 and issue
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404
- 2022-10-18 Werner Lemberg <[email protected]>
- [gzip] Update sources to zlib 1.2.13.
- 2022-10-18 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Simplify calculations.
- 2022-10-18 Werner Lemberg <[email protected]>
- Minor formatting.
- 2022-10-18 Dominik Röttsches <[email protected]>
- [sfnt] Guard individual `COLR` v1 paint field reads.
- * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): New macro.
- (read_paint): Use it – after the start pointer `p` has been checked for
- whether it allows reading the format byte, each successive paint table field
- read need to be bounds-checked before reading further values.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404
- 2022-10-17 Xiang Xiao <[email protected]>
- * builds/toplevel.mk: Prefix all paths with `$(TOP_DIR)/`.
- This is useful for builds that are not started from the root directory.
- 2022-10-17 Liu Kunpeng(柳鲲鹏) <[email protected]>
- * src/base/ftsynth.c (FT_GlyphSlot_Slant): New API with custom slant.
- * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Declare it.
- 2022-10-15 Alexei Podtelezhnikov <[email protected]>
- Note the lack of floating-point data types.
- 2022-10-10 Werner Lemberg <[email protected]>
- [cff] Remove `FT_CONFIG_OPTION_NO_GLYPH_NAMES`.
- This ancient option stayed completely undocumented. Given that the 'cff'
- driver requires the 'psnames' module, it makes no sense today to have this
- macro.
- * src/cff/cffdrivr.c (cff_services), src/cff/cffobjs.c (cff_face_init):
- Remove corresponding conditional code.
- 2022-10-10 Werner Lemberg <[email protected]>
- Synchronize `ftoption.h` flavours.
- 2022-10-10 Werner Lemberg <[email protected]>
- Minor comment changes.
- 2022-10-05 Alexei Podtelezhnikov <[email protected]>
- Improve FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name.
- 2022-10-04 Alexei Podtelezhnikov <[email protected]>
- [autofit] Reset the face charmap directly.
- There is no need to validate the original charmap in `FT_Set_Charmap`.
- It can be reset directly.
- * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
- Use direct assignment.
- * src/autofit/af{latin,cjk,indic}.c (af_latin_metrics_init): Ditto.
- 2022-10-04 Alexei Podtelezhnikov <[email protected]>
- * src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly.
- As with the previous commit, we can avoid the validation checks
- of `FT_Set_Charmap` and set it directly when choosing from the
- available list.
- 2022-10-03 Alexei Podtelezhnikov <[email protected]>
- * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid `FT_Set_Charmap`.
-
- Set charmap aggressively without all validations of `FT_Set_Charmap`
- because we take it from the available array and only temporarily.
- Even CMap Format 14 will gracefully return 0.
- 2022-10-03 Alexei Podtelezhnikov <[email protected]>
- * src/cache/ftcbasic.c (ftc_basic_family_get_count): Remove redundancy.
- 2022-09-30 Werner Lemberg <[email protected]>
- * src/psaux/pshints.c (cf2_hintmap_insertHint): Fix midpoint computation.
- Replace '(start + end) / 2' with 'start + (end - start) / 2' to avoid
- overflow.
- Fixes #1180.
- 2022-09-30 Werner Lemberg <[email protected]>
- * src/psaux/pshints.c (cf2_hintmap_build): Improve debugging output.
- 2022-09-29 mlugg <[email protected]>
- [truetype] Fix undefined pointer arithmetic.
- * src/truetype/ttgxvar.c (tt_var_get_item_delta, ft_var_load_mvar): Use
- `FT_OFFSET`.
- 2022-09-29 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Use lighter FT_DivFix.
- 2022-09-29 Ali Chraghi <[email protected]>
- [base] FT_Attach_Stream: Make `parameters` argument constant.
- 2022-09-29 Azamat Hackimov <[email protected]>
- * src/tools/*.py: Migrate to Python 3.
- Fixes #1185, closes !205. Formatting changes according to PEP8.
- 2022-09-27 Dominik Röttsches <[email protected]>
- [sfnt] Guard access in 'COLR' table when requesting child table pointer.
- * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Tighten
- pointer bounds checks.
- (get_child_table_pointer): Check whether incoming pointer `p` lies within
- the 'COLR' table.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51816
- 2022-09-27 Ben Wagner <[email protected]>
- [sfnt] Add SVG document bounds checking.
- Add a check that the document content is actually contained within the
- `SVG ` table. Without this check a malformed font may claim arbitrary
- memory as its document content.
- * src/sfnt/ttsvg.c (tt_face_load_svg): Take `numEntries` into account when
- testing 'documentRecord' extents.
- (find_doc): Rename `stream` to `document_records` for clarity.
- (tt_face_load_svg_doc): Split `doc` from `doc_list` pointer for clarity.
- Test that the document content is contained within the table.
- Ensure minimum length of document before testing for gzip format.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51812
- 2022-09-23 Alexei Podtelezhnikov <[email protected]>
- [base] Clean up the bitmap flow control.
- * src/base/ftbitmap.c (FT_Bitmap_Copy): Flip the copy if its pitch
- is trully opposite, zero is not a positive value.
- (FT_Bitmap_Convert): Set negative pitch as needed, accept negative
- alignment values.
- 2022-09-22 Alexei Podtelezhnikov <[email protected]>
- [base] Discard and recreate bitmaps for copying and converting.
-
- Reusing target bitmaps for copying and converting is permitted. It is,
- however, pointless to preserve their content before overwriting. Free-
- malloc might be faster than realloc.
-
- * src/base/ftbitmap.c (FT_Bitmap_Copy, FT_Bitmap_Convert): Free
- an old buffer and create a new one.
- 2022-09-16 Dominik Röttsches <[email protected]>
- Reject 'COLR' table if version is 1 but header too small.
- * src/sfnt/ttcolr.c (tt_face_load_colr): If the version is determined to
- be 1, then the table size has to be at least the size of the v1 header.
- Also, for peeking the number of base glyphs and entries in the layer list,
- ensure that the table is sufficiently long.
- Fixes #1179. Original patch by Sergey Temnikov.
- 2022-09-15 Werner Lemberg <[email protected]>
- * src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix format 1 handling.
- Fixes #1181.
- 2022-09-06 Dominik Röttsches <[email protected]>
- [truetype] Reject 'fvar' loading when `num_instances` is too small.
- * src/truetype/ttgxvar.c (TT_Get_MM_Var): Reject retrieving master when
- 'fvar' values locally do not match with sanitized values from initialization
- at `sfnt_init_face` time.
- Reported as
- https://bugs.chromium.org/p/chromium/issues/detail?id=1360295
- 2022-09-05 Dominik Röttsches <[email protected]>
- [sfnt] Handle variable `COLR` v1 fonts without delta set index map
- Fixes #1178.
- * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Set outer index to
- 0 and inner index to the delta index when retrieving deltas if the
- `COLR` table has no delta set index map.
- 2022-09-05 Dominik Röttsches <[email protected]>
- [sfnt] Pointer sanity checks before reading layer info in 'COLR' v0
- * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Check that the pointer to
- read from is within the 'COLR' table.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50633
- 2022-09-05 Werner Lemberg <[email protected]>
- [autofit] Minor fix.
- * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Avoid
- compiler warning.
- 2022-09-05 Dominik Röttsches <[email protected]>
- [sfnt] Don't require 'gvar' table to support variation fonts.
- Fixes #1172.
- * src/sfnt/sfobjs.c (sfnt_load_face): Tag font as Multiple Masters font if
- `fvar` is present; do not require other tables to be present.
- * src/truetype/ttgxvar.c (tt_set_mm_blend): Allow for a missing 'gvar' table
- when setting variation coordinates. However, if a 'gvar' table is actually
- present, do perform a sanity check and fail on malformedness.
- (TT_Get_MM_Var): Don't assume 'fvar' needs 'gvar' or 'CFF2 tables in all
- cases, which is an overly tight check.
- 2022-08-27 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftver.rc: Explicitly use UTF-16.
- Fixes #1177 to avoid mistranslation and other problems.
- 2022-08-26 Dominik Röttsches <[email protected]>
- [sfnt] Avoid undefined shifts in `COLR` v1 color line retrieval
- * src/sfnt/ttcolr.c (tt_face_get_colorline_stops): Disambiguate shift
- behavior by using multiplication using macros from ftcalc.h.
- Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50573
- 2022-08-21 Sean Farrell <[email protected]>
- CMakeLists.txt (FT_ENABLE_ERROR_STRINGS): New configuration option.
- This option uncomments FreeType configuration macro
- `FT_CONFIG_OPTION_ERROR_STRINGS` to make function `FT_Error_String` return
- meaningful error strings.
- This option is off by default.
- 2022-08-21 Chris Liddell <[email protected]>
- [base, type1] Better handling of out-of-memory situations.
- This follows similar code in `cff_slot_done`.
- * src/base/ftobjs.c (ft_glyphslot_done), src/type1/t1objs.c
- (T1_GlyphSlot_Done): Check `internal` pointer.
- The Type1 problems was reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50057.
- 2022-08-06 Tim-Philipp Müller <[email protected]>
- ci: bump windows image and use newer runner and vs2019
- The old 1809 runner will be decommissioned at some point.
- 2022-08-04 @udoudou <>
- * src/cache/ftcmanag.c (FTC_Manager_New): Initialize `cur_weight`.
- See !192.
- 2022-08-02 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttload.c: Trace formatting updates.
- 2022-08-02 Alexei Podtelezhnikov <[email protected]>
- * src/psaux/psobjs.c (ps_table_release): Remove redundant casting.
- 2022-08-02 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Reduce casting.
- 2022-08-02 Alexei Podtelezhnikov <[email protected]>
- [cache] Remove some casts, clean up tracing.
- * src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup):
- Clean up tracing types.
- * src/cache/ftccache.c (ftc_node_destroy): Ditto.
- * src/cache/ftcmanag.c (FTC_Manager_Check): Ditto.
- (FTC_Manager_Check, FTC_Node_Unref): Remove a cast.
- * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto.
- 2022-08-01 Alexei Podtelezhnikov <[email protected]>
- [autofit] Updated to reduce casting (cont'd).
- * src/autofit/afmodule.h (AF_ModuleRec): Change `default_script` type.
- * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
- Remove casting.
- * src/autofit/afmodule.c (af_property_{set,get}): Updated accordingly.
- 2022-08-01 Alexei Podtelezhnikov <[email protected]>
- [autofit] Updated to reduce casting.
- * src/autofit/afglobal.h (AF_FaceGlobalsRec): Change `glyph_count` type.
- * src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
- af_face_globals_get_metrics, af_face_globals_is_digit,
- af_face_globals_new): Changed local types and updated accordingly.
- * src/autofit/aflatin.c (af_latin_metrics_init_blues): Ditto.
- 2022-08-01 Alexei Podtelezhnikov <[email protected]>
- [psaux] Remove unused structure field.
- * include/freetype/internal/psaux.h (PS_TableRec): Remove `num_elems`.
- * src/psaux/psobjs.c (ps_table_new): Remoove its initialization.
- 2022-07-30 Dominik Röttsches <[email protected]>
- [sfnt] Implement VarClipBox.
- * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Depending on the
- format, read `var_index_base`, then retrieve and apply scaled deltas.
- 2022-07-30 Dominik Röttsches <[email protected]>
- [sfnt] Fix typo in clip box computation.
- * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Use appropriate
- scale factor for `yMin` and `yMax`.
- 2022-07-30 Alexei Podtelezhnikov <[email protected]>
- [autofit] Use unsigned accounting for hints.
- * src/autofit/afhints.h (AF_AxisHintsRec): Use unsigned types.
- * src/autofit/afhints.c (af_axis_hints_new_{segment,edge},
- af_glyph_hints_get_num_segments, af_glyph_hints_get_segment_offset):
- Updated accordingly.
- * src/autofit/aflatin.c (af_cjk_hints_compute_edges): Ditto.
- * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Ditto.
- 2022-07-30 Alexei Podtelezhnikov <[email protected]>
- * src/autofit/afhints.h: Remove dead code.
- 2022-07-29 Werner Lemberg <[email protected]>
- * src/base/ftglyph.c (FT_Get_Glyph): Set `*aglyph` to NULL in case of error.
- 2022-07-29 Werner Lemberg <[email protected]>
- Fix compilation if `TT_CONFIG_OPTION_GX_VAR_SUPPORT` is not set.
- * src/sfnt/ttcolr.c: Protect relevant code with
- `TT_CONFIG_OPTION_GX_VAR_SUPPORT`.
- 2022-07-29 Werner Lemberg <[email protected]>
- Fix clang14 compiler warnings.
- * include/freetype/internal/ftstream.h (FT_GET_SHORT_LE, FT_GET_USHORT_LE):
- Fix type.
- * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Always return boolean
- value.
- (tt_face_get_colorline_stops): Fix type of `var_index_base`.
- 2022-07-26 Alexei Podtelezhnikov <[email protected]>
- [pfr] Fortify the kerning code.
- Any array index must be strictly less then the array size. Therefore,
- we must reject indexes that are equal to the array size. Alternatively,
- we should move the bounds check before the index decrement but that
- would be confusing.
- In addition, it is ok to decrement zero (.notdef) and get UINT_MAX,
- which is then automatically rejected in the bounds check.
- * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix the bounds checking.
- 2022-07-26 Werner Lemberg <[email protected]>
- [pfr] Add some safety guards.
- * src/pfr/pfrload.c (pfr_phy_font_load): Check resolutions and number of
- characters.
- Fixes #1174.
- 2022-07-26 Werner Lemberg <[email protected]>
- * src/pfr/*.c: Trivial improvements and formatting.
- 2022-07-24 Werner Lemberg <[email protected]>
- * configure: s/egrep/grep -E/
- `egrep` is deprecated.
- 2022-07-23 Ben Wagner <[email protected]>
- [base] Build outlines in amortized constant time.
- When resizing the loader's points and contours, resize them to at least 1.5
- times their current size. The code currently only reserves as much space as
- is currently required, leading to O(n^2) runtime when adding points one at a
- time.
- This change does not attempt to ever shrink the loader's point and contour
- storage since this was not attempted previously either. The 1.5 multiple
- was chosen as a trade-off between potentially unused space and the runtime.
- * src/base/ftgloader.c (FT_GlyphLoader_CheckPoints): Implement it.
- Fixes #1173.
- 2022-07-09 Dominik Röttsches <[email protected]>
- [sfnt] Support variable 'COLR' v1 `PaintVarSkew*`.
- * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW`,
- `FT_COLR_PAINTFORMAT_INTERNAL_SKEW_CENTER`, and
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW_CENTER`.
- (read_paint): Handle new enumeration values.
- 2022-07-09 Dominik Röttsches <[email protected]>
- [sfnt] Support variable 'COLR' v1 `PaintVarRotate*`.
- * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE` and
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE_CENTER`.
- (read_paint): Handle new enumeration values.
- 2022-07-09 Dominik Röttsches <[email protected]>
- [sfnt] Support 'COLR' v1 variable `PaintVarScale*`.
- * src/sfnt/ttcolr.c: (FT_PaintFormatInternal): New enumeration values
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE`,
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_CENTER`,
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM`, and
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM_CENTER`.
- (read_paint): Handle new enumeration values.
- 2022-07-09 Dominik Röttsches <[email protected]>
- [sfnt] Support for 'COLR' v1 variable translate.
- * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSLATE`.
- (read_paint): Handle new enumeration value.
- 2022-07-09 Dominik Röttsches <[email protected]>
- [sfnt] Support for 'COLR' v1 variable transforms.
- * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSFORM`.
- (read_paint): Handle new enumeration value.
- 2022-07-09 Dominik Röttsches <[email protected]>
- [sfnt] Deltas for 'COLR' v1 gradient coordinates.
- * src/sfnt/ttcolr.c (read_paint) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Read and
- apply deltas to radial, linear, and sweep gradient coordinates such as 'p0',
- 'p1', 'p2', 'center', 'radii', and 'angles'.
- 2022-07-08 Dominik Röttsches <[email protected]>
- [sfnt] Support variable 'COLR' v1 color lines.
- * include/freetype/ftcolor.h (FT_ColorStopIterator): Add field
- `read_variable` to indicate whether a variation index base should be read.
- * src/sfnt/ttcolr.c: (FT_PaintFormat_Internal): New enumerations
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_LINEAR_GRADIENT`
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_RADIAL_GRADIENT`, and
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SWEEP_GRADIENT`.
- (read_color_line): New parameter `read_variable`; update callers.
- (read_paint): Handle new enumerations.
- 2022-07-07 Dominik Röttsches <[email protected]>
- [sfnt] Apply variation deltas to `PaintVarSolid`.
- * src/sfnt/ttcolr.c (FT_PaintFormat_Internal_): New enumeration
- `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`.
- (get_deltas_for_var_index_base) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New
- function to retrieve an array of delta values, which will be used for most
- of 'COLR' v1 variation formats (in follow-up commits).
- (read_paint): Add `face` parameter; update caller.
- Handle `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`.
- 2022-07-07 Dominik Röttsches <[email protected]>
- [sfnt] Check safety of cast to `TT_Driver` before accessing member.
- * src/sfnt/ttcolr.c (VARIABLE_COLRV1_ENABLED): Access
- `enable_variable_colrv1` only if driver class matches.
- 2022-07-06 Stephen Holdaway <[email protected]>
- doc: Clarify description of `FT_Stream_IoFunc`.
- The existing documentation comments on `FT_Stream_IoFunc` hinted at the dual
- seek/read behavior required for custom stream implementations to work, but
- it didn't explicitly explain it. Without looking at the internals of
- FreeType, it was easy for someone to assume their implementation should
- handle both seek and read operations all the time. If this is done, you get
- a variety of errors, but mostly just `Unknown_File_Format` (error code
- 0x02).
- 2022-07-04 Dominik Röttsches <[email protected]>
- [sfnt] Load variation store for 'COLR' v1.
- * src/sfnt/ttcolr.c: Include `ttobjs.h` temporarily.
- (VARIABLE_COLRV1_ENABLED): New temporary macro to detect whether variable
- COLRv1 is enabled.
- (Colr): New fields `var_store` and `delta_set_idx_map`.
- (tt_face_load_colr, tt_face_free_colr) [VARIABLE_COLRV1_ENABLED]: Load and
- free variation store data using the functions from the Multiple Masters
- service.
- 2022-07-03 Chris Liddell <[email protected]>
- [base] Improve error handling in `FT_GlyphLoader_CheckPoints`.
- If `FT_GlyphLoader_CreateExtra` returns an error (and a couple of other
- places), `FT_GlyphLoader_CheckPoints` would propagate the error immediately,
- rather than cleaning up the partially set up `FT_GlyphLoader`. As a
- consequence, a subsequent attempt to create a glyph could result in a crash.
- * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Ensure all the error
- conditions exits are consistent, eventually calling `FT_GlyphLoader_Reset`.
- 2022-07-03 Thomas Sondergaard <[email protected]>
- CMakeLists.txt: Provide both 'freetype' and 'Freetype::Freetype' targets.
- FreeType can be located by consuming projects that use
- `find_package(Freetype)` either via the old `MODULE` path (which uses
- `FindFreetype.cmake` supplied by CMake), or via the new `CONFIG` path (which
- uses `freetype-config.cmake` as supplied by this project). Up to this point
- the CMake module has supplied the target `Freetype::Freetype` and the config
- file provided by this project the target `freetype`. Now we supply both
- `freetype` and `Freetype::Freetype` so that consuming projects can always
- use the target `Freetype::Freetype` regardless of what path was taken by
- `find_package(Freetype)`.
- Fixes #1165.
- 2022-07-02 Werner Lemberg <[email protected]>
- include/freetype/ftmm.h: Improve documentation.
- 2022-07-01 Dominik Röttsches <[email protected]>
- [base] Round values in `FT_MulAdd_Fix`.
- This avoids regressing Blink layout tests and makes `FT_MulAdd_Fix` delta
- retrieval implementation consistent with the previous implementation, which
- used `FT_fixedToInt` and included rounding.
- * src/base/ftcalc.c (FT_MulAdd_Fix): Implement it.
- Also fix remaining `temp` initialization compilation issue.
- Fixes #1169.
- 2022-07-01 Werner Lemberg <[email protected]>
- Minor formatting.
- 2022-06-30 Dominik Röttsches <[email protected]>
- Fix initialisation of temp variable in new FT_MulAddFix
- src/truetype/ttgxvar.c (FT_MulAddFix): Initialise `temp`.
- 2022-06-29 Dominik Röttsches <[email protected]>
- [truetype] Perform variation store delta computation with 64-bit precision.
- * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Make type
- explicitly 32-bit.
- * include/freetype/internal/services/svmm.h
- (FT_Var_Get_Item_Delta_Func): Change return type to `FT_ItemVarDelta`
- * truetype/ttgxvar.h (tt_var_get_item_delta): Change return type to
- `FT_ItemVarDelta`.
- * truetype/ttgxvar.c (tt_var_get_item_delta): Store scalars and deltas
- to intermediate array, perform computation using new method
- `FT_MulAddFix`.
- 2022-06-29 Dominik Röttsches <[email protected]>
- New function `FT_MulAddFix` to compute the sum of fixed-point products.
- This function, based on the code of `FT_MulFix`, uses 64-bit precision
- internally for intermediate computations.
- * include/freetype/internal/ftcalc.h, base/ftcalc.c (FT_MulAddFix):
- Implement it.
- 2022-06-22 Werner Lemberg <[email protected]>
- CMakeLists.txt: Move inclusion of `FindPkgConfig` down.
- It must come after `CMAKE_TOOLCHAIN_FILE`.
- Fixes #1167.
- 2022-06-22 Dominik Röttsches <[email protected]>
- [sfnt] Upgrade stop_offset to FT_Fixed from FT_F2Dot14
- 2022-06-21 Alexei Podtelezhnikov <[email protected]>
- * docs/CHANGES: Announce impending Infinality removal.
- 2022-06-21 Alexei Podtelezhnikov <[email protected]>
- * ttgload.c (TT_Process_Composite_Glyph): Fix a signedness warning.
- 2022-06-21 Werner Lemberg <[email protected]>
- s/fixed point/fixed-point/
- 2022-06-21 Werner Lemberg <[email protected]>
- .gitlab-ci.yml: Correctly upgrade `meson`.
- 2022-06-21 Dominik Röttsches <[email protected]>
- Proposal: Feature control for variable COLRv1
- * include/freetype/ftdriver.h (variable-color-v1 property): Add documentation
- for variable-colr-v1 property.
- * src/truetype/ttdriver.c (tt_property_set): Ingest variable-control property
- when called, set to enable_variable_colrv1 driver flag.
- * src/truetype/ttobjs.h (TT_DriverRec): Add enable_variable_colrv1 flag.
- 2022-06-21 Xavier Claessens <[email protected]>
- [meson] Disable FreeType in HarfBuzz fallback.
- This avoids cyclic subproject configuration when the 'harfbuzz' feature is
- enabled, or `--wrap-mode=forcefallback` is used, but HarfBuzz is built as a
- subproject. HarfBuzz does the same and disables HarfBuzz support when
- configuring FreeType as a subproject.
- * meson.build (harfbuzz_dep): Implement it.
- * subprojects/harfbuzz.wrap: New file.
- * .gitlab-ci.yml [windows meson]: Use latest version of the meson 0.59
- series, which has a necessary bug fix to make CI work.
- 2022-06-19 Alexei Podtelezhnikov <[email protected]>
- [truetype] Clean up phantom point accounting.
- This formalizes that the phantom points appended in the outline
- do not increase its point count, nor are they tagged or included
- in any additional contours. Only their coordinates are stored.
- They are counted in the glyph zone, however.
- * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Infer `n_points`
- from the outline size plus four phantom points.
- * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Remove this
- argument.
- * src/truetype/ttgload.c (tt_prepare_zone): Add phantom four.
- (TT_Process_Simple_Glyph, load_truetype_glyph): Update all callers.
- 2022-06-19 Alexei Podtelezhnikov <[email protected]>
- [truetype/GX] Clean up phantom point adjustment.
- This moves phantom point and advance variation adjustment next to
- calculations. The logic stays the same, HVAR and VVAR take priority.
- * src/truetype/ttgload.c (load_truetype_glyph): Move it from here...
- * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here
- and check for HVAR and VVAR presence outside the main loop.
- 2022-06-18 Ben Wagner <[email protected]>
- [stream] Fix reading s32 when long is s64
- `FT_READ_LONG`, `FT_GET_LONG`, and related macros did not return
- negative values when `long` is more than 32 bits. `FT_Stream_ReadULong`
- would read four bytes into the LSB of an `FT_ULong` and return that.
- Since this can never set the MSb of the `FT_ULong` when `FT_ULong` is
- more than 32 bits the cast to `FT_Long` never resulted in a negative
- value.
- Fix this by modifying `FT_Stream_Read*` to return a type of the same
- size as the bytes it is reading and changing the `FT_READ_*` and
- `FT_GET_*` macros to cast to the same type returned by `FT_Stream_Read*`
- but with the correctly signed type (instead of casting to what is
- assumed to be the type of `var` which will happen automatically anyway).
- There exist a few cases like with the `OFF3` variants where there isn't
- generally a type with the correct size. `FT_PEEK_OFF3` works around this
- loading the bytes into the three most significant bits and then doing a
- signed shift down. `FT_NEXT_OFF3` also already worked correctly by
- casting this signed value to another signed type. `FT_Stream_GetUOffset`
- works correctly but one must be careful not to attempt to cast the
- returned value to a signed type. Fortunately there is only
- `FT_GET_UOFF3` and no `FT_GET_OFF3`.
- All of these cases are handled correctly when reading values through
- `FT_Stream_ReadFields` since it generically computes the signed value
- through an `FT_Int32`. This change is essentially doing the same for
- these macros.
- * include/freetype/internal/ftstream.h (FT_NEXT_*, FT_GET_*, FT_READ*):
- Update macros and return types to use fixed size types for fixed size
- values.
- * src/base/ftstream.c (FT_StreamGet*, FT_StreamRead*): Dito.
- Issue: #1161
- 2022-06-17 Alexei Podtelezhnikov <[email protected]>
- [truetype/GX] Fix an old typo.
- * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Vertical
- advance is measured along y-coordinate.
- 2022-06-16 Alexei Podtelezhnikov <[email protected]>
- [truetype/GX] Clean up advance adjustment (Brrr).
-
- * src/truetype/ttgload.c (load_truetype_glyph): Remove remaining code.
- 2022-06-16 Ben Wagner <[email protected]>
- [type1] Directly search for eexec in private dict
- This code originally just searched for `eexec`. This was later modified
- to check that the `eexec` found is valid (not in a string or comment).
- This was done by searching for `eexec` as before and then, for each
- `eexec` found, searching from the beginning using the correct parsing to
- see if the `eexec` was still found. If the private dictionary is large
- and contains many copies of `eexec` which are not valid, the initial
- part of the private dictionary is scanned once for each, potentially
- leading to n^2 parsing time.
- Instead of finding an initial `eexec` and then re-parsing to discover if
- it is valid, drop the initial search for `eexec` and just parse to find
- a valid `eexec`. This is strictly faster since the validation must
- happen anyway and avoids restarting from the beginning each time an
- `eexec` is found in the data.
- * src/type1/t1parse.c (T1_Get_Private_Dict): avoid n^2 parsing
- Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1328883
- 2022-06-16 Alexei Podtelezhnikov <[email protected]>
- [truetype/GX] Clean up advance adjustment.
- * src/truetype/ttgload.c (TT_Process_Simple_Glyph, load_truetype_glyph):
- Move the advance adjustment from here...
- * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here and
- simplify arguments.
- * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Update prototype
- with fewer arguments.
- 2022-06-14 Ben Wagner <[email protected]>
- [gzip] Handle inflate returning Z_NEED_DICT
- When `inflate` returns `Z_NEED_DICT` this is currently not reported as
- an error and callers may assume that the decompression succeeded when it
- did not. In particular, a compressed table in a woff file may not
- actually be decompressed and written as expected, leaving the backing
- memory for the expanded table uninitialized.
- * src/gzlip/ftgzip.c (FT_Gzip_Uncompress): treat `Z_NEED_DICT` as
- indicating invalid data since there is no means to provide a dictionary.
- Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1335712
- 2022-06-13 Ben Wagner <[email protected]>
- [woff] Don't allocate table entries until needed
- * src/sfnt/sfwoff.c (woff_open_font): delay allocating space for the
- table entries until they are actually written out with the data.
- 2022-06-12 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/sfwoff2.c (woff2_open_font): Partial revert.
- Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47981.
- 2022-06-12 Alexei Podtelezhnikov <[email protected]>
- * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Cosmetic macro change.
- 2022-06-11 Alexei Podtelezhnikov <[email protected]>
- [woff, woff2] Avoid buffer zeroing.
- * src/sfnt/sfwoff.c (woff_open_font): Use Q-macros.
- * src/sfnt/sfwoff2.c: Ditto.
- (reconstruct_font): Allocate table_entry on stack.
- 2022-06-10 Alexei Podtelezhnikov <[email protected]>
- [smooth] Fix GCC LTO crashes on Windows.
- Fixes #1164 by using a volatile variable around `setjmp`. It is hard to
- say how this fixes crashes related to certain link-time optimizations.
- This does not decrease the rendering performance.
- * src/smooth/ftgrays.c (gray_convert_glyph_inner): Use volatile `error`.
- 2022-06-09 bruvzg <@bruvzg>
- * src/smooth/ftgrays.c [FT_STATIC_RASTER]: Fix compilation.
- 2022-06-06 Ben Wagner <[email protected]>
- [svg] Set linear advances when loading SVG glyphs
- * include/freetype/freetype.h (FT_GlyphSlotRec_): update doc
- * src/cff/cffgload.c (cff_slot_load): do it
- * src/truetype/ttgload.c (TT_Load_Glyph): do it
- Fixes: #1156
- 2022-06-01 Ben Wagner <[email protected]>
- [svg] Clear correct flags for doc ownership
- This issue was discovered with an SVG based font with some documents
- compressed and other uncompressed. After loading the first compressed
- document the ownership flag on the glyph slot was set to true but never
- set to false. As a result after loading a compressed document a glyph
- from an uncompressed document would load fine, but when this glyph slot
- was cleared it would try to free its document resulting in a wild free.
- * src/base/ftobjs.c (ft_glyphslot_clear): clear correct flags
- Fixes: #1162
- 2022-06-01 Alexei Podtelezhnikov <[email protected]>
- [docs] Correct favicon.
- 2022-06-01 Alexei Podtelezhnikov <[email protected]>
- [docs] Use hinted favicon.
- 2022-05-27 Alexei Podtelezhnikov <[email protected]>
- [docs] Update favicon.
- 2022-05-25 Behdad Esfahbod (بهداد اسفهبد) <[email protected]>
- * src/sfnt/ttmtx.c (tt_face_get_metrics): Apply variations unconditionally.
- This causes a speed-up of approx. 20% for getting advance widths.
- 2022-05-23 Dominik Röttsches <[email protected]>
- [truetype] Support reading 32bit/16bit VarStore deltas
- * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Define type
- to be used for delta arrays, upgrade to FT_long.
- * src/truetype/ttgxvar.c: Adhere to long_words bit and read either
- Short/Byte pairs or Long/Short pairs, as defined by spec. For better
- readability, define macro for repetitive read code.
- 2022-05-20 Dominik Röttsches <[email protected]>
- [truetype] Handle 0xFFFF special value inside delta retrieval function
- * truetype/ttgxvar.c (tt_hvadvance_adjust, tt_apply_mvar,
- tt_var_get_item_delta): Remove special 0xFFFF handling in favor of less
- redundant handling inside the tt_var_get_item_delta function, as it is
- equivalent to returning a 0 delta. Avoids code-duplication checking for
- special value 0xFFFF.
- 2022-05-19 Dominik Röttsches <[email protected]>
- [truetype, snft] Add service methods for `DeltaSetIdxMap` and `VarStore`.
- This will be needed for 'COLR' v1 variation support.
- * src/truetype/ttgxvar.h (GX_ItemVarData, GX_AxisCoords, GX_VarRegion,
- GX_VarItemStore, GX_DeltaSetIdxMap): Move structures to...
- * include/freetype/internal/ftmmtypes.h: ... this new file.
- * include/freetype/internal/service/svmm.h (MultiMasters): Include
- `ftmmtypes.h`.
- (FT_Var_Load_Delta_Set_Idx_Map_Func, FT_Var_Load_Item_Var_Store_Func,
- FT_Var_Get_Item_Delta_Func, FT_Var_Done_Item_Var_Store_Func,
- FT_Var_Done_Delta_Set_Idx_Map_Func): New function typedefs.
- (MultiMasters): Add them.
- (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
- * src/cff/cffdrivr.c (cff_load_item_variation_store,
- cff_load_delta_set_index_mapping, cff_get_item_delta,
- cff_done_item_variation_store, cff_done_delta_set_index_map): New wrapper
- methods calling into mm service.
- (cff_service_multi_masters): Updated.
- * src/truetype/ttgxvar.c (ft_var_load_item_variation_store,
- ft_var_load_delta_set_index_mapping, ft_var_get_item_delta,
- ft_var_done_item_variation_store, ft_var_done_delta_set_index_map): Renamed
- to ...
- (tt_var_load_item_variation_store, tt_var_load_delta_set_index_mapping,
- tt_var_get_item_delta, tt_var_done_item_variation_store,
- tt_var_done_delta_set_index_map): ... this for consistency.
- Mark them as non-static.
- * src/truetype/ttgxvar.h: Add corresponding prototypes.
- * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
- * src/type1/t1driver.c (t1_service_multi_masters): Updated.
- 2022-05-19 Dominik Röttsches <[email protected]>
- [truetype] Move deallocation of `DeltaSetIdxMap` into own function.
- This is a preparation for handling `DeltaSetIdxMap` and `VarStore` as a
- FreeType service.
- * src/truetype/ttgxvar.c (ft_var_done_delta_set_index_map): New function.
- (tt_done_blend): Use it.
- 2022-05-18 Werner Lemberg <[email protected]>
- * builds/toplevel.mk (do-dist): Don't remove meson wrap files.
- Fixes #1157.
- 2022-05-18 Werner Lemberg <[email protected]>
- * subprojects/zlib.wrap: Update to zlib version 1.2.12.
- 2022-05-18 Werner Lemberg <[email protected]>
- REAMDE: Mention that gitlab's 'download' button doesn't work.
- This is because the `git archive` command doesn't preserve submodules.
- Note that currently there is no support for disabling the 'download' button
- in gitlab (https://gitlab.com/gitlab-org/gitlab/-/issues/17032).
- Fixes issue #1158.
- 2022-05-11 Werner Lemberg <[email protected]>
- [truetype] Handle inner/outer index values 0xFFFF/0xFFFF.
- This was introduced in OpenType 1.8.4.
- * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping,
- tt_hvadvance_adjust, ft_var_load_mvar, tt_apply_mvar): Handle special
- inner/outer index values.
- (ft_var_load_item_variation_store): Add test.
- Fixes #1154.
- 2022-05-01 Werner Lemberg <[email protected]>
- * Version 2.12.1 released.
- ==========================
- Tag sources with `VER-2-12-1'.
- * docs/VERSION.TXT: Add entry for version 2.12.1.
- * docs/CHANGES, docs/release: Updated.
- * README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html, builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
- docs/freetype-config.1: s/2.12.0/2.12.1/, s/2120/2121/.
- * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
- * builds/unix/configure.raw (version_info): Set to 24:3:18.
- * CMakeLists.txt (VERSION_PATCH): Set to 1.
- 2022-04-30 Anuj Verma <[email protected]>
- [sdf] Do not throw errors for invisible glyphs.
- * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Return `FT_Err_Ok` if
- width or height is zero, since some glyphs do not generate visible bitmaps.
- Fixes #1150.
- 2022-04-30 Werner Lemberg <[email protected]>
- * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_COLOR` for SVG fonts.
- Fixes #1151.
- 2022-04-27 Brendan Shanks <[email protected]>
- autogen.sh: Fix building when freetype is itself a git submodule.
- There are situations where .git is not a directory, like when
- freetype is a submodule in another repository.
- 2022-04-26 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Simplify non-desktop UWP check.
- Fixes mingw compilation described in !159.
- * builds/windows/ftsystem.c: Do not use WINAPI_FAMILY_PARTITION macro.
- 2022-04-25 Alexei Podtelezhnikov <[email protected]>
- [truetype] Reset IUP flags in `TT_RunIns`.
- Fixes #1148 by moving the flag initialization back, partly reverting
- 7809007a and fd03dcc1. Initializing these flags elsewhere skips 'cvt'.
- * src/truetype/ttinterp.c (TT_RunIns): Initialize the IUP flag here...
- (TT_Run_Context): ... instead of here.
- 2022-04-24 Xavier Claessens <[email protected]>
- [meson] Remove `default_library=both` from `default_options`.
- It is inconsistent with what all other Meson projects do.
- It also prevents static linking to FreeType when it is a subproject because
- `default_options` in a subproject takes precedence on values set on the main
- project. For example, building 'GStreamer' with `-Ddefault_library=static`
- would still dynamically link on FreeType unless the user also sets
- `-Dfreetype2:default_library=static`.
- * meson.build: Updated.
- * .gitlab-ci.yml: Retain `both` option for testing.
- 2022-04-19 Werner Lemberg <[email protected]>
- * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Integer overflow.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46792
- 2022-04-16 Georg Brandl <[email protected]>
- * src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_SVG]: Fix segfault.
- This can happen if the function is called with `size` being `NULL`.
- Fixes #1147.
- 2022-04-14 Steve Lhomme <[email protected]>
- .gitlab-ci.yml: Add a Universal Windows build target
- It's compiled for Windows 10 and up, ensuring UNICODE is set (default for UWP)
- and selecting the proper WINAPI_FAMILY (WINAPI_FAMILY_APP).
- Do not try to run the UWP exe in the Docker as it doesn't work.
- 2022-04-04 Ben Wagner <[email protected]>
- [sfnt] Correct FT_ColorStopIterator documentation.
- * include/freetype/ftcolor.h (FT_ColorStopIterator): the user should not
- set `p` to NULL before calling `FT_Get_Colorline_Stops`. `p` and
- `num_color_stops` are set by `FT_Get_Paint`. `p` and
- `current_color_stop` are updated by `FT_Get_Colorline_Stops`.
- 2022-04-01 Werner Lemberg <[email protected]>
- * builds/unix/configure.raw: Add option `--with-librsvg`.
- Since 'librsvg' is written in Rust, this option allows distributions to
- avoid a dependency on the entire Rust toolchain to provide the FreeType demo
- programs.
- Suggested by Lars Wendler in !156.
- 2022-04-01 Werner Lemberg <[email protected]>
- * src/sfnt/sfwoff.c (reconstruct_glyf): Fix gcc 10 warning.
- 2022-04-01 Werner Lemberg <[email protected]>
- [gzip] Update sources to zlib 1.2.12.
- 2022-04-01 Eric Jing <@CPUcontrol>
- CMakeLists.txt: Fix `Info.plist` path.
- When building a framework using CMake with `add_subdirectory`, CMake must be
- able to find `freetype-Info.plist` when configuring the framework
- properties.
- Fixes #1145.
- 2022-04-01 Werner Lemberg <[email protected]>
- Whitespace.
- 2022-04-01 Ben Wagner <[email protected]>
- [truetype] Use SUB_LONG for component offset.
- * src/truetype/ttgload.c (TT_Process_Composite_Component): do it.
- Bug: https://crbug.com/1309429
- 2022-03-31 Werner Lemberg <[email protected]>
- CMakeList.txt: Update code to handle recent changes for `freetype.pc`.
- Fixes #1144.
- 2022-03-31 Werner Lemberg <[email protected]>
- CMakeLists.txt: s/PKG_CONFIG/PKGCONFIG/, s/REQUIRED_/REQUIRES_/.
- 2022-03-31 Werner Lemberg <[email protected]>
- * Version 2.12.0 released.
- ==========================
- Tag sources with `VER-2-12-0'.
- * docs/VERSION.TXT: Add entry for version 2.12.0.
- * docs/CHANGES, docs/release: Updated.
- * README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html, builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
- docs/freetype-config.1: s/2.11.1/2.12.0/, s/2111/2120/.
- * include/freetype/freetype.h (FREETYPE_MINOR): Set to 12.
- (FREETYPE_PATCH): Set to 0.
- * builds/unix/configure.raw (version_info): Set to 24:2:18.
- * CMakeLists.txt (VERSION_MINOR): Set to 12.
- (VERSION_PATCH): Set to 0.
- * builds/toplevel.mk (do-dist): Generate `ChangeLog` entries for all commits
- since version 2.11.0 (when we stopped creating this file manually).
- 2022-03-31 Werner Lemberg <[email protected]>
- Fix clang++ warnings.
- * src/base/ftglyph.c (ft_svg_glyph_prepare), src/base/ftobj.c
- (ft_glyphslot_init), src/cache/ftccmap.c (ftc_cmap_node_new),
- src/cache/ftcimage.c (FTC_INode_New), src/lzw/ftlzw.c (FT_Stream_OpenLZW),
- src/psaux/psobjs.c (ps_parser_load_field), src/pshinter/pshglob.c
- (psh_globals_new), src/sfnt/ttsvg.c (tt_face_load_svg_doc): Initialize
- variables used for allocation.
- * src/sdf/ftsdf.c (split_sdf_conic, split_sdf_cubic): Change type of
- `max_splits` to FT_UInt.
- (sdf_generate_bounding_box): Add cast.
- 2022-03-30 Werner Lemberg <[email protected]>
- Whitespace.
- 2022-03-30 Werner Lemberg <[email protected]>
- [builds] Fix creation of `freetype2.pc` for static-only builds.
- We have to help `pkg-config` since it can't recognize that there is no
- shared library installed.
- Note that meson already does exactly the same.
- * builds/unix/configure.raw (REQUIRES_PRIVATE, LIBS_PRIVATE): Rename to...
- (PKGCONFIG_REQUIRES_PRIVATE, PKGCONFIG_LIBS_PRIVATE): This. Adjust them
- depending on `$enable_shared`.
- (PKGCONFIG_REQUIRES, PKGCONFIG_LIBS): New variables.
- * builds/unix/freetype2.in, builds/unix/unix-def.in: Use new and updated
- variables.
- 2022-03-25 Werner Lemberg <[email protected]>
- Add `FT_FACE_FLAG_SBIX_OVERLAY` and `FT_HAS_SBIX_OVERLAY`.
- * include/freetype/freetype.h (FT_FACE_FLAG_SBIX_OVERLAY,
- FT_HAS_SBIX_OVERLAY): New macro.
- * src/sfnt/ttsbit.c (tt_face_load_sbit): Handle `FT_FACE_FLAG_SBIX_OVERLAY`.
- Remove obsolete tracing message.
- 2022-03-25 Werner Lemberg <[email protected]>
- Add `FT_PARAM_TAG_IGNORE_SBIX`.
- This is another bit to handle 'sbix' tables as described in the OpenType
- specification.
- * include/freetype/ftparams.h (FT_PARAM_TAG_IGNORE_SBIX): New macro.
- * src/sfnt/sfobjc.c (is_apple_sbix): Rename to...
- (has_sbix): ... this.
- Check for more sbit tables.
- Handle `FT_PARAM_TAG_IGNORE_SBIX` to eventually control `has_sbix`.
- Only call sbit table loader if an sbit table is present.
- 2022-03-25 Werner Lemberg <[email protected]>
- [truetype] Fix 'sbix' table handling.
- * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Correct calculation of
- 'metrics->horiBearingY'.
- Set vertical metrics.
- * src/sfnt/sfobjs.c (sfnt_load_face): Adjust setting of `FT_FACE_FLAG_SBIX`.
- Handle metrics of fonts with 'sbix' table.
- * src/truetype/ttgload.c (TT_Load_Glyph): For 'sbix' embedded bitmaps, apply
- bbox offset and bearing values of the corresponding glyph in the 'glyf'
- table if it exists and has a contour.
- * src/truetype/ttobjs.c (tt_face_init): Handle font with 'sbix' table.
- Fixes issue #998.
- 2022-03-25 Werner Lemberg <[email protected]>
- Add `FT_FACE_FLAG_SBIX` and `FT_HAS_SBIX`.
- Fonts with 'sbix' tables need special handling by the application.
- * include/freetype/freetype.h (FT_FACE_FLAG_SBIX, FT_HAS_SBIX): New macros.
- * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_SBIX` if 'sbix'
- table is present.
- 2022-03-25 Werner Lemberg <[email protected]>
- * include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): Tag macro as public.
- 2022-03-24 Carlo Bramini <[email protected]>
- [builds/windows] Fix WCE support.
- * builds/windows/ftsystem.c [_WIN32_WCE]: Include <malloc.h> needed by
- _alloca.
- 2022-03-24 Steve Lhomme <[email protected]>
- [build/windows] Improve UWP support.
- * builds/windows/ftsystem.c [UWP]: Wrap CreateFile2 into CreateFileA.
- 2022-03-21 Werner Lemberg <[email protected]>
- * src/sfnt/ttkern.c (tt_face_get_kerning): Exit early if no table.
- Fixes #1141.
- 2022-03-20 Ben Wagner <[email protected]>
- [woff2] Support overlap flag for simple glyphs.
- In the woff2 spec it has been proposed to allow the OVERLAP_SIMPLE flag
- to be retained through the woff2 format [0].
- [0] https://www.w3.org/TR/WOFF2/#glyf_table_format
- * src/sfnt/sfwoff2.h (GLYF_OVERLAP_SIMPLE): add glyf flag.
- * src/sfnt/sfwoff2.c (reconstruct_glyf): parse optionFlags and
- overlapSimpleBitmap[]. (store_points): set OVERLAP_SIMPLE on first point's
- flag if the overlap bit is set.
- 2022-03-19 Werner Lemberg <[email protected]>
- [cff] Synchronize `cff_slot_load` with `TT_Load_Glyph`.
- * src/cff/cffgload.c (IS_DEFAULT_INSTANCE): New macro.
- (cff_slot_load): Use it.
- 2022-03-19 Werner Lemberg <[email protected]>
- * src/base/ftobjs.c (FT_Request_Size): Guard `face->size`.
- Fixes #1140.
- 2022-03-19 Werner Lemberg <[email protected]>
- * src/base/ftobjs.c (ft_open_face_internal): Thinko.
- 2022-03-19 Ben Wagner <[email protected]>
- [doc] FT_OUTLINE_OVERLAP was introduced in 2.10.3.
- * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Document when added.
- 2022-03-19 Werner Lemberg <[email protected]>
- * src/base/ftobjs.c (ft_open_face_internal): Properly guard `face_index`.
- We must ensure that the cast to `FT_Int` doesn't change the sign.
- Fixes #1139.
- 2022-03-17 Werner Lemberg <[email protected]>
- [sfnt] Avoid invalid face index.
- Fixes #1138.
- * src/sfnt/sfobjs.c (sfnt_init_face), src/sfnt/sfwoff2.c (woff2_open_font):
- Check `face_index` before decrementing.
- 2022-03-07 Werner Lemberg <[email protected]>
- Documentation, whitespace.
- 2022-03-05 Anuj Verma <[email protected]>
- [sdf] Fix corner checks and improve performance.
- * src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for a corner if
- two distances (for different curves) are very close.
- (sdf_conic_to): Check whether the conic curve can be treated as a line
- (which happens if the control point coincides with any end point).
- 2022-03-05 Anuj Verma <[email protected]>
- [sdf] Implement deviation-based splitting for Bezier curves.
- * src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Add checks to figure
- out the deviation of Bezier curves and stop splitting if the curve is flat
- enough.
- * src/sdf/ftsdfcommon.h (ONE_PIXEL): New macro.
- 2022-03-05 Anuj Verma <[email protected]>
- * include/freetype/freetype.h: Improve SDF documentation.
- 2022-03-03 Ben Wagner <[email protected]>
- [sfnt] Fix bounds check in SVG.
- The `SVG_DOCUMENT_LIST_MINIMUM_SIZE` macro is non trivial and not
- protected by parentheses. As a result, the expression
- `table_size - SVG_DOCUMENT_LIST_MINIMUM_SIZE` expands to
- `table_size - 2U + SVG_DOCUMENT_RECORD_SIZE` instead of the expected
- `table_size - (2U + SVG_DOCUMENT_RECORD_SIZE)`. This causes an incorrect
- bounds check which may lead to reading past the end of the `SVG ` table.
- * src/sfnt/ttsvg.c (tt_face_load_svg): wrap macro definitions in
- parentheses.
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45179
- 2022-02-23 Ben Wagner <[email protected]>
- [psaux] Full bounds check for OtherSubr 19.
- It is possible for OtherSubr 19 to be invoked when `decoder->buildchar` is
- NULL (so that `decoder->len_buildchar` is 0), the `blend` is non-NULL with
- `blend->num_designs` set to 2, and the user supplied `idx` to be large (for
- example 0xFFFFFFFE). Since these are all `FT_UInt32` the existing bounds
- check overflows in a well defined manner, allowing for an invalid call to
- `memcpy`.
- In addition, it is possible to call OtherSubr 19 with
- `decoder->len_buildchar`, `blend->num_designs`, and `idx` all zero (implying
- that `blend->weight_vector` and `decoder->buildchar` are NULL). This passes
- the bounds check (it is logically always fine to copy nothing starting at
- index zero) but may invoke undefined behavior in `ft_memcpy` if it is backed
- by `memcpy`. Calling `memcpy` with either the `src` or `dst` NULL is
- undefined behavior (even if `count` is zero).
- * src/psaux/psintrp.c (cf2_interpT2CharString): Correctly check that
- `blend->num_designs` can be copied to `decoder->buildchar[idx]`.
- Also avoid passing NULL to `ft_memcpy`.
- Bug: https://crbug.com/1299259
- 2022-02-21 suzuki toshiya <[email protected]>
- [cmake] Drop the support of CMake 2.x.
- * CMakeLists.txt: Require CMake 3.0 (released on 2014) or newer.
- The issue #1059 reports the difficulty to support both of
- CMake 2.x and newer one by single CMakeLists.txt without
- the inflation of cmake_policy() workarounds.
- For better maintainability, the support of CMake 2.x is
- dropped.
- 2022-02-19 Werner Lemberg <[email protected]>
- * src/bdf/README: Updated.
- 2022-02-19 Werner Lemberg <[email protected]>
- * builds/mac/ftmac.c, src/base/ftmac.c: s|FT_MAC_H|<freetype/ftmac.h>|.
- 2022-02-19 Werner Lemberg <[email protected]>
- src/sfnt/ttkern.c (tt_face_load_kern): Micro-optimize.
- A kerning table can be handled by binary search if it has equal entries.
- Fixes #1132.
- 2022-02-17 Steve Lhomme <[email protected]>
- Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Add support for legacy UWP builds.
- * builds/windows/ftsystem.c: Add neccessary macro substitutions to
- enable strict UWP builds.
- See !141.
- 2022-02-16 Werner Lemberg <[email protected]>
- ftmm.h: Minor documentation improvement.
- 2022-02-13 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Tune PSH_STRONG_THRESHOLD_MAXIMUM value.
- Before the change, the hinting engine frequently confused horizontal
- stem and serif hints making some stems too thin and some serifs too
- thick. The value was tuned using serif fonts from the URW+ base 35
- collection.
- * src/pshinter/pshalgo.c [PSH_STRONG_THRESHOLD_MAXIMUM]: s/30/12/.
- 2022-02-12 Werner Lemberg <[email protected]>
- t1tables.h: Documentation improvements.
- 2022-02-12 Werner Lemberg <[email protected]>
- t1tables.h: Whitespace.
- 2022-02-11 Werner Lemberg <[email protected]>
- [type42] Fix `FT_Get_PS_Font_Private` for this format.
- Since Type42 fonts don't have a 'Private' dictionary, the return value
- should be `FT_Err_Invalid_Argument`.
- * src/type42/t42drivr.c (t42_ps_get_font_private): Removed.
- (t42_service_ps_info): Updated.
- 2022-02-09 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Clear reused mask.
-
- In PS hinter, memory allocations persist until the module is done.
- Therefore, we have to clear reused masks.
-
- * src/pshinter/pshrec.c (ps_mask_table_alloc): Clear reused mask.
- 2022-02-09 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Use unsigned indices.
-
- This reduces casting and eliminates some checks.
-
- * src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_table_merge,
- ps_dimension_add_t1stem, ps_hints_t1stem3): Updated.
- (ps_dimension_add_counter): Updated, unnecessary checks removed.
- 2022-02-08 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Fix mask merging.
- We forgot to update the number of bits when merging a larger mask
- into a smaller one. This fix might have rendering effects.
- * src/pshinter/pshrec.c (ps_mask_table_merge): Inherit the number
- of bits from a larger mask. There is no need to zero unused bits,
- already zeroed during allocation.
- (ps_mask_clear_bit): Removed.
- (ps_mask_ensure): Minor.
- 2022-02-08 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Revise the hint table handling.
-
- * src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size
- check; avoid array zeroing because it is fully initialized when used.
- (ps_hint_table_alloc): Fix off-by-one comparison and remove another
- zeroing of the array elements.
- 2022-02-06 Werner Lemberg <[email protected]>
- Various minor doc fixes.
- 2022-02-06 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Add SVG to to project files.
- * builds/windows/vc2010/freetype.vcxproj: Updated.
- * builds/windows/vc2010/freetype.vcxproj.filters: Updated.
- * builds/windows/visualc/freetype.vcproj: Updated.
- 2022-02-03 Alexei Podtelezhnikov <[email protected]>
- * src/winfonts/winfnt.c (fnt_face_get_dll_font): Trace font resources.
- 2022-02-02 Eric Jing <@CPUcontrol>
- [cmake] Fix build on MacOS.
- * CMakeLists.txt (CMAKE_OSX_ARCHITECTURES): Update value to fix the building
- of a framework on MacOS.
- * builds/mac/freetype-Info.plist (CFBundleExecutable): Make identifier
- lowercase only.
- Fixes #1127.
- 2022-02-02 Alexei Podtelezhnikov <[email protected]>
- [psaux] Revise `PS_Table` handling.
- The old impleemntation was not using `FT_REALLOC`, buing too careful
- with the offset rebasing. It shoudl be safe to rely on the base
- movements.
- * src/psaux/psobjs.c (reallocate_t1_table, shift_elements): Combine
- into...
- (ps_table_realloc): ... this function based on `FT_REALLOC`.
- (ps_table_done): Simplified.
- (ps_table_add): Updated.
- 2022-02-02 Alexei Podtelezhnikov <[email protected]>
- * src/cache/ftcmru.c (FTC_MruList_New): Explain zeroing.
- 2022-01-31 Alexei Podtelezhnikov <[email protected]>
- [cache] Partially revert 9870b6c07e2c.
-
- Fix crashes reported by Werner.
-
- * src/cache/ftcmru.c (FTC_MruList_New): Use `FT_ALLOC` again.
- 2022-01-31 Werner Lemberg <[email protected]>
- freetype.h: Minor documentation improvement.
- 2022-01-31 Alexei Podtelezhnikov <[email protected]>
- [cache] Fix fallouts from edd4fedc5427.
- Reported by Werner.
- * src/cache/ftcimage.c (FTC_INode_New): Always initialize FT_Glyph.
- * src/cache/ftcsbits.c (FTC_SNode_New): Always initialize FT_SBit.
- 2022-01-31 Alexei Podtelezhnikov <[email protected]>
- Clean-up - do not doubt FT_FREE.
- * src/base/ftobjs.c (memory_stream_close): Do not reassign zero
- after `FT_FREE`.
- * src/sfnt/sfwoff.c (sfnt_stream_close): Ditto.
- * src/sfnt/sfwoff2.c (stream_close): Ditto.
- * src/psaux/psobjs.c (ps_parser_load_field): Ditto.
- * src/truetype/ttgxvar.c (ft_var_load_avar, tt_set_mm_blend,
- tt_set_mm_blend): Ditto.
- 2022-01-30 Werner Lemberg <[email protected]>
- * CMakeLists.txt: Include 'FindPkgConfig' module.
- Older cmake versions don't provide `pkg_check_modules` by default.
- Fixes #1126.
- 2022-01-30 Alexei Podtelezhnikov <[email protected]>
- * src/psaux/psobjs.c (ps_parser_load_field): Reduce `string` scope.
- 2022-01-29 suzuki toshiya <[email protected]>
- [cmake] Check the availability of `bzip2.pc'.
- (CMakeLists.txt): Check the availability of `bzip2.pc'.
- * If `bzip2.pc' is available, Requires.private should include
- bzip2, but Libs.private should not include -lbz2.
- * If `bzip2.pc' is unavailable, Requires.private cannot include
- bzip2, but Libs.private should include -lbz2.
- Fix #897.
- 2022-01-28 Werner Lemberg <[email protected]>
- * unix/configure.raw: We need 'librsvg' version 2.46.0 or newer.
- Older versions don't have function `rsvg_handle_get_intrinsic_dimensions`.
- 2022-01-28 Alexei Podtelezhnikov <[email protected]>
- Minor clean-ups.
- * src/base/ftrfork.c (raccess_make_file_name): Do not set error.
- * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Ditto.
- * src/cff/cffobjs.c (cff_strcpy): Do not confuse about error.
- * src/psaux/psobjs.c (ps_table_done): Ditto.
- * src/truetype/ttgxvar.c (ft_var_readpacked*, ft_var_load_avar): Ditto.
- 2022-01-27 Ben Wagner <[email protected]>
- Document `FT_Outline_Decompose` degenerate segments.
- `FT_Outline_Decompose` does not filter out and can return degenerate
- segments in an outline. This can be surprising when attemping to
- stroke such an outline. Clarify the existing documentation on this
- matter to cover all forms of degeneracy (without specifying exactly
- how they will be reported), why they might arise, and better explain in
- what cases they may be an issue.
- * include/freetype/ftoutlin.h (FT_Outline_Decompose): update
- documentation.
- Fixes #952.
- 2022-01-27 Anuj Verma <[email protected]>
- Fix sdf computation while `USE_SQUARED_DISTANCES`.
- Function `map_fixed_to_sdf` expects spread to be absolute
- and not squared.
- * src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread
- while `map_fixed_to_sdf`.
- * src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto.
- 2022-01-27 Tapish Ojha <[email protected]>
- [sfnt] Improve sRGB constants.
- * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use slightly
- more precise values.
- Fixes #1018.
- 2022-01-27 Werner Lemberg <[email protected]>
- docs/release: Updated.
- 2022-01-26 Alexei Podtelezhnikov <[email protected]>
- * src/pfr/pfrload.c (pfr_phy_font_load): Use FT_QNEW_ARRAY.
- 2022-01-26 Alexei Podtelezhnikov <[email protected]>
- * src/sdf/ftsdf.c (sdf_*_new): Use standard macro.
- 2022-01-26 Alexei Podtelezhnikov <[email protected]>
- [pcf] Delay encoding allocation and avoid its zeroing.
- * src/pcf/pcfread.c (pcf_get_encodings): Refactor and use FT_QNEW_ARRAY.
- 2022-01-25 Werner Lemberg <[email protected]>
- Aarg, typo.
- 2022-01-25 Werner Lemberg <[email protected]>
- freetype.h: More updates to `FT_LOAD_COLOR` description.
- 2022-01-25 Werner Lemberg <[email protected]>
- * builds/unix/configure.raw (FT_DEMO_CFLAGS): Pass `-DHAVE-LIBRSVG`.
- This helps in decoupling library support from `pkg-config` for other
- platforms.
- 2022-01-25 Werner Lemberg <[email protected]>
- Update documentation for `FT_LOAD_COLOR`.
- 2022-01-24 Ben Wagner <[email protected]>
- [pshinter] Ensure all point flags are initialized.
- Only off curve point flags were fully initialized.
- * src/pshinter/pshalgo.c (psh_glyph_init): always initialize flags.
- Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43930
- 2022-01-24 Werner Lemberg <[email protected]>
- .mailmap: Typo.
- 2022-01-23 Werner Lemberg <[email protected]>
- * src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers.
- 2022-01-23 Werner Lemberg <[email protected]>
- .mailmap: Updated.
- 2022-01-23 Werner Lemberg <[email protected]>
- More documentation on handling OT-SVG.
- 2022-01-23 Werner Lemberg <[email protected]>
- * src/svg/ftsvg.c: Rename `svg_hooks` to `svg-hooks` for consistency.
- 2022-01-22 Werner Lemberg <[email protected]>
- [sfnt] Reject malformed SVG tables.
- * src/sfnt/ttsvg.c (SVG_TABLE_HEADER_SIZE, SVG_DOCUMENT_RECORD_SIZE,
- SVG_DOCUMENT_LIST_MINIMUM_SIZE, SVG_MINIMUM_SIZE): New macros.
- (tt_face_load_svg): Check offsets.
- Check table and record sizes.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43918
- 2022-01-22 Alexei Podtelezhnikov <[email protected]>
- * src/psaux/psobjs.c (ps_table_new): Revert to zeroing.
- 2022-01-20 Alexei Podtelezhnikov <[email protected]>
- [psaux, type1, type42] Avoid annecessary zeroing.
- * src/psaux/psobjs.c (ps_table_new): Use FT_QNEW_ARRAY.
- * src/type1/t1load.c (parse_encoding): Ditto.
- * src/type42/t42parse.c (t42_parse_encoding): Ditto.
- 2022-01-20 Werner Lemberg <[email protected]>
- [builds/unix] Handle 'librsvg' for demo programs.
- * builds/unix/configure.raw: Check for 'librsvg'.
- (LIB_CLOCK_GETTIME): Don't call `AC_SUBST` on this but on...
- (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables.
- * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): Replaced by...
- (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables.
- 2022-01-20 Moazin Khatti <[email protected]>
- Add 'svg' module for OT-SVG rendering.
- * CMakeLists.txt (BASE_SRCS): Add svg module file.
- * meson.build (ft2_public_headers): Add `otsvg.h`.
- * modules.cfg (RASTER_MODULES): Add `svg` module.
- * builds/meson/parse_modules_cfg.py: Add svg module.
- * include/freetype/config/ftmodule.h: Add `ft_svg_renderer_class`.
- * include/freetype/fterrdef.h: Add `Invalid_SVG_Document` and
- `Missing_SVG_Hooks` error codes.
- * include/freetype/internal/fttrace.h: Add tracing for `otsvg`.
- * include/freetype/internal/svginterface.h: New file. It adds an interface
- to enable the presetting hook from the `base` module.
- * include/freetype/otsvg.h (SVG_Lib_Init_Func, SVG_Lib_Free_Func,
- SVG_Lib_Render_Func, SVG_Lib_Preset_Slot_Func): New hooks for SVG rendering.
- (SVG_RendererHooks): New structure to access them.
- * src/base/ftobjs.c: Include `svginterface.h`.
- (ft_glyphslot_preset_bitmap): Add code for presetting the slot for SVG
- glyphs.
- (ft_add_renderer): Updated.
- * src/svg/*: New files.
- 2022-01-20 Moazin Khatti <[email protected]>
- Add `FT_Glyph` support for OT-SVG glyphs.
- * include/freetype/ftglyph.h (FT_SvgGlyphRec, FT_SvgGlyph): New structure.
- * src/base/ftglyph.c: Include `otsvg.h`.
- (ft_svg_glyph_init, ft_svg_glyph_done, ft_svg_glyph_copy,
- ft_svg_glyph_transform, ft_svg_glyph_prepare): New function.
- (ft_svg_glyph_class): New class.
- (FT_New_Glyph, FT_Glyph_To_Bitmap): Updated to handle OT-SVG glyphs.
- * src/base/ftglyph.h: Updated.
- 2022-01-20 Moazin Khatti <[email protected]>
- [truetype, cff] Add code to load SVG document.
- * src/cff/cffgload.c (cff_slot_load): Add code to load SVG doc.
- * src/truetype/ttgload.c (TT_Load_Glyph): Add code to load SVG doc.
- 2022-01-20 Moazin Khatti <[email protected]>
- Add code to load OT-SVG glyph documents.
- * include/freetype/config/ftheader.h (FT_OTSVG_H): New macro.
- * include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros.
- (FT_LOAD_SVG_ONLY): New internal macro.
- * include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value
- `FT_GLYPH_FORMAT_SVG`.
- * include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro.
- * include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`.
- * include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New
- functions.
- * include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for
- the SVG table.
- * include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the
- SVG document and other necessary information of an OT-SVG glyph in a glyph
- slot.
- * include/freetype/tttags.h (TTAG_SVG): New macro.
- * src/base/ftobjs.c: Include `otsvg.h`.
- (ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot->other`
- if the SVG table exists.
- (ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed
- glyph.
- (ft_glyphslot_done): Free the document data if it is a GZIP compressed
- glyph.
- (FT_Load_Glyph): Don't auto-hint SVG documents.
- * src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for
- FT_GLYPH_FORMAT_SVG.
- * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`.
- * src/sfnt/sfdriver.c: Include `ttsvg.h`.
- (sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and
- `tt_face_load_svg_doc`.
- * src/sfnt/sfnt.c: Include `ttsvg.c`.
- * src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and
- free data of the the SVG table.
- * src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`,
- `tt_face_free_svg` and `tt_face_load_svg_doc`.
- * src/sfnt/ttsvg.h: Declarations of the SVG functions in
- `ttsvg.c`.
- 2022-01-20 Moazin Khatti <[email protected]>
- Add flag `FT_CONFIG_OPTION_SVG`.
- This flag is going to be used to conditionally compile support for OT-SVG
- glyphs. FreeType will do the parsing and rely on external hooks for
- rendering of OT-SVG glyphs.
- * devel/ftoption.h, include/freetype/config/ftoption.h
- (FT_CONFIG_OPTION_SVG): New flag.
- 2022-01-20 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Avoid unnecessary zeroing.
-
- * src/pshinter/pshalgo.c (psh_hint_table_init,psh_glyph_init,
- psh_glyph_interpolate_normal_points): Use FT_QNEW_ARRAY.
- 2022-01-20 Alexei Podtelezhnikov <[email protected]>
- * include/freetype/freetype.h: Clarify `FT_Size` life cycle.
- 2022-01-20 Alexei Podtelezhnikov <[email protected]>
- [base] Undefined scale means no scale.
- It might be surprising that FreeType does not have default ppem and
- the size has to be set explicitly or face undefined behavior with
- undefined variables and errors. This offers an alternative to
- missing or zero scale by simply setting FT_LOAD_NO_SCALE. Defined
- behavior is bettr than undefined one.
- This is alternative to !132 and discussed in
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43708
- * src/base/ftobjs.c (FT_Load_Glyph): Deal with zero scale.
- * include/freetype/freetype.h: Document it.
- 2022-01-18 Alexei Podtelezhnikov <[email protected]>
- * src/autofit/afglobal.c (af_face_globals_new): Reduce zeroing.
- Everything in AF_FaceGlobals is initialized except metrics. Those
- are zeroed here and initialized on demand later.
- 2022-01-16 Alexei Podtelezhnikov <[email protected]>
- [bdf,type1] Avoid unnecessary hash zeroing.
- * src/bdf/bdflib.c (_bdf_parse_start): Use `FT_QALLOC`.
- * src/type1/t1load.c (parse_subrs): Use `FT_QNEW`.
- 2022-01-16 Ozkan Sezer <[email protected]>
- Add Watcom C/C++ calling.
- In the unlikely case the source is built with OpenWatcom's -ec?
- switches to enforce a calling convention, the qsort() compare
- function must still be set to __watcall.
- * include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF):
- Updated.
- 2022-01-15 Ben Wagner <[email protected]>
- [pshinter] Avoid accessing uninitialized zone.
- The `normal_top.count` may be 0, implying no `normal_top.zones` exist.
- The code must not access these (non-existent) `normal_top.zones`.
- * src/pshinter/pshalgo.c (ps_hints_apply): Do not assume that
- `normal_top.zones[0]` is initialized. Test `normal_top.count`
- before using `normal_top.zones[0]`. Do not rescale if there are no
- `zones`.
- Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43675
- 2022-01-15 Alexei Podtelezhnikov <[email protected]>
- [cache] Avoid unnecessary zeroing.
- * src/cache/ftccmap.c (ftc_cmap_node_new): Use `FT_QNEW`.
- * src/cache/ftcimage.c (FTC_INode_New): Ditto.
- * src/cache/ftcsbits.c (FTC_SNode_New): Ditto.
- 2022-01-15 Ozkan Sezer <[email protected]>
- Add Watcom C/C++ support.
- * include/freetype/config/integer-types.h: Make sure `long long` is
- used then available.
- * include/freetype/internal/ftcalc.h (FT_MSB): Add Watcom C/C++ pragma.
- 2022-01-15 Alexei Podtelezhnikov <[email protected]>
- * src/sdf/ftbsdf.c (ED): s/near/prox/.
- This works around the Watcom C definition of `near` as restricted
- __near.
- 2022-01-15 Alexei Podtelezhnikov <[email protected]>
- * include/freetype/internal/compiler-macros.h [FT_COMPARE_DEF]: Tighten.
- This works around Watcom C library using __watcall.
- 2022-01-14 Alexei Podtelezhnikov <[email protected]>
- * src/pshinter/pshglob.c (psh_globals_new): Avoid zeroing.
- This large allocation is followed by careful initialization. Whatever
- is missed should be initialized manually.
- 2022-01-14 Alexei Podtelezhnikov <[email protected]>
- * src/base/fthash.c (hash_insert): Avoid unnecessary zeroing.
- 2022-01-14 Alexei Podtelezhnikov <[email protected]>
- * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove redundant assignment.
- 2022-01-13 Alexei Podtelezhnikov <[email protected]>
- * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Avoid unnecessary zeroing.
- 2022-01-13 Ben Wagner <[email protected]>
- [bzip2] Reset bzip stream on any error.
- According to the bzip documentation it is undefined what will happen if
- `BZ2_bzDecompress` is called on a `bz_stream` it has previously returned an
- error against. If `BZ2_bzDecompress` returns anything other than `BZ_OK`
- the only valid next action is `BZ2_bzDecompressEnd`.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43564
- * src/bzip2/ftbzip2.c (FT_BZip2FileRec_): Add `reset` to track the need to
- reset the stream.
- (ft_bzip2_file_init): Initialize `reset` to 0.
- (ft_bzip2_file_reset): Set `reset` to 0 after resetting.
- (ft_bzip2_file_fill_output): Set `reset` to 1 when `BZ2_bzDecompress`
- returns anything other than `BZ_OK`.
- 2022-01-12 Werner Lemberg <[email protected]>
- .gitlab-ci.yml: Minor comment cleanups.
- 2022-01-12 Azamat H. Hackimov <[email protected]>
- .gitlab-ci.yml: Add steps to `before_script` to ensure recent CA.
- Fetch current list of valid CAs from Windows Update and manually import them
- to trusted datastore. This action is required to make downloads work from
- sites that need recent Let's Encrypt ISRG Root X1 certificate.
- 2022-01-11 Ben Wagner <[email protected]>
- Revert "[bzip2] Avoid use of uninitialized memory."
- This reverts commit d276bcb7f0c02c20d3585b2e5626702df6d140a6.
- The original commit did avoid the use of uninitialized memory. However,
- it appears that the original commit is no longer required. The
- underlying issue was resolved by a change in freetype2-testing "Build
- bzip2 correctly." [0]. Prior to [0] bzip2 was built without msan, so
- bzip2 writes were not tracked or considered initialized. Clearing
- `buffer` in the original commit allowed msan to see the `buffer` content
- initialized once in FreeType code, but msan saw no writes into buffer
- from bzip2. With bzip2 now built with msan, the bzip2 writes are
- properly instrumented and msan sees the bzip2 writes into the buffer. As
- a result the original commit can be safely reverted to allow for better
- detection of other uninitialized data scenarios.
- * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Revert to using `FT_QNEW`.
- [0] https://github.com/freetype/freetype2-testing/commit/3c052a837a3c960709227a0d6ddd256e87b88853
- 2022-01-11 Ben Wagner <[email protected]>
- [type42] Track how much type42 ttf data is available.
- Currently `T42_Open_Face` eagerly allocates 12 bytes for the ttf header
- data which it expects `t42_parse_sfnts` to fill out from /sfnts data.
- However, there is no guarantee that `t42_parse_sfnts` will actually be
- called while parsing the type42 data as the /sfnts array may be missing
- or very short. This is also confusing behavior as it means
- `T42_Open_Face` is tightly coupled to the implementation of the very
- distant `t42_parse_sfnts` code which requires at least 12 bytes to
- already be reserved in `face->ttf_data`.
- `t42_parse_sfnts` itself eagerly updates `face->ttf_size` to track how
- much space is reserved for ttf data instead of traking how much data has
- actually been written into `face->ttf_data`. It will also act strangely
- in the presense of multiple /sfnts arrays.
- * src/type42/t42objs.c (T42_Open_Face): ensure `ttf_data` is initialized
- to NULL. Free `ttf_data` on error.
- * src/type42/t42parse.c (t42_parse_sfnts): delay setting `ttf_size` and
- set it to the actual number of bytes read. Ensure `ttf_data` is freed
- if there are multiple /sfnts arrays or there are any errors.
- 2022-01-11 Dominik Röttsches <[email protected]>
- [sfnt] Fix limit checks for `COLR` v1 ClipBoxes
- * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Fix off-by-one in
- limit checks.
- 2022-01-11 Werner Lemberg <[email protected]>
- Update all copyright notices.
- 2022-01-11 Werner Lemberg <[email protected]>
- * src/sfnt/ttcolr.c (read_paint): Fix undefined left-shift operation.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43151
- 2022-01-11 Werner Lemberg <[email protected]>
- * src/type42/t42objs.c (T42_Open_Face): Avoid use of uninitialized memory.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43508
- 2022-01-11 Werner Lemberg <[email protected]>
- .gitlab-ci.yml: Fix typo in previous commit.
- 2022-01-11 Werner Lemberg <[email protected]>
- .gitlab-ci.yml: Update Windows image.
- The old image produced errors like
- ```
- Downloading zlib patch from
- https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch
- A fallback URL could be specified using patch_fallback_url key in the wrap file
- WrapDB connection failed to
- https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch
- with error
- <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify
- failed: certificate has expired (_ssl.c:1122)>
- ```
- 2022-01-11 Werner Lemberg <[email protected]>
- * subprojects/zlib.wrap: Update from upstream.
- 2022-01-10 Werner Lemberg <[email protected]>
- * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Add limit checks.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40716
- 2022-01-10 Werner Lemberg <[email protected]>
- [zlib] Don't typedef `ptrdiff_t`.
- While using zlib in 'solo' mode (via the `Z_SOLO` macro), we actually
- include some standard header files, making the typedef fail on systems where
- the native `ptrdiff_t` type differs.
- Fixes #1124.
- * src/zlib/zutil.h: Comment out definition; it doesn't work on Windows.
- * src/zlib/patches/freetype-zlib.diff: Updated.
- 2022-01-10 Werner Lemberg <[email protected]>
- [zlib] Some organizational changes.
- We now first apply zlib's `zlib2ansi` script, then FreeType's patch file.
- * src/gzip/README.freetype: Updated.
- * patches/0001-zlib-Fix-zlib-sources-to-compile-for-FreeType.patch: Renamed
- to...
- * patches/freetype-zlib.diff: This.
- Clean up description, then regenerate it as follows:
- - Copy unmodified files from `zlib` repository.
- - Run `zlib2ansi` script.
- - Run `git diff -R > patches/freetype-zlib.diff.new`.
- - Insert patch description of old diff file, then replace old diff with
- new diff file.
- 2022-01-09 David Turner <[email protected]>
- [gzip] Update sources to zlib 1.2.11
- This can be tested by building with the Unix development build
- make setup devel
- make
- or by building the freetype-demos programs with
- meson setup build -Dfreetype2:zlib=internal
- meson compile -C out
- and trying to run `ftview` with a `.pcf.gz` font file.
- * src/gzip/ftgzip.c, src/gzip/rules.mk: Update for new zlib sources. Also
- remove the temporary fix introduced in commit 6a431038 to work around the
- fact that the internal sources were too old.
- * src/gzip/README.freetype: New file describing the origin of the sources
- and how they were modified.
- * src/gzip/patches/*: Patch files applied to original sources.
- * src/gzip/*: Updated zlib sources with the patch file(s) from
- `src/gzip/patches/` applied, followed by a conversion with zlib's
- `zlib2ansi` script.
- 2022-01-09 David Turner <[email protected]>
- [meson] Change Zlib configuration option.
- * meson_options.txt, meson.build: Change the format of the 'zlib' meson
- build configuration option to be a combo with the following choices:
- - none: Do not support gzip-compressed streams at all.
- - internal: Support gzip-compressed streams using the copy of the gzip
- sources under `src/gzip/`; this should only be used during development
- to ensure these work properly.
- - external: Support gzip-compressed streams using the 'zlib' Meson
- subproject, linked as a static library.
- - system: Support gzip-compressed streams using a system-installed version
- of zlib.
- - auto: Support gzip-compressed streams using a system-installed version
- of zlib, if available, or using the 'zlib' subproject otherwise. This
- is the default.
- - disabled: Backward-compatible alias for 'none'.
- - enabled: Backward-compatible alias for 'auto'.
- 2022-01-09 Werner Lemberg <[email protected]>
- [bzip2] Avoid use of uninitialized memory.
- * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Don't use `FT_QNEW` but
- `FT_NEW` for setting up `zip` to avoid uninitialized memory access while
- handling malformed PCF fonts later on.
- Fixes
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42800
- 2022-01-09 Alexei Podtelezhnikov <[email protected]>
- [sfnt] Fix off-by-one error.
- The 0-base index is equal to the number of previosly parsed entries.
- It is an error to adjust it by one to get the number truncated by
- a stream error. This is probably inconsequential because valid
- entries are correctly accounted for.
- * src/sfnt/ttload.c (check_table_dir): Do not adjust the truncated
- number of tables.
- 2022-01-08 Werner Lemberg <[email protected]>
- [sfnt, type42] Correct previous commit.
- Really fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773.
- * src/sfnt/ttload.c (check_table_dir): Revert change.
- * src/type42/t42.parse.c (t42_parse_sfnts): Don't use `FT_QREALLOC` but
- `FT_REALLOC` for setting up `ttf_data` to avoid uninitialized memory access
- while handling malformed TrueType fonts later on.
- 2022-01-07 Werner Lemberg <[email protected]>
- * src/sfnt/ttload.c (check_table_dir): Initialize `table`.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773
- 2022-01-07 Werner Lemberg <[email protected]>
- [sfnt] Avoid 'runtime error: applying zero offset to null pointer'.
- * src/sfnt/ttsbit.c (tt_sbit_decoder_load_byte_aligned): Exit early if
- `line` is NULL.
- 2022-01-07 Werner Lemberg <[email protected]>
- [autofit, pshinter] Use `FT_OFFSET`.
- This avoids
- ```
- runtime error: applying zero offset to null pointer
- ```
- warnings of clang's undefined behaviour sanitizer.
- * src/autofit/afcjk.c (af_cjk_hints_link_segments,
- af_cjk_hints_compute_edges, af_cjk_hints_compute_blue_edges,
- af_cjk_hint_edges, af_cjk_align_edge_points): Do it.
- * src/autofit/afhints.c (af_glyph_hints_align_edge_points,
- af_glyph_hints_align_strong_points): Ditto.
- * src/autofit/aflatin.c (af_latin_metrics_init_widths,
- af_latin_hints_link_segments, af_latin_hints_compute_edges,
- af_latin_hints_compute_blue_edges, af_latin_hint_edges): Ditto.
- * src/pshinter/pshalgo.c (psh_hint_table_init): Ditto.
- 2022-01-06 Ben Wagner <[email protected]>
- [truetype] Reset localpoints when varying cvt.
- When iterating over the cvt tuples and reading in the points it is necessary
- to set all of `localpoints`, `points`, and `point_count` in all cases. The
- existing code did not reset `localpoints` to `NULL` when there were no
- private point numbers. If the previous tuple did have private point numbers
- and set `localpoints` to `ALL_POINTS` this would not be cleared and the
- wrong branch would be taken later, leading to possible heap buffer overflow.
- * src/truetype/ttgxvar.c (tt_face_vary_cvt): Reset `localpoints` to `NULL`
- when it isn't valid.
- Fixes: https://crbug.com/1284742
- 2022-01-02 Werner Lemberg <[email protected]>
- * builds/unix/configure.raw: Restore `SYSTEM_ZLIB` variable.
- This was accidentally removed with commit 93ebcbd0 almost eight years ago.
- 2021-12-27 Alexander Borsuk <[email protected]>
- Fix warnings for CMake Unity builds.
- * src/cache/ftcbasic.c (FT_COMPONENT): Undefine macro before redefinition.
- * src/smooth/ftgrays.c (TRUNC, FRACT): Ditto.
- 2021-12-18 Alexander Borsuk <[email protected]>
- Clang-Tidy warning fixes.
- * src/base/ftobjs.c (FT_Get_Paint): Operator has equivalent nested operands.
- * src/bdf/bdflib.c (_bdf_add_property): Value stored to `fp` is never read.
- * src/sdf/ftbsdf.c (bsdf_init_distance_map): Value stored to `pixel` is
- never read.
- * src/sdf/ftsdf.c (split_sdf_shape): Value stored to `error` is never read.
- 2021-12-17 Eli Schwartz <[email protected]>
- * meson.build: Optimize lookup for `python3` program.
- The python module's `find_installation` method is intended to provide
- routines for compiling and installing python modules into the
- `site-packages` directory. It does a couple of slow things, including run
- an introspection command to scrape sysconfig info from the detected
- interpreter, which are not needed for the sole use case of invoking the
- found installation as an executable.
- Furthermore, when invoked without the name or path of a python binary, it is
- hardcoded to always look for `python3` corresponding to the interpreter
- meson itself uses to run. So using `find_installation` did not even allow
- detecting `python2` as a fallback.
- Instead, switch to a simple `find_program` lookup that finishes as soon as
- the program is found.
- 2021-12-17 Eli Schwartz <[email protected]>
- * builds/meson/*.py: Fix name of python executable for auxiliary scripts.
- The previous change to check the return code of `run_command` invocations
- caused the CI to fail. Although most scripts used `python_exe` as the
- program command, the script to determine the project version did not.
- But, all scripts used `python` as the shebang, and this is not available on
- all systems. Particularly Debian does not provide a `python` command,
- though `python3` does exist. This meant that formerly the version number
- was lacking, and now the build simply fails.
- Instead, rely on `python3` since it is guaranteed to exist when running
- meson, and `python2` is end of life anyway.
- 2021-12-17 Eli Schwartz <[email protected]>
- * meson.build: Check the return value of `run_command`.
- By default, errors are not checked and a command that is somehow broken will
- just capture incorrect output (likely an empty string). Current development
- versions of meson now raise a warning for this implicit behavior, and advise
- explicitly setting the `check:` keyword argumend to determine whether a
- failing return code should be considered an error.
- Since none of the commands in this project are expected to fail, mark them
- as required to succeed.
- 2021-12-13 Alexei Podtelezhnikov <[email protected]>
- [truetype] Upstream the hdmx binary search.
- * src/truetype/ttobjs.h (TT_SizeRec): Add `widthp` for the hdmx
- widths.
- * src/truetype/ttobjs.c (tt_size_reset): Initialize `widthp` even
- though it might never be used by the interpreter.
- * src/truetype/ttgload.c (tt_loader_init): Avoid repeated searches
- in the hdmx table.
- 2021-12-12 Alexei Podtelezhnikov <[email protected]>
- [truetype] Reset the IUP-called flags for each subglyph.
- This fixes fall-out from 7809007a5b88b15, where the composite
- accents were no longer hinted.
- * src/truetype/ttgload.c (ttloader_init): Move the IUP-called flag
- initialization from here...
- * src/truetype/ttinterp.c (TT_Run_Context): ... to here.
- 2021-12-12 Alexei Podtelezhnikov <[email protected]>
- [truetype] Binary search through the `hdmx` records.
- The `hdmx` table is supposed to be sorted by ppem size, which
- enables binary search. We also drop the check for the sufficient
- length of the record because it is now enforced when the table
- is loaded.
- * include/freetype/internal/tttypes.h (TT_FaceRec): Store the `hdmx`
- record pointers sorted by ppem instead of ppem's themselves.
- * src/truetype/ttpload.c (tt_face_load_hdmx): Prudently sort records.
- (tt_face_get_device_metrics): Implement binary search to retrieve
- advances.
- 2021-12-12 Alexei Podtelezhnikov <[email protected]>
- [truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable.
- This simply shortcuts the glyph loading if FT_LOAD_ADVANCE_ONLY
- is specified by FT_Get_Advances and the `hdmx` data are located.
- Particularly, the classic v35 interpreter or "verified" ClearType
- fonts might see 100x speed up in retrieving the hdmx cache.
- * src/truetype/ttgload.c (TT_Load_Glyph): Insert the shortcut.
- 2021-12-12 Alexei Podtelezhnikov <[email protected]>
- [truetype] Initialize the loader with `hdmx` data.
- The `hdmx` matching can be done before the glyph is loaded.
- * include/freetype/internal/tttypes.h (TT_LoaderRec): Add a field.
- * src/truetype/ttgload.c (compute_glyph_metrics): Relocate the `hdmx`
- code from here...
- (tt_loader_init): ... to here, before the glyph is loaded.
- 2021-12-12 Alexei Podtelezhnikov <[email protected]>
- [truetype] Relocate subpixel flag setting.
- `TT_RunIns` is too busy to deal with subpixel flags. It is better
- to set them in `tt_loader_init`, which is executed before each
- glyph program.
- * src/truetype/ttinterp.c (TT_RunIns): Move the flag setting from
- here...
- * src/truetype/ttgload.c (tt_loader_init): ... to here.
- 2021-12-12 Alexei Podtelezhnikov <[email protected]>
- [truetype] Limit INSTCTRL appication within specs.
- * src/truetype/ttinterp.c (Ins_INSTCTRL): Limit its global effects
- to the CVT program and local effects to the glyph program.
- This also fixes an Infinality buglet. The `ignore_x_mode` should be
- locally unset by the glyph program.
- 2021-12-09 Ben Wagner <[email protected]>
- [bdf] Fix use of uninitialized value.
- In _bdf_readstream if the data contained no newline then the buffer
- would continue to grow and uninitialized data read until either the
- uninitialized data contained a newline or the buffer reached its
- maxiumum size. The assumption was that the line was always too long and
- the buffer had been filled, however this case can also happen when there
- is not enough data to fill the buffer.
- Correct this by properly setting the cursor to the end of the available
- data, which may be different from the end of the buffer. This may still
- result in one extra allocation, but only on malformed fonts.
- * src/bdf/bdflib.c (_bfd_readstream): Correctly update cursor. Remove
- unread set of `avail`.
- Bug: https://lists.nongnu.org/archive/html/freetype-devel/2021-12/msg00001.html
- 2021-12-07 Alexei Podtelezhnikov <[email protected]>
- [truetype] Reduce Infinality footprint again.
- * src/truetype/ttgload.c (compute_glyph_metrics): Streamline and
- prioritize the Infinality checks to use `hdmx`.
- 2021-12-07 Cameron Cawley <[email protected]>
- [builds/windows] Guard some non-ancient API.
- We can support Windows 98 and NT 4.0 in principle...
- * builds/windows/ftdebug.c, builds/windows/ftsystem.c: Check for the
- ancient SDK using _WIN32_WINDOWS, _WIN32_WCE, or _WIN32_WINNT.
- 2021-12-07 Cameron Cawley <[email protected]>
- * builds/windows/visualc/freetype.vcproj: Add missing file.
- 2021-12-02 Werner Lemberg <[email protected]>
- * Version 2.11.1 released.
- ==========================
- Tag sources with `VER-2-11-1'.
- * docs/VERSION.TXT: Add entry for version 2.11.1.
- * docs/CHANGES, docs/release: Updated.
- * README, src/base/ftver.rc, builds/windows/vc2010/index.html,
- builds/windows/visualc/index.html, builds/windows/visualce/index.html,
- builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
- docs/freetype-config.1: s/2.11.0/2.11.1/, s/2110/2111/.
- * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
- * builds/unix/configure.raw (version_info): Set to 24:1:18.
- * CMakeLists.txt (VERSION_PATCH): Set to 1.
- * builds/toplevel.mk (version_tag, CHANGELOG_SCRIPT): New variables.
- (do-dist): Generate `ChangeLog` file with all commits since last release.
- 2021-11-30 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Improve debugging.
- * builds/windows/ftdebug.c (FT_Message, FT_Panic): Buffer output
- and call `OutputDebugStringA` only if `IsDebuggerPresent`.
- [_WIN32_WCE] (OutputDebugStringA): Implement the missing API.
- 2021-11-29 Seigo Nonaka <[email protected]>
- * src/base/ftobjs.c (FT_Request_Metrics): Fix build warning on Android.
- Use casts since `FT_USHORT_MAX` is unsigned short in bionic (libc used in
- Android).
- 2021-11-28 Alexei Podtelezhnikov <[email protected]>
- * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Minor tweak.
- 2021-11-26 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttpload.c (tt_face_load_hdmx): Added comments.
- 2021-11-26 Alexei Podtelezhnikov <[email protected]>
- [truetype] Quietly reject out-of-spec `hdmx` tables.
- The `hdmx` table is optional and can be safely rejected without
- an error if it does not follow specifications. The record size
- must be equal to the number of glyphs + 2 + 32-bit padding.
- * src/truetype/ttpload.c (tt_face_load_hdmx): Thoroughly check
- the record size and improve tracing.
- 2021-11-23 Alexei Podtelezhnikov <[email protected]>
- [truetype] Partly revert 5b626281.
- Fixes #1118.
- * src/truetype/ttpload.c (tt_face_load_hdmx): Do not assume that
- `record_size` is rounded even though the records are padded.
- 2021-11-23 Alexei Podtelezhnikov <[email protected]>
- * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Use transforms.
- 2021-11-22 Werner Lemberg <[email protected]>
- Update `CHANGES` files, other minor whitespace and documentation issues.
- 2021-11-21 Werner Lemberg <[email protected]>
- formats.txt: Add info about WOFF and WOFF2.
- 2021-11-21 Werner Lemberg <[email protected]>
- meson.build: Initialize `common_ldflags`.
- 2021-11-21 Lukas Oberhuber <@lukaso>
- * meson.build: Fix compatibility version on MacOS.
- Fixes #1117.
- 2021-11-21 Werner Lemberg <[email protected]>
- * src/truetype/ttinterp.c (Ins_MD): Avoid `FT_ABS`.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38562
- 2021-11-20 Alexei Podtelezhnikov <[email protected]>
- * include/freetype/fttypes.h (FT_MAKE_TAG): Remove the same casting.
- 2021-11-20 Werner Lemberg <[email protected]>
- [gxvalid] Fix minor compilation warning.
- * src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup): Declare
- as static.
- 2021-11-20 Werner Lemberg <[email protected]>
- [smooth] Fix stand-alone compilation.
- * src/smooth/ftgrays.c (FT_Trace_Enable, FT_Trace_Disable)[STANDALONE_]:
- Define.
- 2021-11-20 Werner Lemberg <[email protected]>
- Avoid undefined left-shifts.
- We really have to use double casts to avoid issues with C's and C++'s
- signedness propagation rules in implicit casts.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41178
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41182
- * include/freetype/config/public-macros.h (FT_STATIC_CAST,
- FT_REINTERPRET_CAST): Modify macro to take two arguments.
- Update all callers.
- (FT_STATIC_BYTE_CAST): New macro.
- * include/freetype/freetype.h (FT_ENC_TAG): Use `FT_STATIC_BYTE_CAST`.
- * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto.
- * include/freetype/fttypes.h (FT_MAKE_TAG): Ditto.
- Use `FT_Tag` for casting.
- * src/ftraster/ftmisc.h (FT_MAKE_TAG): Removed, no longer needed.
- (FT_STATIC_BYTE_CAST): New macro.
- * src/smooth/ftgrays.c (FT_STATIC_CAST): Replace with...
- (FT_STATIC_BYTE_CAST): ... this.
- 2021-11-18 Werner Lemberg <[email protected]>
- Provide C++ versions for public macros with casts.
- Many FreeType clients use C++. However `g++ -Wold-style-cast` warns for
- macros with C-style casts even for system header files; this also affects
- directories included with `-isystem`. While this could be seen as a problem
- with g++, the problem is more a philosophical one: Over the time, C and C++
- diverged more and more, and some features of C are no longer the 'right'
- solution in C++.
- * include/freetype/config/public-macros.h (FT_STATIC_CAST,
- FT_REINTERPRET_CAST): New macros.
- * include/freetype/freetype.h (FT_ENC_TAG, FT_LOAD_TARGET_,
- FT_LOAD_TARGET_MODE): Use `FT_STATIC_CAST`.
- Correctly handle negative 'signed char' input.
- * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto.
- * include/freetype/fttypes.h (FT_MAKE_TAG, FT_BOOL): Ditto.
- * include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): Use
- `FT_REINTERPRET_CAST`.
- * src/smooth/ftgrays.c (FT_STATIC_CAST)[STANDALONE_]: New macro.
- [!STANDALONE]: Include `FT_CONFIG_CONFIG_H`.
- Fixes #1116.
- 2021-11-16 Werner Lemberg <[email protected]>
- Fix clang++ warnings.
- * src/*: Initialize some variables to NULL.
- 2021-11-16 Werner Lemberg <[email protected]>
- [truetype] Updates for the forthcoming OpenType 1.9 standard (2/2).
- * src/truetype/ttgxvar.c (ft_var_load_item_variation_store):
- s/shortDeltaCount/wordDeltaCount/ (as done in the specification, too).
- Recognize new format and reject it for now.
- 2021-11-16 Werner Lemberg <[email protected]>
- [truetype] Updates for the forthcoming OpenType 1.9 standard (1/2).
- This is in preparation for implementing `DeltaSetIndexMap` format 1, which
- is used by `COLR` v1 tables, and which allows 32bit indices.
- https://docs.microsoft.com/en-us/typography/opentype/otspec190/delta/otvarcommonformats_delta.html
- * src/truetype/ttgxvar.h (GX_DeltaSetIdxMapRec): Change type of `mapCount`
- to `FT_ULong`.
- * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add argument
- for passing the table size; update caller.
- Implement new format.
- 2021-11-14 Werner Lemberg <[email protected]>
- Fix clang warnings.
- * src/gxvalid/gxvcmmn.h (GXV_SET_ERR_IF_PARANOID): Use 'do' block.
- * src/gxvalid/gxvmod.c (GXV_TABLE_LOAD, GXV_TABLE_VALIDATE): Ditto.
- * src/smooth/ftgrays.c (gray_convert_glyph): Add cast.
- * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Remove cast.
- * src/type1/t1load.c (read_binay_data): Use `FT_ULong` for `size` parameter.
- (parse_subrs, parse_charstrings, parse_dict): Ditto; also add some casts.
- 2021-11-13 Dominik Röttsches <[email protected]>
- [sfnt] Avoid undefined shifts in `COLR` v1 paint parsing
- * src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Tighten shift
- behavior by using multiplication, mostly using macros from ftcalc.h.
- Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1269168
- 2021-11-13 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Improve `DlgCopy` target.
- Fixes #1113.
- * builds/windows/vc2010/freetype.vcxproj: Run `DlgCopy` conditionally
- and decouple it from `Build`.
- 2021-11-12 Alexei Podtelezhnikov <[email protected]>
- Explicitly define `FT_MSB` for Clang.
- * include/freetype/internal/ftcalc.h [__clang__] (FT_MSB): Updated.
- 2021-11-10 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgxvar.c (ft_var_to_normalized): Edge optimization.
- 2021-11-10 Alexei Podtelezhnikov <[email protected]>
- Additional `FT_MSB` macro definitions.
- Better macros for Windoes CE and ARM in general, based on !109
- from metarutaiga.
- * include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated.
- 2021-11-09 Alexei Podtelezhnikov <[email protected]>
- [build/windows] Remove logging from default debug configurations.
- DLG is rather costly for performance and should be used judiciously.
- This removes it from the default configurations but gives an example
- how to enable it using the `UserDefines` property.
- * builds/windows/vc2010/freetype.vcxproj: Hide FT_DEBUG_LOGGING.
- 2021-11-08 Werner Lemberg <[email protected]>
- * src/sfnt/sfobjs.c (sfnt_open_font): Fix typo.
- 2021-11-08 Werner Lemberg <[email protected]>
- * src/gxvalid.*, src/otvalid.*: Fix `-Wformat` warnings.
- 2021-11-08 Werner Lemberg <[email protected]>
- [pshinter] Fix C++ compilation.
- * src/pshinter/pshalgo.c (psh_compute_dir): Fix type of `result`.
- (psh_hint_table_find_strong_points): Add cast.
- 2021-11-08 Werner Lemberg <[email protected]>
- [sfnt] Reduce footprint if WOFF and WOFF2 support is not needed.
- Based on a patch from metarutaiga (MR !106). The gist of this commit is
- that it doesn't make sense to support WOFF without compression (which would
- be only possible in WOFF 1.0 anyway).
- * src/sfnt/sfobjs.c (sfnt_open_font): Guard WOFF code with
- `FT_CONFIG_OPTION_USE_ZLIB` block.
- Guard WOFF2 code with `FT_CONFIG_OPTION_USE_BROTLI` block.
- * src/sfnt/sfwoff.c, src/sfnt/sfwoff.h: Guard files with
- `FT_CONFIG_OPTION_USE_ZLIB` blocks, not parts of the code.
- * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h, src/sfnt/woff2tags.c,
- src/sfnt/woff2tags.h: Guard files with `FT_CONFIG_OPTION_USE_BROTLI` blocks,
- not parts of the code.
- Fixes #1111.
- 2021-11-08 Werner Lemberg <[email protected]>
- [truetype] Make trickyness checks depend on TT_USE_BYTECODE_INTERPRETER.
- Based on a patch from metarutaiga (MR !106).
- * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag,
- tt_check_trickyness_family, tt_synth_sfnt_checksum, tt_get_sfnt_checksum,
- tt_check_trickyness_sfnt_ids, tt_check_trickyness): Put functions into a
- `TT_USE_BYTECODE_INTERPRETER` block.
- (tt_face_init): Put trickyness checks into a `TT_USE_BYTECODE_INTERPRETER`
- block.
- Fixes #1111.
- 2021-11-08 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttload.c (tt_face_load_gasp): Fix a type mismatch warning.
- 2021-11-07 Alexei Podtelezhnikov <[email protected]>
- [dlg] Define DLG_STATIC explicitly.
- DLG_STATIC is intended to disable Windows DLL linking attributes.
- It does not hurt to define it explicitly when we wrap DLG code.
- This fixes tons of LNK4286 and C4273 warnings from MSVC if we
- forget to define DLG_STATIC as a compiler option.
- * builds/windows/vc2010/freetype.vcxproj: Remove DLG_STATIC option.
- * src/dlg/dlgwrap.c [FT_DEBUG_LOGGING]: Define DLG_STATIC.
- * include/freetype/internal/ftdebug.h [FT_DEBUG_LOGGING]: Ditto.
- 2021-11-07 Alexei Podtelezhnikov <[email protected]>
- [dlg] Lighten up the inclusions.
- The DLG wrapper needs to know if FT_DEBUG_LOGGING is defined in
- `ftoption.h`. It does not need entire FreeType.
- * src/dlg/dlgwrap.c: Include FT_CONFIG_OPTIONS_H directly.
- 2021-11-07 Alexei Podtelezhnikov <[email protected]>
- [truetype] Avoid some memory zeroing in variations.
- * src/truetype/ttgxvar.c (ft_var_readpackeddeltas, ft_var_load_avar,
- ft_var_load_item_variation_store, ft_var_load_gvar): Use FT_QNEW_ARRAY
- if memory immediately initialized or discarded otherwise.
- 2021-11-05 Jany Belluz <[email protected]>
- [truetype] Fix handling of packed deltas in Variation Fonts.
- * src/truetype/ttgxvar (ft_var_readpackeddeltas): Don't expect the number of
- bytes used to encode the deltas to be higher than the number of encoded
- values. The specification allows a very compact encoding; for example, a
- list of 200 zeros can be encoded with just a couple of bytes.
- We now count the consumed bytes to make sure to not read more than expected.
- 2021-11-04 Jany Belluz <[email protected]>
- [truetype] Fix CVAR handling of tuples for all points.
- * src/truetype/ttgxvar (tt_face_vary_cvt): Function
- `ft_var_readpackedpoints`, when it returns `ALL_POINTS`, also sets
- `point_count` to value 0. However, the CVAR code was incorrectly expecting
- that `point_count` would be set to match the length of the CVT table.
- 2021-11-04 Jany Belluz <[email protected]>
- * src/truetype/ttgxvar.c: Fix typos in macros that guard CVAR code.
- 2021-11-04 Alexei Podtelezhnikov <[email protected]>
- * docs/INSTALL: Mention Meson and MSBuild more prominently.
- 2021-11-03 Gabor Kertesz <[email protected]>
- [libpng] Update Meson wrap for win-arm64
- 1.6.37-5 released patches for win-arm64 to successfully build
- libpng with Meson:
- https://github.com/mesonbuild/wrapdb/pull/205
- https://github.com/mesonbuild/wrapdb/pull/216
- Updated by the following command:
- meson wrap update libpng
- Tested on win-arm64 and x64.
- 2021-11-03 Dominik Röttsches <[email protected]>
- [sfnt] Clarify `COLR` v1 FT_Paint* format representations
- * include/freetype/ftcolor.h (FT_PaintLinearGradient,
- FT_PaintRadialGradient, FT_PaintSweepGradient, FT_PaintTransform,
- FT_PaintTranslate, FT_PaintScale, FT_PaintRotate, FT_PaintSkew): Clarify
- 16.16 fixed point representation of struct fields.
- * src/sfnt/ttcolr.c (read_paint): Shift coordinates for
- FT_PaintLinearGradient, FT_PaintRadialGradient, FT_PaintSweepGradient
- accordingly.
- Fixes: https://gitlab.freedesktop.org/freetype/freetype/-/issues/1110
- 2021-11-03 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Let MSBuild handle DLG copy.
- * builds/windows/vc2010/freetype.vcxproj: Specify DlgCopy target.
- * builds/windows/vc2010/script.bat: Deleted.
- 2021-10-29 Alexei Podtelezhnikov <[email protected]>
- * src/truetype/ttgload.c (load_truetype_glyph): Fix MSVC warning C4312.
- 2021-10-29 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Separate MSVC linker and librarian.
- MSVC uses LIB for static and LINK for dynamic libraries. They are
- related but the former has much smaller set of options.
- * builds/windows/vc2010/freetype.vcxproj: Updated.
- 2021-10-29 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Revise MSVC linking optimizations.
- * builds/windows/vc2010/freetype.vcxproj: Optimize DLL linking only.
- * builds/windows/visualc/freetype.dsp: Ditto.
- * builds/windows/visualc/freetype.vcproj: Ditto.
- 2021-10-28 Alexei Podtelezhnikov <[email protected]>
- [woff] Optimize table tagging.
- * include/freetype/internal/wofftypes.h (WOFF_TableRec): Use
- 32-bit tag.
- * src/sfnt/sfwoff.c (woff_open_font): Use 32-bit tag.
- 2021-10-28 Alexei Podtelezhnikov <[email protected]>
- [woff2] Optimize table tagging.
- Fixes #1107.
- * include/freetype/internal/wofftypes.h (WOFF2_TableRec): Use
- 32-bit tag.
- * src/sfnt/sfwoff2.c (compare_tags, find_table, woff2_open_font):
- Use 32-bit tag.
- * src/sfnt/woff2tags.[ch] (woff2_known_tags): Use static storage and
- return 32-bit tag.
- 2021-10-26 Werner Lemberg <[email protected]>
- Formatting.
- 2021-10-26 Ben Wagner <[email protected]>
- [mm] Tolerate missing Blend dictionary entries
- In a Multiple Master font, the Blend dictionary must contain valid
- Private, FontInfo, and FontBBox. The current code will error if any of
- these are present and invalid, but will not error and will provide
- uninitialized data if the Blend dictionary exists but does not contain
- one of these entries. This change reverts to the older behavior of
- treating any missing entries as containing all zero data and not
- returning an error.
- In the future it may be best to keep track of when these are actually
- initialized and error if they are not.
- * src/type1/t1load.c (t1_allocate_blend): Zero initiailize.
- 2021-10-26 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Add MSVC linker optimazations.
- We continue to build static libraries with statically linked C run-
- time and add options to optimize references.
- * builds/windows/vc2010/freetype.vcxproj: Sort entries, add options.
- 2021-10-23 Alexei Podtelezhnikov <[email protected]>
- * builds/windows/vc2010/freetype.vcxproj: Use MachineARM64.
- 2021-10-22 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Prioritize x64.
- * builds/windows/vc2010/freetype.sln: Sort entries.
- 2021-10-22 Gabor Kertesz <[email protected]>
- [builds/windows] Add ARM64 platform.
- * builds/windows/vc2010/freetype.sln: Updated
- * builds/windows/vc2010/freetype.vcxproj: Updated.
- * builds/windows/vc2010/freetype.vcxproj.filters: Minor fix.
- 2021-10-21 Ben Wagner <[email protected]>
- [mm] Delay setting blend weight and design position.
- Previously the `blend->weight_vector`, `blend->default_weight_vector`,
- and `blend->design_pos` were set early to allocated but uninitialized
- memory under the assumption that the memory would eventually be
- initialized. However, it is possible that some of the required
- keywords may not actually be present, leaving the memory uninitialized.
- This is different from a present but invalid table, which would produce
- an error.
- Reported as
- https://bugs.chromium.org/p/chromium/issues/detail?id=1261762
- * src/type1/t1load.c (t1_allocate_blend): Remove early allocation and
- initialization.
- (parse_blend_design_positions, parse_weight_vector): Parse into local
- and assign to blend if valid.
- (T1_Open_Face): Check that if a blend exists that it has the weight
- vector and design positions.
- 2021-10-21 Ben Wagner <[email protected]>
- [cff] Commit vstore data and regions on allocation.
- The vstore->regionCount and vstore->dataCount were read directly
- from the data. However, vstore->varRegionList and vstore->varData
- would still contain uninitialized entries with uninitialized
- pointers in the event of an error, leading to issues when attempting
- to clean up.
- Reportd as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40104
- * src/cff/cffload.c (cff_vstore_load): Read the region and data counts
- into locals and update the vstore counts immediately after each entry
- becomes free-able.
- 2021-10-20 Ben Wagner <[email protected]>
- [sfnt] Delay setting gasp ranges and count until computed.
- Previously, the gasp.numRanges was set and gasp.gaspRanges was
- allocated and assigned before a possible early exit if the frame could
- not be entered. It is also possible that the gaspRanges allocation
- could fail but the numRanges still be set to non-zero. In such cases
- an error would be returned, but the face would have a gasp in an
- inconsistent state which may still be accessed.
- Reported as
- https://bugs.chromium.org/p/chromium/issues/detail?id=1261450
- * src/sfnt/ttload.c (tt_face_load_gasp): Delay setting gasp.numRanges
- and gasp.gaspRanges until after the ranges are initialized.
- 2021-10-20 Ben Wagner <[email protected]>
- [sfnt] Delay setting names and langTags until computed.
- Previously, the table->names and table->langTags fields were created
- pointing to uninitialized memory and an early exit could happen if the
- frame could not be entered. The caller would then be unable to properly
- dispose of the memory as the string fields had not been initialized.
- Reported as
- https://bugs.chromium.org/p/chromium/issues/detail?id=1261343
- * src/sfnt/ttload.c (tt_face_load_name): delay setting table->langTags
- and table->names until after the memory they will point to is fully
- initialized.
- 2021-10-20 Alexei Podtelezhnikov <[email protected]>
- * tests/issue-1063/main.c: s/PATH_MAX/FILENAME_MAX/.
- Closes !97 for Windows by using a standard macro.
- 2021-10-19 Werner Lemberg <[email protected]>
- [bdf, cid, pfr, winfonts] Improve rejection of other font formats.
- This is mainly for better diagnostics of malformed fonts.
- * src/bdf/bdflib.c (_bfd_readstream): Stop font format testing if the first
- input line is too long or doesn't end with `\r` or `\n`.
- * src/cid/cidparse.c (cid_parser_new): Don't handle too short input as an
- error but as an unknown format.
- * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
- * src/winfonts/winfnt.c (fnt_font_load, fnt_face_get_dll_font): Ditto.
- 2021-10-19 Alexei Podtelezhnikov <[email protected]>
- [pcf] Zero out the allocated properties.
- Fallout reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40033
- * src/pcf/pcfread.c (pcf_get_properties): Use FT_NEW_ARRAY and zero
- out `properties` in case of failure.
- 2021-10-18 Werner Lemberg <[email protected]>
- configure: Use string comparison for directory inodes.
- Inode values might be larger than integers supported by the shell.
- Fixes #1105.
- 2021-10-17 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttload.c (tt_face_load_name): NULL-initialize langTag.
- Another attempt to fix fallout reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40024
- 2021-10-17 Alexei Podtelezhnikov <[email protected]>
- [bdf] Fix up user properties.
- Fallout reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40027
- * src/bdf/bdflib.c (_bdf_add_property): Cosmetic NULL.
- (bdf_create_property): Limit allocations to customary signed
- FT_Long and NULL-initialize unused storage.
- (bdf_free_font): Do not free unused storage.
- 2021-10-17 Alexei Podtelezhnikov <[email protected]>
- * src/sfnt/ttload.c (tt_face_load_name): Accounting fix.
- Fallout reported as
- https://crbug.com/40024
- 2021-10-16 Ben Wagner <[email protected]>
- Fix typos in memory macros.
- FT_QNEW_ARRAY and FT_QRENEW_ARRAY were using the non-Q
- FT_MEM_NEW_ARRAY and FT_MEM_RENEW_ARRAY. Change these to use the Q
- versions. Also fix the one issue discovered in tt_face_load_name
- where table->names is created with FT_QNEW_ARRAY but the extra
- string member is not initialized to NULL.
- * include/freetype/internal/ftmemory.h (FT_Q(RE)NEW_ARRAY):
- Use FT_MEM_Q(RE)NEW_ARRAY as needed.
- * src/sfnt/ttload.c (tt_face_load_name): Initialize `entry->string`.
- 2021-10-15 Ben Wagner <[email protected]>
- [truetype] Reload context after re-executing `prep`.
- When a different hinting mode from the current is selected, the `prep` table
- must be re-executed with the new mode. After this happens the context must
- be re-loaded in preparation for the glyph program to be run.
- Fixes #1104.
- * truetype/ttgload.c (tt_loader_init): Add call to `TT_Load_Context`.
- 2021-10-15 Werner Lemberg <[email protected]>
- [truetype] Minor documentation improvements.
- 2021-10-14 Anurag Thakur <[email protected]>
- Add clang build to linux CI
- 2021-10-12 Anurag Thakur <[email protected]>
- CI: Add macOS CI, including a clang build
- 2021-10-12 Alexei Podtelezhnikov <[email protected]>
- * src/cid/cidload.c (parse_fd_array): Protect against trancation.
- 2021-10-12 Alexei Podtelezhnikov <[email protected]>
- [type1] Revert to signed size for binary data.
- Recently introduced and reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39838
- * src/type1/t1load.c (read_binary_data): Reject negative size.
- (parse_subrs, parse_charstrings): Use customary signed size.
- 2021-10-11 Alexei Podtelezhnikov <[email protected]>
- [psaux] Signedness revisions.
- Unsigned indexes are easier to check.
- * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Updated.
- * src/psaux/psintrp.c (cf2_interpT2CharString): Ditto.
- * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
- * src/type1/t1load.c (read_binary_data): Ditto.
- 2021-10-11 Alexei Podtelezhnikov <[email protected]>
- [cid] Signedness revisions.
- Unsigned checks are simpler.
- * include/freetype/t1tables.h (CID_FaceInfoRec): Change to unsignd
- `num_dicts`.
- * src/cid/cidparse.h (CID_Parser): Change to unsigned `num_dict`.
- * src/cid/cidgload.c (cid_load_glyph): Updated.
- * src/cid/cidload.c (cid_load_keyword, parse_fd_array,
- parse_expansion_factor, parse_font_name, cid_read_subrs,
- cid_face_open): Updated.
- * src/cid/cidobjs.c (cid_face_done): Updated.
- * src/cid/cidparse.c (cid_parser_new): Updated.
- 2021-10-09 Alexei Podtelezhnikov <[email protected]>
- * src/cid/cidload.c (cid_face_open): Streamline CIDCount check.
- 2021-10-08 Alexei Podtelezhnikov <[email protected]>
- * src/cid/cidload.c (cid_face_open): Streamline SubrCount check.
- 2021-10-08 Alexei Podtelezhnikov <[email protected]>
- * src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading.
- 2021-10-08 Alexei Podtelezhnikov <[email protected]>
- Signedness revisions.
- This eliminates explicit casting by switching to unsigned fields.
- The revisions mostly impact the handling of CID fonts.
- * include/freetype/fttypes.h (FT_Data): Change to unsigned `length`.
- * include/freetype/t1tables.h (CID_FaceDictRec): Ditto for `sd_bytes`.
- (CID_FaceInfoRec): Ditto for `gd_bytes` and `gd_bytes`.
- * include/freetype/internal/tttypes.h (TT_LoaderRec): Ditto for
- `byte_len`.
- * src/cid/cidgload.c (cid_load_glyph): Updated.
- * src/cid/cidload.h (cid_get_offset): Update argument.
- * src/cid/cidload.c (cid_get_offset, cid_read_subrs, cid_face_open):
- Updated.
- * src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data):
- Updated.
- * src/psaux/psft.c (cf2_getT1SeacComponent): Updated.
- * src/truetype/ttgload.c (TT_Process_Composite_Glyph,
- load_truetype_glyph): Updated.
- 2021-10-07 Jan Alexander Steffens (heftig) <[email protected]>
- meson.build (gen_docs): Use `current_source_dir` instead of `source_root`.
- These two are not equal when FreeType is used as a subproject, such as in
- `freetype-demos`. In that case, `source_root` points at the root project,
- causing the docs build to fail.
- 2021-10-05 Alexei Podtelezhnikov <[email protected]>
- * src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround.
- 2021-10-05 Alexei Podtelezhnikov <[email protected]>
- [builds/unix, builds/vms] Standardize `mmap` failure.
- * builds/unix/ftsystem.c (FT_Stream_Open): Check for MAP_FAILED.
- * builds/vms/ftsystem.c (FT_Stream_Open): Ditto.
- This should cover https://savannah.nongnu.org/patch/?5909 as well.
- 2021-10-05 Hugh McMaster <[email protected]>
- autogen.sh: Only copy submodules if building from a git branch.
- `autogen.sh` fails if building from a standard source tarball. Firstly, git
- expects to be called in a git repository, then `copy_submodule_files`
- blindly attempts to copy files.
- Debian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh`
- before compiling to regenerate build files.
- This patch ensures that various git commands are only called and 'dlg' files
- are only copied if `autogen.sh` is called from a git repository.
- 2021-10-05 Alexei Podtelezhnikov <[email protected]>
- * include/freetype/internal/ftgloadr.h: Add missing header.
- Noticed by Jouk Jansen.
- 2021-10-05 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Additional clean-ups.
- * src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code.
- * src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields.
- 2021-10-04 Alexei Podtelezhnikov <[email protected]>
- [pshinter] More convenient direction definition.
- It is easier to check directions using flags than integer values.
- * src/pshinter/pshalgo.h (PSH_Dir): Redefine directions.
- (PSH_PointRec): Use them as an enum type.
- * src/pshinter/pshalgo.c (psh_compute_dir): Modify return type.
- (psh_glyph_init, psh_hint_table_find_strong_points,
- psh_glyph_find_blue_points): Update users.
- 2021-10-04 Alexei Podtelezhnikov <[email protected]>
- [pshinter] Remove unnecessary check.
- * src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not
- check if direction is defined before checking how.
- 2021-10-02 AnuthaDev <[email protected]>
- CI: Hardcode meson version to fix build failure on windows
- 2021-10-01 Alexei Podtelezhnikov <[email protected]>
- Additional `FT_MSB` macro definitions.
- * include/freetype/internal/ftcalc.h [__DECC,_CRAYC]: Use builtins
- and intrinsics.
- 2021-10-01 Alexei Podtelezhnikov <[email protected]>
- * src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting.
- 2021-09-30 Alexei Podtelezhnikov <[email protected]>
- * src/tools/apinames.c: Facilitate OpenVMS linker options.
- 2021-09-29 Alexei Podtelezhnikov <[email protected]>
- * src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation.
- 2021-09-25 Alexei Podtelezhnikov <[email protected]>
- [builds/unix] Do not use autoconf SIZEOF.
- * builds/unix/ftconfig.h.in [FT_USE_AUTOCONF_SIZEOF_TYPES]: Removed.
- * builds/unix/configure.raw: Remove AC_CHECK_SIZEOF and update.
- After this commit, autoconf builds will fully rely on <limits.h>
- rather than falling back on it if AC_CHECK_SIZEOF failed for some
- reason. There is a risk that misconfigured cross-compilation might
- have wrong headers. Note that Meson and CMake builds always relied on
- <limits.h> for sizes and availability of integer types.
- 2021-09-25 Alexei Podtelezhnikov <[email protected]>
- Propagate sign when reading OFF3.
- Signed 24-bit values are extremely rare. FreeType only reads them in
- PFR fonts with bitmap strikes conditionally. They have not been seen
- in the known fonts. That is why this bug could never be discovered.
- `FT_FRAME_OFF3` propagates sign correctly.
- * include/freetype/internal/ftstream.h (FT_PEEK_OFF3, FT_PEEK_OFF3_LE):
- Propagate sign into 32-bit value.
- (FT_GET_OFF3, FT_READ_OFF3): Needed fixing but removed as unused.
- 2021-09-25 Alexei Podtelezhnikov <[email protected]>
- [bdf] Simplify comment collection or lack thereof.
- BDF comments are neither actually collected nor retrieved. There is
- no need to be fancy with delimiters.
- * src/bdf/bdflib.c (_add_bdf_comment): Delimit comments with zeros...
- (bdf_load_font): ...and do not null-terminate comments additionally.
- (_bdf_parse_glyphs): Check if comments are kept, which they are not.
- (_bdf_parse_start): Minor clean up.
- 2021-09-24 Alexei Podtelezhnikov <[email protected]>
- Use NULL for pointers only.
- * src/bdf/bdflib.c (*): Code changes.
- * include/freetype/freetype.h: Comments only.
- * src/cff/cffload.c, src/cff/cffobjs.c: Ditto.
- * src/winfonts/winfnt.c: Ditto.
- 2021-09-23 Werner Lemberg <[email protected]>
- Minor documentation fixes and improvements.
- 2021-09-23 Alexei Podtelezhnikov <[email protected]>
- Reference `fopen` in the docs.
- 2021-09-23 Alexei Podtelezhnikov <[email protected]>
- [bdf, pcf] Minor optimization.
- * src/pcf/pcfread.c (pcf_load_font): Do not call `FT_MulDiv` for a
- small job.
- * src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto.
- * src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a comment.
- 2021-09-22 Alexei Podtelezhnikov <[email protected]>
- [base] Initialize stream memory earlier.
- With Windows memory management tracking heap, it is important to use
- it during the stream opening fallback. In Unix, the argument is
- unused, but it is better to set it correctly.
- * src/base/ftobjs.c (FT_Stream_New): Set memory before calling
- `FT_Stream_Open`.
- * builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open,
- ft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper
- memory argumment.
- 2021-09-22 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Revert back to `CreateFileA` only.
- Calling `CreateFileW` without making sure that the patname is really
- `wchar_t` is a bad idea and can lead to unpredictable overreads. For
- Windows CE, we impelemnt the missing API.
- Fixes #1098 and !76 again.
- * builds/windows/ftsystem.c (FT_Stream_Open): Call `CreateFileA`.
- [_WIN32_WCE] (CreateFileA, FileSizeEx): Implement missing interfaces.
- 2021-09-21 Alexei Podtelezhnikov <[email protected]>
- * src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner.
- 2021-09-21 Alexei Podtelezhnikov <[email protected]>
- Minor.
- 2021-09-20 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW.
- 2021-09-18 Alexei Podtelezhnikov <[email protected]>
- [cache] Minor clean-ups.
- * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses.
- * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.
- (FTC_Cache_RemoveFaceID): Remove unnecessary variable.
- 2021-09-17 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Try both wide and narrow `CreateFile`
- Windows handles wchar_t* UTF-16 and char* ANSI (presently UTF-8)
- filenames using alternative -A and -W API. We'll try them both
- when opening a file. This means that you should not worry about
- about conversions.
- Fixes #1098 and !76.
- * builds/windows/ftsystem.c (FT_Stream_Open): Call alternative
- `CreateFile` in the case of failure.
- 2021-09-17 Edwin Steiner <[email protected]>
- [cff] Explicitly set StandardEncoding or ExpertEncoding offsets.
- Fixes #1097.
- * src/cff/cffload.c (cff_encoding_load): Set special offset values.
- 2021-09-16 Alexei Podtelezhnikov <[email protected]>
- [cache] Miscellaneous clean-ups.
- * src/cache/ftccache.c (ftc_get_top_node_for_hash, FTC_Cache_Clear):
- Remove barely used variables.
- (ftc_cache_add): Adjust casting.
- * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Remove casting.
- * src/cache/ftcsbits.c (ftc_snode_load): Remove casting.
- 2021-09-16 Alexei Podtelezhnikov <[email protected]>
- * src/cff/cffload.c (cff_fd_select_get): Remove casting.
- 2021-09-16 Alexei Podtelezhnikov <[email protected]>
- * src/pcf/pcfread.c (pcf_read_TOC): Remove casting.
- 2021-09-15 Alexei Podtelezhnikov <[email protected]>
- Minor type adjustments.
- * src/cff/cffobjs.c (cff_face_init): Reduce casting.
- * src/truetype/ttobjs.c (tt_size_ready_bytecode): Ditto.
- * src/type1/t1load.c (T1_Set_MM_Design): Ditto.
- 2021-09-15 Alexei Podtelezhnikov <[email protected]>
- Replace boolean allocation macros with MEM ones.
- * src/base/ftbitmap.c (FT_Bitmap_Copy): Use MEM-macro.
- * src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Ditto.
- * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Ditto.
- * src/cache/ftccache.c (ftc_cache_init): Ditto
- * src/gzip/ftgzip.c (ft_gzip_alloc): Ditto.
- * src/psnames/psmodule.c (ps_unicodes_init): Ditto.
- * src/sfnt/sfobjs.c (sfnt_load_face): Ditto.
- * src/sfnt/ttload.c (tt_face_load_name): Ditto.
- 2021-09-15 Alexei Podtelezhnikov <[email protected]>
- [cache] Revert to some zeroing.
- * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero
- `buckets` again to fix some crashes.
- 2021-09-14 Alexei Podtelezhnikov <[email protected]>
- * src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops.
- Fixes fallout from 731d0b685685 reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38685
- 2021-09-13 Alexei Podtelezhnikov <[email protected]>
- [cff, pshinter] Clean up unsigned counters.
- Loops with unsigned decrement can be reliably stopped when the counter
- wraps around after reaching zero.
- * src/cff/cffload.c (cff_charset_compute_cids): Use unsigned counter.
- * src/pshinter/pshalgo.c (psh_hint_table_activate_mask): Ditto.
- * src/pshinter/pshrec.c (ps_mask_table_merge): Ditto.
- 2021-09-13 Alexei Podtelezhnikov <[email protected]>
- [bdf, psnames, sfnt] Avoid some memory zeroing.
- * src/bdf/bdfdrivr.c (BDF_Face_Init): Use Q-macro.
- * src/sfnt/sfobjs.c (sfnt_load_face): Ditto.
- * src/psnames/psmodule.c (src/psnames/psmodule.c): Remove zero.
- 2021-09-13 Alexei Podtelezhnikov <[email protected]>
- * src/base/ftobjs.c (FT_CMap_New): Revert to zeroing.
- Fixes fallout from c1fa7aa2bc96, reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38641
- 2021-09-13 Alexei Podtelezhnikov <[email protected]>
- [truetype] Clean up `exec` initialization.
- * src/truetype/ttinterp.c (Init_Context): Absorbed into...
- (TT_New_Context): ... this function.
- 2021-09-13 Alexei Podtelezhnikov <[email protected]>
- [truetype] Avoid some memory zeroing.
- * src/truetype/ttgload.c (load_truetype_glyph): Use Q-macro.
- * src/truetype/ttinterp.c (Update_Max): Ditto.
- * src/truetype/ttpload.c (src/truetype/ttpload.c): Ditto.
- 2021-09-13 Alexei Podtelezhnikov <[email protected]>
- [base] Avoid some memory zeroing.
- * src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done,
- ft_open_face_internal, ft_open_face_internal): Use Q-macros.
- 2021-09-13 Alexei Podtelezhnikov <[email protected]>
- [cache, psaux] Remove zeros.
- * src/cache/ftcmru.c (FTC_MruList_New): Remove initialization.
- * src/psaux/psstack.c (cf2_stack_init): Ditto.
- 2021-09-12 Alexei Podtelezhnikov <[email protected]>
- [cache] Avoid some memory zeroing.
- * src/cache/ftcmru.c (FTC_MruList_New): Use Q-macro.
- * src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Ditto.
- * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Ditto.
- 2021-09-11 Alexei Podtelezhnikov <[email protected]>
- * src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero.
- Fixes fall out from a7b199d081e7.
- 2021-09-10 Alexei Podtelezhnikov <[email protected]>
- [truetype] Tweak `hdmx` checking.
- Fixes #1096.
- * src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding.
- 2021-09-10 Alexei Podtelezhnikov <[email protected]>
- [truetype] Tweak `loca` clamping.
- Fixes #1095.
- * src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping.
- * include/freetype/internal/tttypes.h (TT_Face): Correct docs.
- 2021-09-08 Alexei Podtelezhnikov <[email protected]>
- Fortify memory debugging (cont'd).
- * src/base/ftdbgmem.c (FT_DumpMemory): Check for active debugger.
- (ft_mem_table_destroy): Move `FT_DumpMemory` call from here...
- (ft_mem_debug_done): ... to here.
- 2021-09-08 Alexei Podtelezhnikov <[email protected]>
- Fortify memory debugging.
- These changes are neccessary to properly recover `memory->user` that
- holds the Windows heap handle now.
- * src/base/ftdbgmem.c (ft_mem_debug_init): Handle all table allocations,
- initializations, and sizing instead of...
- (ft_mem_table_new): ... this function removed.
- (ft_mem_debug_done): Better check for the active debugger and free the
- debugger table here instead of...
- (ft_mem_table_destroy): ... here.
- 2021-09-08 Werner Lemberg <[email protected]>
- src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600.
- This allows C99 compilation on Solaris.
- Problem reported by Mojca Miklavec.
- 2021-09-07 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Use native memory allocation API.
- * builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free):
- Wrap HeapAlloc, HeapReAlloc, and HeapFree.
- (FT_New_Memory): Set the heap handle.
- 2021-09-07 Werner Lemberg <[email protected]>
- [dlg] Synchronize with upstream.
- * src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600.
- Fixes #1093.
- 2021-09-04 Alexei Podtelezhnikov <[email protected]>
- Cosmetic zeros.
- 2021-09-03 Alexei Podtelezhnikov <[email protected]>
- * src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory.
- 2021-09-03 Werner Lemberg <[email protected]>
- autogen.sh: Make it work with old Solaris 10 shell.
- 2021-09-03 Alexei Podtelezhnikov <[email protected]>
- [smooth, raster, sdf] Clean up initialization calls.
- * src/raster/ftraster.c (ft_black_init): Removed.
- (ft_black_new): Clean up.
- * src/sdf/ftbsdf.c (bsdf_raster_new): Ditto.
- * src/sdf/ftsdf.c (sdf_raster_new): Ditto.
- * src/smooth/ftgrays.c (gray_raster_new): Ditto.
- 2021-09-03 Alexei Podtelezhnikov <[email protected]>
- * src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing.
- 2021-09-03 Alexei Podtelezhnikov <[email protected]>
- * src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling.
- 2021-09-03 Alexei Podtelezhnikov <[email protected]>
- Cosmetic zeros.
- 2021-09-02 Alexei Podtelezhnikov <[email protected]>
- [base] Clean up stream reading.
- * src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset,
- FT_Stream_ReadULong and their LE variants): Remove unnecessary
- initialization and slightly refactor.
- (FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned
- value and align with sister functions.
- * include/freetype/internal/ftstream.h (FT_Stream_GetByte,
- FT_Stream_ReadByte): Update prototypes and caller macros.
- 2021-09-02 Alexei Podtelezhnikov <[email protected]>
- s/0/NULL/ where appropriate.
- 2021-08-30 Alexei Podtelezhnikov <[email protected]>
- * builds/windows/ftsystem.c (FT_Stream_Open): Fix double-close.
- 2021-08-30 Alexei Podtelezhnikov <[email protected]>
- [smooth] Reduce shift in multiply-shift optimization.
- * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): Reduce shift.
- Smaller shifts that keep the division operands of FT_UDIVPREP within
- 32 bits result in slightly faster divisions, which is noticeable in
- the overall performance. The loss of precision is tolerable until the
- divisors (the components dx and dy) approach 32 - PIXEL_BITS. With
- PIXEL_BITS = 8, this corresponds to 65,000 pixels or the bitmap size
- that we refuse to render anyway.
- Using `ftbench -p -s60 -t5 -bc timesi.ttf`,
- Before: 8.52 us/op
- After: 8.32 us/op
- 2021-08-28 Werner Lemberg <[email protected]>
- [truetype] Fix compilation if !TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
- * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): Compile function
- conditionally.
- (tt_face_vary_cvt) [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Add code.
- Fixes #1091.
- 2021-08-27 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Revise SSE2 settings.
- * builds/windows/vc2010/freetype.vcxproj [x64]: Remove explicit SSE2.
- * builds/windows/visualc/freetype.vcproj [Win32]: Add explicit SSE2.
- 2021-08-27 Ben Wagner <[email protected]>
- [smooth] Detect SSE2 with MSVC for x86
- MSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is
- defined and greater than or equal to 2.
- * src/smooth/ftgrays.c (FT_SSE2): New macro.
- Use it where appropriate.
- 2021-08-26 Alexei Podtelezhnikov <[email protected]>
- Expand comment (cont'd).
- 2021-08-26 Alexei Podtelezhnikov <[email protected]>
- Expand comment.
- 2021-08-24 Alexei Podtelezhnikov <[email protected]>
- * src/smooth/ftgrays.c (gray_render_conic): Refactor redundancy.
- 2021-08-24 suzuki toshiya <[email protected]>
- [truetype] Fix for the family name shorter than 8 characters.
- * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag):
- If the family name to be checked is shorter than 8 characters,
- do not check its syntax.
- 2021-08-24 suzuki toshiya <[email protected]>
- [truetype] Simplify `trick_names'.
- * src/truetype/ttobjs.c (tt_check_trickyness_family): For the case
- that the beginning part of a long tricky family name is already
- registered as another tricky family name, no need to double-check
- the longer one. Such long tricky family names are removed from
- the `trick_names'.
- 2021-08-24 suzuki toshiya <[email protected]>
- [truetype] Add 2 tricky font names.
- Additional fix for the issue #1087.
- * src/truetype/ttobjs.c (tt_check_trickyness_family): Add 2 tricky
- font names reported in #1087.
- 2021-08-24 suzuki toshiya <[email protected]>
- [truetype] New function to skip the randomization tag.
- * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag):
- New function to skip the randomization tag in the names of the
- fonts embedded in a PDF. It is used by tt_check_trickyness_family(),
- to keep from mistaking "DLC" in the randomization tag as a
- tricky font name. See discussion in:
- https://lists.nongnu.org/archive/html/freetype-devel/2021-02/msg00002.html
- For technical detail about the randomization tag, please find
- PDF Reference 5.5.3 "Font Subsets". Thanks to Justyna Wawrzynska
- for pointing out the issue caused by the randomization tag.
- 2021-08-24 suzuki toshiya <[email protected]>
- [truetype] Add checksums for 2 tricky fonts.
- Thanks to Ting717 for providing sample PDF. Fixes #1087.
- * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Add
- checksums for 2 tricky fonts `DFHei-Bd-WIN-HK-BF' and
- `DFMing-Md-WIN-HK-BF'.
- 2021-08-23 Alexei Podtelezhnikov <[email protected]>
- Whitespace formatting.
- 2021-08-22 Alexei Podtelezhnikov <[email protected]>
- Decorate const arguments.
- * src/base/ftglyph.c (FT_Glyph_Transform, FT_Glyph_To_Bitmap): Do it.
- * include/freetype/ftglyph.h (FT_Glyph_Transform, FT_Glyph_To_Bitmap):
- Do it.
- 2021-08-21 Alexei Podtelezhnikov <[email protected]>
- [smooth] Clean up the null cell usage.
- Put the null cell at the end of the pool and store it explicitly so that
- we can use it as both the limit and the dumpster.
- * src/smooth/ftgrays.c (gray_TWorker): Store the last `cell_null` and
- remove unnecesary fields.
- (NULL_CELL_PTR, CELL_IS_NULL): Remove in favor of explicit `cell_null`.
- (gray_dump_cells, gray_set_cell, gray_sweep{,_direct}): Update callers.
- (gray_convert_glyph_inner): Trace remaining cells (oh well).
- (gray_convert_glyph): Set up `cell_null` and slightly improve the pool
- management.
- 2021-08-20 Alexei Podtelezhnikov <[email protected]>
- [base] Restore quiet no-op rendering of bitmap glyphs.
- Fixes #1076.
- * src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when
- rendering a bitmap glyph.
- 2021-08-20 Alexei Podtelezhnikov <[email protected]>
- [smooth] Fortify 64-bit algorithm.
- * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): s/long/FT_Int64/ and
- s/unsigned long/FT_UInt64/.
- (gray_render_line): Adjust a critical variable type.
- 2021-08-20 Carlo Bramini <[email protected]>
- * builds/windows/ftsystem.c (FT_Stream_Open): Support legacy Windows.
- 2021-08-20 Alexei Podtelezhnikov <[email protected]>
- Determine `long long` availability based on its size.
- MSVC, for example, used `long long` even without full C99 support.
- * include/freetype/config/ftstdlib.h: Check if `long long` limits are
- defined in <limits.h>.
- * include/freetype/config/integer-types.h: Check `long long` size and
- use it to typedef FT_Int64.
- 2021-08-19 Dominik Röttsches <[email protected]>
- [sfnt] Fix format expectation for `COLR` v1 ClipList
- * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Change ClipList
- format expectation to 1 instead of 0 to make it compliant with the
- latest spec.
- 2021-08-19 Alexei Podtelezhnikov <[email protected]>
- Readily use `long long` as a 64-bit type in C99 mode.
- * include/freetype/config/integer-types.h (FT_INT64):
- FT_CONFIG_OPTION_FORCE_INT64 is no longer required to use `long long`.
- 2021-08-19 Alexei Podtelezhnikov <[email protected]>
- Use FT_INT64 instead of FT_LONG64.
- * include/freetype/config/integer-types.h: Remove synonymous FT_LONG64.
- * include/freetype/internal/ftcalc.h: s/FT_LONG64/FT_INT64/.
- * src/base/ftcalc.c: Ditto.
- * src/base/fttrigon.c: Ditto.
- * src/smooth/ftgrays.c: Ditto.
- 2021-08-18 Alexei Podtelezhnikov <[email protected]>
- [builds/windows] Do not set CharacterSet for VC++.
- * builds/windows/vc2010/freetype.vcxproj: s/Unicode/NotSet/.
- * builds/windows/visualc/freetype.vcproj: s/"1"/"0"/.
- 2021-08-18 Werner Lemberg <[email protected]>
- * src/sdf/ftsdf.c (get_control_box): Fix compiler warning.
- 2021-08-18 Werner Lemberg <[email protected]>
- [base] Fix ppem size overflow.
- Fixes #1086.
- * src/base/ftobjs.c (FT_Request_Metrics): Add return value.
- Check whether ppem values fit into unsigned short values.
- (FT_Request_Size): Updated.
- * include/freetype/internal/ftobjs.h: Updated.
- * src/cff/cffobjs.c (cff_size_request), src/cid/cidobjs.c
- (cid_size_request), src/truetype/ttdriver.c (tt_size_request),
- src/type1/t1objs.c (T1_Size_Request): Updated.
- 2021-08-18 Alexei Podtelezhnikov <[email protected]>
- * builds/windows/ftsystem.c (FT_Stream_Open): Cast to remove warning.
- 2021-08-18 Alexei Podtelezhnikov <[email protected]>
- * builds/windows/ftsystem.c (FT_Stream_Open): Support UNICODE compilation.
- 2021-08-09 Werner Lemberg <[email protected]>
- * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor fix.
- 2021-08-09 Dominik Röttsches <[email protected]>
- [sfnt] Add missing blend mode 'plus' to 'COLR' v1.
- * include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode
- 'plus' after it was added to the spec.
- 2021-08-08 Werner Lemberg <[email protected]>
- include/freetype/freetype.h (FT_Encoding): Improve documentation.
- Based on a suggestion by Antony Lee <[email protected]>.
- 2021-08-07 Werner Lemberg <[email protected]>
- [smooth] Avoid integer overflow.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36243
- * src/smooth/ftgrays.c(ADD_LONG, SUB_LONG, MUL_LONG, NEG_LONG)
- [STANDALONE_]: Removed, unused.
- (ADD_INT) [STANDALONE_]: New macro.
- (FT_INTEGRATE): Use ADD_INT.
- 2021-08-07 Dominik Röttsches <[email protected]>
- [sfnt] Add API for retrieving a 'COLR' v1 'ClipBox' table.
- The optional 'COLR' v1 glyph-specific clip box helps upstream graphics
- libraries allocate a sufficiently large bitmap for a glyph without having to
- traverse the glyph graph for that. See
- https://github.com/googlefonts/colr-gradients-spec/issues/251
- for background on the introduction of this specification change.
- * include/freetype/ftcolor.h (FT_ClipBox): New structure.
- (FT_Get_Color_Glyph_ClipBox): New function declaration.
- * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func):
- New function type.
- (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it.
- * src/base/ftobjs.c (FT_Get_Color_Glyph_ClipBox): New function to link API
- with SFNT implementation.
- * src/sfnt/sfdriver.c (sfnt_interface): Updated.
- * src/sfnt/ttcolr.c (Colr): New field `clip_list`.
- (tt_face_load_colr): Parse global clip list offset.
- (tt_face_get_color_glyph_clipbox): New function to find the clip box for a
- glyph id from the clip list array.
- * src/sfnt/ttcolr.h: Updated.
- 2021-08-06 Werner Lemberg <[email protected]>
- [smooth] Fix left shifts of negative numbers.
- Reported as
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36241
- * src/smooth/ftgrays.c (LEFT_SHIFT): New macro.
- (gray_render_conic) [BEZIER_USE_DDA]: Use it.
- 2021-08-02 Werner Lemberg <[email protected]>
- * meson.build: Fix zlib support.
- This commit synchronizes zlib support with both autotools and cmake: If no
- external zlib is found (or intentionally disabled on the command line), use
- the internal zlib by undefining `FT_CONFIG_OPTION_SYSTEM_ZLIB` without
- modifying `FT_CONFIG_OPTION_USE_ZLIB`.
- Also improve summary output.
- Problem reported by Moazin.
- 2021-08-02 Anuj Verma <[email protected]>
- [sdf] Fix out-of-range-access.
- * src/sdf/ftbsdf.c (first_pass, second_pass): Fix range during forward pass.
- Otherwise the index goes out of range for the last column.
- Fixes issue #1077.
- 2021-08-02 Anuj Verma <[email protected]>
- Fix invalid memory access in `bsdf` rasterizer.
- Do not generate SDF from bitmap if the `FT_GLYPH_OWN_BITMAP` flag is not
- set. In some cases the bitmap buffer is freed but still points to a valid
- address; to handle those cases check the flag before accessing the memory.
- * src/sdf/ftsdfrend.c (ft_bsdf_render): Handle the above case.
- Also, return an error message if the bitmap's rows/pitch is invalid,
- otherwise `slot->buffer` might be assigned to some invalid memory location.
- (ft_sdf_render): Same as above.
- Plus, move the outline back to original state after rasterization and not if
- any error occurs.
- 2021-07-29 Heiko Becker <[email protected]>
- * meson.build: Honor `--includedir` instead of hard-coding 'include'.
- 2021-07-29 Werner Lemberg <[email protected]>
- src/sfnt/ttcolr.c: Minor formatting.
- 2021-07-29 Dominik Röttsches <[email protected]>
- [sfnt] 'COLR' v1 PaintSweepGradient spec update
- * src/sfnt/ttcolr.c (read_paint): PaintSweepGradient follows other
- spec changes and now has the angles specified as F2DOT14, reflect
- that in the implementation.
- * include/freetype/ftcolor.h (FT_PaintSweepGradient): Update
- documentation.
- 2021-07-29 Dominik Röttsches <[email protected]>
- [sfnt] Retrieve affine matrix from offset in 'COLR' v1 parsing.
- * src/sfnt/ttcolr.c (read_paint): Implement spec change where
- affine transform matrix is now referenced by offset instead of
- being placed inline in the PaintTransform table.
- 2021-07-29 Dominik Röttsches <[email protected]>
- [sfnt] 'COLR' v1 PaintSkew related spec updates
- * src/sfnt/ttcolr.c (read_paint): Implement spec changes around
- PaintSkew, PaintSkewAroundCenter. Update parsing to read shorter
- values as changed in the spec.
- * include/freetype/ftcolor.h (FT_PaintSkew): Update documentation.
- 2021-07-29 Dominik Röttsches <[email protected]>
- [sfnt] PaintRotate/PaintRotateAroundCenter spec updates
- * src/sfnt/ttcolr.c (read_paint): Implement spec change where
- PaintRotate and PaintRotateAroundCenter were split for a more
- compact format definition. Update parsing to read shorter values
- as changed in the spec.
- * include/freetype/ftcolor.h (FT_PaintRotate): Update documentation.
- 2021-07-29 Dominik Röttsches <[email protected]>
- [sfnt] 'COLR' v1 PaintTranslate and PaintScale precision
- * src/sfnt/ttcolr.c (read_paint): Implement spec changes in
- PaintTranslate and PaintScale and friends. Update parsing to read
- new shorter values.
- 2021-07-29 AnuthaDev <[email protected]>
- README.git: Add Code of Conduct.
- 2021-07-25 Werner Lemberg <[email protected]>
- ChangeLog housekeeping.
- Archive old `ChangeLog` file.
- We no longer write ChangeLog entries manually; instead, the file will be
- created from commit messages (which should be formatted in GNU's ChangeLog
- style) by a call to
- gitlog-to-changelog --format='%B%n'
- or something similar (this script is part of the 'gnulib' repository).
- 2021-07-24 Werner Lemberg <[email protected]>
- Fix some `cppcheck` warnings.
- * src/bzip2/ftbzip2.c (ft_bzip2_file_skip_output), src/gzip/ftgzip.c
- (ft_gzip_file_skip_output): Reduce scope of `delta`.
- * src/psaux/psintrp.c, src/psaux/psintrp.h (cf2_interpT2CharString): Add
- `const` to `buf` parameter.
- * src/raster/ftraster.c (DelOld): Add `const` to `profile` parameter.
- (Vertical_Sweep_Span): Reduce scope of `target`.
- (FT_Outline_Get_CBox): Reduce scope of `xMin`, `xMax`, `yMin`, `yMax`.
- * src/smooth/ftgrays.c (gray_render_conic): Reduce scope of `split`.
- (gray_sweep, gray_sweep_direct): Reduce scope of `area`.
- * src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Reduce scope of
- `temp`.
- 2021-07-24 AnuthaDev <[email protected]>
- * .gitlab-ci.yml: Fixed cmake build, using correct options.
- 2021-07-24 AnuthaDev <[email protected]>
- * CMakeLists.txt: Make `cmake` handle disabled dependencies correctly.
- Include 'CMakeDependentOption'.
- Replace `FT_WITH_XXX` options with `FT_DISABLE_XXX` and `FT_REQUIRE_XXX`
- pairs. Update option logic accordingly.
- Fixes #1066.
- 2021-07-24 Ben Wagner <[email protected]>
- [autofit] Split `afwrtsys.h`.
- The header file `afwrtsys.h` has two distinct functions: to include the
- required writing system headers and also to generate code for each writing
- system. At each current use site only one or the other is used, with
- various macro trickery selecting one or the other. Split this header into
- `afws-decl.h` for the required writing system declarations and `afws-iter.h`
- for iterating over the writing systems to generate code.
- The motivation for this change is that the Visual C++ compiler treats the
- standard include guard idiom like `#pragma once` 'if no non-comment code or
- preprocessor directive comes before or after the standard form of the
- idiom'. It appears to check this after macro expansion, so if
- `WRITING_SYSTEM` expands to empty the bottom of `afwrtsys.h` is empty and
- looks like the standard include guard idiom which is treated like `#pragma
- once`, so subsequent inclusion of `afwrtsys.h` is elided.
- Fixes #1075.
- * src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h
- (AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated.
- * src/autofit/afwrtsys.h: Split into...
- * src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files.
|