CHANGES 174 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559
  1. CHANGES BETWEEN 2.6.4 and 2.6.5
  2. I. IMPORTANT BUG FIXES
  3. - Compilation works again on Mac OS X (bug introduced in version
  4. 2.6.4).
  5. I. IMPORTANT CHANGES
  6. - The new subpixel hinting mode is now disabled by default; it
  7. will be enabled by default in the forthcoming 2.7.x series.
  8. Main reason for reverting this feature is the principle of least
  9. surprise: a sudden change in appearance of all fonts (even if
  10. the rendering improves for almost all recent fonts) should not
  11. be expected in a new micro version of a series.
  12. ======================================================================
  13. CHANGES BETWEEN 2.6.3 and 2.6.4
  14. I. IMPORTANT CHANGES
  15. - A new subpixel hinting mode has been contributed by Nikolaus
  16. Waxweiler, which is now the default rendering mode for TrueType
  17. fonts. It implements (almost everything of) version 40 of the
  18. bytecode engine.
  19. The existing code base in FreeType (the `Infinality code') was
  20. stripped to the bare minimum and all configurability removed in
  21. the name of speed and simplicity. The configurability was
  22. mainly aimed at legacy fonts like Arial, Times New Roman, or
  23. Courier. [Legacy fonts are fonts that modify vertical stems to
  24. achieve clean black-and-white bitmaps.] The new mode focuses on
  25. applying a minimal set of rules to all fonts indiscriminately so
  26. that modern and web fonts render well while legacy fonts render
  27. okay.
  28. Activation of the subpixel hinting support can be controlled
  29. with the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration
  30. option at compile time: If set to value 1, you get the old
  31. Infinality mode (which was never the default due to its
  32. slowness). Value 2 activates the new subpixel hinting mode, and
  33. value 3 activates both. The default is value 2.
  34. At run time, you can select the subpixel hinting mode with the
  35. `interpreter-version' property (provided you have compiled in
  36. the corresponding hinting mode); see `ftttdrv.h' for more.
  37. - Support for the following scripts has been added to the
  38. auto-hinter.
  39. Armenian, Cherokee, Ethiopic, Georgian, Gujarati, Gurmukhi,
  40. Malayalam, Sinhala, Tamil
  41. II. MISCELLANEOUS
  42. - Type 42 fonts as created by LilyPond are now supported.
  43. - Minor rendering improvments in the auto-hinter.
  44. - For experimental reasons, the old CFF engine now supports all
  45. CFF operators except `random', including the deprecated Multiple
  46. Masters instructions. This allows the display of fonts like
  47. `ITCGaramondMM-It.otf' (without font variations, though).
  48. - Another round of fixes to improve handling of invalid fonts.
  49. - The `ftgrid' demo program now displays the rendered pixels also;
  50. this can be switched off with the `b' key. Selection of various
  51. LCD filtering modes can be done with the `L' key.
  52. - The demo programs have been extended to allow selection of all
  53. available TrueType bytecode engines.
  54. - A very early beta version of a new, Qt based demo program called
  55. `ftinspect' is part of the source code bundle; it will
  56. eventually supersede the other demo programs. Currently, you
  57. have to compile it manually with `qmake; make'; note that many
  58. features are still missing.
  59. ======================================================================
  60. CHANGES BETWEEN 2.6.2 and 2.6.3
  61. I. IMPORTANT CHANGES
  62. - Khmer, Myanmar, Bengali, and Kannada script support has been
  63. added to the auto-hinter.
  64. II. MISCELLANEOUS
  65. - Better support of Indic scripts like Devanagari by using a
  66. top-to-bottom hinting flow.
  67. - All FreeType macros starting with two underscores have been
  68. renamed to avoid a violation of both the C and C++ standards.
  69. Example: Header macros of the form `__FOO_H__' are now called
  70. `FOO_H_'. In most cases, this should be completely transparent
  71. to the user. The exception to this is `__FTERRORS_H__', which
  72. must be sometimes undefined by the user to get FreeType error
  73. strings: Both this form and the new `FTERRORS_H_' macro are
  74. accepted for backwards compatibility.
  75. - Minor improvements mainly to the Type 1 driver.
  76. - The new CFF engine now supports all Type 2 operators except
  77. `random'.
  78. - The macro `_STANDALONE_', used for compiling the B/W and smooth
  79. rasterizers as stand-alone modules, has been renamed to
  80. `STANDALONE_', since macro names starting with an underscore and
  81. followed by an uppercase letter are reserved in both C and C++.
  82. - Function `FT_Library_SetLcdFilterWeights' now also activates
  83. custom LCD filter weights (instead of just adjusting them).
  84. - Support for `unpatented hinting' has been completely removed:
  85. Consequently, the two functions `FT_Face_CheckTrueTypePatents'
  86. and `FT_Face_SetUnpatentedHinting' now return always false,
  87. doing nothing.
  88. - The `ftgamma' demo program has been modernized; the gamma grid
  89. display has been moved from `ftview' to this program.
  90. - In `ftview', it is now possible to cycle through the available
  91. LCD filtering modes.
  92. ======================================================================
  93. CHANGES BETWEEN 2.6.1 and 2.6.2
  94. I. IMPORTANT CHANGES
  95. - The auto-hinter now supports stem darkening, to be controlled by
  96. the new `no-stem-darkening' and `darkening-parameters'
  97. properties. This is an experimental feature contributed by
  98. Nikolaus Waxweiler, and the interface might change in a future
  99. release.
  100. - By default, stem darkening is now switched off (for both the CFF
  101. engine and the auto-hinter). The main reason is that you need
  102. linear alpha blending and gamma correction to get correct
  103. rendering results, and the latter is not yet available in most
  104. freely available rendering stacks like X11. Applying stem
  105. darkening without proper gamma correction leads to far too dark
  106. rendering results.
  107. - The meaning of `FT_RENDER_MODE_LIGHT' has been slightly
  108. modified. It now essentially means `no hinting along the
  109. horizontal axis'; in particular, no change of glyph advance
  110. widths. Consequently, the auto-hinter is used for all scalable
  111. font formats except for CFF. It is planned that other
  112. font-specific rendering engines (TrueType, Type 1) will follow.
  113. II. MISCELLANEOUS
  114. - The default LCD filter has been changed to be normalized and
  115. color-balanced.
  116. - For better compatibility with FontConfig, function
  117. `FT_Library_SetLcdFilter' accepts a new enumeration value
  118. `FT_LCD_FILTER_LEGACY1' (which has the same meaning as
  119. `FT_LCD_FILTER_LEGACY').
  120. - A large number of bugs have been detected by using the libFuzzer
  121. framework, which should further improve handling of invalid
  122. fonts. Thanks again to Kostya Serebryany and Bungeman!
  123. - `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES', a new configuration
  124. option, controls the maximum number of executed opcodes within a
  125. bytecode program. You don't want to change this except for very
  126. special situations (e.g., making a library fuzzer spend less
  127. time to handle broken fonts).
  128. - The smooth renderer has been made faster.
  129. - The `ftstring' demo program now supports sub-pixel rendering;
  130. use key `l' to cycle through the LCD modes.
  131. - The `ftstring' demo program now supports colour rendering; use
  132. the `space' key to cycle through various colour combinations.
  133. - The graphical demo programs now use a default gamma value of 1.8
  134. (instead of 1.2).
  135. ======================================================================
  136. CHANGES BETWEEN 2.6 and 2.6.1
  137. I. IMPORTANT BUG FIXES
  138. - It turned out that for CFFs only the advance widths should be
  139. taken from the `htmx' table, not the side bearings. This bug,
  140. introduced in version 2.6.0, makes it necessary to upgrade if
  141. you are using CFFs; otherwise, you get cropped glyphs with GUI
  142. interfaces like GTK or Qt.
  143. - Accessing Type 42 fonts returned incorrect results if the glyph
  144. order of the embedded TrueType font differs from the glyph order
  145. of the Type 42 charstrings table.
  146. II. IMPORTANT CHANGES
  147. - The header file layout has been changed (again), moving all
  148. header files except `ft2build.h' into a subdirectory tree.
  149. Doing so reduces the possibility of header file name clashes
  150. (e.g., FTGL's `FTGlyph.h' with FreeType's `ftglyph.h') on case
  151. insensitive file systems like Mac OS X or Windows.
  152. Applications that use (a) the `freetype-config' script or
  153. FreeType's `freetype2.pc' file for pkg-config to get the include
  154. directory for the compiler, and (b) the documented way for
  155. header inclusion like
  156. #include <ft2build.h>
  157. #include FT_FREETYPE_H
  158. ...
  159. don't need any change to the source code.
  160. - Simple access to named instances in GX variation fonts is now
  161. available (in addition to the previous method via FreeType's MM
  162. interface). In the `FT_Face' structure, bits 16-30 of the
  163. `face_index' field hold the current named instance index for the
  164. given face index, and bits 16-30 of `style_flags' contain the
  165. number of instances for the given face index. `FT_Open_Face'
  166. and friends also understand the extended bits of the face index
  167. parameter.
  168. You need to enable TT_CONFIG_OPTION_GX_VAR_SUPPORT for this new
  169. feature. Otherwise, bits 16-30 of the two fields are zero (or
  170. are ignored).
  171. - Lao script support has been added to the auto-hinter.
  172. III. MISCELLANEOUS
  173. - The auto-hinter's Arabic script support has been enhanced.
  174. - Superscript-like and subscript-like glyphs as used by various
  175. phonetic alphabets like the IPA are now better supported by the
  176. auto-hinter.
  177. - The TrueType bytecode interpreter now runs slightly faster.
  178. - Improved support for builds with cmake.
  179. - The function `FT_CeilFix' now always rounds towards plus
  180. infinity.
  181. - The function `FT_FloorFix' now always rounds towards minus
  182. infinity.
  183. - A new load flag `FT_LOAD_COMPUTE_METRICS' has been added; it
  184. makes FreeType ignore pre-computed metrics, as needed by font
  185. validating or font editing programs. Right now, only the
  186. TrueType module supports it to ignore data from the `hdmx'
  187. table.
  188. - Another round of bug fixes to better handle broken fonts, found
  189. by Kostya Serebryany <[email protected]>.
  190. ======================================================================
  191. CHANGES BETWEEN 2.5.5 and 2.6
  192. I. IMPORTANT CHANGES
  193. - Behdad Esfahbod contributed code for improved thread-safety,
  194. which results in the following model.
  195. * An `FT_Face' object can only be safely used from one thread at
  196. a time.
  197. * An `FT_Library' object can now be used without modification
  198. from multiple threads at the same time.
  199. * `FT_Face' creation and destruction with the same `FT_Library'
  200. object can only be done from one thread at a time.
  201. One can use a single `FT_Library' object across threads as long
  202. as a mutex lock is used around `FT_New_Face' and `FT_Done_Face'.
  203. Any calls to `FT_Load_Glyph' and similar API are safe and do not
  204. need the lock to be held as long as the same `FT_Face' is not
  205. used from multiple threads at the same time.
  206. - Thai script support has been added to the auto-hinter.
  207. - Arabic script support has been added to the auto-hinter.
  208. - Following OpenType version 1.7, advance widths and side bearing
  209. values in CFFs (wrapped in an SFNT structure) are now always
  210. taken from the `hmtx' table.
  211. - Following OpenType version 1.7, the PostScript font name of a
  212. CFF font (wrapped in an SFNT structure) is now always taken from
  213. the `name' table. This is also true for OpenType Collections
  214. (i.e., TTCs using CFFs subfonts instead of TTFs), where it may
  215. have a significant difference.
  216. - Fonts natively hinted for ClearType are now supported, properly
  217. handling selector index 3 of the INSTCTRL bytecode instruction.
  218. - Major improvements to the GX TrueType variation font handling.
  219. II. MISCELLANEOUS
  220. - A new auto-hinter property `warping' can switch on and off the
  221. warping code if this experimental feature is compiled in (by
  222. defining the AF_CONFIG_OPTION_USE_WARPER configuration option;
  223. by default this option is now enabled but warping is switched
  224. off).
  225. The AF_CONFIG_OPTION_USE_WARPER option itself is an old feature,
  226. available since 2006. Warping only works in `light'
  227. auto-hinting mode. The idea of the code is to slightly scale
  228. and shift a glyph along the non-hinted dimension (which is
  229. usually the horizontal axis) so that as much of its segments are
  230. aligned (more or less) to the grid. To find out a glyph's
  231. optimal scaling and shifting value, various parameter
  232. combinations are tried and scored.
  233. See file `ftautoh.h' for more; the demo programs `ftdiff',
  234. `ftview', and `ftgrid' can toggle warping with key `w'.
  235. - Some fields in the `FTC_ImageTypeRec' structure have been
  236. changed from signed to unsigned type, which better reflects the
  237. actual usage. It is also an additional means to protect against
  238. malformed input.
  239. This change doesn't break the ABI; however, it might cause
  240. compiler warnings.
  241. - Function `FT_Bitmap_New' has been renamed to `FT_Bitmap_Init',
  242. since this name better reflects its function. For backwards
  243. compatibility, the old function name is still available.
  244. - Function `FT_Get_X11_Font_Format' has been renamed to
  245. `FT_Get_Font_Format', since this name better reflects its
  246. function. For backwards compatibility, the old function name is
  247. still available.
  248. Additionally, the header file macro for this function has been
  249. renamed to `FT_FONT_FORMATS_H' (the old name `FT_XFREE86_H' is
  250. retained for backwards compatibility).
  251. - Various improvements to the `ftgrid' demo program.
  252. . It can now display GX and MM fonts while interactively
  253. manipulating the axes (with keys F2, F3, and F4).
  254. . Anti-aliasing rendering modes can now be selected (with keys
  255. F5 and F6).
  256. . The display of point numbers can be toggled with key `D'.
  257. - Various improvements to the `ftdump' demo program.
  258. . It now displays information on MM and GX variation axes.
  259. . New command line option `-u' makes it output data in utf-8
  260. encoding.
  261. - The `ftmulti' demo program can now handle up to six MM or GX
  262. axes.
  263. ======================================================================
  264. CHANGES BETWEEN 2.5.4 and 2.5.5
  265. I. IMPORTANT BUG FIXES
  266. - Handling of uncompressed PCF files works again (bug introduced
  267. in version 2.5.4).
  268. ======================================================================
  269. CHANGES BETWEEN 2.5.3 and 2.5.4
  270. I. IMPORTANT BUG FIXES
  271. - A variant of vulnerability CVE-2014-2240 was identified
  272. (cf. http://savannah.nongnu.org/bugs/?43661) and fixed in the
  273. new CFF driver. All users should upgrade.
  274. - The new auto-hinter code using HarfBuzz crashed for some invalid
  275. fonts.
  276. - Many fixes to better protect against malformed input.
  277. II. IMPORTANT CHANGES
  278. - Full auto-hinter support of the Devanagari script.
  279. - Experimental auto-hinter support of the Telugu script.
  280. - CFF stem darkening behaviour can now be controlled at build time
  281. using the eight macros
  282. CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} .
  283. - Some fields in the `FT_Bitmap' structure have been changed from
  284. signed to unsigned type, which better reflects the actual usage.
  285. It is also an additional means to protect against malformed
  286. input.
  287. This change doesn't break the ABI; however, it might cause
  288. compiler warnings.
  289. III. MISCELLANEOUS
  290. - Improvements to the auto-hinter's algorithm to recognize stems
  291. and local extrema.
  292. - Function `FT_Get_SubGlyph_Info' always returned an error even in
  293. case of success.
  294. - Version 2.5.1 introduced major bugs in the cjk part of the
  295. auto-hinter, which are now fixed.
  296. - The `FT_Sfnt_Tag' enumeration values have been changed to
  297. uppercase, e.g. `FT_SFNT_HEAD'. The lowercase variants are
  298. deprecated. This is for orthogonality with all other
  299. enumeration (and enumeration-like) values in FreeType.
  300. - `cmake' now supports builds of FreeType as an OS X framework and
  301. for iOS.
  302. - Improved project files for vc2010, introducing a property file.
  303. - The documentation generator for the API reference has been
  304. updated to produce better HTML code (with proper CSS). At the
  305. same time, the documentation got a better structure.
  306. - The FT_LOAD_BITMAP_CROP flag is obsolete; it is not used by any
  307. driver.
  308. - The TrueType DELTAP[123] bytecode instructions now work in
  309. subpixel hinting mode as described in the ClearType whitepaper
  310. (i.e., for touched points in the non-subpixel direction).
  311. - Many small improvements to the internal arithmetic routines.
  312. ======================================================================
  313. CHANGES BETWEEN 2.5.2 and 2.5.3
  314. I. IMPORTANT BUG FIXES
  315. - A vulnerability (CVE-2014-2240) was identified and fixed in the
  316. new CFF driver (cf. http://savannah.nongnu.org/bugs/?41697).
  317. All users should upgrade.
  318. - More bug fixes related to correct positioning of composite
  319. glyphs.
  320. - Many fixes to better protect against malformed input.
  321. II. IMPORTANT CHANGES
  322. - FreeType can now use the HarfBuzz library to greatly improve the
  323. auto-hinting of fonts that use OpenType features: Many glyphs
  324. that are part of such features but don't have cmap entries are
  325. now handled properly, for example small caps or superscripts.
  326. Define the configuration macro FT_CONFIG_OPTION_USE_HARFBUZZ to
  327. activate HarfBuzz support.
  328. You need HarfBuzz version 0.9.19 or newer.
  329. Note that HarfBuzz depends on FreeType; this currently causes a
  330. chicken-and-egg problem that can be solved as follows in case
  331. HarfBuzz is not yet installed on your system.
  332. 1. Compile and install FreeType without the configuration
  333. macro FT_CONFIG_OPTION_USE_HARFBUZZ.
  334. 2. Compile and install HarfBuzz.
  335. 3. Define macro FT_CONFIG_OPTION_USE_HARFBUZZ, then compile
  336. and install FreeType again.
  337. With FreeType's `configure' script the procedure boils down to
  338. configure, build, and install Freetype, then configure, compile,
  339. and install HarfBuzz, then configure, compile, and install
  340. FreeType again (after executing `make distclean').
  341. - All libraries FreeType depends on are now checked using the
  342. `pkg-config' configuration files first, followed by alternative
  343. methods.
  344. - The new value `auto' for the various `--with-XXX' library
  345. options (for example `--with-harfbuzz=auto') makes the
  346. `configure' script automatically link to the libraries it finds.
  347. This is now the default.
  348. - In case FreeType's `configure' script can't find a library, you
  349. can pass environment variables to circumvent pkg-config, and
  350. those variables have been harmonized as a consequence of the
  351. changes mentioned above:
  352. LIBZ -> removed; use LIBZ_CFLAGS and LIBZ_LIBS
  353. LIBBZ2 -> removed; use BZIP2_CFLAGS and BZIP2_LIBS
  354. LIBPNG_LDFLAGS -> LIBPNG_LIBS
  355. `./configure --help' shows all available environment variables.
  356. - The `freetype-config' script now understands option `--static'
  357. to emit static linking information.
  358. ======================================================================
  359. CHANGES BETWEEN 2.5.1 and 2.5.2
  360. I. IMPORTANT BUG FIXES
  361. - Improving the display of some broken TrueType fonts introduced a
  362. bug that made FreeType crash on some popular (but not fully
  363. conformant) fonts like `ahronbd.ttf'.
  364. - Another round of improvements to correct positioning and hinting
  365. of composite glyphs in TrueType fonts.
  366. II. MISCELLANEOUS
  367. - Version 2.5.1 introduced a bug in handling embedded bitmap
  368. strikes of TrueType fonts, causing garbage display under some
  369. circumstances.
  370. - The `ftgrid' demo program couldn't be compiled in
  371. non-development builds.
  372. ======================================================================
  373. CHANGES BETWEEN 2.5 and 2.5.1
  374. I. IMPORTANT BUG FIXES
  375. - For some WinFNT files, the last glyph wasn't displayed but
  376. incorrectly marked as invalid.
  377. - The vertical size of glyphs was incorrectly set after a call to
  378. `FT_GlyphSlot_Embolden', resulting in clipped glyphs.
  379. - Many fields of the `PCLT' table in SFNT based fonts (if accessed
  380. with `FT_Get_Sfnt_Table') were computed incorrectly.
  381. - In TrueType fonts, hinting of composite glyphs could sometimes
  382. deliver incorrect positions of components or even distorted
  383. shapes.
  384. II. IMPORTANT CHANGES
  385. - WOFF font format support has been added.
  386. - The auto-hinter now supports Hebrew. Greek and Cyrillic support
  387. has been improved.
  388. - Support for the forthcoming `OS/2' SFNT table version 5, as can
  389. be found e.g. in the `Sitka' font family for Windows 8.1.
  390. - The header file layout has been changed. After installation,
  391. all files are now located in `<prefix>/include/freetype2'.
  392. Applications that use (a) `freetype-config' or FreeType's
  393. `pkg-config' file to get the include directory for the compiler,
  394. and (b) the documented way for header inclusion like
  395. #include <ft2build.h>
  396. #include FT_FREETYPE_H
  397. ...
  398. don't need any change to the source code.
  399. III. MISCELLANEOUS
  400. - The stem darkening feature of the new CFF engine can now be
  401. fine-tuned with the new `darkening-parameters' property.
  402. - `ftgrid' has been updated to toggle various engines with the `H'
  403. key, similar to `ftview' and `ftdiff'.
  404. - The functionality of `ttdebug' has been greatly enhanced.
  405. . It now displays twilight, storage, and control value data; key
  406. `T' shows the twilight point table, key `S' the storage data,
  407. and key `C' the control value table.
  408. . Some keys have been reassigned from lowercase to their
  409. uppercase equivalents; for example `q' to quit the program is
  410. now `Q'.
  411. . Key `f' finishes the current function.
  412. . Key `R' restarts the debugger.
  413. . Keys `b' and `p' set a breakpoint.
  414. . Key `B' provides a function call backtrace.
  415. - Better support of ARMv7 and x86_64 processors.
  416. - Apple's `sbix' color bitmap format is now supported.
  417. - Improved auto-hinter rendering for many TrueType fonts,
  418. especially in the range 20-40ppem.
  419. - A new face flag `FT_FACE_FLAG_COLOR' has been added (to be
  420. accessed with the macro `FT_HAS_COLOR').
  421. - `FT_Gzip_Uncompress' (modeled after zlib's `uncompress'
  422. function) has been added; this is a by-product of the newly
  423. added WOFF support.
  424. - Support for a build with `cmake' has been contributed by John
  425. Cary <[email protected]>.
  426. - Support for x64 builds with Visual C++ has been contributed by
  427. Kenneth Miller <[email protected]>
  428. - Manual pages for most demo programs have been added.
  429. - The GETINFO bytecode instruction for TrueType fonts was buggy if
  430. used to retrieve subpixel hinting information. It was necessary
  431. to set selector bit 6 to get results for selector bits 7-10,
  432. which is wrong.
  433. - Improved computation of emulated vertical metrics for TrueType
  434. fonts.
  435. - Fixed horizontal start-up position of vertical phantom points in
  436. TrueType bytecode.
  437. ======================================================================
  438. CHANGES BETWEEN 2.4.12 and 2.5
  439. I. IMPORTANT BUG FIXES
  440. - The cache manager function `FTC_Manager_Reset' didn't flush the
  441. cache.
  442. II. IMPORTANT CHANGES
  443. - Behdad Esfahbod (on behalf of Google) contributed support for
  444. color embedded bitmaps (eg. color emoji).
  445. A new load flag, FT_LOAD_COLOR, makes FreeType load color
  446. embedded-bitmaps, following this draft specification
  447. https://color-emoji.googlecode.com/git/specification/v1.html
  448. which defines two new SFNT tables, `CBDT' and `CBLC' (named and
  449. modeled after `EBDT' and `EBLC', respectively). The color
  450. bitmaps are stored in the new FT_PIXEL_MODE_BGRA format to
  451. represent BGRA pre-multiplied sRGB images. If PNG support is
  452. available, PNG color images as defined in the same proposed
  453. specification are supported also.
  454. Note that color bitmaps are converted to grayscale if client
  455. didn't ask for color.
  456. - As announced in the previous release, the old FreeType CFF
  457. engine is now disabled by default. It can be conditionally
  458. compiled by defining the configuration macro
  459. CFF_CONFIG_OPTION_OLD_ENGINE.
  460. - As announced in the previous release, all code related to macro
  461. FT_CONFIG_OPTION_OLD_INTERNALS has been removed, thus becoming
  462. obsolete.
  463. III. MISCELLANEOUS
  464. - The property API (`FT_Property_Get' and `FT_Property_Set') is
  465. now declared as stable.
  466. The exception, however, are the experimental auto-hinter
  467. properties `glyph-to-script-map' and `fallback-script' which are
  468. subject to change in a forthcoming release.
  469. - `ftview' has been updated to support color embedded bitmaps; it
  470. can be toggled on and off with key `c'. The small cache toggle
  471. is now key `K'.
  472. - It is now possible to control the version of the TrueType
  473. hinting engine using the new `interpreter-version' property of
  474. the `truetype' module: Versions 35 and 38 (the default) are
  475. supported, which roughly corresponds to disable and enable
  476. subpixel hinting support, respectively.
  477. In both `ftview' and `ftdiff', switching between the two
  478. versions can be done with key `H'. In the `ftbench' demo
  479. program, command line option `-H' has been extended to activate
  480. the non-default interpreter version.
  481. - The `ttdebug' program has been further improved. In particular,
  482. it accepts a new command line option `-H' to select the hinting
  483. engine.
  484. - `ftdump's verbose option has been renamed to `-V'. For all demo
  485. programs, `-v' now shows version information.
  486. - Another round of TrueType subpixel hinting fixes.
  487. - The `apinames' tool can now create an import file for NetWare.
  488. - 64bit compilation of the new CFF engine was buggy.
  489. - Some fixes to improve robustness in memory-tight situations.
  490. ======================================================================
  491. CHANGES BETWEEN 2.4.11 and 2.4.12
  492. - We have another CFF parsing and hinting engine! Written by Dave
  493. Arnold <[email protected]>, this work has been contributed by
  494. Adobe in collaboration with Google. It is vastly superior to
  495. the old CFF engine, and it will replace it in the next release.
  496. Right now, it is still off by default, and you have to
  497. explicitly select it using the new `hinting-engine' property of
  498. the cff driver:
  499. ...
  500. #include FT_MODULE_H
  501. #include FT_CFF_DRIVER_H
  502. FT_Library library;
  503. int engine = FT_CFF_HINTING_ADOBE;
  504. ...
  505. FT_Property_Set( library, "cff", "hinting-engine", &engine );
  506. The code has a (mature) beta status; we encourage all users to
  507. test it and report any problems.
  508. In case you want to activate the new CFF engine unconditionally,
  509. apply this patch:
  510. --- snip ---
  511. diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
  512. index ebcf189..3f2ce6b 100644
  513. --- a/src/cff/cffobjs.c
  514. +++ b/src/cff/cffobjs.c
  515. @@ -1056,7 +1056,7 @@
  516. /* set default property values */
  517. - driver->hinting_engine = FT_CFF_HINTING_FREETYPE;
  518. + driver->hinting_engine = FT_CFF_HINTING_ADOBE;
  519. driver->no_stem_darkening = FALSE;
  520. return FT_Err_Ok;
  521. --- snip ---
  522. - The macro FT_CONFIG_OPTION_OLD_INTERNALS is no longer set by
  523. default. In the next release, we will completely remove the
  524. associated code. Please update your programs in case you are
  525. still using this macro.
  526. II. MISCELLANEOUS
  527. - The (top-level) `configure' script now respects the MAKE
  528. environment variable to specify a `make' binary. For backwards
  529. compatibility, GNUMAKE still overrides MAKE, though.
  530. - The `ftview' and `ftdiff' demo programs have been redesigned,
  531. showing more options permanently on the screen, among other
  532. minor improvements.
  533. - Using the `H' key, it is now possible to select the CFF engine
  534. in both `ftview' and `ftdiff'.
  535. - The new command line option `-H' for `ftbench' selects the Adobe
  536. CFF engine.
  537. - It is now possible to directly select the LCD rendering mode
  538. with the keys `A'-`F' in `ftview'. The key mapping for cycling
  539. through LCD modes has been changed from `K' and `L' to `k' and
  540. `l', and toggling custom LCD filtering is no longer mapped to
  541. key `F' but to key `L'.
  542. - In `ftdiff', key `x' toggles between layout modes: Either use
  543. the advance width (this is new and now the default) or the
  544. bounding box information to determine line breaks.
  545. - For all demo tools, the new command line option `-v' shows the
  546. version.
  547. - For the demo tools with a GUI, the new command line options `-w'
  548. and `-h' select the width and the height of the output window,
  549. respectively.
  550. - The `ttdebug' program was broken and has been reactivated. Note
  551. that this program is not compiled by default.
  552. ======================================================================
  553. CHANGES BETWEEN 2.4.10 and 2.4.11
  554. I. IMPORTANT BUG FIXES
  555. - Some vulnerabilities in the BDF implementation have been fixed.
  556. Users of this font format should upgrade.
  557. II. IMPORTANT CHANGES
  558. - Subpixel hinting support has been contributed by Infinality,
  559. based on Greg Hitchcock's whitepaper at
  560. http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
  561. Originally, it was a separate patch available from
  562. http://www.infinality.net/blog/
  563. and which has been integrated.
  564. Note that ClearType support is not completely implemented! In
  565. particular, full support for the options `compatible_widths',
  566. `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
  567. instruction) is missing.
  568. Activation of subpixel hinting support can be controlled with
  569. the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it
  570. is switched off by default. This feature is still experimental;
  571. we welcome test reports!
  572. - Support for OpenType collections (OTC) has been added.
  573. - Pure CFF fonts within an SFNT wrapper are now supported.
  574. III. MISCELLANEOUS
  575. - Minor rendering improvements to the auto-hinter.
  576. - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°.
  577. - Experimental support to handle `property modules', for example
  578. to control the behaviour of the auto-hinter. The API consists
  579. of two new functions, `FT_Property_Set' and `FT_Property_Get'.
  580. The code is still subject to change and should not be used for
  581. production.
  582. - The `ftdiff' demo program now supports UTF-8 encoded input files
  583. for option `-f'.
  584. - Using keys `r' and `R', you can now adjust the stroker radius in
  585. the `ftview' demo program.
  586. - Other, minor fixes and improvements.
  587. ======================================================================
  588. CHANGES BETWEEN 2.4.9 and 2.4.10
  589. I. IMPORTANT BUG FIXES
  590. - Incremental glyph loading as needed by ghostscript was broken.
  591. II. MISCELLANEOUS
  592. - A new function `FT_Outline_EmboldenXY', contributed by Alexei
  593. Podtelezhnikov.
  594. - In the `ftview' demo program, key `e' has been replaced with `x'
  595. and `y' to embolden in the horizontal and vertical direction,
  596. respectively.
  597. - The glyph spacing computation in `FT_GlyphSlot_Embolden' (and
  598. similar code in `ftview') has been improved.
  599. - Minor improvements to the TrueType bytecode interpreter and
  600. glyph loader, the auto-hinter, and the B/W rasterizer.
  601. ======================================================================
  602. CHANGES BETWEEN 2.4.8 and 2.4.9
  603. I. IMPORTANT BUG FIXES
  604. - Another round of fixes to better handle invalid fonts. Many of
  605. them are vulnerabilities (see CVE-2012-1126 up to CVE-2012-1144
  606. and SA48320) so all users should upgrade.
  607. II. MISCELLANEOUS
  608. - The `ENCODING -1 <n>' format of BDF fonts is now supported.
  609. - For BDF fonts, support for the whole Unicode encoding range has
  610. been added.
  611. - Better TTF support for x_ppem != y_ppem.
  612. - `FT_Get_Advances' sometimes returned bogus values.
  613. - The demo programs no longer recognize and handle default
  614. suffixes; you now have to always specify the complete font name.
  615. - Better rendering and LCD mode cycling added to `ftview'.
  616. ======================================================================
  617. CHANGES BETWEEN 2.4.7 and 2.4.8
  618. I. IMPORTANT BUG FIXES
  619. - Some vulnerabilities in handling CID-keyed PostScript fonts have
  620. been fixed; see CVE-2011-3439.
  621. II. MISCELLANEOUS
  622. - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value', to
  623. retrieve most of the dictionary keys in Type 1 fonts.
  624. ======================================================================
  625. CHANGES BETWEEN 2.4.6 and 2.4.7
  626. I. IMPORTANT BUG FIXES
  627. - Some vulnerabilities in handling Type 1 fonts have been fixed;
  628. see CVE-2011-3256.
  629. II. MISCELLANEOUS
  630. - FreeType now properly handles ZapfDingbats glyph names while
  631. constructing a Unicode character map (for fonts which don't have
  632. one).
  633. ======================================================================
  634. CHANGES BETWEEN 2.4.5 and 2.4.6
  635. I. IMPORTANT BUG FIXES
  636. - For TrueType based fonts, the ascender and descender values were
  637. incorrect sometimes (off by a pixel if the ppem value was not a
  638. multiple of 5). Depending on the use you might now experience
  639. a different layout; the change should result in better, more
  640. consistent line spacing.
  641. - Fix CVE-2011-0226 which causes a vulnerability while handling
  642. Type 1 fonts.
  643. - BDF fonts containing glyphs with negative values for ENCODING
  644. were incorrectly rejected. This bug has been introduced in
  645. FreeType version 2.2.0.
  646. - David Bevan contributed a major revision of the FreeType stroker
  647. code:
  648. . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
  649. . A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has
  650. been introduced to support PostScript and PDF miter joins.
  651. . FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
  652. alias for FT_STROKER_LINEJOIN_MITER.
  653. . Various stroking glitches has been fixed.
  654. II. MISCELLANEOUS
  655. - SFNT bitmap fonts which contain an outline glyph for `.notdef'
  656. only no longer set the FT_FACE_FLAG_SCALABLE flag.
  657. ======================================================================
  658. CHANGES BETWEEN 2.4.4 and 2.4.5
  659. I. IMPORTANT BUG FIXES
  660. - A rendering regression for second-order Bézier curves has been
  661. fixed, introduced in 2.4.3.
  662. II. IMPORTANT CHANGES
  663. - If autohinting is not explicitly disabled, FreeType now uses
  664. the autohinter if a TrueType based font doesn't contain native
  665. hints.
  666. - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH has been made
  667. redundant and is simply ignored; this means that FreeType now
  668. ignores the global advance width value in TrueType fonts.
  669. III. MISCELLANEOUS
  670. - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of
  671. a font.
  672. - Support for PCF files compressed with bzip2 has been contributed
  673. by Joel Klinghed. To make this work, the OS must provide a
  674. bzip2 library.
  675. - Bradley Grainger contributed project and solution files in
  676. Visual Studio 2010 format.
  677. - Again some fixes to better handle broken fonts.
  678. - Some improvements to the B/W rasterizer.
  679. - Fixes to the cache module to improve robustness.
  680. - Just Fill Bugs contributed (experimental) code to compute blue
  681. zones for CJK Ideographs, improving the alignment of horizontal
  682. stems at the top or bottom edges.
  683. - The `ftgrid' demo program can now display autohinter segments,
  684. to be toggled on and off with key `s'.
  685. ======================================================================
  686. CHANGES BETWEEN 2.4.3 and 2.4.4
  687. I. IMPORTANT BUG FIXES
  688. - UVS support (TrueType/OpenType cmap format 14) support is fixed.
  689. This regression has been introduced in version 2.4.0.
  690. II. MISCELLANEOUS
  691. - Detect tricky fonts (e.g. MingLiU) by the lengths and checksums
  692. of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when
  693. a TrueType font without family name is given. The previous fix,
  694. introduced in 2.4.3, was too rigorous, causing many subsetted
  695. fonts (mainly from PDF files) displayed badly because FreeType
  696. forced rendering with the TrueType bytecode engine instead of
  697. the autohinter.
  698. - Better support for 64bit platforms.
  699. - More fixes to improve handling of broken fonts.
  700. ======================================================================
  701. CHANGES BETWEEN 2.4.2 and 2.4.3
  702. I. IMPORTANT BUG FIXES
  703. - Fix rendering of certain cubic, S-shaped arcs. This regression
  704. has been introduced in version 2.4.0.
  705. II. MISCELLANEOUS
  706. - To fix the above mentioned rendering issue, a new spline
  707. flattening algorithm has been introduced which speeds up both
  708. conic and cubic arcs.
  709. - Handling of broken fonts has been further improved.
  710. ======================================================================
  711. CHANGES BETWEEN 2.4.1 and 2.4.2
  712. I. IMPORTANT BUG FIXES
  713. - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
  714. - Handling Type 42 font deallocation was broken; additionally, the
  715. library is now more robust against malformed Type 42 fonts.
  716. II. MISCELLANEOUS
  717. - Two new functions, `FT_Reference_Library' (in FT_MODULE_H) and
  718. `FT_Reference_Face' (in FT_FREETYPE_H), have been added to
  719. simplify life-cycle management. A counter gets initialized to 1
  720. at the time an FT_Library (or FT_Face) structure is created.
  721. The two new functions increment the respective counter.
  722. `FT_Done_Library' and `FT_Done_Face' then only destroy a library
  723. or face if the counter is 1, otherwise they simply decrement the
  724. counter.
  725. ======================================================================
  726. CHANGES BETWEEN 2.4.0 and 2.4.1
  727. I. IMPORTANT CHANGES
  728. - A serious bug in the CFF font module prevented display of many
  729. glyphs in CFF fonts like `MinionPro-Regular.otf'.
  730. ======================================================================
  731. CHANGES BETWEEN 2.3.12 and 2.4.0
  732. I. IMPORTANT CHANGES
  733. - Since May 2010, all patents regarding the TrueType bytecode
  734. interpreter have expired worldwide. Consequently, we now define
  735. TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine
  736. TT_CONFIG_OPTION_UNPATENTED_HINTING).
  737. - A new function `FT_Library_SetLcdFilterWeights' is available to
  738. adjust the filter weights set by `FT_Library_SetLcdFilter'.
  739. II. MISCELLANEOUS
  740. - Thanks to many reports from Robert Święcki, FreeType's stability
  741. in handling broken or damaged fonts is much improved.
  742. - Support for LCD filter control has been added to the demo
  743. programs `ftdiff' and `ftview'.
  744. ======================================================================
  745. CHANGES BETWEEN 2.3.11 and 2.3.12
  746. I. IMPORTANT CHANGES
  747. - For `FT_Open_Face', new parameters are available to ignore
  748. preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
  749. FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
  750. II. MISCELLANEOUS
  751. - Support for incremental font loading (controlled with the
  752. FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
  753. - Better support for vertical metrics.
  754. - Various minor bug fixes.
  755. ======================================================================
  756. CHANGES BETWEEN 2.3.10 and 2.3.11
  757. I. IMPORTANT BUG FIXES
  758. - Version 2.3.10 broke PCF support.
  759. ======================================================================
  760. CHANGES BETWEEN 2.3.10 and 2.3.9
  761. I. IMPORTANT BUG FIXES
  762. - If all ASCII digits in a font have the same (unscaled) width,
  763. the autohinter respects this and won't change it.
  764. - TrueType fonts are now rasterized correctly if the horizontal
  765. and vertical resolution differ.
  766. - Type 1 fonts are now handled with increased precision internally
  767. to avoid serious rounding issues if non-integral coordinates are
  768. encountered.
  769. - Horizontally condensed CFF fonts (using the font matrix) were
  770. rendered incorrectly. This bug has been introduced after
  771. release 2.3.5.
  772. II. IMPORTANT CHANGES
  773. - Support for the SFNT cmap 13 table format (as defined by the new
  774. OpenType 1.6 specification) has been added.
  775. - B/W rasterization of well-hinted TrueType fonts at small sizes
  776. has been greatly improved.
  777. - Calculation of vertical metrics in OpenType fonts has been
  778. improved.
  779. III. MISCELLANEOUS
  780. - It is now possible to change the emboldening factor in the
  781. `ftview' demo program with keys `e' and `E'.
  782. - It is now possible to change the slant value in the `ftview'
  783. demo program with keys `s' and `S'.
  784. - The 5-levels grayscale mode of the `ftraster' module (which
  785. FreeType doesn't use by default) was broken since version 2.3.0.
  786. - Compilation of the `ftgrays' and `ftraster' modules was broken
  787. in stand-alone mode.
  788. - Various fixes for compilation on 64bit and 16bit architectures.
  789. ======================================================================
  790. CHANGES BETWEEN 2.3.9 and 2.3.8
  791. I. IMPORTANT BUG FIXES
  792. - Very unfortunately, FreeType 2.3.8 contained a change that broke
  793. its official ABI. The end result is that programs compiled
  794. against previous versions of the library, but dynamically linked
  795. to 2.3.8 can experience memory corruption if they call the
  796. `FT_Get_PS_Font_Info' function.
  797. We recommend all users to upgrade to 2.3.9 as soon as possible,
  798. or to downgrade to a previous release of the library if this is
  799. not an option.
  800. The origin of the bug is that a new field was added to the
  801. publicly defined `PS_FontInfoRec' structure. Unfortunately,
  802. objects of this type can be stack or heap allocated by callers
  803. of `FT_Get_PS_Font_Info', resulting in a memory buffer
  804. overwrite with its implementation in 2.3.8.
  805. If you want to know whether your code is vulnerable to this
  806. issue, simply search for the substrings `PS_FontInfo' and
  807. `PS_Font_Info' in your source code. If none is found, your code
  808. is safe and is not affected.
  809. The FreeType team apologizes for the problem.
  810. - The POSIX support of MacOS resource-fork fonts (Suitcase fonts
  811. and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If
  812. FreeType2 is built without Carbon framework, these fonts are not
  813. handled correctly. Version 2.3.7 didn't have this bug.
  814. - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
  815. almost all font formats except TrueType fonts.
  816. - Fix a bug in the SFNT kerning table loader/parser which could
  817. crash the engine if certain malformed tables were encountered.
  818. - Composite SFNT bitmaps are now handled correctly.
  819. II. IMPORTANT CHANGES
  820. - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and
  821. `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed
  822. CFF fonts via CID values. This code has been contributed by
  823. Michael Toftdal.
  824. III. MISCELLANEOUS
  825. - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT
  826. for empty outlines. This was incorrectly documented.
  827. - The `ftview' demo program now supports UTF-8 encoded strings.
  828. ======================================================================
  829. CHANGES BETWEEN 2.3.8 and 2.3.7
  830. I. IMPORTANT BUG FIXES
  831. - CID-keyed fonts in an SFNT wrapper were not handled correctly.
  832. - The smooth renderer produced truncated images (on the right) for
  833. outline parts with negative horizontal values. Most fonts don't
  834. contain outlines left to the y coordinate axis, but the effect
  835. was very noticeable for outlines processed with FT_Glyph_Stroke,
  836. using thick strokes.
  837. - `FT_Get_TrueType_Engine_Type' returned a wrong value if both
  838. configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
  839. TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
  840. - The `face_index' field in the `FT_Face' structure wasn't
  841. initialized properly after calling FT_Open_Face and friends with
  842. a positive face index for CFFs, WinFNTs, and, most importantly,
  843. for TrueType Collections (TTCs).
  844. II. IMPORTANT CHANGES
  845. - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts
  846. in an SFNT wrapper has been added -- such fonts are used on the
  847. Mac. The core SFNT tables `TYP1' and `CID ' are passed to the
  848. PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX',
  849. `BBOX', etc.) are not supported yet.
  850. - A new interface to extract advance values of glyphs without
  851. loading their outlines has been added. The functions are called
  852. `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
  853. `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
  854. - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
  855. contributed by David Bevan to access the embedding and
  856. subsetting restriction information of fonts.
  857. III. MISCELLANEOUS
  858. - FT_MulFix is now an inlined function; by default, assembler code
  859. is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX
  860. and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
  861. - The handling of `tricky' fonts (this is, fonts which don't work
  862. with the autohinter, needing the font format's hinting engine)
  863. has been generalized and changed slightly:
  864. . A new face flag FT_FACE_FLAG_TRICKY indicates that the font
  865. format's hinting engine is necessary for correct rendering.
  866. The macro FT_IS_TRICKY can be used to check this flag.
  867. . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really
  868. force raw loading of such fonts (without hinting), both
  869. FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used --
  870. this is something which you probably never want to do.
  871. . Tricky TrueType fonts always use the bytecode interpreter,
  872. either the patented or unpatented version.
  873. - The function `FT_GlyphSlot_Own_Bitmap' has been moved from
  874. FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official'
  875. API. (The functions in FT_SYNTHESIS_H are still subject to
  876. change, however.)
  877. - In the `ftdiff' demo program you can now toggle the use of
  878. FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
  879. ======================================================================
  880. CHANGES BETWEEN 2.3.7 and 2.3.6
  881. I. IMPORTANT BUG FIXES
  882. - If the library was compiled on an i386 platform using gcc, and
  883. compiler option -O3 was given, `FT_MulFix' sometimes returned
  884. incorrect results which could have caused problems with
  885. `FT_Request_Metrics' and `FT_Select_Metrics', returning an
  886. incorrect descender size.
  887. - Pure CFFs without subfonts were scaled incorrectly if the font
  888. matrix was non-standard. This bug has been introduced in
  889. version 2.3.6.
  890. - The `style_name' field in the `FT_FaceRec' structure often
  891. contained a wrong value for Type 1 fonts. This misbehaviour
  892. has been introduced in version 2.3.6 while trying to fix
  893. another problem. [Note, however, that this value is
  894. informative only since the used algorithm to extract it is
  895. very simplistic.]
  896. II. IMPORTANT CHANGES
  897. - Two new macros, FT_OUTLINE_SMART_DROPOUTS and
  898. FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with
  899. FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is
  900. now possible to control the dropout mode of the `raster' module
  901. (for B&W rasterization), using the `flags' field in the
  902. `FT_Outline' structure.
  903. - The TrueType bytecode interpreter now passes the dropout mode to
  904. the B&W rasterizer. This greatly increases the output for small
  905. ppem values of many fonts like `pala.ttf'.
  906. ======================================================================
  907. CHANGES BETWEEN 2.3.6 and 2.3.5
  908. I. IMPORTANT BUG FIXES
  909. - A bunch of potential security problems have been found. All
  910. users should update.
  911. - Microsoft Unicode cmaps in TrueType fonts are now always
  912. preferred over Apple cmaps. This is not a bug per se, but there
  913. exist some buggy fonts created for MS which have broken Apple
  914. cmaps. This affects only the automatic selection of FreeType;
  915. it's always possible to manually select an Apple Unicode cmap if
  916. desired.
  917. - Many bug fixes to the TrueType bytecode interpreter.
  918. - Improved Mac support.
  919. - Subsetted CID-keyed CFFs are now supported correctly.
  920. - CID-keyed CFFs with subfonts which are scaled in a non-standard
  921. way are now handled correctly.
  922. - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
  923. the font was a Windows (bitmap) FNT/FON.
  924. II. IMPORTANT CHANGES
  925. - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
  926. access to those fields in a CID-keyed font. The code has been
  927. contributed by Derek Clegg.
  928. - George Williams contributed code to validate the new `MATH'
  929. OpenType table (within the `otvalid' module). The `ftvalid'
  930. demo program has been extended accordingly.
  931. - An API for cmap 14 support (for Unicode Variant Selectors, UVS)
  932. has been contributed by George Williams.
  933. - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together
  934. with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
  935. CID-keyed.
  936. III. MISCELLANEOUS
  937. - Build support for symbian has been contributed.
  938. - Better WGL4 glyph name support, contributed by Sergey Tolstov.
  939. - Debugging output of the various FT_TRACEX macros is now sent to
  940. stderr.
  941. - The `ftview' demo program now provides artificial slanting too.
  942. - The `ftvalid' demo program has a new option `-f' to select the
  943. font index.
  944. ======================================================================
  945. CHANGES BETWEEN 2.3.5 and 2.3.4
  946. I. IMPORTANT BUG FIXES
  947. - Some subglyphs in TrueType fonts were handled incorrectly due to
  948. a missing graphics state reinitialization.
  949. - Large .Z files (as distributed with some X11 packages) weren't
  950. handled correctly, making FreeType increase the heap stack in an
  951. endless loop.
  952. - A large number of bugs have been fixed to avoid crashes and
  953. endless loops with invalid fonts.
  954. II. IMPORTANT CHANGES
  955. - The two new cache functions `FTC_ImageCache_LookupScaler' and
  956. `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
  957. glyphs using an `FTC_Scaler' object; this makes it possible to
  958. use fractional pixel sizes in the cache. The demo programs have
  959. been updated accordingly to use this feature.
  960. - A new API `FT_Get_CMap_Format' has been added to get the cmap
  961. format of a TrueType font. This is useful in handling PDF
  962. files. The code has been contributed by Derek Clegg.
  963. - The auto-hinter now produces better output by default for
  964. non-Latin scripts like Indic. This was done by using the CJK
  965. hinting module as the default instead of the Latin one. Thanks
  966. to Rahul Bhalerao for this suggestion.
  967. - A new API `FT_Face_CheckTrueTypePatents' has been added to find
  968. out whether a given TrueType font uses patented bytecode
  969. instructions. The `ft2demos' bundle contains a new program
  970. called `ftpatchk' which demonstrates its usage.
  971. - A new API `FT_Face_SetUnpatentedHinting' has been added to
  972. enable or disable the unpatented hinter.
  973. - Support for Windows FON files in PE format has been contributed
  974. by Dmitry Timoshkov.
  975. III. MISCELLANEOUS
  976. - Vincent Richomme contributed Visual C++ project files for Pocket
  977. PCs.
  978. ======================================================================
  979. CHANGES BETWEEN 2.3.4 and 2.3.3
  980. I. IMPORTANT BUG FIXES
  981. - A serious bug in the handling of bitmap fonts (and bitmap
  982. strikes of outline fonts) has been introduced in 2.3.3.
  983. ======================================================================
  984. CHANGES BETWEEN 2.3.3 and 2.3.2
  985. I. IMPORTANT BUG FIXES
  986. - Remove a serious regression in the TrueType bytecode interpreter
  987. that was introduced in version 2.3.2. Note that this does not
  988. disable the improvements introduced to the interpreter in
  989. version 2.3.2, only some ill cases that occurred with certain
  990. fonts (though a few popular ones).
  991. - The auto-hinter now ignores single-point contours for computing
  992. blue zones. This bug created `wavy' baselines when rendering
  993. text with various fonts that use these contours to model
  994. mark-attach points (these are points that are never rasterized
  995. and are placed outside of the glyph's real outline).
  996. - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
  997. zero for mono-spaced fonts. Otherwise code that uses them would
  998. essentially ruin the fixed-advance property.
  999. - Fix CVE-2007-1351 which can cause an integer overflow while
  1000. parsing BDF fonts, leading to a potentially exploitable heap
  1001. overflow condition.
  1002. II. MISCELLANEOUS
  1003. - Fixed compilation issues on some 64-bit platforms (see ChangeLog
  1004. for details).
  1005. - A new demo program `ftdiff' has been added to compare TrueType
  1006. hinting, FreeType's auto hinting, and rendering without hinting
  1007. in three columns.
  1008. ======================================================================
  1009. CHANGES BETWEEN 2.3.2 and 2.3.1
  1010. I. IMPORTANT BUG FIXES
  1011. - FreeType returned incorrect kerning information from TrueType
  1012. fonts when the bytecode interpreter was enabled. This happened
  1013. due to a typo introduced in version 2.3.0.
  1014. - Negative kerning values from PFM files are now reported
  1015. correctly (they were read as 16-bit unsigned values from the
  1016. file).
  1017. - Fixed a small memory leak when `FT_Init_FreeType' failed for
  1018. some reason.
  1019. - The Postscript hinter placed and sized very thin and ghost stems
  1020. incorrectly.
  1021. - The TrueType bytecode interpreter has been fixed to get rid of
  1022. most of the rare differences seen in comparison to the Windows
  1023. font loader.
  1024. II. IMPORTANT CHANGES
  1025. - The auto-hinter now better deals with serifs and corner cases
  1026. (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves
  1027. spacing adjustments and doesn't change widths for non-spacing
  1028. glyphs.
  1029. - Many Mac-specific functions are deprecated (but still
  1030. available); modern replacements have been provided for them.
  1031. See the documentation in file `ftmac.h'.
  1032. ======================================================================
  1033. CHANGES BETWEEN 2.3.1 and 2.3.0
  1034. I. IMPORTANT BUG FIXES
  1035. - The TrueType interpreter sometimes returned incorrect horizontal
  1036. metrics due to a bug in the handling of the SHZ instruction.
  1037. - A typo in a security check introduced after version 2.2.1
  1038. prevented FreeType to render some glyphs in CFF fonts.
  1039. ======================================================================
  1040. CHANGES BETWEEN 2.3.0 and 2.2.1
  1041. I. IMPORTANT BUG FIXES
  1042. - The PCF font loader is now much more robust while loading
  1043. malformed font files.
  1044. - Various memory leaks have been found and fixed.
  1045. - The TrueType name loader now deals properly with some fonts that
  1046. encode their names in UTF-16 (the specification was vague, and
  1047. the code incorrectly assumed UCS-4).
  1048. - Fixed the TrueType bytecode loader to deal properly with subtle
  1049. monochrome/gray issues when scaling the CVT. Some fonts
  1050. exhibited bad rendering artifacts otherwise.
  1051. - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
  1052. (it mangled the vertical advance height).
  1053. - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
  1054. i386.
  1055. - The PFR font loader no longer erroneously tags font files
  1056. without any outlines as FT_FACE_FLAG_SCALABLE.
  1057. II. NEW API FUNCTIONS
  1058. - `FT_Library_SetLcdFilter' allows you to select a special filter
  1059. to be applied to the bitmaps generated by `FT_Render_Glyph' if
  1060. one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
  1061. been selected. This filter is used to reduce color fringes;
  1062. several settings are available through the FT_LCD_FILTER_XXX
  1063. enumeration.
  1064. Its declaration and documentation can be found in file
  1065. `include/freetype/ftlcdfil.h' (to be accessed with macro
  1066. FT_LCD_FILTER_H).
  1067. *IMPORTANT*: This function returns an error
  1068. (FT_Err_Unimplemented_Feature) in default builds of the library
  1069. for patent reasons. See below.
  1070. - `FT_Get_Gasp' allows you to query the flags of the TrueType
  1071. `gasp' table for a given character pixel size. This is useful
  1072. to duplicate the text rendering of MS Windows when the native
  1073. bytecode interpreter is enabled (which isn't the default for
  1074. other patent reasons).
  1075. Its declaration and documentation can be found in file
  1076. `include/freetype/ftgasp.h' (to be accessed with macro
  1077. FT_GASP_H).
  1078. III. IMPORTANT CHANGES
  1079. - The auto-hinter has been tuned a lot to improve its results with
  1080. serif fonts, resulting in much better font rendering of many web
  1081. pages.
  1082. - The unpatented hinter is now part of the default build of the
  1083. library; we have added code to automatically support `tricky'
  1084. fonts that need it.
  1085. This means that FreeType should `just work' with certain Asian
  1086. fonts, like MingLiU, which cannot properly be loaded without a
  1087. bytecode interpreter, but which fortunately do not use any of
  1088. the patented bytecode opcodes. We detect these fonts by name,
  1089. so please report any font file that doesn't seem to work with
  1090. FreeType, and we shall do what we can to support it in a next
  1091. release.
  1092. Note that the API hasn't changed, so you can still force
  1093. unpatented hinting with a special parameter to `FT_Open_Face' as
  1094. well. This might be useful in same cases; for example, a PDF
  1095. reader might present a user option to activate it to deal with
  1096. certain `tricky' embedded fonts which cannot be clearly
  1097. identified.
  1098. If you are a developer for embedded systems, you might want to
  1099. *disable* the feature to save code space by undefining
  1100. TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
  1101. - LCD-optimized rendering is now *disabled* in all default builds
  1102. of the library, mainly due to patent issues. For more
  1103. information see:
  1104. http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
  1105. A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
  1106. has been introduced in `ftoption.h'; manually define it in this
  1107. file if you want to re-enable the feature.
  1108. The change only affects the implementation, not the FreeType
  1109. API. This means that clients don't need to be modified, because
  1110. the library still generates LCD decimated bitmaps, but with the
  1111. added constraint that R=G=B on each triplet.
  1112. The displayed result should be equal to normal anti-aliased
  1113. rendering.
  1114. Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
  1115. defined, the new `FT_Library_SetLcdFilter' function returns the
  1116. FT_Err_Unimplemented_Feature error code.
  1117. - Some computation bugs in the TrueType bytecode interpreter were
  1118. found, which allow us to get rid of very subtle and rare
  1119. differences we had experienced with the Windows renderer.
  1120. - It is now possible to cross-compile the library easily. See the
  1121. file `docs/INSTALL.CROSS' for details.
  1122. - The file `src/base/ftmac.c' now contains code for Mac OS X only;
  1123. its deprecated function `FT_GetFile_From_Mac_Font_Name' always
  1124. returns an error even if the QuickDraw framework is available.
  1125. The previous version has been moved to `builds/mac/ftmac.c'.
  1126. Selecting configure option `--with-quickdraw-carbon' makes the
  1127. build process use the original `ftmac.c' file instead of the Mac
  1128. OS X-only version.
  1129. IV. MISCELLANEOUS
  1130. - Various performance and memory footprint optimizations have been
  1131. performed on the TrueType and CFF font loaders, sometimes with
  1132. very drastic benefits (e.g., the TrueType loader is now about
  1133. 25% faster; FreeType should use less heap memory under nearly
  1134. all conditions).
  1135. - The anti-aliased rasterizer has been optimized and is now 15% to
  1136. 25% percent faster than in previous versions, depending on
  1137. content.
  1138. - The Type 1 loader has been improved; as an example, it now skips
  1139. top-level dictionaries properly.
  1140. - Better support for Mac fonts on POSIX systems, plus compilation
  1141. fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
  1142. - Configuration without `--with-old-mac-fonts' does not include
  1143. `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
  1144. - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
  1145. in the kern table.
  1146. ======================================================================
  1147. CHANGES BETWEEN 2.2.1 and 2.2
  1148. I. IMPORTANT BUG FIXES
  1149. - Various integer overflows have been fixed.
  1150. - PFB fonts with MacOS resource fork weren't handled correctly on
  1151. non-MacOS platforms.
  1152. ======================================================================
  1153. CHANGES BETWEEN 2.2 and 2.1.10
  1154. (not released officially)
  1155. I. IMPORTANT BUG FIXES
  1156. - Vertical metrics for SFNT fonts were incorrect sometimes.
  1157. - The FT_HAS_KERNING macro always returned 0.
  1158. - CFF OpenType fonts didn't return correct vertical metrics for
  1159. glyphs with outlines.
  1160. - If FreeType was compiled without hinters, all font formats based
  1161. on PS outlines weren't scaled correctly.
  1162. II. IMPORTANT CHANGES
  1163. - Version 2.2 no longer exposes its internals, this is, the header
  1164. files located in the `include/freetype/internal' directory of
  1165. the source package are not copied anymore by the `make install'
  1166. command. Consequently, a number of rogue clients which directly
  1167. access FreeType's internal functions and structures won't
  1168. compile without modification.
  1169. We provide patches for most of those rogue clients. See the
  1170. following page for more information:
  1171. http://www.freetype.org/freetype2/patches/rogue-patches.html
  1172. Note that, as a convenience to our Unix desktop users, version
  1173. 2.2 is *binary* compatible with FreeType 2.1.7, which means that
  1174. installing this release on an existing distribution shall not
  1175. break any working desktop.
  1176. - FreeType's build mechanism has been redesigned. With GNU make
  1177. it is now sufficient in most cases to edit two files:
  1178. `modules.cfg', to select the library components, and the
  1179. configuration file `include/freetype/config/ftoption.h' (which
  1180. can be copied to the objects directory). Removing unused module
  1181. directories to prevent its compilation and editing
  1182. `include/freetype/config/ftmodule.h' is no longer necessary.
  1183. - The LIGHT hinting algorithm produces more pleasant results.
  1184. Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
  1185. always forces auto-hinting, as a special exception. This allows
  1186. you to experiment with it even if you have enabled the TrueType
  1187. bytecode interpreter in your build.
  1188. - The auto hinter now employs a new algorithm for CJK fonts, based
  1189. on Akito Hirai's patch. Note that this only works for fonts
  1190. with a Unicode charmap at the moment.
  1191. - The following callback function types have changed slightly (by
  1192. adding the `const' keyword where appropriate):
  1193. FT_Outline_MoveToFunc
  1194. FT_Outline_LineToFunc
  1195. FT_Outline_ConicToFunc
  1196. FT_Outline_CubicToFunc
  1197. FT_SpanFunc
  1198. FT_Raster_RenderFunc
  1199. FT_Glyph_TransformFunc
  1200. FT_Renderer_RenderFunc
  1201. FT_Renderer_TransformFunc
  1202. Note that this doesn't affect binary backward compatibility.
  1203. - On MacOS, new APIs have been added as replacements for legacy
  1204. APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
  1205. and `FT_GetFile_From_Mac_ATS_Name' for
  1206. `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
  1207. FreeType is built without disabling them.
  1208. - A new API `FT_Select_Size' has been added to select a bitmap
  1209. strike by its index. Code using other functions to select
  1210. bitmap strikes should be updated to use this function.
  1211. - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
  1212. subglyph data. This can be used by rogue clients which used to
  1213. access the internal headers to get the corresponding data.
  1214. - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
  1215. BDF/PCF fonts, and only for them. This causes inconsistency.
  1216. In this release, we undo the change. The intent of the change
  1217. in 2.1.10 is to allow size selection through real dimensions,
  1218. which can now be done through `FT_Request_Size'.
  1219. - Some security issues were discovered and fixed in the CFF and
  1220. Type 1 loader, causing crashes of FreeType by malformed font
  1221. files.
  1222. III. MISCELLANEOUS
  1223. - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
  1224. values now better reflects its usage and differences: One set is
  1225. used to specify the hinting algorithm, the other to specify the
  1226. pixel rendering mode.
  1227. - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
  1228. changed to count supported scalable faces (sfnt, LWFN) only, and
  1229. to return the number of available faces via face->num_faces.
  1230. Unsupported bitmap faces (fbit, NFNT) are ignored.
  1231. - builds/unix/configure has been improved for MacOS X. It now
  1232. automatically checks available functions in Carbon library, and
  1233. prepare to use newest functions by default. Options to specify
  1234. the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
  1235. QuickDraw, ATS) are available too. By manual disabling of all
  1236. QuickDraw functionality, FreeType can be built without
  1237. `deprecated function' warnings on MacOS 10.4.x, but
  1238. FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
  1239. function, and returns an `unimplemented' error. For details see
  1240. builds/mac/README.
  1241. - SFNT cmap handling has been improved, mainly to run much faster
  1242. with CJK fonts.
  1243. - A new function `FT_Get_TrueType_Engine_Type (declared in
  1244. `FT_MODULE_H') is provided to determine the status of the
  1245. TrueType bytecode interpreter compiled into the library
  1246. (patented, unpatented, unimplemented).
  1247. - Vertical metrics of glyphs are synthesized if the font does not
  1248. provide such information. You can tell whether the metrics are
  1249. synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
  1250. the face.
  1251. - The demo programs `ftview' and `ftstring' have been rewritten
  1252. for better readability. `ftview' has a new switch `-p' to test
  1253. FT_New_Memory_Face (instead of FT_New_Face).
  1254. - FreeType now honours bit 1 in the `head' table of TrueType fonts
  1255. (meaning `left sidebearing point at x=0'). This helps with some
  1256. buggy fonts.
  1257. - Rudimentary support for Adobe's new `SING Glyphlet' format. See
  1258. http://www.adobe.com/products/indesign/sing_gaiji.html
  1259. for more information.
  1260. - The `ftdump' program from the `ft2demos' bundle now shows some
  1261. information about charmaps. It also supports a new switch `-v'
  1262. to increase verbosity.
  1263. - Better AFM support. This includes track kerning support.
  1264. ======================================================================
  1265. CHANGES BETWEEN 2.1.10 and 2.1.9
  1266. I. IMPORTANT BUG FIXES
  1267. - The size comparison for BDF and PCF files could fail sometimes.
  1268. - Some CFF files were still not loaded correctly. Patch from
  1269. Derek Noonburg.
  1270. - The stroker still had some serious bugs.
  1271. - Boris Letocha fixed a bug in the TrueType interpreter: The
  1272. NPUSHW instruction wasn't skipped correctly in IF clauses. Some
  1273. fonts like `Helvetica 75 Bold' failed.
  1274. - Another serious bug in handling TrueType hints caused many
  1275. distortions. It has been introduced in version 2.1.8, and it is
  1276. highly recommended to upgrade.
  1277. - FreeType didn't properly parse empty Type 1 glyphs.
  1278. - An unbound dynamic buffer growth was fixed in the PFR loader.
  1279. - Several bugs have been fixed in the cache sub-system.
  1280. - FreeType behaved incorrectly when resizing two distinct but very
  1281. close character pixel sizes through `FT_Set_Char_Size' (Savannah
  1282. bug #12263).
  1283. - The auto-hinter didn't work properly for fonts without a Unicode
  1284. charmap -- it even refused to load the glyphs.
  1285. II. IMPORTANT CHANGES
  1286. - Many fixes have been applied to drastically reduce the amount of
  1287. heap memory used by FreeType, especially when using
  1288. memory-mapped font files (which is the default on Unix systems
  1289. which support them).
  1290. - The auto-hinter has been replaced with a new module, called the
  1291. `auto-fitter'. It consumes less memory than its predecessor,
  1292. and it is prepared to support non-latin scripts better in next
  1293. releases.
  1294. - George Williams contributed code to read kerning data from PFM
  1295. files.
  1296. - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
  1297. TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
  1298. setting family and style in SFNT fonts (patch from Kornfeld
  1299. Eliyahu Peter).
  1300. - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
  1301. been added to retrieve name and size information of SFNT tables.
  1302. - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
  1303. been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
  1304. JSTF). After validation it is no longer necessary to check
  1305. for errors in those tables while accessing them.
  1306. Note that this module might be moved to another library in the
  1307. future to avoid a tight dependency between FreeType and the
  1308. OpenType specification.
  1309. - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
  1310. `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
  1311. been added. Its use is to convert an FT_Bitmap structure in
  1312. 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
  1313. probably using a different pitch, and to further manipulate it.
  1314. - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
  1315. control how outlines are embolded.
  1316. - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
  1317. also (code contributed by Chia I Wu). Note that this function
  1318. is still experimental and may be replaced with a better API.
  1319. - The method how BDF and PCF bitmap fonts are accessed has been
  1320. refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
  1321. were synonyms in FreeType's BDF and PCF interface. This has
  1322. changed now. FT_Set_Pixel_Sizes should be used to select the
  1323. actual font dimensions (the `strike', which is the sum of the
  1324. `FONT_ASCENT' and `FONT_DESCENT' properties), while
  1325. FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
  1326. property). In both functions, the width parameter is ignored.
  1327. III. MISCELLANEOUS
  1328. - The BDF driver no longer converts all returned bitmaps with a
  1329. depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
  1330. not mentioned this explicitly, but implementors might have
  1331. relied on this after looking into the source files.
  1332. - A new option `--ftversion' has been added to freetype-config to
  1333. return the FreeType version.
  1334. - The memory debugger has been updated to dump allocation
  1335. statistics on all allocation sources in the library. This is
  1336. useful to spot greedy allocations when loading and processing
  1337. fonts.
  1338. - We removed a huge array of constant pointers to constant strings
  1339. in the `psnames' module. The problem was that compilations in
  1340. PIC mode (i.e., when generating a Unix shared object/dll) put
  1341. the array into the non-shared writable section of the library
  1342. since absolute pointers are not relocatable by nature.
  1343. This reduces the memory consumption by approximately 16KByte per
  1344. process linked to FreeType. We now also store the array in a
  1345. compressed form (as a trie) which saves about 20KByte of code as
  1346. well.
  1347. - Kirill Smelkov provided patches to make src/raster/ftraster.c
  1348. compile stand-alone again.
  1349. ======================================================================
  1350. CHANGES BETWEEN 2.1.9 and 2.1.8
  1351. I. IMPORTANT BUG FIXES
  1352. - The function `FT_Get_CharMap_Index' was only declared, without
  1353. any real code. For consistency, it has been renamed to
  1354. `FT_Get_Charmap_Index'. (This function is needed to implement
  1355. cmap caches.)
  1356. - `FT_Outline_Get_BBox' sometimes returned incorrect values for
  1357. conic outlines (e.g., for TrueType fonts).
  1358. - Handling of `bhed' table has been fixed.
  1359. - The TrueType driver with enabled byte code interpreter sometimes
  1360. returned artifacts due to incorrect rounding. This bug has been
  1361. introduced after version 2.1.4.
  1362. - The BDF driver dropped the last glyph in the font.
  1363. - The BDF driver now uses the DEFAULT_CHAR property (if available)
  1364. to select a glyph shape for the undefined glyph.
  1365. - The stroker failed for closed outlines and single points.
  1366. II. IMPORTANT CHANGES
  1367. - George Williams contributed code to handle Apple's font
  1368. distortion technology found in GX fonts (`avar', `cvar', `fvar',
  1369. and `gvar' tables; the Multiple Masters API has been slightly
  1370. extended to cope with the new functionality).
  1371. - The `FT_GlyphSlotRec' structure has been extended: The elements
  1372. `lsb_delta' and `rsb_delta' give the difference between hinted
  1373. and unhinted left and right side bearings if autohinting is
  1374. active. Using those values can improve the inter-letter spacing
  1375. considerably. See the documentation of `FT_GlyphSlotRec' and
  1376. the `ftstring' demo program how to use it.
  1377. - Loading TrueType and Type 1 fonts has been made much faster.
  1378. - The stroker is no longer experimental (but the cache subsystem
  1379. still is).
  1380. III. MISCELLANEOUS
  1381. - A new documentation file `formats.txt' describes various font
  1382. formats supported (and not supported) by FreeType.
  1383. ======================================================================
  1384. CHANGES BETWEEN 2.1.8 and 2.1.7
  1385. I. IMPORTANT BUG FIXES
  1386. - The native TrueType hinter contained some bugs which prevented
  1387. some fonts to be rendered correctly, most notably Legendum.otf.
  1388. - The PostScript hinter now produces improved results.
  1389. - The linear advance width and height values were incorrectly
  1390. rounded, making them virtually unusable if not loaded with
  1391. FT_LOAD_LINEAR_DESIGN.
  1392. - Indexing CID-keyed CFF fonts is now working: The glyph index is
  1393. correctly treated as a CID, similar to FreeType's CID driver
  1394. module. Note that CID CMap support is still missing.
  1395. - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
  1396. font formats.
  1397. - Some subsetted Type 1 fonts weren't parsed correctly. This bug
  1398. has been introduced in 2.1.7. In summary, the Type 1 parser has
  1399. become more robust.
  1400. - Non-decimal numbers weren't parsed correctly in PS fonts.
  1401. - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
  1402. but one encoding. Use the new FT_WinFNT_ID_XXX values together
  1403. with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
  1404. - The descender metrics (face->size->metrics.descender) for WinFNT
  1405. bitmap fonts had the wrong sign.
  1406. - The (emulated) `seac' support for CFF fonts was broken.
  1407. - The `flex' operator didn't work for CFF fonts.
  1408. - PS glyphs which use the `hintmask' operator haven't been
  1409. rendered correctly in some cases.
  1410. - Metrics for BDF and PCF bitmap font formats have been fixed.
  1411. - Autohinting is now disabled for glyphs which are vertically
  1412. distorted or mirrored (using a transformation matrix). This
  1413. fixes a bug which produced zero-height glyphs.
  1414. - The `freetype-config' script now handles --prefix and
  1415. --exec-prefix correctly; it also returns the proper --rpath (or
  1416. -R) value if FreeType has been built as a shared library.
  1417. II. IMPORTANT CHANGES
  1418. - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
  1419. ADD_STYLE_NAME properties. Values are appended to
  1420. face->style_name; example: `Bold SemiCondensed'.
  1421. - The PCF driver now handles bitmap fonts compressed with the LZW
  1422. algorithm (extension .pcf.Z, compressed with `compress').
  1423. - A new API function `FT_Get_CMap_Language_ID' (declared in
  1424. `tttables.h') is available to get the language ID of a
  1425. TrueType/SFNT cmap.
  1426. - The hexadecimal format of data after the `StartData' command in
  1427. CID-keyed Type 1 fonts is now supported. While this can't occur
  1428. in file-based fonts, it can happen in document-embedded
  1429. resources of PostScript documents.
  1430. - Embedded bitmaps in SFNT-based CFF fonts are now supported.
  1431. - A simple API is now available to control FreeType's tracing
  1432. mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
  1433. `ftdebug.h' for more details.
  1434. - YAMATO Masatake contributed improved handling of MacOS resource
  1435. forks on non-MacOS platforms (for example, Linux can mount MacOS
  1436. file systems).
  1437. - Support for MacOS has been improved; there is now a new function
  1438. `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
  1439. it accepts an FSSpec instead of a path.
  1440. - The cache sub-system has been rewritten.
  1441. - There is now support for deinstallation of faces.
  1442. - A new API function `FTC_Manager_RemoveFaceID' has been added
  1443. to delete all `idle' nodes that correspond to a given
  1444. FTC_FaceID. All `locked' nodes (i.e., those with a reference
  1445. count > 0), will be modified to prevent them from appearing in
  1446. further lookups (they will be cleaned normally when their
  1447. reference count reaches 0).
  1448. - There is now support for point scaling (i.e., providing
  1449. character sizes in points + dpis, instead of pixels).
  1450. - Three abstract cache classes are now available:
  1451. FTC_GCache: Used to store one glyph item per cache node,
  1452. with the ability to group common attributes into
  1453. `families'. This replaces the old
  1454. FTC_GlyphCache class.
  1455. FTC_ICache: Used to store one FT_Glyph per cache node. This
  1456. extends FTC_GCache. Family definition, family
  1457. comparison, and glyph loading are however left
  1458. to sub-classes.
  1459. FTC_SCache: Used to store up to 16 small bitmaps per cache
  1460. node. This extends FTC_GCache. Family
  1461. definition, family comparison and glyph loading
  1462. are however left to sub-classes.
  1463. - The file `src/cache/ftcbasic.c' implements:
  1464. FTC_ImageCache: Extends FTC_ICache; implements family
  1465. definitions and glyph loading similar to the
  1466. old API.
  1467. FTC_SBitCache: Extends FTC_SCache, implements family
  1468. definitions and glyph loading similar to the
  1469. old API
  1470. Client applications should be able to extend FTC_GCache,
  1471. FTC_ICache, or FTC_SCache much more easily (i.e., less code to
  1472. write, and less callbacks). For example, one could envision
  1473. caches that are capable of storing transformed (obliqued),
  1474. stroked, emboldened, or colored glyph images. Use
  1475. `ftcbasic.c' as an example.
  1476. - All public APIs are now in `include/freetype/ftcache.h', (to
  1477. be accessed as `FT_CACHE_H'). The contents of
  1478. `include/freetype/cache/' is only needed by applications that
  1479. wish to implement their own caches.
  1480. - There were some major performance improvements through the use
  1481. of various programming tricks. Cache hits are up to 70%
  1482. faster than in the old code.
  1483. - The FTC_CMapCache has been simplified. Charmaps can only be
  1484. accessed by index right now. There is also a new API named
  1485. `FT_Charmap_GetIndex' for this purpose.
  1486. - The demo programs have been updated to the new code. The
  1487. previous versions will not work with the current one.
  1488. - Using an invalid face index in FT_Open_Face and friends now
  1489. causes an error even if the font contains a single face only.
  1490. III. MISCELLANEOUS
  1491. - Wolfgang Domröse contributed support files for building FreeType
  1492. on the Atari using the PureC compiler. Note that the Atari is a
  1493. 16bit platform.
  1494. - Vitaliy Pasternak contributed project files for VS.NET 2003.
  1495. ======================================================================
  1496. CHANGES BETWEEN 2.1.7 and 2.1.6
  1497. I. IMPORTANT BUG FIXES
  1498. - Updated to newest libtool version, fixing build problems on
  1499. various platforms.
  1500. - On Unix platforms, `make install' didn't copy the correct
  1501. `ftconfig.h' file.
  1502. Note that version 2.1.7 contains the same library C source code as
  1503. version 2.1.6.
  1504. ======================================================================
  1505. CHANGES BETWEEN 2.1.6 and 2.1.5
  1506. I. IMPORTANT BUG FIXES
  1507. - The PFR font driver didn't load kerning tables correctly, and
  1508. the functions in FT_PFR_H didn't work at all.
  1509. - Type 1 font files in binary format (PFB) with an end-of-file
  1510. indicator weren't accepted by the FreeType engine.
  1511. - Fonts which contain /PaintType and /StrokeWidth no longer cause
  1512. a segfault. This bug has been introduced in version 2.1.5.
  1513. - Fonts loaded with FT_LOAD_RENDER no longer cause strange
  1514. results. This bug has been introduced in version 2.1.5.
  1515. - Some Windows (bitmap) FNT/FON files couldn't be handled
  1516. correctly.
  1517. II. IMPORTANT CHANGES
  1518. - The internal module API has been heavily changed in favor of
  1519. massive simplifications within the font engine. This also means
  1520. that authors of third-party modules must adapt their code to the
  1521. new scheme.
  1522. NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
  1523. FINAL ANNOUNCEMENT!
  1524. - The PostScript parser has been enhanced to handle comments and
  1525. strings correctly. Additionally, more syntax forms are
  1526. recognized.
  1527. - Added the optional unpatented hinting system for TrueType. It
  1528. allows typefaces which need hinting to produce correct glyph
  1529. forms (e.g., Chinese typefaces from Dynalab) to work acceptably
  1530. without infringing Apple patents. This system is compiled only
  1531. if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
  1532. ftoption.h (activated by default).
  1533. III. MISCELLANEOUS
  1534. - There is now a guard in the public header files to protect
  1535. against inclusion of freetype.h from FreeType 1.
  1536. - Direct inclusion of freetype.h and other public header files no
  1537. longer works. You have to use the documented scheme
  1538. #include <ft2build.h>
  1539. #include FT_FREETYPE_H
  1540. to load freetype.h with a symbolic name. This protects against
  1541. renaming of public header files (which shouldn't happen but
  1542. actually has, avoiding two public header files with the same
  1543. name).
  1544. ======================================================================
  1545. CHANGES BETWEEN 2.1.5 and 2.1.4
  1546. I. IMPORTANT BUG FIXES
  1547. - Parsing the /CIDFontName field now removes the leading slash to
  1548. be in sync with other font drivers.
  1549. - gzip support was buggy. Some fonts could not be read.
  1550. - Fonts which have nested subglyphs more than one level deep no
  1551. longer cause a segfault.
  1552. - Creation of synthetic cmaps for fonts in CFF format was broken
  1553. partially.
  1554. - Numeric font dictionary entries for synthetic fonts are no
  1555. longer overwritten.
  1556. - The font matrix wasn't applied to the advance width for Type1,
  1557. CID, and CFF fonts. This caused problems when loading certain
  1558. synthetic Type 1 fonts like `Helvetica Narrow'.
  1559. - The test for the charset registry in BDF and PCF fonts is now
  1560. case-insensitive.
  1561. - FT_Vector_Rotate sometimes returned strange values due to
  1562. rounding errors.
  1563. - The PCF driver now returns the correct number of glyphs
  1564. (including an artificial `notdef' glyph at index 0).
  1565. - FreeType now supports buggy CMaps which are contained in many
  1566. CJK fonts from Dynalab.
  1567. - Opening an invalid font on a Mac caused a segfault due to
  1568. double-freeing memory.
  1569. - BDF fonts with more than 32768 glyphs weren't supported
  1570. properly.
  1571. II. IMPORTANT CHANGES
  1572. - Accessing bitmap font formats has been synchronized. To do that
  1573. the FT_Bitmap_Size structure has been extended to contain new
  1574. fields `size', `x_ppem', and `y_ppem'.
  1575. - The FNT driver now returns multiple faces, not multiple strikes.
  1576. - The `psnames' module has been updated to the Adobe Glyph List
  1577. version 2.0.
  1578. - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
  1579. - The algorithm for guessing the font style has been improved.
  1580. - For fonts in SFNT format, root->height is no longer increased if
  1581. the line gap is zero. There exist fonts (containing e.g. form
  1582. drawing characters) which intentionally have a zero line gap
  1583. value.
  1584. - ft_glyph_bbox_xxx flags are now deprecated in favour of
  1585. FT_GLYPH_BBOX_XXX.
  1586. - ft_module_xxx flags are now deprecated in favour of
  1587. FT_MODULE_XXX.
  1588. - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
  1589. deprecated in favour of
  1590. FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
  1591. are not specific to Microsoft.
  1592. III. MISCELLANEOUS
  1593. - The autohinter has been further improved; for example, `m'
  1594. glyphs now retain its vertical symmetry.
  1595. - Partial support of Mac fonts on non-Mac platforms.
  1596. - `make refdoc' (after first `make') builds the HTML
  1597. documentation. You need Python for this.
  1598. - The make build system should now work more reliably on DOS-like
  1599. platforms.
  1600. - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
  1601. been added.
  1602. - Better VMS build support.
  1603. - Support for the pkg-config package by providing a `freetype.pc'
  1604. file.
  1605. - New configure option --with-old-mac-fonts for Darwin.
  1606. - Some source files have been renamed (mainly to fit into the 8.3
  1607. naming scheme).
  1608. ======================================================================
  1609. CHANGES BETWEEN 2.1.4 and 2.1.3
  1610. I. IMPORTANT BUG FIXES
  1611. - Updated to newest libtool version, fixing build problems on
  1612. various platforms.
  1613. - A fix in the Gzip stream reader: It couldn't read certain .gz
  1614. files properly due to a small typo. In certain cases, FreeType
  1615. could also loop endlessly when trying to load tiny gzipped
  1616. files.
  1617. - The configure script now tries to use the system-wide zlib when
  1618. it finds one (instead of the copy found in src/gzip). And
  1619. `freetype-config' has been updated to return relevant flags in
  1620. this case when invoked with `--libs' (e.g. `-lzlib').
  1621. - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
  1622. Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
  1623. rejected them.
  1624. - The CFF loader was modified to accept fonts which only contain a
  1625. subset of their reference charset. This prevented the correct
  1626. use of PDF-embedded fonts.
  1627. - The logic to detect Unicode charmaps has been modified. This is
  1628. required to support fonts which include both 16-bit and 32-bit
  1629. charmaps (like very recent asian ones) using the new 10 and 12
  1630. SFNT formats.
  1631. - The TrueType loader now limits the depth of composite glyphs.
  1632. This is necessary to prevent broken fonts to break the engine by
  1633. blowing the stack with recursive glyph definitions.
  1634. - The CMap cache is now capable of managing UCS-4 character codes
  1635. that are mapped through extended charmaps in recent
  1636. TrueType/OpenType fonts.
  1637. - The cache sub-system now properly manages out-of-memory
  1638. conditions instead of blindly reporting them to the caller.
  1639. This means that it will try to empty the cache before restarting
  1640. its allocations to see if that can help.
  1641. - The PFR driver didn't return the list of available embedded
  1642. bitmaps properly.
  1643. - There was a nasty memory leak when using embedded bitmaps in
  1644. certain font formats.
  1645. II. IMPORTANT CHANGES
  1646. - David Chester contributed some enhancements to the auto-hinter
  1647. that significantly increase the quality of its output. The
  1648. Postscript hinter was also improved in several ways.
  1649. - The FT_RENDER_MODE_LIGHT render mode was implemented.
  1650. - A new API function called `FT_Get_BDF_Property' has been added
  1651. to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
  1652. files. THIS IS STILL EXPERIMENTAL, since it hasn't been
  1653. properly tested yet.
  1654. - A Windows FNT specific API has been added, mostly to access font
  1655. headers. This is used by Wine.
  1656. - TrueType tables without an `hmtx' table are now tolerated when
  1657. an incremental interface is used. This happens for certain
  1658. Type42 fonts passed from Ghostscript to FreeType.
  1659. - The PFR font driver is now capable of returning the font family
  1660. and style names when they are available (instead of the sole
  1661. `FontID'). This is performed by parsing an *undocumented*
  1662. portion of the font file!
  1663. III. MISCELLANEOUS
  1664. - The path stroker in FT_STROKER_H has entered beta stage. It now
  1665. works very well, but its interface might change a bit in the
  1666. future. More on this in later releases.
  1667. - The documentation for FT_Size_Metrics didn't appear properly in
  1668. the API reference.
  1669. - The file docs/VERSION.DLL has been updated to explain versioning
  1670. with FreeType (i.e., comparing release/libtool/so numbers, and
  1671. how to use them in autoconf scripts).
  1672. - The installation documentation has been seriously revamped.
  1673. Everything is now in the `docs' directory.
  1674. ======================================================================
  1675. CHANGES BETWEEN 2.1.3 and 2.1.2
  1676. I. IMPORTANT BUG FIXES
  1677. - FT_Vector_Transform had been incorrectly modified in 2.1.2,
  1678. resulting in incorrect transformations being applied (for
  1679. example, rotations were processed in opposite angles).
  1680. - The format 8 and 12 TrueType charmap enumeration routines have
  1681. been fixed (FT_Get_Next_Char returned invalid values).
  1682. - The PFR font driver returned incorrect advance widths if the
  1683. outline and metrics resolution defined in the font file were
  1684. different.
  1685. - FT_Glyph_To_Bitmap now returns successfully when called with an
  1686. FT_BitmapGlyph argument (it previously returned an error).
  1687. - A bug in the Type 1 loader that prevented valid font bounding
  1688. boxes to be loaded from multiple master fonts.
  1689. - The SFNT validation code has been rewritten. FreeType can now
  1690. load `broken' fonts that were usable on Windows, but not with
  1691. previous versions of the library.
  1692. - The computation of bearings in the BDF driver has been fixed.
  1693. - The Postscript hinter crashed when trying to hint certain glyphs
  1694. (more precisely, when trying to apply hints to an empty glyph
  1695. outline).
  1696. - The TrueType glyph loader now supports composites in `Apple
  1697. format' (they differ slightly from Microsoft/OpenType ones in
  1698. the way transformation offsets are computed).
  1699. - FreeType was very slow at opening certain asian CID/CFF fonts,
  1700. due to fixed increment in dynamic array re-allocations. This
  1701. has been changed to exponential behaviour to get acceptable
  1702. performance.
  1703. II. IMPORTANT CHANGES
  1704. - The PCF driver now supports gzip-compressed font files natively.
  1705. This means that you will be able to use all these bitmap fonts
  1706. that come with XFree86 with FreeType (and libXft/libXft2, by
  1707. extension).
  1708. - The automatic and postscript hinters have both been updated.
  1709. This results in a relatively important increase of rendering
  1710. quality since many nasty defaults have been suppressed. Please
  1711. visit the web page:
  1712. http://www.freetype.org/hinting/smooth-hinting.html
  1713. for additional details on this topic.
  1714. - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
  1715. (instead of just being an FT_Int). This breaks source and
  1716. binary compatibility for 16bit systems only, while retaining
  1717. both of them for 32 and 64 bit ones.
  1718. Some new flags have been added consequently:
  1719. FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
  1720. (but not native format hinters).
  1721. FT_LOAD_TARGET_NORMAL :: Hint and render for normal
  1722. anti-aliased displays.
  1723. FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
  1724. FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
  1725. BGR sub-pixel displays (like LCD
  1726. screens). THIS IS STILL
  1727. EXPERIMENTAL!
  1728. FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
  1729. vertical sub-pixel displays (like
  1730. rotated LCD screens). THIS IS STILL
  1731. EXPERIMENTAL!
  1732. FT_LOAD_MONOCHROME is still supported, but only affects
  1733. rendering, not the hinting.
  1734. Note that the `ftview' demo program available in the `ft2demos'
  1735. package has been updated to support LCD-optimized display on
  1736. non-paletted displays (under Win32 and X11).
  1737. - The PFR driver now supports embedded bitmaps (all formats
  1738. supported), and returns correct kerning metrics for all glyphs.
  1739. - The TrueType charmap loader now supports certain `broken' fonts
  1740. that load under Windows without problems.
  1741. - The cache API has been slightly modified (it's still a beta!):
  1742. - The type FTC_ImageDesc has been removed; it is now replaced
  1743. by FTC_ImageTypeRec. Note that one of its fields is a
  1744. `load_flag' parameter for FT_Load_Glyph.
  1745. - The field `num_grays' of FT_SBitRec has been changed to
  1746. `max_grays' in order to fit within a single byte. Its
  1747. maximum value is thus 255 (instead of 256 as previously).
  1748. III. MISCELLANEOUS
  1749. - Added support for the DESTDIR variable during `make install'.
  1750. This simplifies packaging of FreeType.
  1751. - Included modified copies of the ZLib sources in `src/gzip' in
  1752. order to support gzip-compressed PCF fonts. We do not use the
  1753. system-provided zlib for now, though this is a probable
  1754. enhancement for future releases.
  1755. - The DocMaker tool used to generate the on-line API reference has
  1756. been completely rewritten. It is now located in
  1757. `src/tools/docmaker/docmaker.py'. Features:
  1758. - better cross-referenced output
  1759. - more polished output
  1760. - uses Python regular expressions (though it didn't speed the
  1761. program)
  1762. - much more modular structure, which allows for different
  1763. `backends' in order to generate HTML, XML, or whatever
  1764. format.
  1765. One can regenerate the API reference by calling:
  1766. python src/tools/docmaker/docmaker.py \
  1767. --prefix=ft2 \
  1768. --title=FreeType-2.1.3 \
  1769. --output=<outputdirectory>
  1770. include/freetype/*.h \
  1771. include/freetype/config/*.h \
  1772. include/freetype/cache/*.h
  1773. - A new, experimental, support for incremental font loading (i.e.,
  1774. loading of fonts where the glyphs are not in the font file
  1775. itself, but provided by an external component, like a Postscript
  1776. interpreter) has been added by Graham Asher. This is still work
  1777. in progress, however.
  1778. - A new, EXPERIMENTAL, path stroker has been added. It doesn't
  1779. suffer from severe rounding errors and treat bezier arcs
  1780. directly. Still work in progress (i.e. not part of the official
  1781. API). See the file <freetype/ftstroker.h> for some of the
  1782. details.
  1783. - The massive re-formatting of sources and internal re-design is
  1784. still under-way. Many internal functions, constants, and types
  1785. have been renamed.
  1786. ======================================================================
  1787. CHANGES BETWEEN 2.1.2 and 2.1.1
  1788. I. IMPORTANT BUG FIXES
  1789. - Many font drivers didn't select a Unicode charmap by default
  1790. when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
  1791. options enabled), causing many applications to not be able to
  1792. display text correctly with the 2.1.x releases.
  1793. - The PFR driver had a bug in its composite loading code that
  1794. produces incorrectly placed accents with many fonts.
  1795. - The Type42 driver crashed sometimes due to a nasty bug.
  1796. - The Type 1 custom encoding charmap didn't handle the case where
  1797. the first glyph index wasn't 0.
  1798. - A serious typo in the TrueType composite loader produced
  1799. incorrectly placed glyphs in fonts like `Wingdings' and a few
  1800. others.
  1801. II. MISCELLANEOUS
  1802. - The Win32 Visual C++ project file has been updated to include
  1803. the PFR driver as well.
  1804. - `freetype.m4' is now installed by default by `make install' on
  1805. Unix systems.
  1806. - The function FT_Get_PS_Font_Info now works with CID and Type42
  1807. fonts as well.
  1808. ======================================================================
  1809. CHANGES BETWEEN 2.1.1 and 2.1.0
  1810. I. IMPORTANT BUG FIXES
  1811. - The `version_info' returned by `freetype-config' in 2.1.0
  1812. returned an invalid value. It now returns 9:1:3 (2.0.9 returned
  1813. 9:0:3).
  1814. - Version 2.1.0 couldn't be linked against applications on Win32
  1815. and Amiga systems due to a new debug function that wasn't
  1816. properly propagated to the system-specific directory in
  1817. `builds'.
  1818. - Various MacOS and Mac OS X specific fixes.
  1819. - Fixed a bug in the TrueType charmap validation routines that
  1820. made version 2.1.0 too restrictive -- many popular fonts have
  1821. been rejected.
  1822. - There was still a very small difference between the monochrome
  1823. glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
  1824. bytecode interpreter enabled. This was caused by an invalid
  1825. flag setting in the TrueType glyph loader, making the rasterizer
  1826. change its drop-out control mode. Now the results should
  1827. _really_ be completely identical.
  1828. - The TrueType name table loader has been improved to support many
  1829. popular though buggy Asian fonts. It now ignores empty name
  1830. entries, invalid pointer offsets and a few other incorrect
  1831. subtleties. Moreover, name strings are now loaded on demand,
  1832. which reduces the memory load of many faces (e.g. the ARIAL.TTF
  1833. font file contains a 10kByte name table with 70 names).
  1834. - Fixed a bug in the Postscript hinter that prevented family blues
  1835. substitution to happen correctly.
  1836. II. NEW FEATURES
  1837. - Three new font drivers in this release:
  1838. * A BDF font driver, contributed by Franco Zappa Nardelli,
  1839. heavily modified by Werner Lemberg. It also supports
  1840. anti-aliased bitmaps (using a slightly extended BDF format).
  1841. * A Type42 font driver, contributed by Roberto Alameda. It is
  1842. still experimental but seems to work relatively well.
  1843. * A PFR font driver, contributed by David Turner himself. It
  1844. doesn't support PFR hinting -- note that BitStream has at
  1845. least two patents on this format!
  1846. III. MISCELLANEOUS
  1847. - The cache sub-system has been optimized in important ways.
  1848. Cache hits are now significantly faster. For example, using the
  1849. CMap cache is about twice faster than calling FT_Get_Char_Index
  1850. on most platforms. Similarly, using an SBit cache is about five
  1851. times faster than loading the bitmaps from a bitmap file, and
  1852. 300 to 500 times faster than generating them from a scalable
  1853. format.
  1854. Note that you should recompile your sources if you designed a
  1855. custom cache class for the FT2 Cache subsystem, since the
  1856. changes performed are source, but not binary, compatible.
  1857. ======================================================================
  1858. CHANGES BETWEEN 2.1.0 and 2.0.9
  1859. I. IMPORTANT BUG FIXES
  1860. - The TrueType bytecode interpreter has been fixed to produce
  1861. _exactly_ the same output as FreeType 1.x. Previous differences
  1862. were due to slightly distinct fixed-point computation routines
  1863. used to perform dot products and vector length measurements.
  1864. It seems that native TrueType hinting is _extremely_ sensitive
  1865. to rounding errors. The required vector computation routines
  1866. have been optimized and placed within the `ttinterp.c' file.
  1867. - Fixed the parsing of accelerator tables in the PCF font driver.
  1868. - Fixed the Type1 glyph loader routine used to compute the font's
  1869. maximum advance width.
  1870. II. NEW FEATURES
  1871. - The `configure' script used on Unix systems has been modified to
  1872. check that GNU Make is being used to build the library.
  1873. Otherwise, it will display a message proposing to use the
  1874. GNUMAKE environment variable to name it.
  1875. The Unix-specific file README.UNX has been modified accordingly.
  1876. III. MISCELLANEOUS
  1877. - The FreeType License in `docs/FTL.TXT' has been updated to
  1878. include a proposed preferred disclaimer. If you are using
  1879. FreeType in your products, you are encouraged (but not mandated)
  1880. to use the following text in your documentation:
  1881. """
  1882. Portions of this software are copyright © 1996-2002 The
  1883. FreeType Project (www.freetype.org). All rights reserved.
  1884. """
  1885. - The default size of the render pool has been reduced to 16kByte.
  1886. This shouldn't result in any noticeable performance penalty,
  1887. unless you are using the engine as-is to render very large and
  1888. complex glyphs.
  1889. - The FreeType 2 redesign has begun. More information can be
  1890. found at this URL:
  1891. http://www.freetype.org/freetype2/redesign.html
  1892. The following internal changes have been performed within the
  1893. sources of this release:
  1894. - Many internal types have been renamed to increase
  1895. consistency. The following should be true, except for
  1896. public types:
  1897. * All structure types have a name ending in `Rec' (short
  1898. for `record').
  1899. * A pointer-to-structure type has the same name as the
  1900. structure, _without_ the `Rec' suffix.
  1901. Example:
  1902. typedef struct FooRec_
  1903. {
  1904. ...
  1905. } FooRec, *Foo;
  1906. - Many internal macros have been renamed to increase
  1907. consistency. The following should be true:
  1908. * All macros have a name beginning with `FT_'. This
  1909. required a few changes like
  1910. ALLOC => FT_ALLOC
  1911. FREE => FT_FREE
  1912. REALLOC => FT_REALLOC
  1913. * All macros are completely UPPERCASE. This required a
  1914. few changes like:
  1915. READ_Short => FT_READ_SHORT
  1916. NEXT_Short => FT_NEXT_SHORT
  1917. GET_ULongLE => FT_GET_ULONG_LE
  1918. MEM_Set => FT_MEM_SET
  1919. MEM_Copy => FT_MEM_COPY
  1920. etc.
  1921. * Whenever possible, all macro names follow the
  1922. FT_<OBJECT>_<METHOD> pattern. For example
  1923. ACCESS_Frame => FT_FRAME_ENTER
  1924. FORGET_Frame => FT_FRAME_EXIT
  1925. EXTRACT_Frame => FT_FRAME_EXTRACT
  1926. RELEASE_Frame => FT_FRAME_RELEASE
  1927. FILE_Pos => FT_STREAM_POS
  1928. FILE_Seek => FT_STREAM_SEEK
  1929. FILE_Read => FT_STREAM_READ
  1930. FILE_ReadAt => FT_STREAM_READ_AT
  1931. READ_Fields => FT_STREAM_READ_FIELDS
  1932. - Many internal functions have been renamed to follow the
  1933. FT_<Object>_<Method> pattern. For example:
  1934. FT_Seek_Stream => FT_Stream_Seek
  1935. FT_Read_Stream_At => FT_Stream_ReadAt
  1936. FT_Done_Stream => FT_Stream_Close
  1937. FT_New_Stream => FT_Stream_Open
  1938. FT_New_Memory_Stream => FT_Stream_OpenMemory
  1939. FT_Extract_Frame => FT_Stream_ExtractFrame
  1940. Note that method names do not contain `_'.
  1941. - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
  1942. with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
  1943. type as the fourth argument. Instead, the array element
  1944. type size is computed automatically from the type of the
  1945. target pointer used.
  1946. - A new object class, FT_CMap, has been introduced. These
  1947. internal objects are used to model character maps. This
  1948. eases the support of additional charmap types within the
  1949. engine.
  1950. - A new configuration file named `ftstdlib.h' has been added
  1951. to `include/freetype/config'. It is used to define aliases
  1952. for _every_ routine of the ISO C library that the font
  1953. engine uses. Each aliases has a `ft_' prefix
  1954. (e.g. `ft_strlen' is an alias for `strlen').
  1955. This is used to ease the porting of FreeType 2 to exotic
  1956. runtime environments where the ISO C Library isn't available
  1957. (e.g. XFree86 extension modules).
  1958. More details are available in the `ChangeLog' file.
  1959. ======================================================================
  1960. CHANGES BETWEEN 2.0.9 and 2.0.8
  1961. I. IMPORTANT BUG FIXES
  1962. - Certain fonts like `foxjump.ttf' contain broken name tables with
  1963. invalid entries and wild offsets. This caused FreeType to crash
  1964. when trying to load them.
  1965. The SFNT `name' table loader has been fixed to be able to
  1966. support these strange fonts.
  1967. Moreover, the code in charge of processing this table has been
  1968. changed to always favour Windows-formatted entries over other
  1969. ones. Hence, a font that works on Windows but not on the Mac
  1970. will load cleanly in FreeType and report accurate values for
  1971. Family & PostScript names.
  1972. - The CID font driver has been fixed. It unfortunately returned a
  1973. Postscript Font name with a leading slash, as in
  1974. `/MunhwaGothic-Regular'.
  1975. - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
  1976. library.
  1977. - A bug in the Postscript hinter has been found and fixed,
  1978. removing un-even stem widths at small pixel sizes (like 14-17).
  1979. This improves the quality of a certain number of Postscript
  1980. fonts.
  1981. II. NEW FEATURES
  1982. - A new function named `FT_Library_Version' has been added to
  1983. return the current library's major, minor, and patch version
  1984. numbers. This is important since the macros FREETYPE_MAJOR,
  1985. FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
  1986. library is dynamically linked by a program.
  1987. - Two new APIs have been added: `FT_Get_First_Char' and
  1988. `FT_Get_Next_Char'.
  1989. Together, these can be used to iterate efficiently over the
  1990. currently selected charmap of a given face. Read the API
  1991. reference for more details.
  1992. III. MISCELLANEOUS
  1993. - The FreeType sources are under heavy internal re-factoring. As
  1994. a consequence, we have created a branch named `STABLE' on the
  1995. CVS to hold all future releases/fixes in the 2.0.x family.
  1996. The HEAD branch now contains the re-factored sources and
  1997. shouldn't be used for testing or packaging new releases. In
  1998. case you would like to access the 2.0.9 sources from our CVS
  1999. repository, use the tag `VER-2-0-9'.
  2000. ======================================================================
  2001. CHANGES BETWEEN 2.0.8 and 2.0.7
  2002. I. IMPORTANT BUG FIXES
  2003. - There was a small but nasty bug in `freetype-config.in' which
  2004. caused the `freetype-config' script to fail on Unix.
  2005. This didn't prevent the installation of the library or even its
  2006. execution, but caused problems when trying to compile many Unix
  2007. packages that depend on it.
  2008. - Some TrueType or OpenType fonts embedded in PDF documents do not
  2009. have a 'cmap', 'post' and 'name' as is required by the
  2010. specification. FreeType no longer refuses to load such fonts.
  2011. - Various fixes to the PCF font driver.
  2012. ======================================================================
  2013. CHANGES BETWEEN 2.0.7 and 2.0.6
  2014. I. IMPORTANT BUG FIXES
  2015. - Fixed two bugs in the Type 1 font driver. The first one
  2016. resulted in a memory leak in subtle cases. The other one caused
  2017. FreeType to crash when trying to load `.gsf' files (Ghostscript
  2018. so-called Postscript fonts).
  2019. (This made _many_ KDE applications crash on certain systems.
  2020. FreeType _is_ becoming a critical system component on Linux :-)
  2021. - Fixed a memory leak in the CFF font driver.
  2022. - Fixed a memory leak in the PCF font driver.
  2023. - Fixed the Visual C++ project file
  2024. `builds/win32/visualc/freetype.dsp' since it didn't include the
  2025. Postscript hinter component, causing errors at build time.
  2026. - Fixed a small rendering bug in the anti-aliased renderer that
  2027. only occurred when trying to draw thin (less than 1 pixel)
  2028. strokes.
  2029. - Fixed `builds/unix/freetype2.a4' which is used to generate a
  2030. valid `freetype2.m4' for use with autoconf.
  2031. - Fixed the OpenVMS Makefiles.
  2032. II. MISCELLANEOUS
  2033. - Added `configure' and `install' scripts to the top-level
  2034. directory. A GNU-style installation is thus now easily possible
  2035. with
  2036. ./configure <options>
  2037. make
  2038. make install
  2039. ======================================================================
  2040. CHANGES BETWEEN 2.0.6 and 2.0.5
  2041. I. IMPORTANT BUG FIXES
  2042. - It wasn't possible to load embedded bitmaps when the auto-hinter
  2043. was used. This is now fixed.
  2044. - The TrueType font driver didn't load some composites properly
  2045. (the sub-glyphs were slightly shifted, and this was only
  2046. noticeable when using monochrome rendering).
  2047. - Various fixes to the auto-hinter. They merely improve the
  2048. output of sans-serif fonts. Note that there are still problems
  2049. with serifed fonts and composites (accented characters).
  2050. - All scalable font drivers erroneously returned un-fitted glyph
  2051. advances when hinting was requested. This created problems for
  2052. a number of layout applications. This is a very old bug that
  2053. got undetected mainly because most test/demo program perform
  2054. rounding explicitly or implicitly (through the cache).
  2055. - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
  2056. certain cases.
  2057. - `glnames.py' still contained a bug that made FreeType return
  2058. invalid names for certain glyphs.
  2059. - The library crashed when loading certain Type 1 fonts like
  2060. `sadn.pfb' (`Stalingrad Normal'), which appear to contain
  2061. pathetic font info dictionaries.
  2062. - The TrueType glyph loader is now much more paranoid and checks
  2063. everything when loading a given glyph image. This was necessary
  2064. to avoid problems (crashes and/or memory overwrites) with broken
  2065. fonts that came from a really buggy automatic font converter.
  2066. II. IMPORTANT UPDATES AND NEW FEATURES
  2067. - Important updates to the Mac-specific parts of the library.
  2068. - The caching sub-system has been completely re-designed, and its
  2069. API has evolved (the old one is still supported for backward
  2070. compatibility).
  2071. The documentation for it is not yet completed, sorry. For now,
  2072. you are encouraged to continue using the old API. However, the
  2073. ftview demo program in the ft2demos package has already been
  2074. updated to use the new caching functions.
  2075. - A new charmap cache is provided too. See `FTC_CMapCache'. This
  2076. is useful to perform character code -> glyph index translations
  2077. quickly, without the need for an opened FT_Face.
  2078. - A NEW POSTSCRIPT HINTER module has been added to support native
  2079. hints in the following formats: PostScript Type 1, PostScript
  2080. CID, and CFF/CEF.
  2081. Please test! Note that the auto-hinter produces better results
  2082. for a number of badly-hinted fonts (mostly auto-generated ones)
  2083. though.
  2084. - A memory debugger is now part of the standard FreeType sources.
  2085. To enable it, define FT_DEBUG_MEMORY in
  2086. <freetype/config/ftoption.h>, and recompile the library.
  2087. Additionally, define the _environment_ variable FT_DEBUG_MEMORY
  2088. and run any program using FreeType. When the library is exited,
  2089. a summary of memory footprints and possible leaks will be
  2090. displayed.
  2091. This works transparently with _any_ program that uses FreeType.
  2092. However, you will need a lot of memory to use this (allocated
  2093. blocks are never released to the heap to detect double deletes
  2094. easily).
  2095. III. MISCELLANEOUS
  2096. - We are aware of subtle differences between the output of
  2097. FreeType versions 1 and 2 when it comes to monochrome
  2098. TrueType-hinted glyphs. These are most probably due to small
  2099. differences in the monochrome rasterizers and will be worked out
  2100. in an upcoming release.
  2101. - We have decided to fork the sources in a `stable' branch, and an
  2102. `unstable' one, since FreeType is becoming a critical component
  2103. of many Unix systems.
  2104. The next bug-fix releases of the library will be named 2.0.7,
  2105. 2.0.8, etc., while the `2.1' branch will contain a version of
  2106. the sources where we will start major reworking of the library's
  2107. internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
  2108. more distant future.
  2109. We also hope that this scheme will allow much more frequent
  2110. releases than in the past.
  2111. ======================================================================
  2112. CHANGES BETWEEN 2.0.5 and 2.0.4
  2113. NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE
  2114. WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
  2115. - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and
  2116. `lslash' unavailable from Unicode charmaps of Postscript fonts.
  2117. This prevented the correct display of Polish text, for example.
  2118. - The kerning table of Type 1 fonts was loaded by FreeType, when its
  2119. AFM file was attached to its face, but the
  2120. FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly,
  2121. preventing FT_Get_Kerning to return meaningful values.
  2122. - Improved SFNT (TrueType & OpenType) charmap support. Slightly
  2123. better performance, as well as support for the new formats defined
  2124. by the OpenType 1.3 specification (8, 10, and 12)
  2125. - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid
  2126. computations in certain rare cases, producing ugly artefacts.
  2127. - The size of the EM square is computed with a more accurate
  2128. algorithm for Postscript fonts. The old one caused slight errors
  2129. with embedded fonts found in PDF documents.
  2130. - Fixed a bug in the cache manager that prevented normal LRU
  2131. behaviour within the cache manager, causing unnecessary reloads
  2132. (for FT_Face and FT_Size objects only).
  2133. - Added a new function named `FT_Get_Name_Index' to retrieve the
  2134. glyph index of a given glyph name, when found in a face.
  2135. - Added a new function named `FT_Get_Postscript_Name' to retrieve
  2136. the `unique' Postscript font name of a given face.
  2137. - Added a new public header size named FT_SIZES_H (or
  2138. <freetype/ftsizes.h>) providing new FT_Size-management functions:
  2139. FT_New_Size, FT_Activate_Size, FT_Done_Size.
  2140. - Fixed a reallocation bug that generated a dangling pointer (and
  2141. possibly memory leaks) with Postscript fonts (in
  2142. src/psaux/psobjs.c).
  2143. - Many fixes for 16-bit correctness.
  2144. - Removed many pedantic compiler warnings from the sources.
  2145. - Added an Amiga build directory in `builds/amiga'.
  2146. ======================================================================
  2147. CHANGES BETWEEN 2.0.4 and 2.0.3
  2148. - Fixed a rather annoying bug that was introduced in 2.0.3. Namely,
  2149. the font transformation set through FT_Set_Transform was applied
  2150. twice to auto-hinted glyphs, resulting in incorrectly rotated text
  2151. output.
  2152. - Fixed _many_ compiler warnings. FT2 should now compile cleanly
  2153. with Visual C++'s most pedantic warning level (/W4). It already
  2154. compiled fine with GCC and a few other compilers.
  2155. - Fixed a bug that prevented the linear advance width of composite
  2156. TrueType glyphs to be correctly returned.
  2157. - Fixed the Visual C++ project files located in
  2158. `builds/win32/visualc' (previous versions used older names of the
  2159. library).
  2160. - Many 32-bit constants have an `L' appended to their value, in
  2161. order to improve the 16-bitness of the code. Someone is actually
  2162. trying to use FT2 on an Atari ST machine!
  2163. - Updated the `builds/detect.mk' file in order to automatically
  2164. build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of
  2165. `/sbin/init' and wasn't previously detected as a Unix platform by
  2166. the FreeType build system.
  2167. - Updated the Unix-specific portions of the build system (new
  2168. libtool version, etc.).
  2169. - The SFNT kerning loader now ensures that the table is sorted
  2170. (since some problem fonts do not meet this requirement).
  2171. =======================================================================
  2172. CHANGES BETWEEN 2.0.3 and 2.0.2
  2173. I. CHANGES TO THE MODULES / FONT DRIVERS
  2174. - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
  2175. several annoying artefacts, mainly:
  2176. - Blue zone alignment of horizontal stems wasn't performed
  2177. correctly, resulting in artefacts like the `d' being placed
  2178. one pixel below the `b' in some fonts like Time New Roman.
  2179. - Overshoot thresholding wasn't performed correctly, creating
  2180. unpleasant artefacts at large character pixel sizes.
  2181. - Composite glyph loading has been simplified. This gets rid
  2182. of various artefacts where the components of a composite
  2183. glyphs were not correctly spaced.
  2184. These are the last changes to the current auto-hinting module.
  2185. A new hinting sub-system is currently in the work in order to
  2186. support native hints in Type 1 / CFF / OpenType fonts, as well
  2187. as globally improve rendering.
  2188. - The PCF driver has been fixed. It reported invalid glyph
  2189. dimensions for the fonts available on Solaris.
  2190. - The Type 1, CID and CFF drivers have been modified to fix the
  2191. computation of the EM size.
  2192. - The Type 1 driver has been fixed to avoid a dangerous bug that
  2193. crashed the library with non-conforming fonts (i.e. ones that do
  2194. not place the .notdef glyph at position 0).
  2195. - The TrueType driver had a rather subtle bug (dangling pointer
  2196. when loading composite glyphs) that could crash the library in
  2197. rare occasions!
  2198. II. HIGH-LEVEL API CHANGES
  2199. - The error code enumeration values have been changed. An error
  2200. value is decomposed in a generic error code, and a module
  2201. number. see <freetype/fterrors.h> for details.
  2202. - A new public header file has been introduced, named
  2203. FT_TRIGONOMETRY_H (include/freetype/fttrigon.h), providing
  2204. trigonometric functions to compute sines, cosines, arctangents,
  2205. etc. with 16.16 fixed precision. The implementation is based on
  2206. the CORDIC algorithm and is very fast while being sufficiently
  2207. accurate.
  2208. III. INTERNALS
  2209. - Added BeOS-specific files in the old build sub-system. Note
  2210. that no changes were required to compile the library with Jam.
  2211. - The configuration is now capable of automatically detecting
  2212. 64-bit integers on a set of predefined compilers (GCC, Visual
  2213. C++, Borland C++) and will use them by default. This provides a
  2214. small performance boost.
  2215. - A small memory leak that happened when opening 0-sized files
  2216. (duh!) have been fixed.
  2217. - Fixed bezier stack depth bug in the routines provided by the
  2218. FT_BBOX_H header file. Also fixed similar bugs in the
  2219. rasterizers.
  2220. - The outline bounding box code has been rewritten to use direct
  2221. computations, instead of bezier sub-division, to compute the
  2222. exact bounding box of glyphs. This is slightly slower but more
  2223. accurate.
  2224. - The build system has been improved and fixed, mainly to support
  2225. `make' on Windows 2000 correctly, avoid problems with `make
  2226. distclean' on non Unix systems, etc.
  2227. - Hexadecimal constants have been suffixed with `U' to avoid
  2228. problems with certain compilers on 64-bit platforms.
  2229. - A new directory named `src/tools' has been created. It contains
  2230. Python scripts and simple unit test programs used to develop the
  2231. library.
  2232. - The DocMaker tool has been moved from `docs' to `src/tools' and
  2233. has been updated with the following:
  2234. - Now accepts the `--title=XXXX' or `-t XXXX' option from the
  2235. command line to set the project's name in the generated API
  2236. reference.
  2237. - Now accepts the `--output=DIR' or `-o DIR' option from the
  2238. command line to set the output directory for all generated
  2239. HTML files.
  2240. - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
  2241. command line to set the file prefix to use for all
  2242. generated HTML files.
  2243. - Now generates the current time/data on each generated page
  2244. in order to distinguish between versions.
  2245. DocMaker can be used with other projects now, not only FT2
  2246. (e.g. MLib, FTLayout, etc.).
  2247. ======================================================================
  2248. CHANGES BETWEEN 2.0.2 and 2.0.1
  2249. I. CHANGES TO THE MODULES / FONT DRIVERS
  2250. - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
  2251. avoid legal problems with the Apple patents. It seems that we
  2252. mistakenly turned this option on in previous releases of the
  2253. build.
  2254. Note that if you want to use the bytecode interpreter in order
  2255. to get high-quality TrueType rendering, you will need to toggle
  2256. by hand the definition of the
  2257. TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file
  2258. `include/freetype/config/ftoption.h'.
  2259. - The CFF driver has been improved by Tom Kacvinsky and Sander van
  2260. der Wal:
  2261. * Support for `seac' emulation.
  2262. * Support for `dotsection'.
  2263. * Support for retrieving glyph names through
  2264. `FT_Get_Glyph_Name'.
  2265. The first two items are necessary to correctly a large number of
  2266. Type 1 fonts converted to the CFF formats by Adobe Acrobat.
  2267. - The Type 1 driver was also improved by Tom & others:
  2268. * Better EM size computation.
  2269. * Better support for synthetic (transformed) fonts.
  2270. * The Type 1 driver returns the charstrings corresponding to
  2271. each glyph in the `glyph->control_data' field after a call to
  2272. `FT_Load_Glyph' (thanks Ha Shao).
  2273. - Various other bugfixes, including the following:
  2274. * Fixed a nasty memory leak in the Type 1 driver.
  2275. * The autohinter and the pcf driver used static writable data
  2276. when they shouldn't.
  2277. * Many casts were added to make the code more 64-bits safe. It
  2278. also now compiles on Windows XP 64-bits without warnings.
  2279. * Some incorrect writable statics were removed in the `autohint'
  2280. and `pcf' drivers. FreeType 2 now compiles on Epoc again.
  2281. II. CHANGES TO THE HIGH-LEVEL API
  2282. - The library header files inclusion scheme has been changed. The
  2283. old scheme looked like:
  2284. #include <freetype/freetype.h>
  2285. #include <freetype/ftglyph.h>
  2286. #include <freetype/ftcache.h>
  2287. #include <freetype/cache/ftimage.h>
  2288. Now you should use:
  2289. #include <ft2build.h>
  2290. #include FT_FREETYPE_H
  2291. #include FT_GLYPH_H
  2292. #include FT_CACHE_H
  2293. #include FT_CACHE_IMAGE_H
  2294. NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS
  2295. RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE
  2296. TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
  2297. The file <ft2build.h> is used to define the header filename
  2298. macros. The complete and commented list of macros is available
  2299. in the API reference under the section name `Header File Macros'
  2300. in Chapter I.
  2301. For more information, see section I of the following document:
  2302. http://www.freetype.org/
  2303. freetype2/docs/tutorial/step1.html
  2304. or
  2305. http://freetype.sourceforge.net/
  2306. freetype2/docs/tutorial/step1.html
  2307. - Many, many comments have been added to the public source file in
  2308. order to automatically generate the API Reference through the
  2309. `docmaker.py' Python script.
  2310. The latter has been updated to support the grouping of sections
  2311. in chapters and better index sort. See:
  2312. http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
  2313. III. CHANGES TO THE BUILD PROCESS
  2314. - If you are not building FreeType 2 with its own build system
  2315. (but with your own Makefiles or project files), you will need to
  2316. be aware that the build process has changed a little bit.
  2317. You don't need to put the `src' directory in the include path
  2318. when compiling any FT2 component. Instead, simply put the
  2319. component's directory in the current include path.
  2320. So, if you were doing something like:
  2321. cc -c -Iinclude -Isrc src/base/ftbase.c
  2322. change the line to:
  2323. cc -c -Iinclude -Isrc/base src/base/ftbase.c
  2324. If you were doing something like:
  2325. cd src/base
  2326. cc -c -I../../include -I.. ftbase.c
  2327. change it to:
  2328. cd src/base
  2329. cc -c -I../../include ftbase.c
  2330. ======================================================================
  2331. CHANGES BETWEEN 2.0.1 and 2.0
  2332. 2.0.1 introduces a few changes:
  2333. - Fixed many bugs related to the support of CFF / OpenType fonts.
  2334. These formats are now much better supported though there is
  2335. still work planned to deal with charset tables and PDF-embedded
  2336. CFF files that use the old `seac' command.
  2337. - The library could not be compiled in debug mode with a very
  2338. small number of C compilers whose pre-processors didn't
  2339. implement the `##' directive correctly (i.e. per se the ANSI C
  2340. specification!) An elegant fix was found.
  2341. - Added support for the free Borland command-line C++ Builder
  2342. compiler. Use `make setup bcc32'. Also fixed a few source
  2343. lines that generated new warnings with BCC32.
  2344. - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
  2345. a conic Bezier arc.
  2346. - Updated the INSTALL file to add IDE compilation.
  2347. - Other minor bug fixes, from invalid Type 1 style flags to
  2348. correct support of synthetic (obliqued) fonts in the
  2349. auto-hinter, better support for embedded bitmaps in a SFNT font.
  2350. - Fixed some problems with `freetype-config'.
  2351. Finally, the `standard' scheme for including FreeType headers is now
  2352. gradually changing, but this will be explained in a later release
  2353. (probably 2.0.2).
  2354. And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
  2355. for their contributions!
  2356. ======================================================================
  2357. CHANGES BETWEEN beta8 and 2.0
  2358. - Changed the default installation path for public headers from
  2359. `include/freetype' to `include/freetype2'.
  2360. Also added a new `freetype-config' that is automatically generated
  2361. and installed on Unix and Cygwin systems. The script itself is
  2362. used to retrieve the current install path, C compilation flags as
  2363. well as linker flags.
  2364. - Fixed several small bugs:
  2365. * Incorrect max advance width for fixed-pitch Type 1 fonts.
  2366. * Incorrect glyph names for certain TrueType fonts.
  2367. * The glyph advance was not copied when FT_Glyph_To_Bitmap was
  2368. called.
  2369. * The linearHoriAdvance and linearVertAdvance fields were not
  2370. correctly returned for glyphs processed by the auto-hinter.
  2371. * `type1z' renamed back to `type1'; the old `type1' module has
  2372. been removed.
  2373. - Revamped the build system to make it a lot more generic. This
  2374. will allow us to re-use nearly un-modified in lots of other
  2375. projects (including FreeType Layout).
  2376. - Changed `cid' to use `psaux' too.
  2377. - Added the cache sub-system. See <freetype/ftcache.h> as well as
  2378. the sources in `src/cache'. Note that it compiles but is still
  2379. untested for now.
  2380. - Updated `docs/docmaker.py', a draft API reference is available at
  2381. http://www.freetype.org/ft2api.html.
  2382. - Changed `type1' to use `psaux'.
  2383. - Created a new module named `psaux' to hold the Type 1 & Type 2
  2384. parsing routines. It should be used by `type1', `cid', and `cff'
  2385. in the future.
  2386. - Fixed an important bug in `FT_Glyph_Get_CBox'.
  2387. - Fixed some compiler warnings that happened since the TrueType
  2388. bytecode decoder was deactivated by default.
  2389. - Fixed two memory leaks:
  2390. * The memory manager (16 bytes) isn't released in
  2391. FT_Done_FreeType!
  2392. * Using custom input streams, the copy of the original stream was
  2393. never released.
  2394. - Fixed the auto-hinter by performing automatic computation of the
  2395. `filling direction' of each glyph. This is done through a simple
  2396. and fast approximation, and seems to work (problems spotted by
  2397. Werner though). The Arphic fonts are a lot nicer though there are
  2398. still a lot of things to do to handle Asian fonts correctly.
  2399. ======================================================================
  2400. BETA-8 (RELEASE CANDIDATE) CHANGES
  2401. - Deactivated the TrueType bytecode interpreter by default.
  2402. - Deactivated the `src/type1' font driver. Now `src/type1z' is used
  2403. by default.
  2404. - Updates to the build system. We now compile the library correctly
  2405. under Unix system through `configure' which is automatically
  2406. called on the first `make' invocation.
  2407. - Added the auto-hinting module! Fixing some bugs here and there.
  2408. - Found some bugs in the composite loader (seac) of the Type1-based
  2409. font drivers.
  2410. - Renamed the directory `freetype2/config' to `freetype2/builds' and
  2411. updated all relevant files.
  2412. - Found a memory leak in the `type1' driver.
  2413. - Incorporated Tom's patches to support flex operators correctly in
  2414. OpenType/CFF fonts. Now all I need is to support pure CFF and CEF
  2415. fonts to be done with this driver :-)
  2416. - Added the Windows FNT/FON driver in `src/winfonts'. For now, it
  2417. always `simulates' a Unicode charmap, so it shouldn't be
  2418. considered completed right now.
  2419. It is there to be more a proof of concept than anything else
  2420. anyway. The driver is a single C source file, that compiles to 3
  2421. Kb of code.
  2422. I'm still working on the PCF/BDF drivers, but I'm too lazy to
  2423. finish them now.
  2424. - CHANGES TO THE HIGH-LEVEL API
  2425. * FT_Get_Kerning has a new parameter that allows you to select the
  2426. coordinates of the kerning vector (font units, scaled, scaled +
  2427. grid-fitted).
  2428. * The outline functions are now in <freetype/ftoutln.h> and not
  2429. part of <freetype/freetype.h> anymore.
  2430. * <freetype/ftmodule.h> now contains declarations for
  2431. FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
  2432. * The so-called convenience functions have moved from `ftoutln.c'
  2433. to `ftglyph.c', and are thus available with this optional
  2434. component of the library. They are declared in
  2435. <freetype/ftglyph.h> now.
  2436. * Anti-aliased rendering is now the default for FT_Render_Glyph
  2437. (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
  2438. To generate a monochrome bitmap, use ft_render_mode_mono, or the
  2439. FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
  2440. FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
  2441. * <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
  2442. solving a few headaches :-)
  2443. * The type FT_GlyphSlotRec has now a `library' field.
  2444. - CHANGES TO THE `ftglyph.h' API
  2445. This API has been severely modified in order to make it simpler,
  2446. clearer, and more efficient. It certainly now looks like a real
  2447. `glyph factory' object, and allows client applications to manage
  2448. (i.e. transform, bbox and render) glyph images without ever
  2449. knowing their original format.
  2450. - Added support for CID-keyed fonts to the CFF driver. Maybe
  2451. support for pure CFF + CEF fonts should come in?
  2452. - Cleaned up source code in order to avoid two functions with the
  2453. same name. Also changed the names of the files in `type1z' from
  2454. `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
  2455. `make multi' now works well :-)
  2456. Also removed the use of `cidafm' for now, even if the source files
  2457. are still there. This functionality will certainly go into a
  2458. specific module.
  2459. - ADDED SUPPORT FOR THE AUTO-HINTER
  2460. It works :-) I have a demo program which simply is a copy of
  2461. `ftview' that does a `FT_Add_Module(library,
  2462. &autohinter_module_class)' after library initialization, and Type
  2463. 1 & OpenType/CFF fonts are now hinted.
  2464. CID fonts are not hinted, as they include no charmap and the
  2465. auto-hinter doesn't include `generic' global metrics computations
  2466. yet.
  2467. Now, I need to release this thing to the FreeType 2 source.
  2468. - CHANGES TO THE RENDERER MODULES
  2469. The monochrome and smooth renderers are now in two distinct
  2470. directories, namely `src/raster1' and `src/smooth'. Note that the
  2471. old `src/renderer' is now gone.
  2472. I ditched the 5-gray-levels renderers. Basically, it involved a
  2473. simple #define toggle in 'src/raster1/ftraster.c'.
  2474. FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now
  2475. select the best renderer available, depending on render mode. If
  2476. the current renderer for a given glyph image format isn't capable
  2477. of supporting the render mode, another one will be found in the
  2478. library's list. This means that client applications do not need
  2479. to switch or set the renderers themselves (as in the latest
  2480. change), they'll get what they want automatically. At last.
  2481. Changed the demo programs accordingly.
  2482. - MAJOR INTERNAL REDESIGN:
  2483. A lot of internal modifications have been performed lately on the
  2484. source in order to provide the following enhancements:
  2485. * More generic module support:
  2486. The FT_Module type is now defined to represent a handle to a
  2487. given module. The file <freetype/ftmodule.h> contains the
  2488. FT_Module_Class definition, as well as the module-loading public
  2489. API.
  2490. The FT_Driver type is still defined, and still represents a
  2491. pointer to a font driver. Note that FT_Add_Driver is replaced
  2492. by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
  2493. * Support for generic glyph image types:
  2494. The FT_Renderer type is a pointer to a module used to perform
  2495. various operations on glyph image.
  2496. Each renderer is capable of handling images in a single format
  2497. (e.g. ft_glyph_format_outline). Its functions are used to:
  2498. - transform an glyph image
  2499. - render a glyph image into a bitmap
  2500. - return the control box (dimensions) of a given glyph image
  2501. The scan converters `ftraster.c' and `ftgrays.c' have been moved
  2502. to the new directory `src/renderer', and are used to provide two
  2503. default renderer modules.
  2504. One corresponds to the `standard' scan-converter, the other to
  2505. the `smooth' one.
  2506. he current renderer can be set through the new function
  2507. FT_Set_Renderer.
  2508. The old raster-related function FT_Set_Raster, FT_Get_Raster and
  2509. FT_Set_Raster_Mode have now disappeared, in favor of the new:
  2510. FT_Get_Renderer
  2511. FT_Set_Renderer
  2512. See the file <freetype/ftrender.h> for more details.
  2513. These changes were necessary to properly support different
  2514. scalable formats in the future, like bi-color glyphs, etc.
  2515. * Glyph loader object:
  2516. A new internal object, called a 'glyph loader' has been
  2517. introduced in the base layer. It is used by all scalable format
  2518. font drivers to load glyphs and composites.
  2519. This object has been created to reduce the code size of each
  2520. driver, as each one of them basically re-implemented its
  2521. functionality.
  2522. See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
  2523. more information.
  2524. * FT_GlyphSlot has new fields:
  2525. In order to support extended features (see below), the
  2526. FT_GlyphSlot structure has a few new fields:
  2527. linearHoriAdvance:
  2528. This field gives the linearly scaled (i.e. scaled but
  2529. unhinted) advance width for the glyph, expressed as a 16.16
  2530. fixed pixel value. This is useful to perform WYSIWYG text.
  2531. linearVertAdvance:
  2532. This field gives the linearly scaled advance height for the
  2533. glyph (relevant in vertical glyph layouts only). This is
  2534. useful to perform WYSIWYG text.
  2535. Note that the two above field replace the removed `metrics2'
  2536. field in the glyph slot.
  2537. advance:
  2538. This field is a vector that gives the transformed advance for
  2539. the glyph. By default, it corresponds to the advance width,
  2540. unless FT_LOAD_VERTICAL_LAYOUT was specified when calling
  2541. FT_Load_Glyph or FT_Load_Char.
  2542. bitmap_left:
  2543. This field gives the distance in integer pixels from the
  2544. current pen position to the left-most pixel of a glyph image
  2545. IF IT IS A BITMAP. It is only valid when the `format' field
  2546. is set to `ft_glyph_format_bitmap', for example, after calling
  2547. the new function FT_Render_Glyph.
  2548. bitmap_top:
  2549. This field gives the distance in integer pixels from the
  2550. current pen position (located on the baseline) to the top-most
  2551. pixel of the glyph image IF IT IS A BITMAP. Positive values
  2552. correspond to upwards Y.
  2553. loader:
  2554. This is a new private field for the glyph slot. Client
  2555. applications should not touch it.
  2556. * Support for transforms and direct rendering in FT_Load_Glyph:
  2557. Most of the functionality found in <freetype/ftglyph.h> has been
  2558. moved to the core library. Hence, the following:
  2559. - A transform can be specified for a face through
  2560. FT_Set_Transform. this transform is applied by FT_Load_Glyph
  2561. to scalable glyph images (i.e. NOT TO BITMAPS) before the
  2562. function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
  2563. was set in the load flags.
  2564. - Once a glyph image has been loaded, it can be directly
  2565. converted to a bitmap by using the new FT_Render_Glyph
  2566. function. Note that this function takes the glyph image from
  2567. the glyph slot, and converts it to a bitmap whose properties
  2568. are returned in `face.glyph.bitmap', `face.glyph.bitmap_left'
  2569. and `face.glyph.bitmap_top'. The original native image might
  2570. be lost after the conversion.
  2571. - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
  2572. and FT_Load_Char functions will call FT_Render_Glyph
  2573. automatically when needed.
  2574. - Reformatted all modules source code in order to get rid of the
  2575. basic data types redefinitions (i.e. `TT_Int' instead of `FT_Int',
  2576. `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific
  2577. prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for
  2578. relevant structures.
  2579. ======================================================================
  2580. OLD CHANGES FOR BETA 7
  2581. - bug-fixed the OpenType/CFF parser. It now loads and displays my
  2582. two fonts nicely, but I'm pretty certain that more testing is
  2583. needed :-)
  2584. - fixed the crummy Type 1 hinter, it now handles accented characters
  2585. correctly (well, the accent is not always well placed, but that's
  2586. another problem..)
  2587. - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well
  2588. for only 13 Kb of code ;-) Doesn't read AFM files though, nor the
  2589. really useful CMAP files..
  2590. - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
  2591. Thanks to Boris Letocha for spotting them and providing a fix.
  2592. - fixed potential `divide by zero' bugs in ftcalc.c.
  2593. - added source code for the OpenType/CFF driver (still incomplete
  2594. though..)
  2595. - modified the SFNT driver slightly to perform more robust header
  2596. checks in TT_Load_SFNT_Header. This prevents certain font files
  2597. (e.g. some Type 1 Multiple Masters) from being incorrectly
  2598. `recognized' as TrueType font files..
  2599. - moved a lot of stuff from the TrueType driver to the SFNT module,
  2600. this allows greater code re-use between font drivers
  2601. (e.g. TrueType, OpenType, Compact-TrueType, etc..)
  2602. - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
  2603. to minimally speed it up..
  2604. - added support for Multiple Master fonts in `type1z'. There is
  2605. also a new file named <freetype/ftmm.h> which defines functions to
  2606. manage them from client applications.
  2607. The new file `src/base/ftmm.c' is also optional to the engine..
  2608. - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
  2609. small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
  2610. - a minor fix to the Type 1 driver to let them apply the font matrix
  2611. correctly (used for many oblique fonts..)
  2612. - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
  2613. to use %p instead of %lx). Thanks to Karl Robillard.
  2614. - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) +
  2615. added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be
  2616. cropped when loaded from a file (maybe I should move the bitmap
  2617. cropper to the base layer ??).
  2618. - changed the default number of gray levels of the smooth renderer
  2619. to 256 (instead of the previous 128). Of course, the human eye
  2620. can't see any difference ;-)
  2621. - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
  2622. of subglyphs in a TrueType font now..
  2623. ======================================================================
  2624. OLD CHANGES 16 May 2000
  2625. - tagged `BETA-6' in the CVS tree. This one is a serious release
  2626. candidate even though it doesn't incorporate the auto-hinter yet..
  2627. - various obsolete files were removed, and copyright header updated
  2628. - finally updated the standard raster to fix the monochrome
  2629. rendering bug + re-enable support for 5-gray levels anti-aliasing
  2630. (suck, suck..)
  2631. - created new header files, and modified sources accordingly:
  2632. <freetype/fttypes.h>
  2633. - simple FreeType types, without the API
  2634. <freetype/internal/ftmemory.h>
  2635. - definition of memory-management macros
  2636. - added the `DSIG' (OpenType Digital Signature) tag to
  2637. <freetype/tttags.h>
  2638. - light update/cleaning of the build system + changes to the sources
  2639. in order to get rid of _all_ compiler warnings with three
  2640. compilers, i.e:
  2641. gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
  2642. LCC
  2643. IMPORTANT NOTE FOR WIN32-LCC USERS:
  2644. |
  2645. | It seems the C pre-processor that comes with LCC is broken, it
  2646. | doesn't recognize the ANSI standard directives # and ##
  2647. | correctly when one of the argument is a macro. Also,
  2648. | something like:
  2649. |
  2650. | #define F(x) print##x
  2651. |
  2652. | F(("hello"))
  2653. |
  2654. | will get incorrectly translated to:
  2655. |
  2656. | print "hello")
  2657. |
  2658. | by its pre-processor. For this reason, you simply cannot build
  2659. | FreeType 2 in debug mode with this compiler..
  2660. - yet another massive grunt work. I've changed the definition of
  2661. the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These
  2662. now take an argument, which is the function's return value type.
  2663. This is necessary to compile FreeType as a DLL on Windows and
  2664. OS/2. Depending on the compiler used, a compiler-specific keyword
  2665. like __export or __system must be placed before (VisualC++) or
  2666. after (BorlandC++) the type..
  2667. Of course, this needed a lot of changes throughout the source code
  2668. to make it compile again... All cleaned up now, apparently..
  2669. Note also that there is a new EXPORT_VAR macro defined to allow
  2670. the _declaration_ of an exportable public (constant)
  2671. variable. This is the case of the raster interfaces (see
  2672. ftraster.h and ftgrays.h), as well as each module's interface (see
  2673. sfdriver.h, psdriver.h, etc..)
  2674. - new feature: it is now possible to pass extra parameters to font
  2675. drivers when creating a new face object. For now,
  2676. this capability is unused. It could however prove to
  2677. be useful in a near future..
  2678. the FT_Open_Args structure was changes, as well as the internal
  2679. driver interface (the specific `init_face' module function has
  2680. now a different signature).
  2681. - updated the tutorial (not finished though).
  2682. - updated the top-level BUILD document
  2683. - fixed a potential memory leak that could occur when loading
  2684. embedded bitmaps.
  2685. - added the declaration of FT_New_Memory_Face in
  2686. <freetype/freetype.h>, as it was missing from the public header
  2687. (the implementation was already in `ftobjs.c').
  2688. - the file <freetype/fterrors.h> has been seriously updated in order
  2689. to allow the automatic generation of error message tables. See
  2690. the comments within it for more information.
  2691. - major directory hierarchy re-organisation. This was done for two
  2692. things:
  2693. * first, to ease the `manual' compilation of the library by
  2694. requiring at lot less include paths :-)
  2695. * second, to allow external programs to effectively access
  2696. internal data fields. For example, this can be extremely
  2697. useful if someone wants to write a font producer or a font
  2698. manager on top of FreeType.
  2699. Basically, you should now use the 'freetype/' prefix for header
  2700. inclusion, as in:
  2701. #include <freetype/freetype.h>
  2702. #include <freetype/ftglyph.h>
  2703. Some new include sub-directories are available:
  2704. a. the `freetype/config' directory, contains two files used to
  2705. configure the build of the library. Client applications
  2706. should not need to look at these normally, but they can if
  2707. they want.
  2708. #include <freetype/config/ftoption.h>
  2709. #include <freetype/config/ftconfig.h>
  2710. b. the `freetype/internal' directory, contains header files that
  2711. describes library internals. These are the header files that
  2712. were previously found in the `src/base' and `src/shared'
  2713. directories.
  2714. As usual, the build system and the demos have been updated to
  2715. reflect the change..
  2716. Here's a layout of the new directory hierarchy:
  2717. TOP_DIR
  2718. include/
  2719. freetype/
  2720. freetype.h
  2721. ...
  2722. config/
  2723. ftoption.h
  2724. ftconfig.h
  2725. ftmodule.h
  2726. internal/
  2727. ftobjs.h
  2728. ftstream.h
  2729. ftcalc.h
  2730. ...
  2731. src/
  2732. base/
  2733. ...
  2734. sfnt/
  2735. psnames/
  2736. truetype/
  2737. type1/
  2738. type1z/
  2739. Compiling a module is now much easier, for example, the following
  2740. should work when in the TOP_DIR directory on an ANSI build:
  2741. gcc -c -I./include -I./src/base src/base/ftbase.c
  2742. gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
  2743. etc..
  2744. (of course, using -Iconfig/<system> if you provide system-specific
  2745. configuration files).
  2746. - updated the structure of FT_Outline_Funcs in order to allow direct
  2747. coordinate scaling within the outline decomposition routine (this
  2748. is important for virtual `on' points with TrueType outlines) +
  2749. updates to the rasters to support this..
  2750. - updated the OS/2 table loading code in `src/sfnt/ttload.c' in
  2751. order to support version 2 of the table (see OpenType 1.2 spec)
  2752. - created `include/tttables.h' and `include/t1tables.h' to allow
  2753. client applications to access some of the SFNT and T1 tables of a
  2754. face with a procedural interface (see `FT_Get_Sfnt_Table') +
  2755. updates to internal source files to reflect the change..
  2756. - some cleanups in the source code to get rid of warnings when
  2757. compiling with the `-Wall -W -ansi -pedantic' options in gcc.
  2758. - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
  2759. its header to `include/ftgrays.h'
  2760. - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
  2761. with up to 80 sub-glyphs !! Thanks to Werner
  2762. ======================================================================
  2763. OLD CHANGES - 14-apr-2000
  2764. - fixed a bug in the TrueType glyph loader that prevented the
  2765. correct loading of some CJK glyphs in mingli.ttf
  2766. - improved the standard Type 1 hinter in `src/type1'
  2767. - fixed two bugs in the experimental Type 1 driver in `src/type1z'
  2768. to handle the new XFree86 4.0 fonts (and a few other ones..)
  2769. - the smooth renderer is now complete and supports sub-banding to
  2770. render large glyphs at high speed. However, it is still located
  2771. in `demos/src/ftgrays.c' and should move to the library itself in
  2772. the next beta. NOTE: The smooth renderer doesn't compile in
  2773. stand-alone mode anymore, but this should be fixed RSN..
  2774. - introduced convenience functions to more easily deal with glyph
  2775. images, see `include/ftglyph.h' for more details, as well as the
  2776. new demo program named `demos/src/ftstring.c' that demonstrates
  2777. its use
  2778. - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
  2779. drivers (this is required by the auto-hinter to improve its
  2780. results).
  2781. - changed the raster interface, in order to allow client
  2782. applications to provide their own span-drawing callbacks.
  2783. However, only the smooth renderer supports this. See
  2784. `FT_Raster_Params' in the file `include/ftimage.h'.
  2785. - fixed a small bug in FT_MulFix that caused incorrect transform
  2786. computation!
  2787. - Note: The tutorial is out-of-date.
  2788. ======================================================================
  2789. OLD CHANGES - 12-mar-2000
  2790. - changed the layout of configuration files : now, all ANSI
  2791. configuration files are located in
  2792. `freetype2/config'. System-specific over-rides can be placed in
  2793. `freetype2/config/<system>'.
  2794. - moved all configuration macros to `config/ftoption.h'
  2795. - improvements in the Type 1 driver with AFM support
  2796. - changed the fields in the FT_Outline structure : the old `flags'
  2797. array is re-named `tags', while all ancient flags are encoded into
  2798. a single unsigned int named `flags'.
  2799. - introduced new flags in FT_Outline.flags (see
  2800. ft_outline_.... enums in `ftimage.h').
  2801. - changed outline functions to `FT_Outline_<action>' syntax
  2802. - added a smooth anti-alias renderer to the demonstration programs
  2803. - added Mac graphics driver (thanks Just)
  2804. - FT_Open_Face changed in order to received a pointer to a
  2805. FT_Open_Args descriptor..
  2806. - various cleanups, a few more API functions implemented (see
  2807. FT_Attach_File)
  2808. - updated some docs
  2809. ======================================================================
  2810. OLD CHANGES - 22-feb-2000
  2811. - introduced the `psnames' module. It is used to:
  2812. o convert a Postscript glyph name into the equivalent Unicode
  2813. character code (used by the Type 1 driver(s) to synthesize on
  2814. the fly a Unicode charmap).
  2815. o provide an interface to retrieve the Postscript names of the
  2816. Macintosh, Adobe Standard & Adobe Expert character codes.
  2817. (the Macintosh names are used by the SFNT-module postscript
  2818. names support routines, while the other two tables are used by
  2819. the Type 1 driver(s)).
  2820. - introduced the `type1z' alternate Type 1 driver. This is a (still
  2821. experimental) driver for the Type 1 format that will ultimately
  2822. replace the one in `src/type1'. It uses pattern matching to load
  2823. data from the font, instead of a finite state analyzer. It works
  2824. much better than the `old' driver with `broken' fonts. It is also
  2825. much smaller (under 15 Kb).
  2826. - the Type 1 drivers (both in `src/type1' and `src/type1z') are
  2827. nearly complete. They both provide automatic Unicode charmap
  2828. synthesis through the `psnames' module. No re-encoding vector is
  2829. needed. (note that they still leak memory due to some code
  2830. missing, and I'm getting lazy).
  2831. Trivial AFM support has been added to read kerning information but
  2832. wasn't exactly tested as it should ;-)
  2833. - The TrueType glyph loader has been seriously rewritten (see the
  2834. file `src/truetype/ttgload.c'. It is now much, much simpler as
  2835. well as easier to read, maintain and understand :-) Preliminary
  2836. versions introduced a memory leak that has been reported by Jack
  2837. Davis, and is now fixed..
  2838. - introduced the new `ft_glyph_format_plotter', used to represent
  2839. stroked outlines like Windows `Vector' fonts, and certain Type 1
  2840. fonts like `Hershey'. The corresponding raster will be written
  2841. soon.
  2842. - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
  2843. interface that uses a structure to describe the input stream, the
  2844. driver (if required), etc..
  2845. TODO
  2846. - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
  2847. - Add a function like FT_Load_Character(face, char_code, load_flags)
  2848. that would really embed a call to FT_Get_Char_Index then
  2849. FT_Load_Glyph to ease developer's work.
  2850. - Update the tutorial!
  2851. - consider adding support for Multiple Master fonts in the Type 1
  2852. drivers.
  2853. - Test the AFM routines of the Type 1 drivers to check that kerning
  2854. information is returned correctly.
  2855. - write a decent auto-gridding component !! We need this to release
  2856. FreeType 2.0 gold !
  2857. less urgent needs:
  2858. - add a CFF/Type2 driver
  2859. - add a BDF driver
  2860. - add a FNT/PCF/HBF driver
  2861. - add a Speedo driver from the X11 sources
  2862. ======================================================================
  2863. OLDER CHANGES - 27-jan-2000
  2864. - updated the `sfnt' module interface to allow several SFNT-based
  2865. drivers to co-exist peacefully
  2866. - updated the `T1_Face' type to better separate Postscript font
  2867. content from the rest of the FT_Face structure. Might be used
  2868. later by the CFF/Type2 driver..
  2869. - added an experimental replacement Type 1 driver featuring advanced
  2870. (and speedy) pattern matching to retrieve the data from postscript
  2871. fonts.
  2872. - very minor changes in the implementation of FT_Set_Char_Size and
  2873. FT_Set_Pixel_Sizes (they now implement default to lighten the font
  2874. driver's code).
  2875. ======================================================================
  2876. OLD MESSAGE
  2877. This file summarizes the changes that occurred since the last `beta'
  2878. of FreeType 2. Because the list is important, it has been divided into
  2879. separate sections:
  2880. Table Of Contents:
  2881. I High-Level Interface (easier !)
  2882. II Directory Structure
  2883. III Glyph Image Formats
  2884. IV Build System
  2885. V Portability
  2886. VI Font Drivers
  2887. ----------------------------------------------------------------------
  2888. High-Level Interface:
  2889. The high-level API has been considerably simplified. Here is how:
  2890. - resource objects have disappeared. this means that face objects
  2891. can now be created with a single function call (see FT_New_Face
  2892. and FT_Open_Face)
  2893. - when calling either FT_New_Face & FT_Open_Face, a size object
  2894. and a glyph slot object are automatically created for the face,
  2895. and can be accessed through `face->glyph' and `face->size' if
  2896. one really needs to. In most cases, there's no need to call
  2897. FT_New_Size or FT_New_Glyph.
  2898. - similarly, FT_Load_Glyph now only takes a `face' argument
  2899. (instead of a glyph slot and a size). Also, its `result'
  2900. parameter is gone, as the glyph image type is returned in the
  2901. field `face->glyph.format'
  2902. - the list of available charmaps is directly accessible through
  2903. `face->charmaps', counting `face->num_charmaps' elements. Each
  2904. charmap has an 'encoding' field which specifies which known
  2905. encoding it deals with. Valid values are, for example:
  2906. ft_encoding_unicode (for ASCII, Latin-1 and Unicode)
  2907. ft_encoding_apple_roman
  2908. ft_encoding_sjis
  2909. ft_encoding_adobe_standard
  2910. ft_encoding_adobe_expert
  2911. other values may be added in the future. Each charmap still
  2912. holds its `platform_id' and `encoding_id' values in case the
  2913. encoding is too exotic for the current library
  2914. ----------------------------------------------------------------------
  2915. Directory Structure:
  2916. Should seem obvious to most of you:
  2917. freetype/
  2918. config/ -- configuration sub-makefiles
  2919. ansi/
  2920. unix/ -- platform-specific configuration files
  2921. win32/
  2922. os2/
  2923. msdos/
  2924. include/ -- public header files, those to be included
  2925. directly by client apps
  2926. src/ -- sources of the library
  2927. base/ -- the base layer
  2928. sfnt/ -- the sfnt `driver' (see the drivers section
  2929. below)
  2930. truetype/ -- the truetype driver
  2931. type1/ -- the type1 driver
  2932. shared/ -- some header files shared between drivers
  2933. demos/ -- demos/tools
  2934. docs/ -- documentation (a bit empty for now)
  2935. ----------------------------------------------------------------------
  2936. Glyph Image Formats:
  2937. Drivers are now able to register new glyph image formats within the
  2938. library. For now, the base layer supports of course bitmaps and
  2939. vector outlines, but one could imagine something different like
  2940. colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
  2941. ??).
  2942. See the file `include/ftimage.h'. Note also that the type
  2943. FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which
  2944. should encompass all known bitmap types.
  2945. Each new image format must provide at least one `raster', i.e. a
  2946. module capable of transforming the glyph image into a bitmap. It's
  2947. also possible to change the default raster used for a given glyph
  2948. image format.
  2949. The default outline scan-converter now uses 128 levels of grays by
  2950. default, which tends to smooth many things. Note that the demo
  2951. programs have been updated significantly in order to display these..
  2952. ----------------------------------------------------------------------
  2953. Build system:
  2954. You still need GNU Make to build the library. The build system has
  2955. been very seriously re-vamped in order to provide things like :
  2956. - automatic host platform detection (reverting to 'config/ansi' if
  2957. it is not detected, with pseudo-standard compilation flags)
  2958. - the ability to compile from the Makefiles with very different and
  2959. exotic compilers. Note that linking the library can be difficult
  2960. for some platforms.
  2961. For example, the file `config/win32/lcclib.bat' is invoked by the
  2962. build system to create the `.lib' file with LCC-Win32 because its
  2963. librarian has too many flaws to be invoked directly from the
  2964. Makefile.
  2965. Here's how it works:
  2966. - the first time you type `make', the build system runs a series of
  2967. sub-makefiles in order to detect your host platform. It then
  2968. dumps what it found, and creates a file called `config.mk' in the
  2969. current directory. This is a sub-Makefile used to define many
  2970. important Make variables used to build the library.
  2971. - the second time, the build system detects the `config.mk' then use
  2972. it to build the library. All object files go into 'obj' by
  2973. default, as well as the library file, but this can easily be
  2974. changed.
  2975. Note that you can run `make setup' to force another host platform
  2976. detection even if a `config.mk' is present in the current
  2977. directory. Another solution is simply to delete the file, then
  2978. re-run make.
  2979. Finally, the default compiler for all platforms is gcc (for now,
  2980. this will hopefully changed in the future). You can however specify
  2981. a different compiler by specifying it after the 'setup' target as
  2982. in:
  2983. gnumake setup lcc on Win32 to use the LCC compiler
  2984. gnumake setup visualc on Win32 to use Visual C++
  2985. See the file `config/<system>/detect.mk' for a list of supported
  2986. compilers for your platforms.
  2987. It should be relatively easy to write new detection rules files and
  2988. config.mk..
  2989. Finally, to build the demo programs, go to `demos' and launch GNU
  2990. Make, it will use the `config.mk' in the top directory to build the
  2991. test programs..
  2992. ----------------------------------------------------------------------
  2993. Portability:
  2994. In the previous beta, a single FT_System object was used to
  2995. encompass all low-level operations like thread synchronisation,
  2996. memory management and i/o access. This has been greatly simplified:
  2997. - thread synchronisation has been dropped, for the simple reason
  2998. that the library is already re-entrant, and that if you really
  2999. need two threads accessing the same FT_Library, you should
  3000. really synchronize access to it yourself with a simple mutex.
  3001. - memory management is performed through a very simple object
  3002. called `FT_Memory', which really is a table containing a table
  3003. of pointers to functions like malloc, realloc and free as well
  3004. as some user data (closure).
  3005. - resources have disappeared (they created more problems than they
  3006. solved), and i/o management have been simplified greatly as a
  3007. result. Streams are defined through FT_Stream objects, which
  3008. can be either memory-based or disk-based.
  3009. Note that each face has its own stream, which is closed only
  3010. when the face object is destroyed. Hence, a function like
  3011. TT_Flush_Face in 1.x cannot be directly supported. However, if
  3012. you really need something like this, you can easily tailor your
  3013. own streams to achieve the same feature at a lower level (and
  3014. use FT_Open_Face instead of FT_New_Face to create the face).
  3015. See the file `include/ftsystem.h' for more details, as well as the
  3016. implementations found in `config/unix' and `config/ansi'.
  3017. ----------------------------------------------------------------------
  3018. Font Drivers:
  3019. The Font Driver interface has been modified in order to support
  3020. extensions & versioning.
  3021. The list of the font drivers that are statically linked to the
  3022. library at compile time is managed through a new configuration file
  3023. called `config/<platform>/ftmodule.h'.
  3024. This file is autogenerated when invoking `make modules'. This
  3025. target will parse all sub-directories of 'src', looking for a
  3026. `module.mk' rules file, used to describe the driver to the build
  3027. system.
  3028. Hence, one should call `make modules' each time a font driver is
  3029. added or removed from the `src' directory.
  3030. Finally, this version provides a `pseudo-driver' in `src/sfnt'.
  3031. This driver doesn't support font files directly, but provides
  3032. services used by all TrueType-like font drivers. Hence, its code is
  3033. shared between the TrueType & OpenType font formats, and possibly
  3034. more formats to come if we're lucky..
  3035. ----------------------------------------------------------------------
  3036. Extensions support:
  3037. The extensions support is inspired by the one found in 1.x.
  3038. Now, each font driver has its own `extension registry', which lists
  3039. which extensions are available for the font faces managed by the
  3040. driver.
  3041. Extension ids are now strings, rather than 4-byte tags, as this is
  3042. usually more readable.
  3043. Each extension has:
  3044. - some data, associated to each face object
  3045. - an interface (table of function pointers)
  3046. An extension that is format-specific should simply register itself
  3047. to the correct font driver. Here is some example code:
  3048. // Registering an extensions
  3049. //
  3050. FT_Error FT_Init_XXXX_Extension( FT_Library library )
  3051. {
  3052. FT_DriverInterface* tt_driver;
  3053. driver = FT_Get_Driver( library, "truetype" );
  3054. if (!driver) return FT_Err_Unimplemented_Feature;
  3055. return FT_Register_Extension( driver, &extension_class );
  3056. }
  3057. // Implementing the extensions
  3058. //
  3059. FT_Error FT_Proceed_Extension_XXX( FT_Face face )
  3060. {
  3061. FT_XXX_Extension ext;
  3062. FT_XXX_Extension_Interface ext_interface;
  3063. ext = FT_Get_Extension( face, "extensionid", &ext_interface );
  3064. if (!ext) return error;
  3065. return ext_interface->do_it(ext);
  3066. }
  3067. ------------------------------------------------------------------------
  3068. Copyright 2000-2016 by
  3069. David Turner, Robert Wilhelm, and Werner Lemberg.
  3070. This file is part of the FreeType project, and may only be used,
  3071. modified, and distributed under the terms of the FreeType project
  3072. license, LICENSE.TXT. By continuing to use, modify, or distribute this
  3073. file you indicate that you have read the license and understand and
  3074. accept it fully.
  3075. Local Variables:
  3076. version-control: never
  3077. coding: utf-8
  3078. End:
  3079. --- end of CHANGES ---