CHANGES 132 KB

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