Changeset 209 for trunk/poppler


Ignore:
Timestamp:
Jul 26, 2007, 6:17:07 AM (14 years ago)
Author:
Eugene Romanenko
Message:

PDF plugin: freetype library updated to version 2.3.5

Location:
trunk/poppler/freetype2
Files:
6 added
98 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/freetype2/ChangeLog

    r182 r209  
     12007-07-02  Werner Lemberg  <wl@gnu.org>
     2
     3
     4        * Version 2.3.5 released.
     5        =========================
     6
     7
     8        Tag sources with `VER-2-3-5'.
     9
     10        * docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
     11        version number to 2.3.5.
     12
     13        * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
     14        builds/win32/visualc/freetype.dsp,
     15        builds/win32/visualc/freetype.vcproj,
     16        builds/win32/visualce/index.html,
     17        builds/win32/visualce/freetype.dsp,
     18        builds/win32/visualce/freetype.vcproj: s/2.3.4/2.3.5/, s/234/235/.
     19
     20        * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
     21
     22        * builds/unix/configure.raw (version_info): Set to 9:16:3.
     23
     242007-07-01  David Turner  <david@freetype.org>
     25
     26        * include/freetype/freetype.h, src/base/ftpatent.c
     27        (FT_Face_SetUnpatentedHinting): New function to dynamically change
     28        the setting after a face is created.
     29
     30        * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Fix a small bug
     31        that created distortions in the bytecode interpreter results.
     32
     332007-06-30  David Turner  <david@freetype.org>
     34
     35        * src/truetype/ttinterp.c (Ins_IUP): Add missing variable
     36        initialization.
     37
     38        * src/autofit/aflatin.c (af_latin_metric_init_blues): Get rid of an
     39        infinite loop in the case of degenerate fonts.
     40
     412007-06-26  Rahul Bhalerao  <b.rahul.pm@gmail.com>
     42
     43        Add autofit module for Indic scripts.  This currently just reuses
     44        the CJK-specific functions.
     45
     46        * include/freetype/config/ftoption.h (AF_CONFIG_OPTION_INDIC): New
     47        macro.
     48        * devel/ftoption.h: Synchronize with
     49        include/freetype/config/ftoption.h.
     50
     51        * src/autofit/afindic.c, src/autofit/afindic.h: New files.
     52
     53        * src/autofit/afglobal.c, src/autofit/aftypes.h,
     54        src/autofit/autofit.c: Updated.
     55
     56        * src/autofit/Jamfile (_sources), * src/autofit/rules.mk
     57        (AUTOF_DRV_SRC): Updated.
     58
     592007-06-23  David Turner  <david@freetype.org>
     60
     61        * src/truetype/ttgload.c (TT_Load_Simple): Fix change from
     62        2007-06-16 that prevented the TrueType module from loading most
     63        glyphs.
     64
     652007-06-20  Werner Lemberg  <wl@gnu.org>
     66
     67        * src/cff/cffgload.c (cff_slot_load): Fix logic of 2007-05-28
     68        change.
     69
     702007-06-19  Werner Lemberg  <wl@gnu.org>
     71
     72        * src/type1/t1load.c (parse_encoding): Handle one more error.
     73
     742007-06-19  Dmitry Timoshkov  <dmitry@codeweavers.com>
     75
     76        * src/winfonts/winfnt.c (fnt_face_get_dll_font): Return error
     77        FNT_Err_Invalid_File_Format if file format was recognized but
     78        the file doesn't contain any FNT(NE) or RT_FONT(PE) resources.
     79        Add verbose debug logs to make it easier to debug failing load
     80        attempts.
     81        (FNT_Face_Init): A single FNT font can't contain more than 1 face,
     82        so return an error if requested face index is > 0.
     83        Do not do further attempt to load fonts if a previous attempt has
     84        failed but returned error FNT_Err_Invalid_File_Format, i.e., the
     85        file format has been recognized but no fonts found in the file.
     86
     872007-07-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     88
     89        * src/base/ftmac.c: Apply patches proposed by Sean McBride.
     90        (FT_GetFile_From_Mac_Name): Insert FT_UNUSED macros to fix
     91        the compiler warnings against unused arguments.
     92        (FT_ATSFontGetFileReference): Ditto.
     93        (FT_GetFile_From_Mac_ATS_Name): Ditto.
     94        (FT_New_Face_From_FSSpec): Ditto.
     95        (lookup_lwfn_by_fond): Fix wrong comment.
     96        Replace `const StringPtr' by more appropriate type
     97        `ConstStr255Param'.
     98        FSRefMakePathPath always returns UTF8 POSIX pathname in
     99        Mach-O, thus HFS pathname support is dropped.
     100        (count_faces): Remove HLock and HUnlock which is not
     101        required on Mac OS X anymore.
     102        (FT_New_Face_From_SFNT): Ditto.
     103        (FT_New_Face_From_FOND): Ditto.
     104        * builds/mac/ftmac.c: Synchronize to src/base/ftmac.c,
     105        except of HFS pathname support and HLock/HUnlock.
     106        They are required on classic CFM environment.
     107
     1082007-06-18  Werner Lemberg  <wl@gnu.org>
     109
     110        * src/psaux/psobjs.c (ps_parser_skip_PS_token): Remove incorrect
     111        assertion.
     112        (ps_parser_to_bytes): Fix error message.
     113
     114        * src/type42/t42objs.c (T42_Open_Face): Handle one more error.
     115        * src/type42/t42parse.c (t42_parse_sfnts): s/alloc/allocated/.
     116        Don't allow mixed binary and hex strings.
     117        Handle string_size == 0 and string_buf == 0.
     118        (t42_parse_encoding): Handle one more error.
     119
     1202007-06-18  Werner Lemberg  <wl@gnu.org>
     121
     122        * src/psaux/psobjs.c (ps_tofixedarray, ps_tocoordarray): Fix exit
     123        logic.
     124        (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>: Skip delimiters
     125        correctly.
     126        (ps_parser_load_field_table): Use `fields->array_max' instead of
     127        T1_MAX_TABLE_ELEMENTS to limit the number of arguments.
     128
     129        * src/cff/cffgload.c (cff_decoder_prepare): Fix change from
     130        2007-06-06.
     131
     1322007-06-17  Werner Lemberg  <wl@gnu.org>
     133
     134        * src/tools/ftrandom.c (font_size): New global variable.
     135        (TestFace): Use it.
     136        (main): Handle new option `--size' to set `font_size'.
     137        (Usage): Updated.
     138
     139        * src/winfonts/winfnt.c (fnt_face_get_dll_font): Exit in case of
     140        invalid font.
     141        (FNT_Load_Glyph): Protect against invalid bitmap width.
     142
     1432007-06-16  David Turner  <david@freetype.org>
     144
     145        * src/smooth/ftgrays.c (gray_find_cell, gray_set_cell, gray_hline):
     146        Prevent integer overflows when rendering very large outlines.
     147
     148        * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check the
     149        well-formedness of the contours array when loading a glyph.
     150
     151        * src/truetype/ttinterp.c (TT_Load_Context): Initialize `zp0', `zp1',
     152        and `zp2'.
     153        (Ins_IP): Check argument ranges to reject bogus operations properly.
     154        (IUP_WorkerRec): Add `max_points' member.
     155        (_iup_worker_interpolate): Check argument ranges.
     156        (Ins_IUP): Ignore empty outlines.
     157
     1582007-06-16  Dmitry Timoshkov  <dmitry@codeweavers.com>
     159
     160        * src/winfonts/winfnt.h: Add necessary structures for PE resource
     161        parsing.
     162        (WinPE32_HeaderRec): New structure.
     163        (WinPE32_SectionRec): New structure.
     164        (WinPE_RsrcDirRec): New structure.
     165        (WinPE_RsrcDirEntryRec): New structure.
     166        (WinPE_RsrcDataEntryRec): New structure.
     167        (FNT_FontRec): Remove unused `size_shift' field.
     168
     169        * src/winfonts/winfnt.c (fnt_face_get_dll_font): Add support for
     170        loading bitmap .fon files in PE format.
     171
     1722007-06-15  Dmitry Timoshkov  <dmitry@codeweavers.com>
     173
     174        * builds/win32/ftdebug.c: Unify debug level handling with other
     175        platforms.
     176
     1772007-06-14  Dmitry Timoshkov  <dmitry@codeweavers.com>
     178
     179        * builds/win32/ftdebug.c (FT_Message): Send debug output to the
     180        console as well as to the debugger.
     181
     1822007-06-14  Werner Lemberg  <wl@gnu.org>
     183
     184        * src/autofit/aflatin.c (af_latin_uniranges): Expand structure to
     185        cover all ranges which could possibly be handled by the aflatin
     186        module (since the default fallback for unknown ranges is now the
     187        afcjk module).  It might be necessary to fine-tune this further by
     188        splitting off modules for Greek, Cyrillic, or other blocks.
     189
     1902007-06-11  David Turner  <david@freetype.org>
     191
     192        * src/autofit/aflatin.c (af_latin_hints_link_segments): Fix
     193        incorrect segment linking computation.  This was the root cause of
     194        Savannah bug #19565.
     195
     196
     197        * src/autofit/* [FT_OPTION_AUTOFIT2]: Some very experimental changes
     198        to improve the Latin auto-hinter.  Note that the new code is
     199        disabled by default since it is not stabilized yet.
     200
     201        * src/autofit/aflatin2.c, src/autofit/aflatin2.h: New files
     202        (disabled currently).
     203
     204        * src/autofit/afhints.c: Remove dead code.
     205        (af_axis_hints_new_edge): Add argument to handle segment directions.
     206        (af_edge_flags_to_string): New function.
     207        (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Handle
     208        option flags.
     209        (af_glyph_hints_reload): Add argument to handle inflections.
     210        Simplify.
     211        (af_direction_compute): Fine tuning.
     212        (af_glyph_hints_align_edge_points): Fix logic.
     213        (af_glyph_hints_align_strong_points): Do linear search for small
     214        edge counts.
     215        (af_glyph_hints_align_weak_points): Skip any touched neighbors.
     216        (af_iup_shift): Handle zero `delta'.
     217
     218        * src/autofit/afhints.h: Updated.
     219        (AF_SORT_SEGMENTS): New macro (disabled).
     220        (AF_AxisHintsRec) [AF_SORT_SEGMENTS]: New member `mid_segments'.
     221
     222        * src/autofit/afglobal.c (af_face_globals_get_metrics): Add
     223        argument to pass option flags for handling scripts.
     224        * src/autofit/afglobal.h: Updated.
     225
     226        * src/autofit/afcjk.c: Updated.
     227        * src/autofit/aflatin.c: Updated.
     228        (af_latin_metrics_scale_dim): Don't reduce scale by 2%.
     229
     230        (af_latin_hints_compute_segments) [AF_HINT_METRICS]: Remove dead code.
     231        (af_latin_hints_compute_edges) [AF_HINT_METRICS]: Remove dead code.
     232        Don't set `edge->dir'
     233        (af_latin_hint_edges): Add more logging.
     234
     235        * src/autofit/afloader.c: Updated.
     236
     2372007-06-11  Werner Lemberg  <wl@gnu.org>
     238
     239        * docs/CHANGES: Document FT_Face_CheckTrueTypePatents.
     240
     2412007-06-10  David Turner  <david@freetype.org>
     242
     243        * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Slight speed-up to
     244        the TrueType glyph loader.
     245
     246        * include/freetype/config/ftoption.h: Clarify documentation
     247        regarding unpatented hinting.
     248
     249
     250        Add new `FT_Face_CheckTrueTypePatents' API.
     251
     252        * include/freetype/freetype.h (FT_Face_CheckTrueTypePatents): New
     253        declaration.
     254
     255        * include/freetype/internal/services/svttglyf.h,
     256        src/base/ftpatent.c: New files.
     257
     258        * include/freetype/internal/ftserv.h (FT_SERVICE_TRUETYPE_GLYF_H):
     259        New macro.
     260
     261        * src/truetype/ttdriver.c: Include FT_SERVICE_TRUETYPE_GLYF_H and
     262        `ttpload.h'.
     263        (tt_service_truetype_glyf): New service structure.
     264        (tt_services): Register it.
     265
     266        * modules.cfg (BASE_EXTENSIONS), src/base/Jamfile (_sources): Add
     267        `ftpatent.c'.
     268
     2692007-06-08  Werner Lemberg  <wl@gnu.org>
     270
     271        * src/sfnt/sfobjs.c (sfnt_load_face): Undo change from 2007-04-28.
     272        Fonts without a cmap must be handled correctly by FreeType (anything
     273        else would be a bug).
     274
     275
     276        * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
     277        [FT_DEBUG_LEVEL_TRACE]: Improve tracing message.
     278
     2792007-06-07  Werner Lemberg  <wl@gnu.org>
     280
     281        * src/sfnt/ttsbit0.c (tt_sbit_decoder_init,
     282        tt_sbit_decoder_load_image): Protect against integer overflows.
     283
     284
     285        * src/pfr/pfrgload.c (pfr_glyph_load_simple): More bounding checks
     286        for `x_control' and `y_control'.
     287
     2882007-06-06  Werner Lemberg  <wl@gnu.org>
     289
     290        * src/base/ftoutln.c (FT_Outline_Decompose): Check `last'.
     291
     292
     293        * src/pfr/pfrcmap.c (pfr_cmap_init): Convert assertion into normal
     294        FreeType error.
     295
     296
     297        * src/winfonts/winfnt.c (fnt_face_get_dll_font): Do a rough check of
     298        `font_count'.
     299
     300
     301        * src/type1/t1load.c (parse_font_matrix): Check `temp_scale'.
     302
     303
     304        * src/cff/cffgload.c (cff_decoder_prepare): Change return type to
     305        `FT_Error'.
     306        Check `fd_index'.
     307        (cff_slot_load): Updated.
     308        * src/cff/cffgload.h: Updated.
     309
     3102007-06-05  Werner Lemberg  <wl@gnu.org>
     311
     312        * src/pfr/pfrgload.c (pfr_glyph_done): Comment out unused code.
     313        (pfr_glyph_load_simple): Convert assertion into normal FreeType
     314        error.
     315        Check `idx'.
     316        (pfr_glyph_load_compound, pfr_glyph_curve_to, pfr_glyph_line_to):
     317        Convert assertion into normal FreeType error.
     318
     319        * src/pfr/pfrtypes.h (PFR_GlyphRec): Comment out unused code.
     320
     321
     322        * src/winfonts/winfnt.c (FNT_Face_Init): Check `family_size'.
     323
     324
     325        * src/psaux/psobjs.c (ps_tocoordarray, ps_tofixedarray): Return -1
     326        in case of parsing error.
     327        (ps_parser_load_field): Updated.
     328
     329        * src/type1/t1load.c (parse_font_matrix): Updated.
     330
     3312007-06-04  Werner Lemberg  <wl@gnu.org>
     332
     333        * src/cid/cidgload.c (cid_load_glyph): Check `fd_select'.
     334
     335        * src/tools/ftrandom/Makefile: Depend on `libfreetype.a'.
     336
     3372007-06-03  Werner Lemberg  <wl@gnu.org>
     338
     339        * src/tools/ftrandom/*: Add the `ftrandom' test program written by
     340        George Williams (with some modifications).
     341
     3422007-06-03  Werner Lemberg  <wl@gnu.org>
     343
     344        * src/base/ftobjs.c (destroy_charmaps), src/type1/t1objs.c
     345        (T1_Face_Done), src/winfonts/winfnt.c (FNT_Face_Done): Check for
     346        face == NULL.  Suggested by Graham Asher.
     347
     3482007-06-03  Ismail Dönmez  <ismail@pardus.org.tr>
     349
     350        * src/base/ftobjs.c (FT_Request_Metrics): Fix compiler warning.
     351
     3522007-06-02  Werner Lemberg  <wl@gnu.org>
     353
     354        * include/freetype/fterrdef.h (FT_Err_Corrupted_Font_Header,
     355        FT_Err_Corrupted_Font_Glyphs): New error codes for BDF files.
     356
     357        * src/bdf/bdflib.c (bdf_load_font): Use them.
     358
     359        * src/bdf/bdflib.c (_bdf_parse_start): Check `FONT' better.
     360
     3612007-06-01  Werner Lemberg  <wl@gnu.org>
     362
     363        * src/base/ftobjs.c (FT_Request_Metrics), src/cache/ftccmap.c
     364        (FTC_CMapCache_Lookup): Remove unused code.
     365
     3662007-06-01  Sean McBride  <sean@rogue-research.com>
     367
     368        * src/truetype/ttinterp.c (Null_Vector, NULL_Vector): Removed,
     369        unused.
     370
     3712007-06-01  Werner Lemberg  <wl@gnu.org>
     372
     373        * src/cid/cidparse.c (cid_parser_new): Don't continue second search
     374        pass for `StartData' if an error has occurred.
     375        Exit properly if no `StartData' has been seen at all.
     376
     377        * builds/unix/ftsystem.c (FT_Stream_Open): Don't use ULONG_MAX but
     378        LONG_MAX to avoid compiler warning.  Suggested by Sean McBride.
     379
     3802007-05-30  Werner Lemberg  <wl@gnu.org>
     381
     382        * src/type1/t1load.c (parse_subrs, parse_charstrings): Protect
     383        against too small binary data strings.
     384
     385        * src/bdf/bdflib.c (_bdf_parse_glyphs): Check `STARTCHAR' better.
     386
     3872007-05-28  David Turner  <david@freetype.org>
     388
     389        * src/cff/cffgload.c (cff_slot_load): Do not apply the identity
     390        transformation.  This significantly reduces the loading time of CFF
     391        glyphs.
     392
     393        * docs/CHANGES: Updated.
     394
     395        * src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT): Change default
     396        hinting script to CJK, since it works well with more scripts than
     397        latin.  Thanks to Rahul Bhalerao <b.rahul.pm@gmail.com> for pointing
     398        this out!
     399
     4002007-05-25  Werner Lemberg  <wl@gnu.org>
     401
     402        * docs/CHANGES: Updated.
     403
     4042007-05-24  Werner Lemberg  <wl@gnu.org>
     405
     406        * src/truetype/ttobjs.h (tt_size_ready_bytecode): Move declaration
     407        into TT_USE_BYTECODE_INTERPRETER preprocessor block.
     408
     4092007-05-24  Graham Asher  <graham.asher@btinternet.com>
     410
     411        * src/truetype/ttobjs.c (tt_size_ready_bytecode)
     412        [!TT_USE_BYTECODE_INTERPRETER]: Removed.  Unused.
     413
     4142007-05-22  David Turner  <david@freetype.org>
     415
     416        * src/truetype/ttgload.c (load_truetype_glyph): Fix last change to
     417        avoid crashes in case the bytecode interpreter is not used.
     418
     419
     420        Avoid heap blowup with very large .Z font files.  This fixes
     421        Savannah bug #19910.
     422
     423        * src/lzw/ftzopen.h (FT_LzwStateRec): Remove `in_cursor',
     424        `in_limit', `pad', `pad_bits', and `in_buff' members.
     425        Add `buf_tab', `buf_offset', `buf_size', `buf_clear', and
     426        `buf_total' members.
     427
     428        * src/lzw/ftzopen.c (ft_lzwstate_get_code): Rewritten.  It now takes
     429        only one argument.
     430        (ft_lzwstate_refill, ft_lzwstate_reset, ft_lzwstate_io): Updated.
     431
     4322007-05-20  Ismail Dönmez  <ismail@pardus.org.tr>
     433
     434        * src/pshinter/pshrec.c (ps_mask_table_set_bits): Add `const'.
     435        (ps_dimension_set_mask_bits): Remove `const'.
     436
     4372007-05-19  Werner Lemberg  <wl@gnu.org>
     438
     439        * src/sfnt/ttmtx.c (tt_face_get_metrics)
     440        [!FT_CONFIG_OPTION_OLD_INTERNALS]: Another type-punning fix.
     441
     4422007-05-19  Derek Clegg  <dclegg@apple.com>
     443
     444        Savannah patch #5929.
     445
     446        * include/freetype/tttables.h, src/base/ftobjcs.c
     447        (FT_Get_CMap_Format): New function.
     448
     449        * include/freetype/internal/services/svttcmap.c (TT_CMapInfo): Add
     450        `format' member.
     451        * src/sfnt/ttcmap.c (tt_cmap{0,2,4,6,8,10,12}_get_info): Set
     452        cmap_info->format.
     453
     4542007-05-19  Werner Lemberg  <wl@gnu.org>
     455
     456        * src/truetype/ttgload.c (load_truetype_glyph): Save graphics state
     457        before handling subglyphs so that it can be reinitialized each time.
     458        This fixes Savannah bug #19859.
     459
     4602007-05-16  Werner Lemberg  <wl@gnu.org>
     461
     462        * src/cache/ftccache.c (ftc_node_mru_link, ftc_node_mru_unlink),
     463        src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), src/cache/ftcglyph.h
     464        (FTC_GCACHE_LOOKUP_CMP), src/pshinter/pshmod.c (ps_hinter_init),
     465        src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_load_hhea,
     466        tt_face_get_metrics): Fix type-punning issues.
     467
     4682007-05-15  David Turner  <david@freetype.org>
     469
     470        * include/freetype/config/ftstdlib.h,
     471        include/freetype/internal/ftobjs.h: As suggested by Graham Asher,
     472        ensure that ft_isalnum, ft_isdigit, etc., use hard-coded values
     473        instead on relying on the locale-dependent functions provided by
     474        <ctypes.h>.
     475
     4762007-05-15  Graham Asher  <graham.asher@btinternet.com>
     477
     478        * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Remove unused
     479        variable.
     480        * src/autofit/afloader.c (af_loader_load_g): Ditto.
     481
     482        * src/base/ftobjs.c (ft_validator_error): Use `ft_jmp_buf'.
     483        (open_face_from_buffer): Initialize `stream'.
     484        (FT_Request_Metrics): Remove unused variable.
     485        Remove redundant `break' statements.
     486        (FT_Get_Track_Kerning): Remove unused variable.
     487
     488        * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs,
     489        afm_parse_kern_data): Remove redundant
     490        `break' statements.
     491        (afm_parser_parse): Ditto.
     492        Don't use uninitialized variables.
     493
     494        * src/psnames/psmodule.c (VARIANT_BIT): Define as unsigned long.
     495        Use `|' operator instead of `^' to set it.
     496        Update all users.
     497
     498        * src/sfnt/ttcmap.c (tt_face_build_cmaps): Use `ft_jmp_buf'.
     499        * src/sfnt/ttkern.c (tt_face_load_kern): Remove unused variable.
     500
     501        * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
     502        comparison.
     503        (TT_Process_Simple_Glyph): Use FT_UInt for `n_points' and `i'.
     504        (TT_Load_Glyph): Remove unused variable.
     505
     5062007-05-13  Derek Clegg  <dclegg@apple.com>
     507
     508        * src/base/ftobjs.c (FT_New_Library): Only allocate rendering pool
     509        if FT_RENDER_POOL_SIZE is > 0.  From Savannah patch #5928.
     510
     5112007-05-11  David Turner  <david@freetype.org>
     512
     513        * src/cache/ftbasic.c, include/freetype/ftcache.h
     514        (FTC_ImageCache_LookupScaler, FTC_SBit_Cache_LookupScaler): Two new
     515        functions that allow us to look up glyphs using an FTC_Scaler object
     516        to specify the size, making it possible to use fractional pixel
     517        sizes.
     518
     519        * src/truetype/ttobjs.c (tt_size_ready_bytecode): Set
     520        `size->cvt_ready'.  Reported by Boris Letocha.
     521
     5222007-05-09  Graham Asher  <graham.asher@btinternet.com>
     523
     524        * src/truetype/ttinterp.c (Ins_IP), src/autofit/aflatin.c
     525        (af_latin_metrics_scale_dim): Fix compiler warnings.
     526
     5272007-05-06  Werner Lemberg  <wl@gnu.org>
     528
     529        * builds/win32/visualce/freetype.sln: Removed, as requested by
     530        Vincent.
     531
     5322007-05-04  Vincent RICHOMME  <richom.v@free.fr>
     533
     534        * builds/win32/visualce/*: Add Visual C++ project files for Pocket
     535        PC targets.
     536
     537        * docs/CHANGES: Document them.
     538
     5392007-05-04  <harry@kdevelop.org>
     540
     541        * builds/unix/ftsystem.c (FT_Stream_Open): Handle return value 0 of
     542        mmap (which might happen on some RTOS).  From Savannah patch #5909.
     543
     5442007-05-03  Werner Lemberg  <wl@gnu.org>
     545
     546        * src/base/ftobjs.c (FT_Set_Char_Size): Simplify code.
     547        * include/freetype/freetype.h (FT_Set_Char_Size): Update
     548        documentation.
     549
     5502007-04-28  Victor Stinner  <victor.stinner@inl.fr>
     551
     552        * src/sfnt/sfobjs.c (sfnt_load_face): Check error code after loading
     553        `cmap'.
     554
     5552007-04-27  Werner Lemberg  <wl@gnu.org>
     556
     557        * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check for negative
     558        number of points in contours.  Problem reported by Victor Stinner
     559        <victor.stinner@haypocalc.com>.
     560        (TT_Process_Simple_Glyph): Synchronize variable types.
     561
     5622007-04-26  Werner Lemberg  <wl@gnu.org>
     563
     564        * src/base/ftglyph.c (FT_Glyph_Copy): Always set second argument to
     565        zero in case of error.  This fixes Savannah bug #19689.
     566
     5672007-04-25  Boris Letocha <b.letocha@cz.gmc.net>
     568
     569        * src/truetype/ttobjs.c: Fix a typo that created a speed regression
     570        in the TrueType bytecode loader.
     571
     5722007-04-10  Martin Horak  <horakm@centrum.cz>
     573
     574        * src/sfnt/sfobjs.c (sfnt_load_face) [FT_CONFIG_OPTION_INCREMENTAL]:
     575        Ignore `hhea' table.  This fixes Savannah bug #19261.
     576
     5772007-04-09  Werner Lemberg  <wl@gnu.org>
     578
     579
     580        * Version 2.3.4 released.
     581        =========================
     582
     583
     584        Tag sources with `VER-2-3-4'.
     585
     586        * docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
     587        version number to 2.3.4.
     588
     589        * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
     590        builds/win32/visualc/freetype.dsp,
     591        builds/win32/visualc/freetype.vcproj: s/2.3.3/2.3.4/, s/233/234/.
     592
     593        * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
     594
     595        * builds/unix/configure.raw (version_info): Set to 9:15:3.
     596
     5972007-04-09  Martin Horak  <horakm@centrum.cz>
     598
     599        * src/truetype/ttgload.c (load_truetype_glyph): Save and restore
     600        memory stream to avoid a crash with the incremental memory
     601        interface (Savannah bug #19260).
     602
     6032007-04-06  David Turner  <david@freetype.org>
     604
     605        * src/base/ftbimap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite bug
     606        (Savannah bug #19536).
     607
     6082007-04-04  Werner Lemberg  <wl@gnu.org>
     609
     610
     611        * Version 2.3.3 released.
     612        =========================
     613
     614
     615        Tag sources with `VER-2-3-3'.
     616
     617        * docs/CHANGES: Mention CVE-2007-1351.
     618
     6192007-04-03  David Turner  <david@freetype.org>
     620
     621        * src/base/ftobjs.c (FT_Set_Char_Size): As suggested by James Cloos,
     622        if one of the resolution values is 0, treat it as if it were the
     623        same as the other value.
     624
     6252007-04-02  David Turner  <david@freetype.org>
     626
     627        Add special code to detect `extra-light' fonts and do not snap their
     628        stem widths too much to avoid bizarre hinting effects.
     629
     630        * src/autofit/aflatin.h (AF_LatinAxisRec): Add `standard_width' and
     631        `extra_light' members.
     632
     633        * src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
     634        them.
     635        (af_latin_metrics_scale_dim): Set `extra_light'.
     636        (af_latin_compute_stem_width): Use `extra_light'.
     637
     6382007-03-28  David Turner  <david@freetype.org>
     639
     640        * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix zero-ing of the
     641        padding.
     642
     6432007-03-28  Werner Lemberg  <wl@gnu.org>
     644
     645        * src/bdf/bdflib.c (setsbit, sbitset): Handle values >= 128
     646        gracefully.
     647        (_bdf_set_default_spacing): Increase `name' buffer size to 256 and
     648        issue an error for longer names.  This fixes CVE-2007-1351.
     649        (_bdf_parse_glyphs): Limit allowed number of glyphs in font to the
     650        number of code points in Unicode.
     651
     652        * builds/win32/visualc/index.html,
     653        builds/win32/visualc/freetype.dsp,
     654        builds/win32/visualc/freetype.vcproj, README: s/2.3.2/2.3.3/,
     655        s/232/233/.
     656
     657        * docs/CHANGES: Mention ftdiff.
     658
     6592007-03-26  David Turner  <david@freetype.org>
     660
     661        * src/truetype/ttinterp.c [FIX_BYTECODE]: Remove it and
     662        corresponding code.
     663        (Ins_MD): Last regression fix.
     664
     665        * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix blues
     666        computations in order to ignore single-point contours.  These are
     667        never rasterized and correspond in certain fonts to mark-attach
     668        points that are very far from the glyph's real outline, ruining the
     669        computation.
     670
     671        * src/autofit/afloader.c (af_loader_load_g): In the case of
     672        monospaced fonts, always set `rsb_delta' and `lsb_delta' to 0.
     673        Otherwise code that uses them will most certainly ruin the fixed
     674        advance property.
     675
     676        * docs/CHANGES, docs/VERSION.DLL, README, Jamfile (RefDoc): Update
     677        documentation and bump version number to 2.3.3.
     678
     679        * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
     680
     681        * builds/unix/configure.raw (version_info): Set to 9:14:3.
     682
     6832007-03-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     684
     685        * builds/unix/ftconfig.in: Disable Carbon framework dependency on
     686        64bit ABI on Mac OS X 10.4.x (ppc & i386).  Found by Sean McBride.
     687        * builds/vms/ftconfig.h: Ditto.
     688        * include/freetype/config/ftconfig.h: Ditto.
     689
     6902007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     691
     692        * builds/unix/ftsystem.c (FT_Stream_Open): Temporary fix to prevent
     693        32bit unsigned long overflow by 64bit filesize on LP64 platform, as
     694        proposed by Sean McBride:
     695        http://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html
     696
     6972007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     698
     699        * builds/unix/ftconfig.in: Suppress SGI compiler's warning against
     700        setjmp, proposed by Sean McBride:
     701        http://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html
     702
     7032007-03-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     704
     705        * builds/unix/configure.raw: Dequote `OS_INLINE' in comment of
     706        conftest.c, to avoid unexpected shell evaluation.  Possibly it is a
     707        bug or undocumented behaviour of autoconf.
     708
     7092007-03-18  David Turner   <david@freetype.org>
     710
     711        * src/truetype/ttinterp.c (Ins_MDRP): Another bytecode regression
     712        fix; testing still needed.
     713
     714        * src/truetype/ttinterp.c (Ins_MD): Another bytecode regression fix.
     715
     7162007-03-17  David Turner   <david@freetype.org>
     717
     718        * src/truetype/ttinterp.c (Ins_IP): Fix wrong handling of the
     719        (undocumented) twilight zone special case.
     720
     7212007-03-09  Werner Lemberg  <wl@gnu.org>
     722
     723
     724        * Version 2.3.2 released.
     725        =========================
     726
     727
     728        Tag sources with `VER-2-3-2'.
     729
     730        * builds/win32/visualc/index.html,
     731        builds/win32/visualc/freetype.dsp,
     732        builds/win32/visualc/freetype.vcproj, README: s/2.3.1/2.3.2/,
     733        s/231/232/.
     734
     7352007-03-08  David Turner  <david@freetype.org>
     736
     737        * docs/CHANGES, docs/VERSION.DLL: Updated for upcoming release.
     738
     739        * builds/unix/configure.raw (version_info): Set to 9:13:3.
     740
     741        * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
     742
     743        * README, Jamfile (RefDoc): s/2.3.1/2.3.2/.
     744
     745        * src/base/ftutil.c (ft_mem_strcpyn): Fix a bug that prevented the
     746        function to work properly, over-writing user-provided buffers in
     747        some cases.  Reported by James Cloos <cloos@jhcloos.com>.
     748
     749
     7502007-03-05  Werner Lemberg  <wl@gnu.org>
     751
     752        * include/freetype/config/ftstdlib.h (ft_strstr): New wrapper
     753        macro for `strstr'.
     754
     755        * src/truetype/ttobjs.c (tt_face_init): Use ft_strstr for scanning
     756        `trick_names', as suggested by Ivan Nincic.
     757
     7582007-03-05  David Turner  <david@freetype.org>
     759
     760        * src/base/ftinit.c (FT_Init_FreeType): Fix a small memory leak in
     761        case FT_Init_FreeType fails for some reason.  Problem reported by
     762        Maximilian Schwerin <maximilian.schwerin@buelowssiege.de>.
     763
     764        * src/truetype/ttobs.c (tt_size_init_bytecode): Clear the `x_ppem'
     765        and `y_ppem' fields of the `TT_Size.metrics' structure, not those of
     766        `TT_Size.root.metrics'.  Problem reported by Daniel Glöckner
     767        <daniel-gl@gmx.net>.
     768
     769        * src/type1/t1afm.c (T1_Read_PFM): Read kerning values as 16-bit
     770        signed values, not unsigned ones.  Problem reported by Johannes
     771        Walther <joh_walt@yahoo.de>.
     772
     7732007-02-21  David Turner  <david@freetype.org>
     774
     775        * src/pshinter/pshalgo.c (psh_hint_align): Fix a bug in the hinting
     776        of small and ghost stems in the Postscript interpreter.
     777
     7782007-02-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     779
     780        * src/base/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Fix memory
     781        leak, patch by "Jjgod Jiang" <gzjjgod@gmail.com>.
     782        * builds/mac/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Ditto.
     783
     7842007-02-16  Werner Lemberg  <wl@gnu.org>
     785
     786        * src/truetype/ttinterp.c (Ins_MD): Remove unused variable.
     787        * src/autofit/aflatin.c (af_latin_hints_link_segments): Ditto.
     788
     7892007-02-14  David Turner  <david@freetype.org>
     790
     791        It seems that the following changes fix most of the known
     792        interpreter problems with my fonts, but more testing is needed,
     793        though.
     794
     795        * src/truetype/ttinterp.c (FIX_BYTECODE): Activate.
     796        (TT_MulFix14): Rewrite.
     797        (Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Improved and updated.
     798        (Ins_MIRP): Ditto.
     799
     8002007-02-12  Werner Lemberg  <wl@gnu.org>
     801
     802        * src/truetype/ttinterp.c (Project_x, Project_y): Remove compiler
     803        warnings.
     804
     805        * src/pcf/pcfread.c (pcf_interpret_style), src/bdf/bdfdrivr.c
     806        (bdf_interpret_style): Ditto.
     807
     8082007-02-12  David Turner  <david@freetype.org>
     809
     810        Simplify projection and dual-projection code interface.
     811
     812        * src/truetype/ttinterp.h (TT_Project_Func): Use `FT_Pos', not
     813        FT_Vector' as argument type.
     814        * src/truetype/ttinterp.c (CUR_Func_project, CUR_Func_dualproj):
     815        Updated.
     816        (CUR_fast_project, CUR_fast_dualproj): New macros.
     817        (Project, Dual_Project, Project_x, Project_y): Updated.
     818        (Ins_GC, Ins_SCFS, Ins_MDAP, Ins_MIAP, Ins_IP): Use new `fast'
     819        macros.
     820
     821
     822        * src/autofit/afloader.c (af_loader_load_g): Improve spacing
     823        adjustments for the non-light auto-hinted modes.  Gets rid of
     824        `inter-letter spacing is too wide' problems.
     825
     826        * src/autofit/aflatin.c (af_latin_hints_link_segments,
     827        af_latin_hints_compute_edges): Slight optimization of the segment
     828        linker and better handling of serif segments to get rid of broken
     829        `9' in Arial at 9pt (96dpi).
     830
     831
     832        Introduce new string functions and the corresponding macros to get
     833        rid of various uses of strcpy and other `evil' functions, as well as
     834        to simplify a few things.
     835
     836        * include/freetype/internal/ftmemory.h (ft_mem_strdup, ft_mem_dup,
     837        ft_mem_strcpyn): New declarations.
     838        (FT_MEM_STRDUP, FT_STRDUP, FT_MEM_DUP, FT_DUP, FT_STRCPYN): New
     839        macros.
     840        * src/base/ftutil.c (ft_mem_dup, ft_mem_strdup, ft_mem_strcpyn): New
     841        functions.
     842
     843        * src/bfd/bfddrivr.c (bdf_interpret_style, BDF_Face_Init),
     844        src/bdf/bdflib.c (_bdf_add_property), src/pcf/pcfread.c
     845        (pcf_get_properties, pcf_interpret_style, pcf_load_font),
     846        src/cff/cffdrivr.c (cff_get_glyph_name), src/cff/cffload.c
     847        (cff_index_get_sid_string), src/cff/cffobjs.c (cff_strcpy),
     848        src/sfnt/sfdriver.c (sfnt_get_glyph_name), src/type1/t1driver.c
     849        (t1_get_glyph_name), src/type42/t42drivr.c (t42_get_glyph_name,
     850        t42_get_name_index): Use new functions and simplify code.
     851
     852        * builds/mac/ftmac.c (FT_FSPathMakeSpec): Don't use FT_MIN.
     853
     8542007-02-11  Werner Lemberg  <wl@gnu.org>
     855
     856        * src/autofit/afloader.c (af_loader_load_g): Don't change width for
     857        non-spacing glyphs.
     858
     8592007-02-07  Tom Parker  <palfrey@tevp.net>
     860
     861        * src/cff/cffdrivr.c (cff_get_name_index): Protect against NULL
     862        pointer.
     863
     8642007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     865
     866        * include/freetype/ftmac.h (FT_DEPRECATED_ATTRIBUTE):
     867        Introduce __attribute((deprecated))__ to warn functions
     868        which use non-ANSI data types in its interfaces.
     869        (FT_GetFile_From_Mac_Name): Deprecated, using FSSpec.
     870        (FT_GetFile_From_Mac_ATS_Name): Deprecated, using FSSpec.
     871        (FT_New_Face_From_FSSpec): Deprecated, using FSSpec.
     872        (FT_New_Face_From_FSRef): Deprecated, using FSRef.
     873
     874        * src/base/ftmac.c: Predefine FT_DEPRECATED_ATTRIBUTE as void
     875        to avoid warning in building FreeType.
     876        * builds/mac/ftmac.c: Ditto.
     877
     8782007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     879
     880        * src/base/ftbase.c: Fix to use builds/mac/ftmac.c, if configured
     881        `--with-fsspec' etc.  Replace #include "ftmac.c" with
     882        #include <ftmac.c>.
     883
     8842007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     885
     886        * include/freetype/ftmac.h (FT_GetFilePath_From_Mac_ATS_Name):
     887        Introduced as replacement of FT_GetFile_From_Mac_ATS_Name.
     888        * src/base/ftmac.c (FT_GetFilePath_From_Mac_ATS_Name): Ditto.
     889        (FT_GetFile_From_Mac_ATS_Name): Rewritten as wrapper of
     890        FT_GetFilePath_From_Mac_ATS_Name.
     891        * builds/mac/ftmac.c: Ditto.
     892
     8932007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     894
     895        * include/freetype/ftmac.h: Fixed wrong comment: FSSpec of
     896        FT_GetFile_From_Mac_Name, FT_GetFile_From_Mac_ATS_Name are
     897        for passing to FT_New_Face_From_FSSpec.
     898
     8992007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     900
     901        * builds/unix/configure.raw: Check whether Mac OS X system headers
     902        can be built under ANSI C mode.
     903
     904        * src/base/ftmac.c (OS_INLINE): Redefine OS_INLINE by a version
     905        compatible to ANSI C in case system headers are ANSI C incompatible.
     906        * builds/mac/ftmac.c (OS_INLINE): Ditto.
     907
     9082007-02-01  Werner Lemberg  <wl@gnu.org>
     909
     910        * include/freetype/ttnameid.h (TT_MS_LANGID_DZONGHKA_BHUTAN):
     911        Explain why applications shouldn't use it.  Found by Alexei.
     912
     9132007-02-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
     914
     915        * builds/unix/freetype2.m4 (AC_CHECK_FT2): Fix spelling of warning
     916        message.
     917
     918        * src/gxvalid/gxvmort1.c
     919        (gxv_mort_subtable_type1_substTable_validate): Fix debugging
     920        message.
     921
     9222007-01-31  Werner Lemberg  <wl@gnu.org>
     923
     924
     925        * Version 2.3.1 released.
     926        =========================
     927
     928
     929        Tag sources with `VER-2-3-1-FINAL'.
     930
     931        * builds/win32/visualc/freetype.dsp,
     932        builds/win32/visualc/freetype.vcproj: s/230/231/.
     933        * builds/win32/visualc/index.html: s/221/231/.
     934
     935        * vms_make.com: Add `ftgasp'.
     936
     9372007-01-30  David Turner  <david@freetype.org>
     938
     939        Tag sources with VER-2-3-1 to prepare release.
     940
     941        * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
     942
     943        * docs/VERSION.DLL, docs/release, README, Jamfile (RefDoc):
     944        s/2.3.0/2.3.1/.
     945
     946        * builds/unix/configure.raw (version_info): Set to 9:12:3.
     947
     948
     949        * src/autofit/aftypes.h (AF_USE_WARPER), src/autofit/afloader.c
     950        (af_loader_load_g): Disable the warper (i.e., the light hinting
     951        improvements) to make a 2.3.1 bugfix release before introducing a
     952        new feature.  This should give us more time to tune and improve the
     953        warper for the next release.
     954
     955        * docs/CHANGES: Update accordingly.
     956
     9572007-01-25  David Turner  <david@freetype.org>
     958
     959        For light auto-hinting, improve glyph advance widths and resurrect
     960        normal/full hinting to its normal quality.
     961
     962        * src/autofit/afhints.h (AF_GlyphHintsRec): New members `xmin_delta'
     963        and `xmax_delta'.
     964        * src/autofit/afhints.c (af_glyph_hints_reload): Reset `xmin_delta'
     965        and `xmax_delta'.
     966
     967        * src/autofit/afloader.c (af_loader_load_g) <AF_USE_WARPER>: Replace
     968        preprocessor conditional with if-clause, handling both light and
     969        normal mode.
     970
     971        * src/autofit/afwarp.c (AF_WarpScore): Fine-tune again.
     972        (af_warper_compute): Handle `xmin_delta' and `xmax_delta'.
     973
     9742007-01-25  Werner Lemberg  <wl@gnu.org>
     975
     976        * docs/release: Updated -- Savannah uses a new uploading scheme.
     977
     9782007-01-25  David Turner  <david@freetype.org>
     979
     980        * src/cff/cffload.c (cff_index_get_pointers): Improve previous fix.
     981
     982        * src/cff/cffgload.c (cff_decoder_parse_charstrings)
     983        <cff_op_callsubr, cff_op_callgsubr>: Fix sanity check for empty
     984        functions.
     985
     986        * docs/CHANGES: Document light auto-hinting improvement.
     987
     9882007-01-25  Werner Lemberg  <wl@gnu.org>
     989
     990        * src/cff/cffload.c (cff_index_get_pointers): Handle last entry
     991        correctly in a sanity check.  Since this function is only used to
     992        load local and global functions, any charstring that called the last
     993        local/global function would fail otherwise.  This fixes Savannah bug
     994        #18867.
     995
     996        * docs/CHANGES: Document it.
     997
     9982007-01-23  David Turner  <david@freetype.org>
     999
     1000        * src/truetype/ttobjs.c (tt_size_ready_bytecode): Fix typo that
     1001        prevented compilation when disabling both the unpatented and the
     1002        bytecode interpreter in the TrueType font driver.
     1003
     1004
     1005        Fix and enable the warper to improve `light' hinting mode.  This is
     1006        not necessarily a final version, but it seems to work well.
     1007
     1008        * src/autofit/aflatin.c (af_latin_hints_init) [AF_USE_WARPER]:
     1009        Disable code.
     1010        (af_latin_hints_apply) [AF_USE_WARPER]: Handle FT_RENDER_MODE_LIGHT.
     1011        * src/autofit/aftypes.h: Activate AF_USE_WARPER.
     1012
     1013        * src/autofit/afwarp.c (AF_WarpScore): Tune table.
     1014        (af_warper_compute_line_best): Fix array size of `scores'.
     1015        (af_warper_compute): Better handling of border cases.
     1016        * src/autofit/afwarp.h (AF_WarperRec): Remove unused members `X1'
     1017        and `X2'.
     1018
     10192007-01-21  Werner Lemberg  <wl@gnu.org>
     1020
     1021        * ChangeLog: Split off older entries into...
     1022        * ChangeLog.22: This new file.
     1023
     10242007-01-21  Werner Lemberg  <wl@gnu.org>
     1025
     1026        * docs/CHANGES: Document SHZ fix.
     1027
     10282007-01-21  George Williams  <gww@silcom.com>
     1029
     1030        * src/truetype/ttinterp.c (Ins_SHZ): SHZ doesn't move phantom
     1031        points.
     1032
     10332007-01-21  Werner Lemberg  <wl@gnu.org>
     1034
     1035        * src/sfnt/ttmtx.c (tt_face_get_metrics)
     1036        [!FT_CONFIG_OPTION_OLD_INTERNALS]: Fix limit check.
     1037
    110382007-01-17  Werner Lemberg  <wl@gnu.org>
    21039
     
    12862323        * src/base/ftutil.c (ft_mem_qrealloc): Fix the function to accept
    12872324        `item_size == 0' as well -- though this sounds weird, it can
    1288         theorically happen.  This fixes Savannah bug #16669.
     2325        theoretically happen.  This fixes Savannah bug #16669.
    12892326
    12902327        * src/pfr/pfrobjs.c (pfr_face_init): Fix the computation
     
    14032440        * docs/PROBLEMS: Updated icl issues.
    14042441
    1405 2006-05-12  Werner Lemberg  <wl@gnu.org>
    1406 
    1407 
    1408         * Version 2.2.1 released.
    1409         =========================
    1410 
    1411 
    1412         Tag sources with `VER-2-2-1'.
    1413 
    1414 2006-05-12  Werner Lemberg  <wl@gnu.org>
    1415 
    1416         * src/tools/docmaker/sources.py (re_source_keywords): Add word
    1417         boundary markers.
    1418         * src/tools/docmaker/content.py (re_field): Allow `.' in field names
    1419         (but not at the beginning or end).
    1420         * src/tools/docmaker/tohtml.py (html_header_1): Use `utf-8' charset.
    1421         (block_footer): Split into...
    1422         (block_footer_start, block_footer_middle, block_footer_end): This to
    1423         add navigation buttons.
    1424         (HtmlFormatter::block_exit): Updated.
    1425 
    1426         * include/freetype/*: Many minor documentation improvements (adding
    1427         links, spelling errors, etc.).
    1428 
    1429 2006-05-11  Werner Lemberg  <wl@gnu.org>
    1430 
    1431         * README: Minor updates.
    1432 
    1433         * include/freetype/*: s/scale/scaling value/ where appropriate.
    1434         Many other minor documentation improvements.
    1435 
    1436         * src/tools/docmaker/sources.py (re_italic, re_bold): Handle
    1437         trailing punctuation.
    1438         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word): Add
    1439         warning message for undefined cross references.
    1440         Update handling of re_italic and re_bold.
    1441 
    1442 2006-05-11  Masatake YAMATO  <jet@gyve.org>
    1443 
    1444         * builds/unix/ftsystem.c (FT_Stream_Open): Check errno only if
    1445         read system call returns -1.
    1446         Remove a redundant parenthesis.
    1447 
    1448 2006-05-10  Werner Lemberg  <wl@gnu.org>
    1449 
    1450         * builds/unix/ftsystem.c (FT_Stream_Open): Avoid infinite loop if
    1451         given an empty, un-mmap()able file.  Reported and suggested fix in
    1452         Savannah bug #16555.
    1453 
    1454         * builds/freetype.mk (refdoc): Write-protect the `docmaker'
    1455         directory to suppress generation of .pyc files.  According to the
    1456         Python docs there isn't a more elegant solution (currently).
    1457 
    1458         * builds/toplevel.mk (dist): New target which builds .tar.gz,
    1459         .tar.bz2, and .zip files.  Note that the version number is still
    1460         hard-coded.
    1461         (do-dist): Sub-target of `dist'.
    1462         (CONFIG_GUESS, CONFIG_SUB): New variables.
    1463         (.PHONY): Updated.
    1464 
    1465 2006-05-09  Rajeev Pahuja  <rpahuja@esri.com>
    1466 
    1467         * builds/win32/visualc/freetype.sln,
    1468         builds/win32/visualc/freetype.vcproj: Upgraded to VS.NET 2005 from
    1469         VS.NET 2003
    1470         Added files ftbbox.c, fttype1.c, ftwinfnt.c, ftsynth.c.
    1471 
    1472         * builds/win32/visualc/index.html: Updated.
    1473 
    1474 2006-05-07  Werner Lemberg  <wl@gnu.org>
    1475 
    1476         Put version information into the configure script.  Reported by Paul
    1477         Watson <pwatson@redlinepy.com>.
    1478 
    1479         * builds/unix/configure.ac: Renamed to...
    1480         * builds/unix/configure.raw: This which now serves (with appropriate
    1481         modifications) as a template for configure.ac.
    1482 
    1483         * version.sed: New script.
    1484 
    1485         * autogen.sh: Generate configure.ac from configure.raw, using
    1486         FREETYPE_MAJOR, FREETYPE_MINOR, and FREETYPE_PATCH from freetype.h.
    1487 
    1488 2006-05-06  Werner Lemberg  <wl@gnu.org>
    1489 
    1490         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
    1491 
    1492         * builds/unix/configure.ac (version_info): Set to 9:10:3.
    1493 
    1494         * builds/win32/visualc/index.html,
    1495         builds/win32/visualc/freetype.dsp,
    1496         builds/win32/visualc/freetype.vcproj, builds/freetype.mk (refdoc),
    1497         Jamfile (RefDoc), README: s/220/221/, s/2.2.0/2.2.1/.
    1498         Minor updates.
    1499 
    1500         * docs/CHANGES, docs/VERSION.DLL, docs/PROBLEMS, README.CVS:
    1501         Updated.
    1502 
    1503         * builds/unix/install-sh: Updated from `texinfo' CVS module at
    1504         savannah.gnu.org.
    1505 
    1506         * devel/ftoption.h: Synchronize with
    1507         include/freetype/config/ftoption.h.
    1508 
    1509 2006-05-04  Werner Lemberg  <wl@gnu.org>
    1510 
    1511         * src/lzw/ftlzw2.c: Renamed to...
    1512         * src/lzw/ftlzw.c: This.
    1513 
    1514         * src/lzw/Jamfile, src/lzw/rules.mk: Updated.
    1515 
    1516         * builds/mac/FreeType.m68k_cfm.make.txt,
    1517         builds/mac/FreeType.m68k_far.make.txt,
    1518         builds/mac/FreeType.ppc_carbon.make.txt,
    1519         builds/mac/FreeType.ppc_classic.make.txt: Updated.
    1520 
    1521 2006-05-03  David Turner  <david@freetype.org>
    1522 
    1523         Allow compilation again with C++ compilers.
    1524 
    1525         * include/freetype/internal/ftmemory.h (FT_ASSIGNP,
    1526         FT_ASSIGNP_INNER): New macros which do the actual assignment, and
    1527         which exist in two variants (for C and C++).
    1528         Update callers accordingly.
    1529 
    1530 2006-05-03  Werner Lemberg  <wl@gnu.org>
    1531 
    1532         * include/freetype/config/ftoption.h (FT_STRICT_ALIASING): Removed.
    1533 
    1534 2006-05-02  Werner Lemberg  <wl@gnu.org>
    1535 
    1536         * include/freetype/internal/ftmemory.h: s/new/newsz/ (for C++).
    1537         (FT_ALLOC): Remove redundant redefinition.
    1538 
    1539         * builds/compiler/gcc-dev.mk (CFLAGS) [g++]: Don't use
    1540         `-Wstrict-prototypes'.
    1541 
    1542         * src/base/ftstream.c (FT_Stream_EnterFrame): Add cast.
    1543 
    1544         * include/freetype/config/ftconfig.h (FT_BASE_DEF) [__cplusplus]:
    1545         Remove `extern'.
    1546 
    1547 2006-05-02  David Turner  <david@freetype.org>
    1548 
    1549         Update the memory management functions and macros to safely deal
    1550         with array size buffer overflows.  This corresponds to attemps to
    1551         allocate arrays that are too large.  For an example, consider the
    1552         following code:
    1553 
    1554           count = read_uint32_from_file(); array = malloc( sizeof ( Item ) *
    1555           count ); for ( nn = 0; nn < count; nn++ )
    1556             array[nn] = read_item_from_file();
    1557 
    1558         If `count' is larger than `FT_UINT_MAX/sizeof(Item)', the
    1559         multiplication overflows, and the array allocated os smaller than
    1560         the data read from the file.  In this case, the heap will be
    1561         trashed, and this can be used as a denial-of-service attack, or make
    1562         the engine crash later.
    1563 
    1564         The FT_ARRAY_NEW and FT_ARRAY_RENEW macros now ensure that the new
    1565         count is no larger than `FT_INT_MAX/item_size', otherwise a new
    1566         error code `FT_Err_Array_Too_Large' will be returned.
    1567 
    1568         Note that the memory debugger now works again when FT_DEBUG_MEMORY
    1569         is defined.  FT_STRICT_ALIASING has disappeared; the corresponding
    1570         code is now the default.
    1571 
    1572 
    1573         * include/freetype/config/ftconfig.h (FT_BASE_DEF) [!__cplusplus]:
    1574         Don't use `extern'.
    1575 
    1576         * include/freetype/fterrdef.h (FT_Err_Array_Too_Large): New error
    1577         code.
    1578 
    1579         * include/freetype/internal/ftmemory.h (FT_DEBUG_INNER)
    1580         [FT_DEBUG_MEMORY]: New macro.
    1581         (ft_mem_realloc, ft_mem_qrealloc): Pass new object size count also.
    1582         (ft_mem_alloc_debug, ft_mem_qalloc_debug, ft_mem_realloc_debug,
    1583         ft_mem_qrealloc_debug, ft_mem_free_debug): Removed.
    1584         (FT_MEM_ALLOC, FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC,
    1585         FT_MEM_FREE): Redefine.
    1586         (FT_MEM_NEW_ARRAY, FT_MEM_RENEW_ARRAY, FT_MEM_QNEW_ARRAY,
    1587         FT_MEM_QRENEW_ARRAY): Redefine.
    1588         (FT_ALLOC_MULT, FT_REALLOC_MULT, FT_MEM_QALLOC_MULT,
    1589         FT_MEM_QREALLOC_MULT): New macros.  Update callers where
    1590         appropriate.
    1591         (FT_MEM_SET_ERROR): Slightly redefine.
    1592 
    1593 
    1594         * src/base/ftdbgmem.c (_ft_debug_file, _ft_debug_lineno)
    1595         [FT_DEBUG_MEMORY]: New global variables, replacing...
    1596         (FT_MemTable_Rec) [FT_DEBUG_MEMORY]: Remove `filename' and
    1597         `line_no'.  Update all callers.
    1598         (ft_mem_debug_alloc) [FT_DEBUG_MEMORY]: Avoid possible integer
    1599         overflow.
    1600         (ft_mem_alloc_debug, ft_mem_realloc_debug, ft_mem_qalloc_debug,
    1601         ft_mem_qrealloc_debug, ft_mem_free_debug): Removed.
    1602 
    1603         * src/base/ftmac.c (read_lwfn): Catch integer overflow.
    1604         * src/base/ftrfork.c (raccess_guess_darwin_hfsplus): Ditto.
    1605         * src/base/ftutil.c: Remove special code for FT_STRICT_ALIASING.
    1606         (ft_mem_alloc. ft_mem_realloc, ft_mem_qrealloc): Rewrite.
    1607 
    1608 
    1609         * include/freetype/ftstream.h (FT_FRAME_ENTER, FT_FRAME_EXIT,
    1610         FT_FRAME_EXTRACT, FT_FRAME_RELEASE): Use FT_DEBUG_INNER to report the
    1611         place where the frames were entered, extracted, exited or released
    1612         in the memory debugger.
    1613 
    1614         * src/base/ftstream.c (FT_Stream_ReleaseFrame) [FT_DEBUG_MEMORY]:
    1615         Call ft_mem_free.
    1616         (FT_Stream_EnterFrame) [FT_DEBUG_MEMORY]: Use ft_mem_qalloc.
    1617         (FT_Stream_ExitFrame) [FT_DEBUG_MEMORY]: Use ft_mem_free.
    1618 
    1619 2006-04-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    1620 
    1621         * src/base/ftobjs.c (Mac_Read_POST_Resource): Correct pfb_pos
    1622         initialization, remove extra cast to copy to pfb_lenpos.  This fixes
    1623         parsing of PFB fonts with MacOS resource fork (bug introduced
    1624         2003-09-11).  Patch provided by Huib-Jan Imbens <ft@imbens.nl>.
    1625 
    1626 2006-04-29  Werner Lemberg  <wl@gnu.org>
    1627 
    1628         Further C library abstraction.  Based on a patch from
    1629         msn2@bidyut.com.
    1630 
    1631         * include/freetype/config/ftstdlib.h (FT_CHAR_BIT, FT_FILE,
    1632         ft_fopen, ft_fclose, ft_fseek, ft_ftell, ft_fread, ft_smalloc,
    1633         ft_scalloc, ft_srealloc, ft_sfree, ft_labs): New wrapper macros for
    1634         C library functions.  Update all users accordingly (and catch some
    1635         other places where the C library function was used instead of the
    1636         wrapper functions).
    1637 
    1638         * src/base/ftsystem.c: Don't include stdio.h and stdlib.h.
    1639         * src/gzip/zutil.h [MSDOS && !(__TURBOC__ || __BORLANDC__)]: Don't
    1640         include malloc.h.
    1641 
    1642 
    1643         * builds/unix/unix-def.in (datarootdir): Define, for autoconf 2.59c
    1644         and forthcoming versions.
    1645 
    1646 2006-04-28  Werner Lemberg  <wl@gnu.org>
    1647 
    1648         * src/lzw/ftlzw.c, src/lzw/zopen.c, src/lzw/zopen.h: Removed,
    1649         obsolete.
    1650 
    1651 2006-04-27  yi luo  <luoyi.ly@gmail.com>
    1652 
    1653         * builds/win32/visualc/freetype.vcproj: Updated.
    1654 
    1655 2006-04-26  David Turner  <david@freetype.org>
    1656 
    1657 
    1658         * Version 2.2 released.
    1659         =======================
    1660 
    1661 
    1662         Tag sources with `VER-2-2-0'.
    1663 
    1664 2006-04-26  Werner Lemberg  <wl@gnu.org>
    1665 
    1666         * src/psaux/psobjs.c (shift_elements): Don't use FT_Long but
    1667         FT_PtrDiff for `delta'.  Reported by Céline PILLET
    1668         <Celine.Pillet@Tagginfo.com>.
    1669 
    1670 2006-04-21  David Turner  <david@freetype.org>
    1671 
    1672         * include/freetype/ftincrem.h: Documentation updates.
    1673         (FT_Incremental_Interface): New typedef.
    1674 
    1675         * include/freetype/ftmodapi.h, include/freetype/ftglyph.h:
    1676         Documentation updates.
    1677 
    1678         * include/freetype/freetype.h: Documentation update.
    1679         (FT_HAS_FAST_GLYPHS): Always set to 0.
    1680 
    1681         * include/freetype/ftstroke.h, src/base/ftstroke.c (FT_Stroker_New):
    1682         Take an FT_Library argument instead of FT_Memory.
    1683 
    1684         * src/sfnt/ttcmap.c: Remove compiler warnings (gcc-4.0.2).
    1685 
    1686 2006-04-13  David Turner  <david@freetype.org>
    1687 
    1688         * src/autofit/afloader.c (af_loader_init, af_loader_load_g): Remove
    1689         superfluous code in the auto-fitter's loader.
    1690 
    1691 2006-04-05  Detlef WÃŒrkner  <TetiSoft@apg.lahn.de>
    1692 
    1693         * builds/amiga/makefile, builds/amiga/makefile.os4,
    1694         builds/amiga/smakefile: Added FT2_BUILD_LIBRARY define.
    1695 
    1696 2006-04-03  luoyi  <luoyi.ly@gmail.com>
    1697 
    1698         * builds/compiler/intelc.mk (TE): New variable.
    1699         (ANSIFLAGS): Updated.
    1700 
    1701 2006-04-03  Werner Lemberg  <wl@gnu.org>
    1702 
    1703         * builds/exports.mk (clean_symbols_list, clean_apinames): Removed.
    1704         (CLEAN): Add $(EXPORTS_LIST) and $(APINAMES_EXE).
    1705         (.PHONY): Updated.
    1706 
    1707         * configure.ac: Minor fixes to improve --help output.
    1708 
    1709 
    1710         * docs/PROBLEMS: New file.
    1711 
    1712 2006-04-01  David Turner  <david@freetype.org>
    1713 
    1714         * docs/CHANGES: Updated.
    1715 
    1716         * include/freetype/ftcache.h, include/freetype/config/ftheader.h:
    1717         Update documentation comments.
    1718 
    1719 2006-04-01  Werner Lemberg  <wl@gnu.org>
    1720 
    1721         * builds/unix/install.mk (uninstall): Don't handle `cache'
    1722         directory which no longer exists.
    1723 
    1724 2006-03-29  Detlef WÃŒrkner  <TetiSoft@apg.lahn.de>
    1725 
    1726         * src/psaux/psconv.c: Changed some variables which are expected to
    1727         hold negative values from `char' to `FT_Char' to allow building with
    1728         a compiler where `char' is unsigned by default.
    1729 
    1730 2006-03-27  David Turner  <david@freetype.org>
    1731 
    1732         * src/sfnt/ttkern.c (tt_face_get_kerning): Fix a serious bug that
    1733         causes some programs to go into an infinite loop when dealing with
    1734         fonts that don't have a properly sorted kerning sub-table.
    1735 
    1736 2006-03-26  Werner Lemberg  <wl@gnu.org>
    1737 
    1738         * src/bdf/bdflib.c (ERRMSG4): New macro.
    1739         (_bdf_parse_glyphs): Handle invalid BBX values.
    1740 
    1741         * include/freetype/fterrdef.h (FT_Err_Bbx_Too_Big): New error
    1742         macro.
    1743 
    1744 2006-03-23  Werner Lemberg  <wl@gnu.org>
    1745 
    1746         * docs/CHANGES: Updated.
    1747 
    1748 
    1749         * src/tools/docmaker/tohtml.py (html_header_2): Add horizontal
    1750         padding between table elements.
    1751         (html_header_1): The `DOCTYPE' comment must be in uppercase.
    1752         (make_html_para): Convert `...' quotations into real left and
    1753         right single quotes.
    1754         Use `para_header' and `para_footer'.
    1755 
    1756         * src/tools/docmaker/sources.py (re_bold, re_italic): Accept "'"
    1757         also.
    1758 
    1759 2006-03-23  David Turner <david@freetype.org>
    1760 
    1761         Add FT_Get_SubGlyph_Info API to retrieve subglyph data.  Note that
    1762         we do not expose the FT_SubGlyphRec structure.
    1763 
    1764         * include/freetype/internal/ftgloadr.h (FT_SUBGLYPH_FLAGS_*): Moved
    1765         to...
    1766         * include/freetype/freetype.h (FT_SUBGLYPH_FLAGS_*): Here.
    1767         (FT_Get_SybGlyph_Info): New declaration.
    1768 
    1769         * src/base/ftobjs.c (FT_Get_SubGlyph_Info): New function.
    1770 
    1771 
    1772         * src/autofit/afloader.c (af_loader_load_g): Compute lsb_delta and
    1773         rsb_delta correctly in edge cases.
    1774 
    1775 2006-03-22  Werner Lemberg  <wl@gnu.org>
    1776 
    1777         * src/cache/ftccache.c, (ftc_node_mru_up, FTC_Cache_Lookup)
    1778         [!FTC_INLINE]: Compile conditionally.
    1779         * src/cache/ftccache.h: Updated.
    1780 
    1781         * src/cache/ftcglyph.c (FTC_GNode_Init, FTC_GNode_UnselectFamily,
    1782         FTC_GNode_Done, FTC_GNode_Compare, FTC_Family_Init, FTC_GCache_New):
    1783         s/FT_EXPORT/FT_LOCAL/.
    1784         (FTC_GCache_Init, FTC_GCache_Done): Commented out.
    1785         (FTC_GCache_Lookup) [!FTC_INLINE]: Compile conditionally.
    1786         s/FT_EXPORT/FT_LOCAL/.
    1787         * src/cache/ftcglyph.h: Updated.
    1788 
    1789         * src/cache/ftcimage.c (FTC_INode_Free, FTC_INode_New):
    1790         s/FT_EXPORT/FT_LOCAL/.
    1791         (FTC_INode_Weight): Commented out.
    1792         * src/cache/ftcimage.h: Updated.
    1793 
    1794         * src/cache/ftmanag.c (FTC_Manager_Compress,
    1795         FTC_Manager_RegisterCache, FTC_Manager_FlushN):
    1796         s/FT_EXPORT/FT_LOCAL/.
    1797         * src/cache/ftmanag.h: Updated.
    1798 
    1799         * src/cache/ftcsbits.c (FTC_SNode_Free, FTC_SNode_New,
    1800         FTC_SNode_Compare): s/FT_EXPORT/FT_LOCAL/.
    1801         (FTC_SNode_Weight): Commented out.
    1802         * src/cache/ftcsbits.h: Updated.
    1803 
    1804 2006-03-22  Werner Lemberg  <wl@gnu.org>
    1805 
    1806         * src/cache/ftccache.c, src/cache/ftccache.h (FTC_Node_Destroy):
    1807         Remove, unused.
    1808 
    1809         * src/cache/ftccmap.h: Remove, unused.
    1810 
    1811         * src/cache/rules.mk (CACHE_DRV_H): Remove ftccmap.h.
    1812 
    1813 2006-03-21  Zhe Su  <james.su@gmail.com>
    1814 
    1815         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Improve
    1816         algorithm.
    1817 
    1818 2006-03-21  Werner Lemberg  <wl@gnu.org>
    1819 
    1820         * src/cff/cfftypes.h (CFF_CharsetRec): Add `max_cid' member.
    1821 
    1822         * src/cff/cffload.c (cff_charset_load): Set `charset->max_cid'.
    1823 
    1824         * src/cff/cffgload.c (cff_slot_load): Change type of third parameter
    1825         to `FT_UInt'.
    1826         Check range of `glyph_index'.
    1827         * src/cff/cffgload.h: Updated.
    1828 
    1829 
    1830         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Handle invalid offset
    1831         correctly.
    1832 
    1833 
    1834         * builds/freetype.mk (refdoc), docs/CHANGES, Jamfile (RefDoc),
    1835         README: s/2.1.10/2.2/.
    1836 
    1837 2006-03-21  David Turner  <david@freetype.org>
    1838 
    1839         * src/autofit/aflatin.c (af_latin_metrics_scale): Fix small bug
    1840         that crashes the auto-hinter (introduced by previous patch).
    1841 
    1842 2006-03-20  Werner Lemberg  <wl@gnu.org>
    1843 
    1844         * builds/freetype.mk (CACHE_DIR, CACHE_H): Remove.
    1845         (FREETYPE_H): Updated.
    1846 
    1847         * src/cache/rules.mk (CACHE_H_DIR): Remove.
    1848         (CACHE_DRV_H): Updated.
    1849 
    1850 2006-03-20  David Turner  <david@freetype.org>
    1851 
    1852         * include/freetype/cache/ftccache.h,
    1853         include/freetype/cache/ftccmap.h, include/freetype/cache/ftcglyph.h
    1854         include/freetype/cache/ftcimage.h include/freetype/cache/ftcmanag.h
    1855         include/freetype/cache/ftcmru.h include/freetype/cache/ftcsbits.h:
    1856         Move to...
    1857 
    1858         * src/cache/ftccache.h, src/cache/ftcglyph.h, src/cache/ftcimage.h,
    1859         src/cache/ftcsbits.h, src/cache/ftcmanag.h, src/cache/ftccmap.h,
    1860         src/cache/ftcmru.h: This new location.
    1861         Update declarations according to the changes in the corresponding
    1862         source files.
    1863 
    1864         Note that these files are not used by FreeType clients; all public
    1865         APIs of the cache module have been already moved to
    1866         `include/freetype/ftcache.h', and all FT_CACHE_INTERNAL_XXXX_H
    1867         macros resolve to it.
    1868 
    1869         Reason for the move is to allow modifications of the internals
    1870         without interferences with rogue clients.  Note that there are no
    1871         known clients that access the cache internals at the moment.
    1872 
    1873         * builds/unix/install.mk (install): Don't install headers from
    1874         $(CACHE_H).
    1875         Remove `freetype/cache' from the target directory.
    1876 
    1877         * include/freetype/config/ftheader.h (FT_CACHE_MANAGER_H,
    1878         FT_CACHE_INTERNAL_MRU_H, FT_CACHE_INTERNAL_MANAGER_H,
    1879         FT_CACHE_INTERNAL_CACHE_H, FT_CACHE_INTERNAL_GLYPH_H,
    1880         FT_CACHE_INTERNAL_IMAGE_H, FT_CACHE_INTERNAL_SBITS_H): Point to
    1881         FT_CACHE_H.
    1882 
    1883         * src/cache/ftcbasic.c, src/cache/ftccache.h, src/cache/ftccback.h,
    1884         src/cache/ftccmap.c, src/cache/ftcglyph.c, src/cache/ftcglyph.h,
    1885         src/cache/ftcimage.c, src/cache/ftcimage.h, src/cache/ftcmanag.c,
    1886         src/cache/ftcmanag.h, src/cache/ftcmru.h, src/cache/ftcsbits.c,
    1887         src/cache/ftcsbits.h: Don't use the FT_CACHE_INTERNAL_XXX_H macros
    1888         but include the headers directly (which are now in `src/cache').
    1889 
    1890         * src/cache/ftccache.c:  Don't use the FT_CACHE_INTERNAL_XXX_H
    1891         macros but include the headers directly.
    1892         (FTC_Cache_Init, FTC_Cache_Done, FTC_Cache_NewNode,
    1893         FTC_Cache_Lookup, FTC_Cache_RemoveFaceID): Declare as FT_LOCAL_DEF.
    1894 
    1895         * src/cache/ftccache.c:  Don't use the FT_CACHE_INTERNAL_XXX_H
    1896         macros but include the headers directly.
    1897         (FTC_MruNode_Prepend, FTC_MruNode_Up, FTC_MruNode_Remove,
    1898         FTC_MruList_Init, FTC_MruList_Reset, FTC_MruList_Done,
    1899         FTC_MruList_New, FTC_MruList_Remove, FTC_MruList_RemoveSelection):
    1900         Declare as FT_LOCAL_DEF.
    1901         (FTC_MruListFind, FTC_MruList_Lookup) [!FTC_INLINE]: Compile
    1902         conditionally.
    1903         Declare as FT_LOCAL_DEF.
    1904 
    1905 
    1906         * builds/win32/visualc/freetype.dsp: Update project file, add
    1907         missing base source files (ftstroke.c, ftxf86.c, etc.).
    1908 
    1909 
    1910         * src/autofit/afcjk.c, src/autofit/aflatin.c, src/base/ftobjs.c,
    1911         src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrobjs.c,
    1912         src/sfnt/sfobjs.c, src/sfnt/ttmtx.c, src/type1/t1afm.c,
    1913         src/type1/t1objs.c: Remove compiler warnings when building with
    1914         Visual C++ 6 and /W4.
    1915 
    1916         * src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal
    1917         hinting for italic/oblique fonts.
    1918 
    1919 
    1920 
    1921         * src/truetype/ttpload.c, src/truetype/ttpload.h
    1922         (tt_face_get_device_metrics): Change second argument to `FT_UInt'.
    1923 
    1924 2006-03-06  David Turner  <david@freetype.org>
    1925 
    1926         * src/cache/ftcmanag.c (FTC_Manager_Lookup_Size): Prevent crashes in
    1927         Mozilla/FireFox print preview in Ubuntu Hoary.
    1928 
    1929 2006-02-28  Chia-I Wu  <b90201047@ntu.edu.tw>
    1930 
    1931         * src/base/ftutil.c (ft_mem_qalloc) [FT_STRICT_ALIASING]: Do not
    1932         return error when size == 0.
    1933 
    1934 2006-02-28  Chia-I Wu  <b90201047@ntu.edu.tw>
    1935 
    1936         * src/base/ftobjs.c (FT_Done_Library): Remove modules in reverse
    1937         order so that type42 module is removed before truetype module.  This
    1938         avoids double free in some occasions.
    1939 
    1940 2006-02-28  David Turner  <david@freetype.org>
    1941 
    1942         * Release candidate VER-2-2-0-RC4.
    1943         ----------------------------------
    1944 
    1945         * docs/CHANGES: Documentation updates.
    1946 
    1947 2006-02-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    1948 
    1949         * modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to
    1950         build ftvalid in ft2demos.  It works as dummy ABI if gxvalid is not
    1951         built.
    1952 
    1953 2006-02-27  Werner Lemberg  <wl@gnu.org>
    1954 
    1955         * include/freetype/cache/ftccache.h
    1956         [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove declaration of
    1957         ftc_node_done.
    1958 
    1959         * src/cache/ftccache.c (ftc_node_destroy)
    1960         [!FT_CONFIG_OPTION_OLD_INTERNALS]: Mark as FT_LOCAL_DEF.  This
    1961         should now fix all possible compilation options.
    1962 
    1963 2006-02-27  David Turner  <david@freetype.org>
    1964 
    1965         * src/base/ftutil.c (ft_mem_alloc, ft_mem_qalloc, ft_mem_realloc,
    1966         ft_mem_qrealloc): Return an error if a negative size is passed in
    1967         parameters.
    1968 
    1969         * src/cache/ftccache.c (ftc_node_destroy): Mark as FT_BASE_DEF since
    1970         it needs to be exported for rogue clients.
    1971 
    1972         * src/pshinter/pshglob.c (psh_blues_set_zones_0): Prevent problems
    1973         with malformed fonts which have an odd number of blue values (these
    1974         are broken according to the specs).
    1975 
    1976         * src/cff/cffload.c (cff_subfont_load), src/type1/t1load.c
    1977         (T1_Open_Face): Modify the loaders to force even-ness of
    1978         `num_blue_values'.
    1979 
    1980         (cff_index_access_element): Ignore invalid entries in index files.
    1981 
    1982 2006-02-27  Chia-I Wu  <b90201047@ntu.edu.tw>
    1983 
    1984         * src/base/ftobjs.c (FT_Set_Char_Size): Check the case where width
    1985         or height is 0.
    1986 
    1987 2006-02-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    1988 
    1989         * builds/mac/FreeType.m68k_cfm.make.txt,
    1990         builds/mac/FreeType.m68k_far.make.txt,
    1991         builds/mac/FreeType.ppc_carbon.make.txt,
    1992         builds/mac/FreeType.ppc_classic.make.txt: Update to new header
    1993         inclusion introduced on 2006-02-16.
    1994 
    1995 2006-02-27  Chia-I Wu  <b90201047@ntu.edu.tw>
    1996 
    1997         * src/base/ftobjs.c (GRID_FIT_METRICS): New macro.
    1998         (ft_glyphslot_grid_fit_metrics, FT_Load_Glyph) [GRID_FIT_METRICS]:
    1999         Re-enable glyph metrics grid-fitting.  It is now done in the base
    2000         layer.
    2001         (FT_Set_Char_Size, FT_Set_Pixel_Sizes): Make sure the width and
    2002         height are not too small or too large, just like we were doing in
    2003         2.1.10.
    2004 
    2005         * src/autofit/afloader.c (af_loader_load_g): The vertical metrics
    2006         are not scaled.
    2007 
    2008 2006-02-26  Werner Lemberg  <wl@gnu.org>
    2009 
    2010         * docs/release: Minor additions and clarifications.
    2011 
    2012         * docs/CHANGES: Updated to reflect many fixes for backwards
    2013         compatibility.  Still incomplete.
    2014 
    2015 2006-02-26  David Turner  <david@freetype.org>
    2016 
    2017         * src/base/ftobjs.c (ft_recompute_scaled_metrics): Re-enable
    2018         conservative rounding of metrics to avoid breaking clients like
    2019         Pango (see http://bugzilla.gnome.org/show_bug.cgi?id=327852).
    2020 
    2021 2006-02-25  Werner Lemberg  <wl@gnu.org>
    2022 
    2023         * devel/ftoption.h: Synchronize with
    2024         include/freetype/config/ftoption.h.
    2025 
    2026         * src/cache/ftccache.c (ftc_node_destroy): Use FT_LOCAL_DEF (again).
    2027 
    2028 2006-02-25  David Turner  <david@freetype.org>
    2029 
    2030         Fix compiler warnings as well as C++ compilation problems.
    2031         Add missing prototypes.
    2032 
    2033         * src/autofit/afcjk.c, src/base/ftobjs.c, src/base/ftutil.c,
    2034         src/bdf/bdfdrivr.c, src/cff/cffcmap.c, src/cff/cffobjs.c,
    2035         src/psaux/afmparse.c,, src/psaux/t1cmap.c, src/smooth/ftgrays.c
    2036         src/tools/apinames.c, src/truetype/ttdriver.c: Add various casts,
    2037         initialize variables, and decorate functions with FT_CALLBACK_DEF,
    2038         etc., to fix compiler warnings (and C++ compiling errors).
    2039 
    2040         * src/cache/ftcbasic.c: Fix `-Wmissing-prototypes' warnings with
    2041         gcc.
    2042 
    2043         * builds/unix/ftsystem.c: Don't include FT_INTERNAL_OBJECTS_H but
    2044         FT_INTERNAL_STREAM_H.
    2045 
    2046         * src/base/ftsystem.c: Include FT_INTERNAL_STREAM_H.
    2047 
    2048         * include/freetype/config/ftheader.h (FT_PFR_H): New macro.
    2049 
    2050         * include/freetype/config/ftoption.h (FT_STRICT_ALIASING): Don't
    2051         define for C++.
    2052 
    2053         * include/freetype/internal/services/svotval.h: Don't include
    2054         FT_OPENTYPE_VALIDATE_H but FT_INTERNAL_VALIDATE_H.
    2055 
    2056         * include/freetype/internal/services/svpfr.h: Include FT_PFR_H.
    2057 
    2058         * src/gzip/ftgzip.c: Include FT_GZIP_H.
    2059 
    2060         * src/lzw/ftlzw.c, src/lzw/ftlzw2.c: Include FT_LZW_H.
    2061 
    2062         * src/sfnt/ttbdf.c (tt_face_load_bdf_props): Rearrange code.
    2063 
    2064 2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>
    2065 
    2066         * src/base/ftoutln.c (FT_OUTLINE_GET_CONTOUR, ft_contour_has,
    2067         ft_contour_enclosed, ft_outline_get_orientation): Commented out.  We
    2068         have to wait until `FT_GlyphSlot_Own_Bitmap' is stabilized.
    2069         (FT_Outline_Embolden): Use `FT_Outline_Get_Orientation'.
    2070 
    2071 2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>
    2072 
    2073         * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Update
    2074         documentation.
    2075 
    2076         * include/freetype/ftsynth.h (FT_GlyphSlot_Own_Bitmap),
    2077         src/base/ftsynth.c (FT_GlyphSlot_Own_Bitmap): New function to make
    2078         sure a glyph slot owns its bitmap.  It is also marked experimental
    2079         and due to change.
    2080         (FT_GlyphSlot_Embolden): Undo the last change.  It turns out that
    2081         rendering the outline confuses some applications.
    2082 
    2083 2006-02-24  David Turner  <david@freetype.org>
    2084 
    2085         * Release candidate VER-2-2-0-RC3.
    2086         ----------------------------------
    2087 
    2088         * src/cache/ftcbasic.c: Correct compatibility hack bug.
    2089 
    2090 2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>
    2091 
    2092         * include/freetype/freetype.h (FT_Size_RequestRec): Change the type
    2093         of `width' and `height' to `FT_Long'.
    2094         (enum FT_Size_Request_Type), src/base/ftobjs.c (FT_Request_Metrics):
    2095         New request type `FT_SIZE_REQUEST_TYPE_SCALES' to specify the scales
    2096         directly.
    2097 
    2098 2006-02-23  David Turner  <david@freetype.org>
    2099 
    2100         Two BDF patches from Debian libfreetype6 for 2.1.10.
    2101 
    2102         * src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a bug with zero-width
    2103         glyphs.
    2104         Fix a problem with large encodings.
    2105 
    2106 
    2107         Fix binary compatibility issues for gnustep-back (GNUstep backend
    2108         module) which still crashes under Sarge.
    2109 
    2110         * src/cache/ftccmap.c (FTC_OldCMapType, FTC_OldCMapIdRec,
    2111         FTC_OldCMapDesc) [FT_CONFIG_OPTION_OLD_INTERNALS]: New data
    2112         structures and enumerations.
    2113         (FTC_CMapCache_Lookup) [FT_CONFIG_OPTION_OLD_INTERNALS]: New
    2114         compatibility code.
    2115 
    2116         * src/cache/ftcbasic.c: Fix a silly bug that prevented our `hack' to
    2117         support rogue clients compiled against 2.1.7 to work correctly.
    2118         This probably explains the GNUstep crashes with the second release
    2119         candidate.
    2120 
    2121 2006-02-23  Chia-I Wu  <b90201047@ntu.edu.tw>
    2122 
    2123         * include/freetype/ftoutln.h (enum FT_Orientation): New value
    2124         `FT_ORIENTATION_NONE'.
    2125 
    2126         * src/base/ftoutln.c (FT_OUTLINE_GET_CONTOUR, ft_contour_has,
    2127         ft_contour_enclosed, ft_outline_get_orientation): Another version of
    2128         `FT_Outline_Get_Orientation'.  This version differs from the public
    2129         one in that each part (contour not enclosed in another contour) of the
    2130         outline is checked for orientation.
    2131         (FT_Outline_Embolden): Use `ft_outline_get_orientation'.
    2132 
    2133         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Render the outline and
    2134         use bitmap's embolden routine when the outline one failed.
    2135 
    2136 2006-02-22  Chia-I Wu  <b90201047@ntu.edu.tw>
    2137 
    2138         * modules.cfg: Compile in ftotval.c and ftxf86.c by default for ABI
    2139         compatibility.
    2140 
    2141         * src/sfnt/sfobjs.c (sfnt_done_face): Fix a memory leak.
    2142 
    2143         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_bit_aligned,
    2144         tt_sbit_decoder_load_byte_aligned) [FT_OPTIMIZE_MEMORY]: Fix sbit
    2145         loading.  (Only tested with bit aligned sbit with x_pos == 0.)
    2146 
    2147         * src/truetype/ttpload.c (tt_face_load_hdmx,
    2148         tt_face_get_device_metrics) [FT_OPTIMIZE_MEMORY]: `hdmx' is not
    2149         actually used.
    2150 
    2151 2006-02-21  David Turner  <david@freetype.org>
    2152 
    2153         Add a new API named FT_Get_TrueType_Engine_Type to determine whether
    2154         we have a patented, unpatented, or unimplemented TrueType bytecode
    2155         interpreter.
    2156 
    2157         The FT_Get_Module_Flags API was removed consequently.
    2158 
    2159         * include/freetype/ftmodapi.h (FT_Module_Get_Flags): Removed.
    2160         Replaced with...
    2161         (FT_Get_TrueType_Engine_Type): This.
    2162         (FT_TrueTypeEngineType): New enumeration.
    2163 
    2164         * include/freetype/internal/ftserv.h (FT_SERVICE_TRUETYPE_ENGINE_H):
    2165         New macro.
    2166 
    2167         * src/base/ftobjs.c: Include FT_SERVICE_TRUETYPE_ENGINE_H.
    2168         (FT_Module_Get_Flags): Removed.  Replaced with...
    2169         (FT_Get_TrueType_Engine_Type): This.
    2170 
    2171         * src/truetype/ttdriver.c: Include FT_SERVICE_TRUETYPE_ENGINE_H.
    2172         (tt_service_truetype_engine): New service structure.
    2173         (tt_services): Register it.
    2174 
    2175         * include/freetype/internal/services/svtteng.h: New file.
    2176 
    2177 
    2178         * src/sfnt/sfobjs.c (sfnt_load_face): Fix silly bug that prevented
    2179         embedded bitmaps from being correctly listed and used.
    2180 
    2181 
    2182         * src/sfnt/ttmtx.c (tt_face_load_hmtx): Disable memory optimization
    2183         if FT_CONFIG_OPTION_OLD_INTERNALS is used.  The is necessary because
    2184         libXfont is directly accessing the HMTX data, unfortunately.
    2185         Fix some compiler warnings.
    2186         (tt_face_get_metrics): Ditto.
    2187 
    2188 
    2189         * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix handling of
    2190         character advances.
    2191 
    2192 2006-02-20  David Turner  <david@freetype.org>
    2193 
    2194         Support binary compatibility with the X.Org server's Xfont library.
    2195         Note that this change unfortunately prevents memory optimizations
    2196         for the embedded bitmap loader.
    2197 
    2198         * include/freetype/internal/sfnt.h (SFNT_Interface): Move
    2199         `set_sbit_strike' and `load_sbit_metrics' fields to the location of
    2200         version 2.1.8.
    2201 
    2202         * src/sfnt/sfdriver.c (tt_face_set_sbit_strike_stub): Call
    2203         FT_Size_Request.
    2204         (sfnt_interface): Updated.
    2205 
    2206         * src/sfnt/ttsbit.c [FT_CONFIG_OPTION_OLD_INTERNALS]: Don't load
    2207         ttsbit0.c.
    2208         (tt_load_sbit_metrics): Make `sbit_small_metrics_fields' static.
    2209 
    2210         * src/sfnt/ttsbit.h: Updated.
    2211 
    2212 2006-02-17  David Turner  <david@freetype.org>
    2213 
    2214         * builds/unix/unix-cc.in (LINK_LIBRARY): Don't filter out exported
    2215         functions anymore.  This ensures that all FT_BASE internal functions
    2216         are available for dynamic linking.
    2217 
    2218         * include/freetype/ftcache.h (FTC_IMAGE_TYPE_COMPARE,
    2219         FTC_IMAGE_TYPE_HASH), src/cache/ftcbasic.c (FTC_OldFontRec,
    2220         FTC_OldImageDescRec, FTC_ImageCache_Lookup, FTC_Image_Cache_New,
    2221         FTC_OldImage_Desc, FTC_OLD_IMAGE_FORMAT, ftc_old_image_xxx,
    2222         ftc_image_type_from_old_desc, FTC_Image_Cache_Lookup,
    2223         FTC_SBitCache_Lookup, FTC_SBit_Cache_New, FTC_SBit_Cache_Lookup)
    2224         [FT_CONFIG_OPTION_OLD_INTERNALS]: Try to revive old functions of the
    2225         cache sub-system.  We try to recognize old legacy signatures with a
    2226         gross hack (hope it works).
    2227 
    2228 2006-02-17  Werner Lemberg  <wl@gnu.org>
    2229 
    2230         * devel/ftoption.h: Synchronize with
    2231         include/freetype/config/ftoption.h.
    2232 
    2233 2006-02-16  David Turner  <david@freetype.org>
    2234 
    2235         Massive changes to the internals to respect the internal object
    2236         layouts and exported functions of FreeType 2.1.7.  Note that the
    2237         cache sub-system cannot be fully retrofitted, unfortunately.
    2238 
    2239         * include/freetype/config/ftoption.h
    2240         (FT_CONFIG_OPTION_OLD_INTERNALS): New macro.
    2241 
    2242         * include/freetype/ftcache.h, include/freetype/cache/ftccache.h,
    2243         include/freetype/cache/ftccmap.h,
    2244         include/freetype/internal/ftcalc.h,
    2245         include/freetype/internal/ftdriver.h,
    2246         include/freetype/internal/ftmemory.h,
    2247         include/freetype/internal/ftobjs.h,
    2248         include/freetype/internal/psaux.h, include/freetype/internal/sfnt.h,
    2249         include/freetype/internal/t1types.h,
    2250         include/freetype/internal/tttypes.h, src/base/ftcalc.c,
    2251         src/base/ftdbgmem.c, src/base/ftobjs.c, src/base/ftutil.c,
    2252         src/bdf/bdfdrivr.c, src/cache/ftccache.c, src/cache/ftccback.h,
    2253         src/cache/ftcmanag.c, src/cff/cffdrivr.c, src/cid/cidriver.c,
    2254         src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c, src/psaux/psauxmod.c,
    2255         src/sfnt/sfdriver.c, src/truetype/ttdriver.c, src/type1/t1driver.c,
    2256         src/type1/t1objs.c, src/type42/t42drivr.c, src/winfonts/winfnt.c:
    2257         Use FT_CONFIG_OPTION_OLD_INTERNALS to revive old functions and data
    2258         structures.
    2259 
    2260         Move newly added structure elements to the end of the affected
    2261         structure and add stub fields (if FT_CONFIG_OPTION_OLD_INTERNALS is
    2262         defined) to assure binary compatibility with older FreeType
    2263         versions.
    2264         Use FT_CONFIG_OPTION_OLD_INTERNALS to add function stubs for old
    2265         functions:
    2266 
    2267           ft_stub_set_char_sizes
    2268           ft_stub_set_pixel_sizes
    2269 
    2270         Rename the following internal functions to provide the old function
    2271         names as stubs:
    2272 
    2273           FT_Alloc          -> ft_mem_alloc
    2274           FT_QAlloc         -> ft_mem_qalloc
    2275           FT_Realloc        -> ft_mem_realloc
    2276           FT_QRealloc       -> ft_mem_qrealloc
    2277           FT_Free           -> ft_mem_free
    2278           FT_Alloc_Debug    -> ft_mem_alloc_debug
    2279           FT_QAlloc_Debug   -> ft_mem_qalloc_debug
    2280           FT_Realloc_Debug  -> ft_mem_realloc_debug
    2281           FT_QRealloc_Debug -> ft_mem_qrealloc_debug
    2282           FT_Free_Debug     -> ft_mem_free_debug
    2283 
    2284 2006-02-15  Chia-I Wu  <b90201047@ntu.edu.tw>
    2285 
    2286         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
    2287         unused `max_points' and `max_contours'.
    2288 
    2289         * src/cid/cidobjs.c (cid_face_init), src/type1/t1objs.c
    2290         (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Update.
    2291 
    2292         * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
    2293         `max_components'.
    2294 
    2295         * src/truetype/ttinterp.h (TT_ExecContextRec): Remove unused
    2296         `loadSize' and `loadStack'.
    2297 
    2298         * src/truetype/ttinterp.c (TT_Done_Context, TT_Load_Context),
    2299         src/sfnt/ttload.c (tt_face_load_maxp): Update.
    2300 
    2301         * src/cff/cffobjs.h (cff_size_select), src/sfnt/sfdriver.c
    2302         (sfnt_interface), src/truetype/ttdriver.c (tt_size_request): Fix
    2303         compiler errors/warnings when TT_CONFIG_OPTION_EMBEDDED_BITMAPS is not
    2304         defined.
    2305 
    2306         * src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics): Fix
    2307         possible segment faults for the non-FT_OPTIMIZE_MEMORY'ed versions.
    2308         (finally!)
    2309 
    2310 
    2311         For most OpenType tables, `tt_face_load_xxxx' simply loads the table
    2312         and `face->root' is set later in `sfnt_load_face'.  Here, we try to
    2313         make this work for _all_ tables.  Also improve tracing messages.
    2314 
    2315         * src/sfnt/ttsbit.c, src/sfnt/ttsbit0.c, src/sfnt/ttload.c,
    2316         src/sfnt/ttmtx.c: all `tt_face_load_xxxx' should load the table and
    2317         then exit.  Error handling or setting face->root is done later in
    2318         `sfnt_load_face'.
    2319 
    2320         * src/sfnt/sfobjs.c (sfnt_load_face): Work harder.
    2321         Mac bitmap-only fonts are not scalable.
    2322         Check that `face->header.Units_Per_EM' is not zero.
    2323         (LOAD_, LOADM_): Emit pretty trace messages.
    2324 
    2325         * src/sfnt/ttsbit0.c (tt_face_load_strike_metrics): Read metrics
    2326         from `eblc'.
    2327 
    2328         * src/sfnt/ttcmap.c (tt_face_build_cmaps), src/sfnt/ttpost.c
    2329         (load_format_20, load_format_25, tt_face_get_ps_name): Use
    2330         face->max_profile.numGlyphs, instead of face->root.num_glyphs.
    2331 
    2332 2006-02-14  Werner Lemberg  <wl@gnu.org>
    2333 
    2334         * include/freetype/ftoutln.h (FT_Outline_Embolden): Mention in
    2335         documentation that negative strength values are possible.
    2336         Give an example call.
    2337 
    2338         * include/freetype/freetype.h (FT_GlyphSlotRec): Improve
    2339         documentation of `outline' field.
    2340 
    2341         * src/sfnt/sfobjc.s: Inckude FT_INTERNAL_DEBUG_H.
    2342         * src/sfnt/sfdriver.c: Include ttmtx.h.
    2343 
    2344         * src/autofit/afcjk.c: Include aftypes.h and aflatin.h.
    2345 
    2346 2006-02-14  Chia-I Wu  <b90201047@ntu.edu.tw>
    2347 
    2348         * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
    2349 
    2350 2006-02-14  Chia-I Wu  <b90201047@ntu.edu.tw>
    2351 
    2352         * src/sfnt/ttmtx.c (tt_face_load_hhea, tt_face_load_hmtx): Simply
    2353         return error if table is missing.
    2354         Check table length in non-FT_OPTIMIZE_MEMORY'ed `tt_face_load_hmtx'.
    2355 
    2356         * src/sfnt/sfobjs.c (sfnt_load_face): Take care of missing metrics
    2357         tables.  The last change makes Mac bitmap-only font not load and
    2358         this fixes it.
    2359 
    2360         * src/truetype/ttgload.c (load_truetype_glyph): Fix compilation
    2361         error when FT_CONFIG_OPTION_INCREMENTAL is defined.
    2362 
    2363 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
    2364 
    2365         Clean up the SFNT_Interface.  In this final pass, `load_hmtx' is
    2366         split from `load_hhea'.
    2367 
    2368         * include/freetype/internal/sfnt.h, src/sfnt/sfdriver.c,
    2369         src/sfnt/ttmtx.c, src/sfnt/ttmtx.h: Split `hmtx' from `hhea'.
    2370 
    2371         * src/sfnt/sfobjs.c (sfnt_load_face): Update.
    2372 
    2373 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
    2374 
    2375         * src/sfnt/ttmtx.h, src/sfnt/ttmtx.c: Why are there two copies of
    2376         code...
    2377 
    2378 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
    2379 
    2380         Clean up the SFNT_Interface.  In this pass, we want to treat the
    2381         font directory (offset table and table directory) as a normal table
    2382         like the others.  This also means that TTCs are no longer recognized
    2383         there but in `init_face'.
    2384 
    2385         * include/freetype/internal/sfnt.h (SFNT_Interface),
    2386         src/sfnt/sfdriver.c: `load_sfnt_header' and `load_directory' are
    2387         combined and renamed to `load_font_dir'.
    2388 
    2389         * src/sfnt/ttload.h, src/sfnt/ttload.c:
    2390         s/sfnt_dir_check/check_table_dir/.
    2391         `sfnt_init' is moved to sfobjs.c and renamed to `sfnt_open_font'.
    2392         `tt_face_load_sfnt_header' and `tt_face_load_directory' are combined
    2393         and renamed to `tt_face_load_font_dir'.
    2394 
    2395         * src/sfnt/sfobjs.c (sfnt_init_face): Recognize TTC here.
    2396 
    2397 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
    2398 
    2399         Clean up the SFNT_Interface.  Table loading functions are now named
    2400         after the tables' tags; `hdmx' is TrueType-specific and thus the
    2401         code is moved to the truetype module; `get_metrics' is moved here
    2402         from the truetype module so that the code can be shared with the cff
    2403         module.
    2404 
    2405         This pass involves no real changes.  That is, the code is moved
    2406         verbatim mostly.  The only exception is the return value of
    2407         `tt_face_get_metrics'.
    2408 
    2409         * include/freetype/internal/sfnt.h, src/sfnt/rules.mk,
    2410         src/sfnt/sfdriver.c, src/sfnt/sfnt.c, src/sfnt/sfobjs.c,
    2411         src/sfnt/ttload.c, src/sfnt/ttload.h, src/sfnt/ttsbit.c,
    2412         src/sfnt/ttsbit.h, src/sfnt/ttsbit0.c: Clean up the SFNT_Interface.
    2413 
    2414         * src/sfnt/ttmtx.c, src/sfnt/ttmtx.h: New files.  Metrics-related
    2415         tables' loading and parsing code is moved to here.
    2416         Move `tt_face_get_metrics' here from the truetype module.  The
    2417         return value is changed from `void' to `FT_Error'.
    2418 
    2419         * include/freetype/internal/fttrace.h: New trace: ttmtx.
    2420 
    2421         * src/truetype/ttpload.c, src/truetype/ttpload.h: `hdmx' loading and
    2422         parsing code is moved here.
    2423         New function `tt_face_load_prep' split from `tt_face_load_fpgm'.
    2424         `tt_face_load_fpgm' returns `FT_Err_Ok' if `fpgm' doesn't exist.
    2425 
    2426         * src/cff/cffgload.c, src/cff/cffobjs.c: Update.
    2427 
    2428         * src/truetype/ttgload.c, src/truetype/ttobjs.c: Update.
    2429 
    2430 2006-02-11  Chia-I Wu  <b90201047@ntu.edu.tw>
    2431 
    2432         * src/autofit/afcjk.c (af_cjk_metrics_init): Fix a stupid bug...
    2433 
    2434         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use
    2435         AF_LatinMetricsRec as the dummy metrics because we cast the metrics
    2436         to it later in `af_latin_hints_link_segments'.
    2437 
    2438 2006-02-11  Chia-I Wu  <b90201047@ntu.edu.tw>
    2439 
    2440         * include/freetype/config/ftoption.h (AF_CONFIG_OPTION_CJK): #define
    2441         to enable autofit CJK script support.  (#define'd by default.)
    2442 
    2443         * src/autofit/aflatin.h (AF_LATIN_CONSTANT): New macro.
    2444 
    2445         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Make sure
    2446         that `edge_distance_threshold' is always set.
    2447         (af_latin_hints_link_segments): Potential divide-by-zero bug.
    2448         Use latin constant in the scoring formula.
    2449 
    2450         * src/autofit/afcjk.c: Minor updates due to the above three changes.
    2451 
    2452         * docs/TODO, docs/CHANGES: Updated.
    2453 
    2454 2006-02-09  Chia-I Wu  <b90201047@ntu.edu.tw>
    2455 
    2456         Introduce experimental autofit CJK module based on akito's autohint
    2457         patch.  You need to #define AF_MOD_CJK in afcjk.c to enable it.
    2458 
    2459         * src/autofit/afglobal.c, src/autofit/afcjk.h, src/autofit/afcjk.c,
    2460         src/autofit/rules.mk, src/autofit/autofit.c, src/autofit/aftypes.h:
    2461         Add CJK module based on akito's autohint patch.
    2462 
    2463         * src/autofit/afhints.h (AF_SegmentRec): New field `len' for the
    2464         overlap length of the segments.
    2465         (AF_SEGMENT_LEN, AF_SEGMENT_DIST): New macros.
    2466 
    2467         * src/autofit/aflatin.h (af_latin_metrics_init_widths),
    2468         src/autofit/aflatin.c (af_latin_metrics_init_widths): Made
    2469         `FT_LOCAL'.
    2470         Use the character given by the caller.
    2471         (af_latin_metrics_init_widths, af_latin_hints_link_segments): Scale
    2472         the thresholds.
    2473 
    2474         * src/autofit/afloader.c (af_loader_load_g): Respect
    2475         AF_SCALER_FLAG_NO_ADVANCE.
    2476 
    2477 2006-02-09  Werner Lemberg  <wl@gnu.org>
    2478 
    2479         * src/cid/cidparse.c (cid_parse_new): Remove shadowing variable.
    2480 
    2481 2006-02-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    2482 
    2483         * src/cid/cidparse.c (cid_parse_new): Fix for abnormally short or
    2484         broken CIDFont.  Reported by Taek Kwan(TK) Lee (see ft-devel
    2485         2005-11-02).
    2486 
    2487 2006-02-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    2488 
    2489         * builds/unix/configure.ac: Fix bug for `--with-old-mac-fonts'
    2490         option on UNIX platform.  It has been broken since 2006-01-11.
    2491 
    2492 2006-02-01  Werner Lemberg  <wl@gnu.org>
    2493 
    2494         * src/otvalid/module.mk: s/otvalid_module_class/otv_module_class/.
    2495         * src/gxvalid/module.mk: s/gxvalid_module_class/gxv_module_class/.
    2496 
    2497         * builds/unix/unixddef.mk: Actually do define PLATFORM (fixing
    2498         change from 2006-01-31).
    2499         (TOP_DIR, OBJ_DIR): Update.
    2500 
    2501         * builds/unix/install.mk (install): Fix path for ftmodule.h.
    2502 
    2503         * Makefile, *.mk, builds/unix/unix-cc.in, builds/unix-def.in: Use
    2504         `?=' where appropriate.
    2505 
    2506         * builds/detect.mk (TOP_DIR), builds/os2/os2-dev.mk (TOP_DIR),
    2507         builds/win32/w32-dev.mk (TOP_DIR): Removed.  Defined elsewhere.
    2508 
    2509 2006-01-31  Werner Lemberg  <wl@gnu.org>
    2510 
    2511         Implement new, simplified module selection.  With GNU make it is now
    2512         sufficient to modify a single file, `modules.cfg', to control the
    2513         inclusion of modules and base extension files.
    2514 
    2515         This change also fixes the creation of ftmodule.h; it now depends on
    2516         `modules.cfg' and thus is rebuilt only if necessary.
    2517 
    2518         Finally, a version of `ftoption.h' in OBJ_DIR is preferred over the
    2519         default location.
    2520 
    2521         * modules.cfg: New file.
    2522 
    2523         * builds/freetype.mk: Don't include `modules.mk'.
    2524         Include all `rules.mk' files as specified in `modules.cfg'.
    2525         (FTOPTION_FLAG, FTOPTION_H): New variables.
    2526         (FT_CFLAGS): Add macro definition for FT_CONFIG_MODULES_H.
    2527         Add FTOPTION_FLAG.
    2528         ($(FT_INIT_OBJ)): Don't use FT_MODULE_LIST.
    2529         (CONFIG_H): Add FTMODULE_H and FTOPTION_H.
    2530         (INCLUDES): Add DEVEL_DIR.
    2531         (INCLUDE_FLAGS, FTSYS_SRC, FTSYS_OBJ, FTDEBUG_SRC, FTDEBUG_OBJ,
    2532         OBJ_M, OBJ_S): Use `:=', not `='.
    2533         (remove_ftmodule_h): New phony target to delete `ftmodule.h'.
    2534         (distclean): Add remove_ftmodule_h.
    2535 
    2536         * builds/modules.mk: (MODULE_LIST): Removed.
    2537         (make_module_list, clean_module_list): Replace targets
    2538         with...
    2539         (FTMODULE_H_INIT, FTMODULE_H_CREATE, FTMODULE_H_DONE): New
    2540         variables.  Reason for the change is that it is not possible to have
    2541         a phony prerequisite which is run only if the target file must be
    2542         rebuilt (phony prerequisites act like subroutines and are *always*
    2543         executed).  We only want to rebuild `ftmodule.h' if `module.cfg' is
    2544         changed.
    2545         Update all callers.
    2546         ($FTMODULE_H)): Rule to create `ftmodule.h', depending on
    2547         `modules.cfg'.
    2548 
    2549         * builds/toplevel.mk: Rewrite and simplify module handling.
    2550         (MODULES_CFG, FTMODULE_H): New variables.
    2551         Include MODULES_CFG.
    2552         (MODULES): New variable to include all `module.mk' and `rules.mk'
    2553         files.  We no longer use make's `wildcard' function for this.
    2554 
    2555         * Makefile (USE_MODULES): Remove.  Update all users.
    2556         (OBJ_DIR): Define it here.
    2557 
    2558         * src/*/module.mk: Change
    2559 
    2560             make_module_list: foo
    2561             foo: ...
    2562 
    2563         to
    2564 
    2565             FTMODULE_H_COMMANDS += FOO
    2566             define FOO
    2567             ...
    2568             endef
    2569 
    2570         in all files.  `FTMODULE_H_COMMANDS' is used in `FTMODULE_H_CREATE'.
    2571 
    2572         * src/base/rules.mk (BASE_EXT_SRC): Use BASE_EXTENSIONS.
    2573 
    2574         * builds/unix/detect.mk (setup): Always execute `configure' script.
    2575         (have_mk): Rename to...
    2576         (have_Makefile): This.
    2577         Don't use `strip' function.
    2578 
    2579         * builds/unix/unix.mk: Include `install.mk' only if BUILD_PROJECT is
    2580         defined.
    2581         (have_mk): Don't use `strip' function.
    2582         Test for unix-def.mk in OBJ_DIR, not BUILD_DIR (and invert the test
    2583         accordingly).
    2584 
    2585         * builds/unix/install.mk (install, uninstall): Handle `ftmodule.h'.
    2586 
    2587         * builds/os2/os2-dev.mk, builds/unix/unix-dev.mk,
    2588         builds/win32/w32-bccd.mk, builds/win32/w32-dev.mk: Don't define
    2589         BUILD_DIR but DEVEL_DIR for development header files.
    2590 
    2591         * builds/ansi/ansi-def.mk (TOP_DIR, OBJ_DIR),
    2592         builds/beos/beos-def.mk (TOP_DIR, OBJ_DIR), builds/unix/unix-def.in
    2593         (TOP_DIR, OBJ_DIR): Removed.  Defined elsewhere.
    2594 
    2595         * builds/dos/dos-def.mk (OBJ_DIR), builds/os2/os2-def.mk (OBJ_DIR),
    2596         builds/win32/win32-def.mk (OBJ_DIR): Removed.  Defined elsewhere.
    2597 
    2598         * builds/unix/unixddef.mk: Don't define BUILD_DIR but DEVEL_DIR for
    2599         development header files.
    2600         Don't define PLATFORM.
    2601 
    2602         * configure: Copy `modules.cfg' to builddir if builddir != srcdir.
    2603         Update snippet taken from autoconf's m4sh.m4 to current CVS version.
    2604         Be more verbose.
    2605 
    2606         * include/freetype/config/ftmodule.h: Add comments -- this file is
    2607         no longer used if FreeType is built with GNU make.
    2608 
    2609         * docs/CHANGES, docs/CUSTOMIZE, docs/INSTALL, docs/INSTALL.ANY,
    2610         docs/INSTALL.GNU, docs/INSTALL.UNX: Document new build mechanism.
    2611         Other minor updates.
    2612 
    2613         * modules.txt: Removed.  Contents included in `modules.cfg'.
    2614 
    2615 
    2616         * include/freetype/internal/ftmemory.h (FT_QAlloc_Debug,
    2617         FT_Free_Debug) [FT_STRICT_ALIASING]: Fix typos.
    2618 
    2619         * src/base/ftdbgmem.c (FT_Alloc_Debug, FT_Realloc_Debug,
    2620         FT_QAlloc_Debug, FT_QRealloc_Debug, FT_Free_Debug)
    2621         [FT_STRICT_ALIASING]: Implement.
    2622 
    2623 2006-01-31  Chia-I Wu  <b90201047@ntu.edu.tw>
    2624 
    2625         * src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
    2626         (cid_face_init), src/pfr/pfrobjs.c (pfr_face_init),
    2627         src/type1/t1objs.c (T1_Face_Init): Set face->height to MAX(1.2 *
    2628         units_per_EM, ascender - descender).
    2629 
    2630 2006-01-31  Chia-I Wu  <b90201047@ntu.edu.tw>
    2631 
    2632         * include/freetype/internal/t1types.h (AFM_FontInfo),
    2633         src/psaux/afmparse.c, src/tools/test_afm.c: Read `FontBBox',
    2634         `Ascender', and `Descender' from an AFM.
    2635 
    2636         * src/type1/t1afm.c (T1_Read_Metrics): Use the metrics from the AFM.
    2637 
    2638         * include/freetype/freetype.h (FT_FaceRec): Mention that fields may
    2639         be changed after file attachment.
    2640 
    2641 2006-01-28  Werner Lemberg  <wl@gnu.org>
    2642 
    2643         * src/*/module.mk (.PHONY): Add.
    2644 
    2645 2006-01-27  Werner Lemberg  <wl@gnu.org>
    2646 
    2647         * README, docs/FTL.TXT: Fix email address for bug reports.
    2648         Other minor formatting.
    2649 
    2650         * devel/ftoption.h: Synchronize with
    2651         include/freetype/config/ftoption.h.
    2652 
    2653         * src/autofit/module.mk (add_autofit_module), src/bdf/module.mk
    2654         (add_bdf_module), src/type42/module.mk (add_type42_driver): Fix
    2655         whitespace.
    2656 
    2657         * src/smooth/module.mk (add_smooth_renderer): Add lcd and lcdv
    2658         renderer classes.
    2659 
    2660 2006-01-27  David Turner  <david@freetype.org>
    2661 
    2662         * builds/unix/configure.ac: Fix build problem on Cygwin.
    2663 
    2664         * builds/unix/install.mk (install): Don't install the internal
    2665         headers, and remove existing ones if found in the target install
    2666         directory.
    2667 
    2668         * src/autofit/afwarp.c: Add simple #ifdef to prevent compilation
    2669         if the warp hinter isn't active (it shouldn't, still experimental).
    2670 
    2671         * Jamfile, include/freetype/config/ftmodule.h: Remove `gxvalid'
    2672         and `otvalid' from the list of modules that are linked statically
    2673         to a given FreeType library.  Functionality has been moved to the
    2674         `ftvalid' CVS module.
    2675 
    2676         Note also that current Make-based build system still compiles the
    2677         modules though.
    2678 
    2679         * include/freetype/config/ftoption.h (FT_STRICT_ALIASING): New macro
    2680         which controls the definitions of the memory management functions to
    2681         avoid warnings with recent versions of GCC.  This macro is only here
    2682         to be disabled, in case we detect problems with the new scheme.
    2683 
    2684         NOTE: Disable macro to use the memory debugger -- this will be fixed
    2685               later!
    2686 
    2687         * include/freetype/internal/ftmemory.h, src/base/ftutil.c (FT_Alloc,
    2688         FT_QAlloc, FT_Realloc, FT_QRealloc, FT_Free) [FT_STRICT_ALIASING]:
    2689         New versions.
    2690 
    2691 
    2692         * builds/win32/visualc/freetype.dsp: Updating project file to
    2693         define FT2_BUILD_LIBRARY, and remove gxvalid + otvalid modules from
    2694         compilation.
    2695 
    2696 
    2697         * builds/freetype.mk (FT_CFLAGS), Jamfile (DEFINES): Define the
    2698         macro FT2_BUILD_LIBRARY when compiling the library.
    2699 
    2700         * include/freetype/config/ftheader.h: Remove inclusions of internal
    2701         headers except if the macro FT2_BUILD_LIBRARY is defined.
    2702 
    2703 
    2704         * include/freetype/internal/psaux.h (AFM_KernPair, AFM_TrackKern,
    2705         AFM_FontInfo): Move structure declarations to...
    2706         * include/freetype/internal/t1types.h: This file.
    2707 
    2708 
    2709         * (many files): Fix compiler warnings.
    2710         Various minor reorganizations.
    2711 
    2712 
    2713         * src/cff/cffload.c (cff_font_done): Don't free static array
    2714         `subfonts'.
    2715 
    2716         * src/otvalid/otvcommn.c (otv_ClassDef_validate),
    2717         src/otvalid/otvgpos.c (otv_x_sxy): Fix debugging information.
    2718 
    2719 
    2720         Get rid of writable static variables (i.e., the string table) in
    2721         afmparse, and fix compilation in FT2_MULTI mode.
    2722 
    2723         * src/psaux/afmparse.c: Include ft2build.h and FT_FREETYPE_H.
    2724         (AFM_MAX_ARGUMENTS): Define...
    2725         * src/psaux/afmparse.h: Here.
    2726         * src/psaux/Jamfile (_sources): Add afmparse.
    2727 
    2728         * src/psaux/psconv.c: Include psconv.h.
    2729 
    2730         * src/type1/t1afm.c: Don't include FT_INTERNAL_TYPE1_TYPES_H but
    2731         FT_INTERNAL_POSTSCRIPT_AUX_H.
    2732         * src/type1/t1afm.h: Include FT_INTERNAL_TYPE1_TYPES_H.
    2733 
    2734 2006-01-23  Chia-I Wu  <b90201047@ntu.edu.tw>
    2735 
    2736         * include/freetype/freetype.h (FT_Select_Size): Rename the second
    2737         argument from `idx' to `strike_index'.
    2738         (FT_Size_Request_Type): Add FT_SIZE_REQUEST_TYPE_MAX to the end of
    2739         this enum.
    2740 
    2741         * include/freetype/internal/ftobjs.h (FT_REQUEST_WIDTH,
    2742         FT_REQUEST_HEIGHT): New macros to get the width and height of a
    2743         request, in fractional pixels.
    2744 
    2745         * include/freetype/internal/ftobjs.h (FT_Select_Metrics,
    2746         FT_Request_Metrics), src/base/ftobjs.c (FT_Select_Metrics,
    2747         FT_Request_Metrics): New base functions to set the font metrics.  They
    2748         were part of FT_Select_Size/FT_Request_Size and are made independent
    2749         functions so that metrics are not set again and again.
    2750 
    2751         * src/base/ftobjs.c (FT_Select_Size, FT_Request_Size): Metrics are set
    2752         only when driver's size_select/size_request is NULL.  That is, drivers
    2753         should set the metrics themselves.
    2754         (FT_Match_Size): Round before matching.  This was what we did and it
    2755         does cause some problems without rounding.
    2756 
    2757         * src/cff/cffobjs.c (cff_size_select), src/truetype/ttdriver.c
    2758         (tt_size_select): Set the font metrics.
    2759         s/index/strike_index/.
    2760         The scaled metrics are always preferred over strikes' metrics, even
    2761         when some strike is selected.  This is done because the strikes'
    2762         metrics are not reliable, e.g., the sign of the descender is wrong for
    2763         some fonts.
    2764 
    2765         * src/cff/cffobjs.c (cff_size_request), src/truetype/ttdriver.c
    2766         (tt_size_request): Set the font metrics.
    2767         Call cff_size_select/tt_size_select when some strike is matched.
    2768 
    2769         * src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/cid/cidobjs.c,
    2770         src/pcf/pcfdrivr.c, src/truetype/ttdriver.c, src/type1/t1objs.c,
    2771         src/type1/t1objs.h, src/type42/t42objs.c, src/winfonts/winfnt.c:
    2772         Set the font metrics.
    2773         s/index/strike_index/.
    2774 
    2775         * src/tools/test_afm.c, src/psaux/psconv.c: Older versions of these
    2776         files were committed.  Just a catch-up.
    2777         (PS_Conv_ToFixed): Remove the `goto'.
    2778         (PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Speed up a little.
    2779 
    2780         * src/sfnt/ttsbit.c (tt_face_load_sbit_strikes,
    2781         tt_face_load_strike_metrics), src/sfnt/ttsbit0.c
    2782         (tt_face_load_sbit_strikes, tt_face_load_strike_metrics): The
    2783         advertised metrics in `available_sizes' are different from those
    2784         actually used.
    2785 
    2786 2006-01-23  Chia-I Wu  <b90201047@ntu.edu.tw>
    2787 
    2788         * src/psaux/psaux.c src/psaux/psauxmod.c src/type1/t1driver.c: Make
    2789         AFM parser optional, controlled by `T1_CONFIG_OPTION_NO_AFM'.
    2790 
    2791 2006-01-22  Werner Lemberg  <wl@gnu.org>
    2792 
    2793         * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
    2794         `texinfo' CVS module at savannah.gnu.org.
    2795 
    2796 2006-01-21  Werner Lemberg  <wl@gnu.org>
    2797 
    2798         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add afwarp.c.
    2799 
    2800         * src/autofit/afloader.c (af_loader_load_g): Move AF_USE_WARPER up
    2801         to avoid compiler warnings.
    2802 
    2803         * src/autofit/afwarp.c (af_warper_compute_line_best): Remove
    2804         shadowing variable declarations.
    2805         Fix warning parameters and replace printf with AF_LOG.
    2806         (af_warper_compute): Remove unused variable.
    2807 
    2808 2006-01-20  David Turner  <david@freetype.org>
    2809 
    2810         Adding experimental implementation of `warp hinting' (new hinting
    2811         algorithm for gray-level and LCD rendering).  It is disabled by
    2812         default, you need to #define AF_USE_WARPER in aftypes.h.
    2813 
    2814         * src/autofit/afhints.c (af_glyph_hints_scale_dim) [AF_USE_WARPER]:
    2815         New function.
    2816         * src/autofit/afhints.h: Updated.
    2817 
    2818         * src/autofit/aflatin.c [AF_USE_WARPER]: Include afwarp.h.
    2819         (af_latin_hints_init) [AF_USE_WARPER]: Reset mode to
    2820         FT_RENDER_MODE_NORMAL if an LCD mode is selected.
    2821         (af_latin_hints_apply) [AF_USE_WARPER]: Call af_warper_compute
    2822         appropriately.
    2823 
    2824         * src/autofit/afloader.c (af_loader_load_g) [!AF_USER_WARPER]:
    2825         Isolate code for adjusting metrics.
    2826 
    2827         * src/autofit/aftypes.h (AF_USE_WARPER): New macro (commented out by
    2828         default).
    2829 
    2830         * src/autofit/afwarp.c, src/autofit/afwarp.h: New files.
    2831 
    2832         * src/autofit/autofit.c [AF_USE_WARPER]: Include afwarp.c.
    2833 
    2834         * src/autofit/Jamfile (_sources): Add afwarp.
    2835 
    2836 2006-01-19  David Turner  <david@freetype.org>
    2837 
    2838         * src/sfnt/ttsbit0.c (tt_face_load_strike_metrics): Fix small bug
    2839         that prevented compilation when FT_OPTIMIZE_MEMORY is defined.
    2840 
    2841 2006-01-19  Brian Weed  <bw@imaginengine.com>
    2842 
    2843         * builds/win32/visualc/freetype.dsp: Updated.
    2844 
    2845 2006-01-17  Werner Lemberg  <wl@gnu.org>
    2846 
    2847         Use pscmap service in CFF module.
    2848 
    2849         * src/cff/cffcmap.c (cff_cmap_uni_pair_compare): Removed.
    2850         (cff_sid_to_glyph_name): New function.
    2851         (cff_cmap_unicode_init, cff_cmap_unicode_done,
    2852         cff_cmap_unicode_char_index, cff_cmap_unicode_char next): Use pscmap
    2853         service.
    2854         (cff_cmap_unicode_class_rec): Updated.
    2855         * src/cff/cffcmap.h (CFF_CMapUnicode, CFF_CMap_UniPair): Removed.
    2856 
    2857 
    2858         * src/psnames/psmodule.c (ps_unicodes_char_next): Fix `unicode'
    2859         return value.
    2860 
    2861 
    2862         * src/psaux/afmparse.c (afm_parser_read_vals): Use double casting
    2863         to avoid compiler warnings regarding type-punning.
    2864 
    2865 2006-01-16  Chia-I Wu  <b90201047@ntu.edu.tw>
    2866 
    2867         * src/psaux/afmparse.c, src/psaux/afmparse.h: New files which
    2868         implement an AFM parser.
    2869 
    2870         * src/psaux/psconv.c, src/psaux/psconv.h: New files to provide
    2871         conversion functions (e.g., PS real number => FT_Fixed) for the
    2872         PS_Parser and AFM_Parser.  Some of the functions are taken, with
    2873         some modifications, from the file psobjs.c.
    2874 
    2875         * src/psaux/psobjs.c: Use functions from psconv.c.
    2876 
    2877         * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Add
    2878         `AFM_Parser' to the `psaux' service.
    2879 
    2880         * src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Include
    2881         those new files.
    2882 
    2883         * src/tools/test_afm.c: A test program for AFM parser.
    2884 
    2885         * include/freetype/internal/services/svkern.h: New file providing a
    2886         `Kerning' service.  It is currently only used to get the track
    2887         kerning information.
    2888 
    2889         * include/freetype/internal/ftserv.h (FT_SERVICE_KERNING_H): New
    2890         macro.
    2891 
    2892         * src/type1/t1driver.c, src/type1/t1objs.c, src/type1/t1afm.c,
    2893         src/type1/t1afm.h: Update to use the AFM parser.
    2894         Provide the `Kerning' service.
    2895 
    2896         * include/freetype/freetype.h, src/base/ftobjs.c: New API
    2897         `FT_Get_Track_Kerning'.
    2898 
    2899 2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>
    2900 
    2901         * include/freetype/internal/ftobjs.h, src/base/ftobjs.c,
    2902         src/bdf/bdfdrivr.c, src/cff/cffgload.c, src/cid/cidgload.c,
    2903         src/pcf/pcfdrivr.c, src/type1/t1gload.c, src/winfonts/winfnt.c:
    2904         s/ft_fake_vertical_metrics/ft_synthesize_vertical_metrics/.
    2905 
    2906         * docs/CHANGES: Mention that vertical metrics are synthesized for
    2907         fonts not having this info.
    2908 
    2909 2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>
    2910 
    2911         * include/freetype/internal/ftobjs.h (ft_fake_vertical_metrics),
    2912         src/base/ftobjs.c (ft_fake_vertical_metrics): New function to fake
    2913         vertical metrics.
    2914 
    2915         * src/cff/cffgload.c, src/cid/cidgload.c, src/pcf/pcfdrivr.c,
    2916         src/type1/t1gload.c, src/winfonts/winfnt.c: Fake vertical metrics,
    2917         which are monotone.
    2918 
    2919         * src/truetype/ttgload.c (compute_glyph_metrics): Some fixes and
    2920         formattings in vertical metrics faking.  There is still room for
    2921         improvements (and so does the CFF module).
    2922 
    2923 2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>
    2924 
    2925         * src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/pcf/pcfdrivr.c
    2926         (PCF_Glyph_Load), src/winfonts/winfnt.c (FNT_Load_Glyph): Don't set
    2927         the linear advance fields as they are only used by the outline
    2928         glyphs.
    2929 
    2930         * include/freetype/freetype.h: Documentation updates and
    2931         clarifications.
    2932         The meaning of FT_LOAD_FORCE_AUTOHINT is changed so that no real
    2933         change need be made to the code.
    2934 
    2935         * src/base/ftobjs.c (FT_Load_Glyph): Resolve flag dependencies and
    2936         decide whether to use the auto-hinter according to documentation.
    2937         There should to be no real difference.
    2938         Some checks (e.g., is text height positve?) after the glyph is
    2939         loaded.
    2940         (FT_Select_Size, FT_Request_Size): Scales are set to wrong values.
    2941         Be careful that scales won't be negative.
    2942 
    2943 2006-01-14  Chia-I Wu  <b90201047@ntu.edu.tw>
    2944 
    2945         * docs/CHANGES: Mention the size selection change.
    2946 
    2947         * src/bdf/bdfdrivr.c (BDF_Size_Request, BDF_Size_Select),
    2948         src/pcf/pcfdrivr.c (PCF_Size_Request, PCF_Size_Select),
    2949         src/winfonts/winfnt.c (FNT_Size_Request, FNT_Size_Select): Do size
    2950         matching for requests of type NOMINAL and REAL_DIM.
    2951 
    2952         * src/winfonts/winfnt.c (FNT_Face_Init): Print trace message when
    2953         `pixel_height' is used for nominal height.
    2954 
    2955         * src/base/ftobjs.c (FT_Request_Size): Call `FT_Match_Size' if the
    2956         face is bitmap only and driver doesn't provide `request_size'.  This
    2957         is added merely for completion as no driver satisfies the conditions.
    2958 
    2959 2006-01-13  Chia-I Wu  <b90201047@ntu.edu.tw>
    2960 
    2961         Introduce new size selection interface.
    2962 
    2963         * include/freetype/internal/ftdriver.h (struct FT_Driver_ClassRec):
    2964         Replace `set_char_sizes' and `set_pixel_sizes' by `request_size' and
    2965         `select_size'.
    2966 
    2967         * include/freetype/freetype.h (FT_Select_Size, FT_Size_Request_Type,
    2968         FT_Size_Request, FT_Request_Size, FT_Select_Size), src/base/ftobjs.c
    2969         (FT_Select_Size, FT_Request_Size): API additions to export the new
    2970         size selection interface.
    2971 
    2972         * src/base/ftobjs.c (FT_Set_Char_Size, FT_Set_Pixel_Sizes): Use
    2973         `FT_Request_Size'.
    2974 
    2975         * include/freetype/internal/ftobjs.h (FT_Match_Size),
    2976         src/base/ftobjs.c (FT_Match_Size): New function to match a size
    2977         request against `available_sizes'.  Drivers supporting bitmap strikes
    2978         can use this function to implement `request_size'.
    2979 
    2980         * src/bdf/bdfdrivr.c, src/cid/cidobjs.c, src/cid/cidobjs.h,
    2981         src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/type1/t1driver.c,
    2982         src/type1/t1objs.c, src/type1/t1objs.h, src/type42/t42drivr.c,
    2983         src/type42/t42objs.c, src/type42/t42objs.h, src/winfonts/winfnt.c:
    2984         Update to new size selection interface.
    2985 
    2986         * src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffobjs.c,
    2987         src/cff/cffobjs.h, src/truetype/ttdriver.c, src/truetype/ttgload.c,
    2988         src/truetype/ttobjs.c, src/truetype/ttobjs.h: Update to new size
    2989         selection interface.
    2990         Make `strike_index' FT_ULong and always defined.
    2991         Use `load_strike_metrics' provided by SFNT interface.
    2992 
    2993 2006-01-13  Chia-I Wu  <b90201047@ntu.edu.tw>
    2994 
    2995         * include/freetype/internal/sfnt.h (SFNT_Interface): New method
    2996         `load_strike_metrics' used to load the strike's metrics.
    2997 
    2998         * src/sfnt/sfdriver.c, src/sfnt/ttsbit.c, src/sfnt/ttsbit.h,
    2999         src/sfnt/ttsbit0.c: New function `tt_face_load_strike_metrics'.
    3000 
    3001         * src/pfr/pfrobjs.c (pfr_face_init): Set FT_Bitmap_Size correctly.
    3002 
    3003         * src/winfonts/winfnt.c (FNT_Face_Init): Use `nominal_point_size' for
    3004         nominal size unless it is obviously incorrect.
    3005 
    3006         * include/freetype/freetype.h (FT_Bitmap_Size): Update the comments on
    3007         FNT driver.
    3008 
    3009 2006-01-12  Werner Lemberg  <wl@gnu.org>
    3010 
    3011         Prepare use of pscmap service within CFF module.
    3012 
    3013         * include/freetype/internal/services/svpscmap.h: Include
    3014         FT_INTERNAL_OBJECTS_H.
    3015         (PS_Unicode_Index_Func): Removed.  Unused.
    3016         (PS_Macintosh_Name_Func): Renamed to...
    3017         (PS_Macintosh_NameFunc): This.
    3018         Update all callers.
    3019         (PS_Adobe_Std_Strings_Func): Renamed to...
    3020         (PS_Adobe_Std_StringsFunc): This.
    3021         Update all callers.
    3022         (PS_UnicodesRec): This is the former `PS_Unicodes' structure.
    3023         Add `cmap' member.
    3024         Update all callers.
    3025         (PS_Unicodes): This is now a typedef'd pointer to PS_UnicodesRec.
    3026         Update all callers.
    3027         (PS_Glyph_NameFunc): New typedef.
    3028         (PS_Unicodes_InitFunc): Change arguments to expect a function
    3029         and generic data pointer which returns a glyph name from a given
    3030         index.
    3031 
    3032         * src/psnames/psmodule.c (ps_unicodes_init, ps_unicodes_char_index,
    3033         ps_unicodes_char_next, pscmaps_interface): Updated.
    3034 
    3035         * include/freetype/internal/t1types.h (T1_FaceRec): Updated.
    3036 
    3037         * src/psaux/t1cmap.h (T1_CmapStdRec): Updated.
    3038         (T1_CmapUnicode, T1_CmapUnicodeRec): Removed.
    3039 
    3040         * src/psaux/t1cmap.c (t1_get_glyph_name): New callback function.
    3041         (t1_cmap_unicode_init, t1_cmap_unicode_done,
    3042         t1_cmap_unicode_char_index, t1_cmap_unicode_char_next,
    3043         t1_cmap_unicode_class_rec): Updated.
    3044 
    3045         * src/type42/t42types.h (T42_FaceRec): Updated.
    3046 
    3047 2006-01-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3048 
    3049         * include/freetype/ftmac.h: Add declaration of new functions
    3050         FT_New_Face_From_FSRef and FT_GetFile_From_Mac_ATS_Name that
    3051         were introduced by the jumbo patch on  2006-01-11.
    3052 
    3053 2006-01-11  Werner Lemberg  <wl@gnu.org>
    3054 
    3055         Fix Savannah bug #15056 and use pscmap service in psaux module.
    3056 
    3057         * include/freetype/internal/services/svpscmap.h (PS_UniMap): Use
    3058         FT_UInt32 for `glyph_index'.
    3059         (PS_Unicodes_InitFunc): Use FT_String for `glyph_names'.
    3060         (PS_Unicodes_CharIndexFunc): Use FT_UInt32 for `unicode'.
    3061         (PS_Unicodes_CharNextFunc): Make second argument a pointer to
    3062         FT_UInt32.
    3063 
    3064         * src/psnames/psmodule.c (VARIANT_BIT, BASE_GLYPH): New macros.
    3065         (ps_unicode_value): Set VARIANT_BIT in return value if glyph is a
    3066         variant glyph (this is, it has non-leading `.' in its name).
    3067         (compare_uni_maps): Sort base glyphs before variant glyphs.
    3068         (ps_unicodes_init): Use FT_String for `glyph_names' argument.
    3069         Reallocate only if number of used entries is much smaller.
    3070         Updated to handle variant glyphs.
    3071         (ps_unicodes_char_index, ps_unicodes_char_next): Prefer base glyphs
    3072         over variant glyphs.
    3073         Simplify code.
    3074 
    3075         * src/psaux/t1cmap.c (t1_cmap_uni_pair_compare): Removed.
    3076         (t1_cmap_unicode_init, t1_cmap_unicode_char_index,
    3077         t1_cmap_unicode_char_next): Use pscmap service.
    3078         (t1_cmap_unicode_done): Updated.
    3079 
    3080         * src/psaux/t1cmap.h (T1_CMapUniPair): Removed.
    3081         (T1_CMapUnicode): Use PS_Unicodes structure.
    3082 
    3083 2006-01-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3084 
    3085         Jumbo patch to fix `deprecated' warning of cross-build for Tiger on
    3086         Intel, as reported by Sean McBride <sean@rogue-research.com> on
    3087         2005-08-24.
    3088 
    3089         * src/base/ftmac.c: Heavy change to build without deprecated Carbon
    3090         functions on Tiger.
    3091 
    3092         * builds/unix/configure.ac: Add options and autochecks for Carbon
    3093         functions availabilities, for MacOS X.
    3094 
    3095         * builds/mac/ascii2mpw.py: Add converter for character `\305'.
    3096         * builds/mac/FreeType.m68k_{far|cfm}.make.txt: Add conditional
    3097         macros to avoid unavailable functions.
    3098         ftmac.c must be compiled without `-strict ansi', because it disables
    3099         cpp macro to use ToolBox system call.
    3100 
    3101         * builds/mac/FreeType.ppc_{classic|carbon}.make.txt: Add conditional
    3102         macros to avoid unavailable functions.
    3103 
    3104         * builds/mac/README: Detailed notes on function availabilities.
    3105 
    3106         * docs/CHANGES: Notes about (possible) incompatibilities.
    3107 
    3108 2006-01-08  Werner Lemberg  <wl@gnu.org>
    3109 
    3110         * docs/CHANGES: Updated.
    3111 
    3112 2006-01-08  Huw D M Davies  <h.davies1@physics.ox.ac.uk>
    3113 
    3114         * include/freetype/ftmodapi.h (FT_Module_Get_Flags): New
    3115         declaration.
    3116 
    3117         * src/base/ftobjs.c (FT_Module_Get_Flags): New function.
    3118 
    3119 2006-01-07  Werner Lemberg  <wl@gnu.org>
    3120 
    3121         * src/pcf/pcfread.c (pcf_get_bitmaps): Remove unused variable
    3122         `bitmaps'.  Reported by Yu Lei <yulei0@gmail.com>.
    3123 
    3124         * src/base/ftutil.c (ft_highpow2): s/FT_BASE/FT_BASE_DEF/.
    3125         Reported by Niels Boldt <nielsboldt@gmail.com>.
    3126 
    3127 2005-12-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3128 
    3129         * src/sfnt/sfnt/ttbdf.c: Add newline '\n' to the end of file, for
    3130         MPW compiler.
    3131 
    3132 2005-12-23  David Turner  <david@freetype.org>
    3133 
    3134         * Jamfile (RefDoc), docs/reference/README: Fix it so that `jam
    3135         refdoc' works correctly to generate the API reference in
    3136         `docs/reference'.
    3137 
    3138         * src/tools/docmaker/tohtml.py (print_html_field,
    3139         print_html_field_list): Update to output nicer fields lists in the
    3140         API reference.
    3141 
    3142         * src/base/ftobjs.c (FT_Load_Glyph): FT_LOAD_TARGET_LIGHT now
    3143         forces auto-hinting.
    3144 
    3145         * freetype/freetype.h: Updating the documentation for
    3146         FT_LOAD_TARGET_XXX and FT_Render_Mode values.
    3147 
    3148 2005-12-23  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3149 
    3150         * src/base/ftmac.c (FT_New_Face_From_Suitcase): Count scalable faces
    3151         in supported formats (sfnt, LWFN) only, and ignore bitmap faces in
    3152         unsupported formats (fbit, NFNT).  The number of available faces are
    3153         passed via face->num_faces.  If bitmap faces are embedded in sfnt
    3154         resource, face->num_fixed_size is correctly set.  In public API,
    3155         FT_New_Face() and FT_New_Face_From_FSSpec() count the faces as
    3156         FT_GetFile_From_Mac_Name(), which ignores NFNT resources.
    3157 
    3158         * doc/CHANGES: Mention the changes.
    3159 
    3160 2005-12-17  Chia-I Wu  <b90201047@ntu.edu.tw>
    3161 
    3162         * src/truetype/ttinterp.c (Update_Max): Set current size of buffer
    3163         correctly (so that memory debug system won't panic).
    3164 
    3165 2005-12-16  Chia-I Wu  <b90201047@ntu.edu.tw>
    3166 
    3167         * include/freetype/internal/ftobjs.h (ft_glyphslot_grid_fit_metrics),
    3168         src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Removed.
    3169 
    3170         * src/base/ftobjs.c (ft_recompute_scaled_metrics): Do not round.
    3171 
    3172         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
    3173         (cid_slot_load_glyph), src/truetype/ttgload.c (compute_glyph_metrics),
    3174         src/type1/t1gload.c (T1_Load_Glyph): Do not round glyph metrics.
    3175 
    3176         * doc/CHANGES: Mention the changes.
    3177 
    3178 2005-12-13  David Turner  <david@freetype.org>
    3179 
    3180         Change the implementation of the LIGHT hinting mode to completely
    3181         disable horizontal hinting.  This is an experimental effort to
    3182         integrate David Chester's latest patch without affecting the other
    3183         hinting modes as well.
    3184 
    3185         Note that this doesn't force auto-hinting for all fonts, however.
    3186 
    3187         * src/autofit/afhints.c (af_glyph_hints_reload): Don't set
    3188         scaler_fiags here but...
    3189         (af_glyph_hints_rescale): Here.
    3190 
    3191         * src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal
    3192         hinting for `light' hinting mode.
    3193 
    3194 
    3195         * Jamfile: Small fix to ensure that ftexport.sym is placed into the
    3196         same location as other generated objects (i.e., within the `objs'
    3197         directory of the current directory).
    3198 
    3199 
    3200         Add support for an embedded `BDF ' table within SFNT-based bitmap
    3201         font files.  This is used to store atoms & properties from the
    3202         original BDF fonts that were used to generate the font file.
    3203 
    3204         The feature is controlled by TT_CONFIG_OPTION_BDF within
    3205         `ftoption.h' and is used to implement FT_Get_BDF_Property for these
    3206         font files.
    3207 
    3208         At the moment, this is still experimental, the BDF table format
    3209         isn't cast into stone yet.
    3210 
    3211         * include/freetype/config/ftoption.h (TT_CONFIG_OPTION_BDF): New
    3212         macro.
    3213 
    3214         * include/freetype/config/ftstdlib.h (ft_memchr): New macro.
    3215 
    3216         * include/freetype/internal/tttypes.h (TT_BDFRec, TT_BDF)
    3217         [TT_CONFIG_OPTION_BDF]: New structure.
    3218         (TT_FaceRec) [TT_CONFIG_OPTION_BDF]: New member `bdf'.
    3219 
    3220         * include/freetype/ttags.h (TTAG_BDF): New macro.
    3221 
    3222         * src/sfnt/Jamfile (_sources): Add ttbdf.
    3223 
    3224         * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttbdf.c.
    3225 
    3226         * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h and
    3227         FT_SERVICE_BDF_H.
    3228         (sfnt_get_charset_it) [TT_CONFIG_OPTION_BDF]: New function.
    3229         (sfnt_service_bdf) [TT_CONFIG_OPTION_BDF]: New service.
    3230         (sfnt_servives) [TT_CONFIG_OPTION_BDF]: Add sfnt_service_bdf.
    3231 
    3232         * src/sfnt/sfnt.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.c.
    3233 
    3234         * src/sfnt/sfobjs.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h.
    3235         (sfnt_done_face) [TT_CONFIG_OPTION_BDF]: Call
    3236         tt_face_free_bdf_props.
    3237 
    3238         * src/sfnt/ttbdf.h, src/sfnt/ttbdf.c: New files.
    3239 
    3240 2005-12-07  Werner Lemberg  <wl@gnu.org>
    3241 
    3242         * src/sfnt/sfobjc.c (sfnt_init_face): Move tag check to...
    3243         * src/sfnt/ttload.c (sfnt_init): Here, before handling TTCs.
    3244 
    3245 2005-12-06  Chia-I Wu  <b90201047@ntu.edu.tw>
    3246 
    3247         * src/truetype/ttobjs.c (tt_size_init): size->ttmetrics.valid is
    3248         initialized twice.
    3249         size->strike_index is not initialized.
    3250 
    3251 2005-12-02  Taek Kwan(TK) Lee  <taeklee@gmail.com>
    3252 
    3253         * src/type42/t42objs.c (T42_Face_Init): Replace call to
    3254         FT_New_Memory_Face with call to FT_Open_Face to pass `params'.
    3255 
    3256 2005-11-30  Werner Lemberg  <wl@gnu.org>
    3257 
    3258         * docs/CHANGES: Document ftdump's `-v' option.
    3259         Document latest charmap code changes.
    3260 
    3261         * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h:
    3262         s/TT_CMAP_FLAG_OVERLAPPED/TT_CMAP_FLAG_OVERLAPPING/.
    3263 
    3264 2005-11-30  Chia-I Wu  <b90201047@ntu.edu.tw>
    3265 
    3266         * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary,
    3267         tt_cmap12_char_map_binary): Fix compiler warnings.
    3268 
    3269 2005-11-29  Chia-I Wu  <b90201047@ntu.edu.tw>
    3270 
    3271         Major update to distinguish between unsorted and overlapping
    3272         segments for cmap format 4.  For overlapping but sorted segments,
    3273         which is previously considered unsorted, we still use binary search.
    3274 
    3275         * src/sfnt/ttcmap.h (TT_CMapRec_): Replace `unsorted' by `flags'.
    3276         (TT_CMAP_FLAG_UNSORTED, TT_CMAP_FLAG_OVERLAPPED): New macros.
    3277 
    3278         * src/sfnt/ttcmap.c (OPT_CMAP4): Removed as it is always defined.
    3279         (TT_CMap4Rec_): Remove `old_charcode' and `table_length'.
    3280         (tt_cmap4_reset): Removed.
    3281         (tt_cmap4_init): Updated accordingly.
    3282         (tt_cmap4_next): Updated accordingly.
    3283         Take care of overlapping segments.
    3284         (tt_cmap4_validate): Make sure the subtable is large enough.
    3285         Do not check glyph_ids because some fonts set the length wrongly.
    3286         Also, if all segments have offset 0, glyph_ids is always invalid.
    3287         It does not cause any problem so far only because the check misses
    3288         equality.
    3289         Distinguish between unsorted and overlapping segments.
    3290         (tt_cmap4_char_map_linear, tt_cmap4_char_map_binary): New functions
    3291         to do `charcode => glyph index' by linear/binary search.
    3292         (tt_cmap4_char_index, tt_cmap4_char_next): Use
    3293         tt_cmap4_char_map_linear and tt_cmap4_char_map_binary.
    3294         (tt_face_build_cmaps): Treat the return value of validator as flags
    3295         for cmap.
    3296 
    3297 2005-11-29  Chia-I Wu  <b90201047@ntu.edu.tw>
    3298 
    3299         * src/sfnt/ttcmap.c (TT_CMap12Rec_, tt_cmap12_init, tt_cmap12_next):
    3300         New structures and functions for fast `next char'.
    3301         (tt_cmap12_char_map_binary): New function to do `charcode => glyph
    3302         index' by binary search.
    3303         (tt_cmap12_char_index, tt_cmap12_char_next): Use
    3304         tt_cmap12_char_map_binary.
    3305         (tt_face_build_cmaps): Check table and offset correctly (equality is
    3306         missing).
    3307 
    3308 2005-11-15  Detlef WÃŒrkner  <TetiSoft@apg.lahn.de>
    3309 
    3310         * builds/amiga/smakefile: Adjusted the compiler options
    3311         to the current sources, now really builds the gxvalid, gzip
    3312         and psnames modules.
    3313 
    3314         * builds/amiga/src/base/ftsystem.c: The assumed Seek() position
    3315         in the file cache was off by one byte which could cause false
    3316         errors in font files.
    3317 
    3318 2005-11-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3319 
    3320         * builds/mac/FreeType.m68k_far.make.txt,
    3321         builds/mac/FreeType.m68k_cfm.make.txt,
    3322         builds/mac/FreeType.ppc_classic.make.txt,
    3323         builds/mac/FreeType.ppc_carbon.make.txt:
    3324         Updated for MPW to build all available modules.
    3325 
    3326 2005-11-21  HÃ¥vard Wall  <haavardw@ifi.uio.no>
    3327 
    3328         * src/bdf/bdfdrivr.c (bdf_interpret_style, BDF_Face_Done): Fix small
    3329         memory leak.
    3330 
    3331 2005-11-21  Werner Lemberg  <wl@gnu.org>
    3332 
    3333         * src/sfnt/ttload.c (sfnt_init): Add tracing message.
    3334 
    3335 2005-11-21  Chia-I Wu  <b90201047@ntu.edu.tw>
    3336 
    3337         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Image_offset was
    3338         added twice to image_start if image_format was 2 or 5.
    3339 
    3340 2005-11-21  Chia-I Wu  <b90201047@ntu.edu.tw>
    3341 
    3342         * src/sfnt/sfobjs.c (sfnt_init_face): Check that format_tag is known
    3343         before loading the table directory.
    3344 
    3345         * src/sfnt/ttload.c (tt_face_load_sfnt_header,
    3346         tt_face_load_directory): Delay sfnt_dir_check from
    3347         tt_face_load_sfnt_header to tt_face_load_directory.
    3348 
    3349 2005-11-20  Chia-I Wu  <b90201047@ntu.edu.tw>
    3350 
    3351         * src/sfnt/ttload.c (sfnt_dir_check): Clean up and return correct
    3352         error code.
    3353         (sfnt_init): New function to fill in face->ttc_header.  A non-TTC font
    3354         is synthesized into a TTC font with one offset table.
    3355         (tt_face_load_sfnt_header): Use sfnt_init.
    3356         Fix an invalid access if the font is TTC and face_index is -1.
    3357 
    3358 2005-11-18  Werner Lemberg  <wl@gnu.org>
    3359 
    3360         * src/sfnt/ttload.c (tt_face_load_metrics): Ignore excess number
    3361         of metrics instead of aborting.  Patch suggested by Derek Noonburg.
    3362 
    3363         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
    3364         (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Scale
    3365         the glyph properly if no hinter is available.
    3366 
    3367         * docs/CHANGES: Mention scaling bug.
    3368 
    3369 2005-11-18  susuzki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3370 
    3371         * include/freetype/ftgxval.h, src/base/ftgxval.c
    3372         (FT_TrueTypeGX_Free, FT_ClassicKern_Free): New functions to free
    3373         buffers allocated by gxvalid module.
    3374         * include/freetype/ftotval.h, src/base/ftotval.c
    3375         (FT_OpenType_Free): New function to free buffer allocated by
    3376         otvalid module.
    3377 
    3378 2005-11-18  Chia-I Wu  <b90201047@ntu.edu.tw>
    3379 
    3380         * builds/unix/ftsystem.c (FT_Stream_Open, FT_New_Memory,
    3381         FT_Done_Memory), builds/vms/ftsystem.c (FT_Stream_Open, FT_New_Memory,
    3382         FT_Done_Memory), builds/win32/ftdebug.c (FT_Message, FT_Panic):
    3383         s/FT_EXPORT/FT_BASE/.
    3384 
    3385 2005-11-17  Detlef WÃŒrkner  <TetiSoft@apg.lahn.de>
    3386 
    3387         * builds/amiga/src/base/ftdebug.c (FT_Trace_Get_Count,
    3388         FT_Trace_Get_Name, FT_Message, FT_Panic),
    3389         builds/amiga/src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory,
    3390         FT_Stream_Open): s/FT_EXPORT/FT_BASE/.
    3391 
    3392 2005-11-17  Detlef WÃŒrkner  <TetiSoft@apg.lahn.de>
    3393 
    3394         * builds/amiga/makefile, builds/amiga/makefile.os4,
    3395         builds/amiga/smakefile,
    3396         builds/amiga/include/freetype/config/ftmodule.h: Updated the Amiga
    3397         build files (added support for the gxvalid module).
    3398 
    3399 2005-11-17  Werner Lemberg  <wl@gnu.org>
    3400 
    3401         Add vertical metrics support to OpenType CFF outlines.  Based on a
    3402         patch from Mike Moening <MikeM@RetekSolutions.com>.
    3403 
    3404         * src/cff/cffgload.c (cff_face_get_vertical_metrics): New function.
    3405         (cff_slot_load): Use cff_face_get_vertical_metrics.
    3406 
    3407         * docs/CHANGES: Updated.
    3408 
    3409 2005-11-17  Chia-I Wu  <b90201047@ntu.edu.tw>
    3410 
    3411         * src/base/ftcalc.c (FT_MulTo64): Commented out.
    3412 
    3413         * include/freetype/internal/ftcalc.h (FT_SqrtFixed),
    3414         src/base/ftcalc.c (FT_SqrtFixed),
    3415         include/freetype/internal/ftdebug.h (FT_Trace_Get_Count,
    3416         FT_Trace_Get_Name, FT_Message, FT_Panic), src/base/ftdebug.c
    3417         (FT_Trace_Get_Count, FT_Trace_Get_Name, FT_Message, FT_Panic),
    3418         include/freetype/internal/ftobjs.h (FT_New_Memory, FT_Done_Memory),
    3419         include/freetype/internal/ftstream.h (FT_Stream_Open),
    3420         src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory, FT_Stream_Open):
    3421         s/FT_EXPORT/FT_BASE/.
    3422 
    3423         * builds/exports.mk: Manually add TT_New_Context to EXPORTS_LIST
    3424         too.
    3425 
    3426 2005-11-15  David Turner  <david@freetype.org>
    3427 
    3428         * src/base/fttrigon.c (ft_trig_prenorm): Fix a bug that created
    3429         invalid computations, resulting in very weird bugs in TrueType
    3430         bytecode hinted fonts.
    3431 
    3432         * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Don't perform a
    3433         structure copy each time.
    3434 
    3435 2005-11-11  Werner Lemberg  <wl@gnu.org>
    3436 
    3437         * src/cache/ftccache.c (FTC_Cache_Clear), src/cache/ftcmanag.c
    3438         (FTC_Manager_Check): Remove FT_EXPORT_DEF tag.
    3439 
    3440         * src/base/ftcalc.c (FT_Add64): Remove FT_EXPORT_DEF tag.
    3441         (FT_Div64by32, FT_Sqrt32): Commented out.  Unused.
    3442 
    3443         * include/freetype/internal/ftcalc.h (SQRT_32): Removed.  Unused.
    3444         (FT_Sqrt32): Commented out.  Unused.
    3445 
    3446         * include/freetype/cache/ftccache.h:
    3447         s/ftc_node_destroy/FTC_Node_Destroy/.
    3448 
    3449         * src/cache/ftccback.h (ftc_node_destroy): New declaration.
    3450 
    3451         * src/cache/ftccache.c (ftc_node_destroy): Use FT_LOCAL_DEF tag.
    3452         (FTC_Node_Destroy): New exported wrapper function for
    3453         ftc_node_destroy.
    3454 
    3455         * src/cache/ftcmanag.c: Include ftccback.c.
    3456 
    3457 2005-11-10  Werner Lemberg  <wl@gnu.org>
    3458 
    3459         * src/autofit/afangles.c, src/autofit/aftypes.h (af_angle_diff):
    3460         Comment out.  Unused.
    3461 
    3462         * builds/exports.mk ($(EXPORTS_LIST)): Add TT_RunIns.
    3463 
    3464 2005-11-10  Christian Biesinger  <cbiesinger@web.de>
    3465 
    3466         * builds/beos/beos.mk: Call beos-def.mk before anything else to
    3467         define the separator.
    3468 
    3469         * builds/unix/unix-cc.in (LINK_LIBRARY): Add `-no-undefined' flag.
    3470 
    3471 2005-11-07  Werner Lemberg  <wl@gnu.org>
    3472 
    3473         * src/type1/t1afm.c (T1_Read_PFM): Zero offset means `no kerning
    3474         table available'.  From Sergey Tolstov <stolstov@esri.com>.
    3475 
    3476 2005-11-03  Ville SyrjÀlÀ  <syrjala@sci.fi>
    3477 
    3478         * src/base/ftobjs.c (FT_Open_Face): Avoid possible memory leak.
    3479 
    3480 2005-11-02  Werner Lemberg  <wl@gnu.org>
    3481 
    3482         Make compiling instructions in docs/CUSTOMIZE work again.
    3483 
    3484         * builds/unix/unix-cc.in (CPPFLAGS): New variable.
    3485         (CFLAGS): Don't include @CPPFLAGS@.
    3486         * builds/freetype.mk (FT_CFLAGS): Add CPPFLAGS.
    3487 
    3488 2005-10-28  David Turner  <david@freetype.org>
    3489 
    3490         Update build system to support the generation of a list of exported
    3491         symbols or Windows .DEF files by parsing the public headers with the
    3492         `apinames' tool located in src/tools/apinames.c.
    3493 
    3494         Only tested on Unix at the moment.  On Windows, the .DEF file is
    3495         generated but isn't used yet to generate a DLL.
    3496 
    3497         * builds/exports.mk: New file.
    3498 
    3499         * builds/freetype.mk: Include exports.mk.
    3500         (dll): New target.
    3501         (clean_project_dos): Fix rule.
    3502 
    3503         * builds/compiler/visualc.mk (TE), builds/dos/dos-def.mk (E),
    3504         builds/os2/os2-def.mk (E), builds/win32/win32-def.mk (E): New
    3505         variables for controlling executable extensions.
    3506 
    3507         * builds/unix/unix-cc.in (EXPORTS_LIST, CCexe),
    3508         builds/win32/w32-bcc.mk, builds/win32/w32-gcc.mk,
    3509         builds/win32/w32-icc.mk, builds/win32/w32-icc.mk,
    3510         builds/win32/w32-mingw32.mk, builds/win32/w32-vcc,
    3511         builds/win32/w32-wat.mk (EXPORTS_LIST, EXPORT_OPTIONS,
    3512         APINAMES_OPTIONS): New targets for controlling the `apinames' tool.
    3513 
    3514         * Jamfile (GenExportSymbols): Updated.
    3515 
    3516 
    3517         * src/pfr/pfrtypes.h, src/pfr/pfrload.c, src/pfr/pfrobjs.c
    3518         [!FT_OPTIMIZE_MEMORY]: Fold memory optimization code into
    3519         FT_OPTIMIZE_MEMORY chunks for better maintainability and simplicity.
    3520 
    3521 
    3522         * src/base/fttrigon.c (ft_trig_prenorm), src/base/ftcalc.c
    3523         (FT_MulFix): Performance optimizations.
    3524 
    3525 
    3526         * include/freetype/internal/ftgloadr.h (FT_GLYPHLOADER_CHECK_P,
    3527         FT_GLYPHLOADER_CHECK_C, FT_GLYPHLOADER_CHECK_POINTS): New macros for
    3528         checking points and contours.  Update callers to use
    3529         FT_GLYPHLOADER_CHECK_POINTS instead of FT_GlyphLoader_CheckPoints
    3530         at profile-detected hot-spots.
    3531 
    3532         * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Set `adjust'
    3533         to 0 to not call `AdjustPoints' every time.
    3534 
    3535 
    3536         * src/autofit/aftypes.h (AF_ANGLE_DIFF): New macro to inline
    3537         FT_Angle_Diff.
    3538 
    3539         * src/autofit/afhints.c (af_direction_compute): Re-implement.
    3540         (af_glyph_hints_compute_inflections, af_glyph_hints_reload): Use
    3541         AF_ANGLE_DIFF to speed up the detection of inflexions.
    3542 
    3543 
    3544         * src/tools/apinames.c: Include <string.h>.
    3545         (OutputFormat): New enumeration.
    3546         (names_dump): Add two parameters to control output format and DLL
    3547         name.
    3548         (names_dump_windef): Removed.  Code folded into `names_dump'.
    3549         (read_header_file): Use isalnum, not isalpha.  Otherwise function
    3550         names with digits aren't read correctly.
    3551         (usage): Updated.
    3552         (main): New option `-o' to control output file name.
    3553         New option `-d' to indicate DLL file name.
    3554         Extend `-w' flag to handle Borland and Watcom compilers and linkers.
    3555 
    3556 2005-10-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3557 
    3558         * builds/mac/ftlib.prj, builds/mac/freetype.mak: Removed.
    3559         ftlib.prj is unmaintained and incompatible with current tree.
    3560         freetype.mak is unrecoverably broken.
    3561 
    3562         * builds/mac/ftlib.prj.xml: Added.
    3563         Generated by Metrowerks CodeWarrior 9.0.
    3564 
    3565         * builds/mac/FreeType.m68k_far.make.txt,
    3566         builds/mac/FreeType.m68k_cfm.make.txt,
    3567         builds/mac/FreeType.ppc_classic.make.txt,
    3568         builds/mac/FreeType.ppc_carbon.make.txt: Added.
    3569         Skeleton files of MPW makefiles.
    3570 
    3571         * builds/mac/ascii2mpw.py: Added.
    3572         Python script to make MPW makefile from skeleton.
    3573 
    3574         * builds/mac/README: Updated.
    3575         Almost rewritten to use new files.
    3576 
    3577 2005-10-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3578 
    3579         * src/base/ftmac.c: Fix invalid casts from NULL to integer typed
    3580         variables.  Advised by David Turner, Masatake YAMATO, Sean McBride,
    3581         and George Williams.
    3582 
    3583 2005-10-27  Werner Lemberg  <wl@gnu.org>
    3584 
    3585         * include/freetype/ftsysmem.h, include/freetype/ftsysio.h: Removed.
    3586         Obsolete.
    3587 
    3588 2005-10-25  Werner Lemberg  <wl@gnu.org>
    3589 
    3590         * src/sfnt/sfdriver.c (sfnt_interface): Move out
    3591         `tt_face_get_kerning' from a #ifdef clause.  Reported by Tony J.
    3592         Ibbs <tibs@sj.co.uk>.
    3593 
    3594 2005-10-23  Werner Lemberg  <wl@gnu.org>
    3595 
    3596         * src/base/ftdbgmem.c (ft_mem_debug_realloc): Make it compile with
    3597         C++.
    3598 
    3599 2005-10-21  David Turner  <david@freetype.org>
    3600 
    3601         * src/base/ftdbgmem.c (ft_mem_table_set, ft_mem_debug_realloc):
    3602         Another realloc memory counting bug fix.
    3603 
    3604         * src/tools/Jamfile: Add missing file.
    3605 
    3606         * src/lzw/Jamfile: Fix incorrect source file reference.
    3607 
    3608 2005-10-20  David Turner  <david@freetype.org>
    3609 
    3610         * src/base/ftdbgmem.c (ft_mem_table_set, ft_mem_table_remove,
    3611         ft_mem_debug_alloc, ft_mem_debug_free, ft_mem_debug_realloc): Fixes
    3612         to better account for memory reallocations.
    3613 
    3614         * src/lzw/ftlzw2.c, src/lzw/ftzopen.h, src/lzw/ftzopen.c,
    3615         src/lzw/rules.mk: First version of LZW loader re-implementation.
    3616         Apparently, this saves about 330 KB of heap memory when loading
    3617         timR24.pcf.Z.
    3618 
    3619 2005-10-20  Chia-I Wu  <b90201047@ntu.edu.tw>
    3620 
    3621         * include/freetype/ftbitmap.h (FT_Bitmap_Copy, FT_Bitmap_Embolden),
    3622         src/base/ftbdf.c (FT_Get_BDF_Property), src/cache/ftcmru.c
    3623         (FTC_MruList_Reset, FTC_MruList_Done, FTC_MruList_Lookup): Fix
    3624         FT_EXPORT/FT_EXPORT_DEF tagging.
    3625 
    3626 2005-10-19  Chia-I Wu  <b90201047@ntu.edu.tw>
    3627 
    3628         * src/truetype/ttgload.c (TT_Load_Glyph): Allow size->ttmetrics to
    3629         be invalid when FT_LOAD_NO_SCALE is set.
    3630 
    3631 2005-10-17  David Turner  <david@freetype.org>
    3632 
    3633         * src/base/ftobjs.c (FT_Open_Face): Don't call FT_New_GlyphSlot and
    3634         FT_New_Size if we are opening a face with face_index < 0 (which is
    3635         only used for testing the format).
    3636 
    3637         * src/gxvalid/gxvmort0.c (gxv_mort_subtable_type0_entry_validate):
    3638         Remove compiler warning.
    3639 
    3640 2005-10-16  David Turner  <david@freetype.org>
    3641 
    3642         * src/tools/apinames.c: Add new tool to extract public API function
    3643         names from header files.
    3644 
    3645 2005-10-05  Werner Lemberg  <wl@gnu.org>
    3646 
    3647         Add FT_FACE_FLAG_HINTER to indicate that a specific font driver has
    3648         a hinting engine of its own.
    3649 
    3650         * include/freetype/freetype.h (FT_FACE_FLAG_HINTER): New macro.
    3651 
    3652         * src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
    3653         (cid_face_init), src/truetype/ttobjs.c (tt_face_init)
    3654         [TT_CONFIG_OPTION_BYTECODE_INTERPRETER], src/type1/t1objs.c
    3655         (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init)
    3656         [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Update face flags.
    3657 
    3658         * docs/CHANGES: Document it.
    3659 
    3660 2005-09-27  Werner Lemberg  <wl@gnu.org>
    3661 
    3662         * builds/unix/freetype2.m4: Add license exception so that the file
    3663         can be used in any other autoconf script.
    3664 
    3665 2005-09-26  David Turner  <david@freetype.org>
    3666 
    3667         * src/autofit/aflatin.c (af_latin_compute_stem_width): Fix bad
    3668         computation of the `vertical' flag, causing ugly things in LCD mode
    3669         and others.
    3670 
    3671 2005-09-23  David Turner  <david@freetype.org>
    3672 
    3673         * src/autofit/aflatin.c (af_latin_hints_init): Fix a bug that
    3674         prevented internal hint mode bitflags from being computed correctly.
    3675 
    3676         * src/base/Jamfile: Adding src/base/ftgxval.c.
    3677 
    3678         * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
    3679         src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c, src/gxvalid/gxvkern.c,
    3680         src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
    3681         src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
    3682         src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
    3683         src/gxvalid/gxvmort5.c, src/gxvalid/gxvmorx.c,
    3684         src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
    3685         src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx5.c,
    3686         src/gxvalid/gxvopbd.c, src/gxvalid/gxvprop.c,
    3687         src/truetype/ttgload.c: Remove _many_ compiler warnings when
    3688         compiling with Visual C++ at maximum level (/W4).
    3689 
    3690         * src/autofit/afangles.c (af_angle_atan): Replaced CORDIC-based
    3691         implementation with one using lookup tables.  This simple thing
    3692         speeds up glyph loading by 18%, according to ftbench!
    3693 
    3694         * src/sfnt/sfdriver.c (sfnt_get_interface): Don't check for
    3695         `get_sfnt' and `load_sfnt' module interfaces.
    3696 
    3697 2005-09-22  Werner Lemberg  <wl@gnu.org>
    3698 
    3699         * docs/CHANGES: Mention SING Glyphlet support.
    3700 
    3701 2005-09-22  David Turner  <david@freetype.org>
    3702 
    3703         * src/base/Jamfile: Disable compilation of ftgxval module
    3704         temporarily.
    3705 
    3706 2005-09-19  David Somers  <dsomers@omz13.com>
    3707 
    3708         * freetype2/src/sfnt/ttload.c (sfnt_dir_check): Modified to allow a
    3709         font to have no `head' table if tables `SING' and `META' are
    3710         present; this is to support `SING Glyphlet'.
    3711 
    3712         `SING Glyphlet' is an extension to OpenType developed by Adobe
    3713         primarily to facilitate adding supplemental glyphs to an OpenType
    3714         font (with emphasis on, but not necessariy limited to, gaiji to a
    3715         CJK font).  A SING Glyphlet Font is an OpenType font that contains
    3716         the outline(s), either in a `glyf' or `CFF' table, for a glyph;
    3717         `cmap', `BASE', and `GSUB' tables are present with the same format
    3718         and functionaliy as a regular OpenType font; there are no `name',
    3719         `head', `OS/2', and `post' tables; there are two new tables, `SING'
    3720         which contains details about the glyphlet, and `META' which contains
    3721         metadata.
    3722 
    3723         Further information on the SING Glyphlet format can be found at:
    3724 
    3725           http://www.adobe.com/products/indesign/sing_gaiji.html
    3726 
    3727         * freetype2/include/freetype/ttags.h (TTAG_SING, TTAG_META): New
    3728         macros for the OpenType tables `SING' and `META'.  These two tables
    3729         are used in SING Glyphlet Format fonts.
    3730 
    3731 2005-09-09  Werner Lemberg  <wl@gnu.org>
    3732 
    3733         * src/sfnt/sfobjs.c (sfnt_load_face): Reactivate code to set
    3734         FT_FACE_FLAG_KERNING which has been commented out erroneously.
    3735 
    3736         * docs/CHANGES: Document it.
    3737 
    3738 2005-09-05  Werner Lemberg  <wl@gnu.org>
    3739 
    3740         Fixes for `make multi' and using C++ compiler.
    3741 
    3742         * gxvalid/gxvcommn.c (gxv_set_length_by_ushort_offset,
    3743         gxv_set_length_by_ulong_offset, gxv_array_getlimits_byte,
    3744         gxv_array_getlimits_ushort): Declare with FT_LOCAL_DEF.
    3745         (gxv_compare_ranges): Make it static.
    3746         (gxv_LookupTable_fmt0_validate, gxv_LookupTable_fmt2_validate,
    3747         gxv_LookupTable_fmt4_validate, gxv_LookupTable_fmt6_validate,
    3748         gxv_LookupTable_fmt8_validate, gxv_LookupTable_validate): Improve
    3749         trace messages.
    3750         (gxv_StateArray_validate, gxv_XStateArray_validate): s/class/clazz/.
    3751         (GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
    3752         GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Move to
    3753         gxvcommn.h.
    3754 
    3755         * gxvalid/gxvcommn.h: Add prototypes for
    3756         gxv_StateTable_subtable_setup, gxv_XStateTable_subtable_setup,
    3757         gxv_XStateTable_validate, gxv_array_getlimits_byte,
    3758         gxv_array_getlimits_ushort, gxv_set_length_by_ushort_offset,
    3759         gxv_set_length_by_ulong_offset, gxv_odtect_add_range,
    3760         gxv_odtect_validate.
    3761         (GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
    3762         GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Moved from
    3763         gxvcommn.c.
    3764 
    3765         * src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
    3766         gxv_bsln_parts_fmt1_validate): Improve trace messages.
    3767 
    3768         * gxvalid/gxvfeat.c: Split off predefined registry stuff to...
    3769         * gxvalid/gxvfeat.h: New file.
    3770 
    3771         * gxvalid/gxvjust.c (gxv_just_wdc_entry_validate): Improve trace
    3772         message.
    3773 
    3774         * gxvalid/gxvkern.c (GXV_kern_Dialect): Add KERN_DIALECT_UNKNOWN.
    3775         (gxv_kern_subtable_fmt1_valueTable_load,
    3776         gxv_kern_subtable_fmt1_subtable_setup,
    3777         gxv_kern_subtable_fmt1_entry_validate): Fix C++ compiler errors.
    3778         (gxv_kern_coverage_validate): Use KERN_DIALECT_UNKWOWN.
    3779         Improve trace message.
    3780         (gxv_kern_validate_generic): Fix C++ compiler error.
    3781         Improve trace message.
    3782         (gxv_kern_validate_classic): Fix C++ compiler error.
    3783 
    3784         * gxvalid/gxvmort0.c (gxv_mort_subtable_type0_validate): Declare
    3785         with FT_LOCAL_DEF.
    3786 
    3787         * gxvalid/gxvmort1.c
    3788         (gxv_mort_subtable_type1_substitutionTable_load,
    3789         gxv_mort_subtable_type1_subtable_setup): Fix C++ compiler errors.
    3790         (gxv_mort_subtable_type1_substTable_validate): Improve trace
    3791         message.
    3792         (gxv_mort_subtable_type1_validate): Declare with FT_LOCAL_DEF.
    3793 
    3794         * gxvalid/gxvmort2.c (gxv_mort_subtable_type2_opttable_load,
    3795         gxv_mort_subtable_type2_subtable_setup,
    3796         gxv_mort_subtable_type2_ligActionOffset_validate,
    3797         gxv_mort_subtable_type2_ligatureTable_validate): Fix C++ compiler
    3798         errors.
    3799         (gxv_mort_subtable_type2_validate): Declare with FT_LOCAL_DEF.
    3800 
    3801         * gxvalid/gxvmort4.c (gxv_mort_subtable_type4_validate): Declare
    3802         with FT_LOCAL_DEF.
    3803 
    3804         * gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup,
    3805         gxv_mort_subtable_type5_InsertList_validate): Fix C++ compiler
    3806         errors.
    3807         (gxv_mort_subtable_type5_validate): Declare with FT_LOCAL_DEF.
    3808 
    3809         * gxvalid/gxvmort.c: Include gxvfeat.h.
    3810         (gxv_mort_featurearray_validate, gxv_mort_coverage_validate):
    3811         Declare with FT_LOCAL_DEF.
    3812         (gxv_mort_subtables_validate, gxv_mort_validate): Improve trace
    3813         messages.
    3814 
    3815         * gxvalid/gxvmort.h (gxv_mort_feature_validate): Remove.
    3816 
    3817         * gxvalid/gxvmorx0.c (gxv_morx_subtable_type0_validate): Declare
    3818         with FT_LOCAL_DEF.
    3819 
    3820         * gxvalid/gxvmorx1.c
    3821         (gxv_morx_subtable_type1_substitutionTable_load,
    3822         gxv_morx_subtable_type1_subtable_setup,
    3823         gxv_morx_subtable_type1_entry_validate,
    3824         gxv_morx_subtable_type1_substitutionTable_validate): Fix C++
    3825         compiler errors.
    3826         (gxv_morx_subtable_type1_validate): Declare with FT_LOCAL_DEF.
    3827 
    3828         * gxvalid/gxvmorx2.c (gxv_morx_subtable_type2_opttable_load,
    3829         gxv_morx_subtable_type2_subtable_setup,
    3830         gxv_morx_subtable_type2_ligActionIndex_validate,
    3831         gxv_morx_subtable_type2_ligatureTable_validate): Fix C++ compiler
    3832         errors.
    3833         (gxv_morx_subtable_type2_validate): Declare with FT_LOCAL_DEF.
    3834         Fix typo.
    3835 
    3836         * gxvalid/gxvmorx4.c (gxv_morx_subtable_type4_validate): Declare
    3837         with FT_LOCAL_DEF.
    3838 
    3839         * gxvalid/gxvmorx5.c (gxv_morx_subtable_type5_insertionGlyph_load,
    3840         gxv_morx_subtable_type5_subtable_setup): Fix C++ compiler error.
    3841         (gxv_morx_subtable_type5_validate): Declare with FT_LOCAL_DEF.
    3842 
    3843         * gxvalid/gxvmorx.c (gxv_morx_subtables_validate,
    3844         gxv_morx_validate): Improve trace message.
    3845 
    3846         * gxvalid/gxvopbd.c (gxv_opbd_LookupFmt4_transit): Fix compiler
    3847         warnings.
    3848         (gxv_opbd_validate): Improve trace message.
    3849 
    3850         * gxvalid/gxvprop.c: Decorate constants with `U' and `L' where
    3851         appropriate.
    3852         (gxv_prop_zero_advance_validate, gxv_prop_validate): Improve trace
    3853         message.
    3854 
    3855         * gxvalid/gxvtrak.c (gxv_trak_trackTable_validate): Remove unused
    3856         parameter.  Update all callers.
    3857         (gxv_trak_validate): Improve trace message.
    3858 
    3859         * rules.mk (GXV_DRV_H): Add gxvfeat.h.
    3860 
    3861 2005-09-01  Werner Lemberg  <wl@gnu.org>
    3862 
    3863         * src/gxvalid/gxvbsln.c (GXV_BSLN_VALUE_EMPTY): Add `U'.
    3864 
    3865         * src/gxvalid/gxmort1.c (GXV_MORT_SUBTABLE_TYPE1_HEADER_SIZE),
    3866         src/gxvalid/gxmort2.c (GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE): Fix
    3867         typo.
    3868 
    3869         * src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
    3870         src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx4.c,
    3871         src/gxvalid/gxvmorx5.c, src/gxvalid/gxvmort.c: Improve trace
    3872         messages.
    3873         Decorate constants with `U' and `L' where appropriate.
    3874         Fix compiler warnings.
    3875 
    3876 2005-08-31  Werner Lemberg  <wl@gnu.org>
    3877 
    3878         * src/truetype/ttgload.c (load_truetype_glyph): Fix typo.
    3879 
    3880         * src/gxvalid/gxvbsln.c (gxv_bsln_validate): Fix trace message.
    3881 
    3882         * src/gxvalid/gxvcommn.c (gxv_odtect_add_range): Use `const'.
    3883 
    3884         * src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c,
    3885         src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmod.c,
    3886         src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
    3887         src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
    3888         src/gxvalid/gxvmort5.c, src/gxvalid/gxvmort.c: Improve trace
    3889         messages.
    3890         Decorate constants with `U' and `L' where appropriate.
    3891         Fix compiler warnings.
    3892 
    3893 2005-08-30  Werner Lemberg  <wl@gnu.org>
    3894 
    3895         * src/gxvalid/README: Revised.
    3896         * src/gxvalid/gxvbsln.c: Fix compiler warnings.
    3897         * src/gxvalid/gxvcommn.c: Fix compiler warnings.
    3898         (gxv_XEntryTable_validate, gxv_compare_ranges): Remove unused
    3899         parameter.  Update all callers.
    3900         Improve trace messages.
    3901         Some formatting.
    3902 
    3903 2005-08-29  Werner Lemberg  <wl@gnu.org>
    3904 
    3905         * include/freetype/freetype.h, include/freetype/ftchapters.h: Add
    3906         a preliminary section with some explanations about user allocation.
    3907 
    3908         * src/tools/docmaker/tohtml.py (HtmlFormatter.section_enter):
    3909         Don't abort if there are no data types, functions, etc., in a
    3910         section.
    3911         Print synopsis only if we have a data type, function, etc.
    3912 
    3913         * docs/INSTALL.ANY, docs/INSTALL, docs/INSTALL.UNX, docs/CUSTOMIZE,
    3914         docs/INSTALL.GNU, docs/TRUETYPE, docs/DEBUG, docs/UPGRADE.UNX,
    3915         docs/VERSION.DLL, docs/formats.txt: Revised, formatted.
    3916 
    3917 2005-08-28  George Williams  <gww@silcom.com>
    3918 
    3919         * src/truetype/ttgload.c [TT_MAX_COMPOSITE_RECURSE]: Removed.
    3920         (load_truetype_glyph): Limit recursion depth by `maxComponentDepth'.
    3921 
    3922 2005-08-25  J. Ali Harlow  <ali@avrc.city.ac.uk>
    3923 
    3924         * builds/unix/freetype2.in (CFlags): Add missing directory.
    3925 
    3926 2005-08-24  Werner Lemberg  <wl@gnu.org>
    3927 
    3928         * docs/CHANGES: Mention gxvalid module.
    3929 
    3930 2005-08-23  Werner Lemberg  <wl@gnu.org>
    3931 
    3932         * src/autofit/aflatin.c (af_latin_metrics_scale): Initialize
    3933         render mode properly.  Reported by chris@dokein.co.uk.
    3934 
    3935 2005-08-23  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
    3936 
    3937         Add gxvalid module to validate TrueType GX/AAT tables.
    3938 
    3939         Modifications on existing files:
    3940 
    3941         * Jamfile: Register gxvalid module.
    3942         * src/base/Jamfile: Register ftgxval.c.
    3943         * src/base/rule.mk: Register ftgxval.c.
    3944         * docs/INSTALL.ANY: Register gxvalid/gxvalid.c.
    3945 
    3946         * include/freetype/config/ftheader.h (FT_GX_VALIDATE_H): New macro
    3947         to include gxvalid header file.
    3948         * include/freetype/config/ftmodule.h: Register gxv_module_class.
    3949 
    3950         * include/freetype/ftchapters.h: Add comment about gx_validation.
    3951         * include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX
    3952         to FT_VALIDATE_OTXXX to co-exist with gxvalid.
    3953         * include/freetype/tttags.h: Add tags for TrueType GX/AAT tables.
    3954 
    3955         * include/freetype/internal/ftserv.h (FT_SERVICE_GX_VALIDATE_H): New
    3956         macro for gxvalid service.
    3957         * include/freetype/internal/fttrace.h: Add trace facilities for
    3958         gxvalid.
    3959 
    3960         New files on existing directories:
    3961 
    3962         * include/freetype/internal/services/svgxval.h: Registration of
    3963         validation service for TrueType GX/AAT and classic kern table.
    3964         * include/freetype/ftgxval.h: Public API definition to use gxvalid.
    3965         * src/base/ftgxval.c: Public API of gxvalid.
    3966 
    3967         New files under src/gxvalid/:
    3968 
    3969         * src/gxvalid/Jamfile src/gxvalid/README src/gxvalid/module.mk
    3970         src/gxvalid/rules.mk src/gxvalid/gxvalid.c src/gxvalid/gxvalid.h
    3971         src/gxvalid/gxvbsln.c src/gxvalid/gxvcommn.c src/gxvalid/gxvcommn.h
    3972         src/gxvalid/gxverror.h src/gxvalid/gxvfeat.c src/gxvalid/gxvfgen.c
    3973         src/gxvalid/gxvjust.c src/gxvalid/gxvkern.c src/gxvalid/gxvlcar.c
    3974         src/gxvalid/gxvmod.c src/gxvalid/gxvmod.h src/gxvalid/gxvmort.c
    3975         src/gxvalid/gxvmort.h src/gxvalid/gxvmort0.c src/gxvalid/gxvmort1.c
    3976         src/gxvalid/gxvmort2.c src/gxvalid/gxvmort4.c src/gxvalid/gxvmort5.c
    3977         src/gxvalid/gxvmorx.c src/gxvalid/gxvmorx.h src/gxvalid/gxvmorx0.c
    3978         src/gxvalid/gxvmorx1.c src/gxvalid/gxvmorx2.c src/gxvalid/gxvmorx4.c
    3979         src/gxvalid/gxvmorx5.c src/gxvalid/gxvopbd.c src/gxvalid/gxvprop.c
    3980         src/gxvalid/gxvtrak.c: New files, gxvalid body.
    3981 
    3982 2005-08-21  Werner Lemberg  <wl@gnu.org>
    3983 
    3984         * src/truetype/ttgload.c (TT_Load_Glyph): Only translate outline
    3985         to (0,0) if bit 1 of the `head' table isn't set.  This improves
    3986         rendering of buggy fonts.
    3987 
    3988 2005-08-20  Chia I Wu  <b90201047@ntu.edu.tw>
    3989 
    3990         * src/truetype/ttdriver.c (Load_Glyph): Don't check the validity of
    3991         ttmetrics here.  TrueType fonts with only sbits always have
    3992         ttmetrics.valid set to false.
    3993 
    3994         * src/truetype/ttgload.c (TT_Load_Glyph): Check that ttmetrics is
    3995         valid before loading outline glyph.
    3996 
    3997         * src/cache/ftcimage.c (FTC_INode_New): Fix a memory leak.
    3998 
    3999 2005-08-20  Werner Lemberg  <wl@gnu.org>
    4000 
    4001         * src/sfnt/ttload.c (tt_face_load_metrics_header): Ignore missing
    4002         `hhea' table for SFNT Mac fonts.  Change based on a patch by
    4003         mpsuzuki@hiroshima-u.ac.jp.
    4004 
    4005 2005-08-20  Masatake YAMATO  <jet@gyve.org>
    4006 
    4007         * src/otvalid/otvmod.c (otv_validate): Use ft_validator_run instead
    4008         of ft_setjmp.
    4009 
    4010 2005-08-19  Werner Lemberg  <wl@gnu.org>
    4011 
    4012         * src/truetype/ttgload.c (load_truetype_glyph): Fix compiler
    4013         warnings.
    4014 
    4015 2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
    4016 
    4017         * src/truetype/ttinterp.c, src/truetype/ttinterp.h: Update copyright
    4018         messages.
    4019 
    4020 2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
    4021 
    4022         * src/truetype/ttinterp.c, src/truetype/ttinterp.h: Remove original
    4023         TT_Done_Context and rename TT_Destroy_Context to TT_Done_Context
    4024         with slight changes.
    4025         Update all callers.
    4026         (TT_New_Context): Now takes TT_Driver argument directly.
    4027         Update all callers.
    4028 
    4029         * src/truetype/ttobjs.h (tt_slot_init): New function.
    4030         * src/truetype/ttobjs.c (tt_driver_init): Initialize execution
    4031         context here.
    4032         (tt_slot_init): New function to create extra points for the internal
    4033         glyph loader.  We then use it directly, instead of face's glyph
    4034         loader, when loading glyph.
    4035 
    4036         * src/truetype/ttdriver.c (tt_driver_class): Use tt_slot_init for
    4037         glyph slot initialization.
    4038         (Load_Glyph): Load flag dependencies are handled here.  Return error
    4039         if size is NULL.
    4040 
    4041         * src/truetype/ttgload.c: Heavy cleanup and refactoring.
    4042         (org_to_cur): Removed.
    4043         (TT_Load_Simple_Glyph): Call FT_GlyphLoader_CheckPoints.
    4044         (TT_Hint_Glyph): New funcion to hint a zone, prepared by caller.
    4045         (TT_Process_Simple_Glyph): s/load/loader/.
    4046         Use loader->pp values instead of recalculation.
    4047         Use TT_Hint_Glyph.
    4048         No need to save/restore loader->stream before and after
    4049         TT_Vary_Get_Glyph_Deltas now.
    4050         (TT_LOADER_SET_PP): New macro to calculate and set the four phantom
    4051         points.
    4052         (load_truetype_glyph): Never set exec->glyphSize to 0.  This closes
    4053         Savannah bug #13107.
    4054         Forget glyph frame before calling TT_Process_Simple_Glyph.
    4055         Use TT_LOADER_SET_PP.
    4056         Scale all four phantom points.
    4057         Split off some functionality to ...
    4058         (TT_Process_Composite_Component, TT_Process_Composite_Glyph): These
    4059         new functions.
    4060         (TT_Load_Glyph): Set various fields of `glyph' here, not in
    4061         load_truetype_glyph and compute_glyph_metrics.
    4062         Split off some functionality to ...
    4063         (load_sbit_image, tt_loader_init): These new functions.
    4064         (compute_glyph_metrics): Call FT_Outline_Get_CBox.
    4065 
    4066 2005-08-08  Werner Lemberg  <wl@gnu.org>
    4067 
    4068         * docs/INSTALL.ANY: Updated.
    4069 
    4070 2005-08-05  Werner Lemberg  <wl@gnu.org>
    4071 
    4072         * src/cff/cffgload.c (cff_builder_close_contour),
    4073         src/psaux/psobjs.c (t1_builder_close_contour): Protect against
    4074         zero `outline' pointer.
    4075 
    4076         * src/base/ftgloadr.c (FT_GlyphLoader_Add): Protect against zero
    4077         `loader' address.
    4078 
    4079 2005-08-03  Werner Lemberg  <wl@gnu.org>
    4080 
    4081         * src/sfnt/sfdriver.c (sfnt_interface) [FT_OPTIMIZE_MEMORY]:
    4082         Reactivate pointers to tt_find_sbit_image and tt_load_sbit_metrics
    4083         to make X work again.
    4084 
    4085 2005-08-02  Werner Lemberg  <wl@gnu.org>
    4086 
    4087         * src/otvalid/otvcommn.h: Remove dead code.
    4088 
    4089 2005-07-31  Chia I Wu  <b90201047@ntu.edu.tw>
    4090 
    4091         * src/truetype/ttobjs.h (tt_size_run_fpgm, tt_size_run_prep): New
    4092         functions.
    4093 
    4094         * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): New
    4095         functions.
    4096         (tt_size_init): Add 4, instead of 2, (phantom) points to twilight
    4097         zone.
    4098         Move code that runs fpgm to tt_size_run_fpgm.
    4099         (Reset_Outline_Size): Move code that runs prep to tt_size_run_prep.
    4100         (tt_glyphzone_new): Allocate right size of arrays.
    4101         Set max_points and max_contours properly.
    4102 
    4103 2005-07-26  Chia I Wu  <b90201047@ntu.edu.tw>
    4104 
    4105         * src/truetype/ttdriver.c (Set_Char_Sizes): Avoid unnecessary
    4106         computations and clean up.
    4107 
    4108         * src/truetype/ttobjs.h (struct TT_SizeRec_): Comment on the
    4109         internal copy of metrics.
    4110 
    4111 2005-07-12  Werner Lemberg  <wl@gnu.org>
    4112 
    4113         * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix prototype.
    4114         Reported by Xerxes.
    4115 
    4116 2005-07-04  Werner Lemberg  <wl@gnu.org>
    4117 
    4118         * include/freetype/internal/ftmemory.h (FT_REALLOC_ARRAY): Fix typo.
    4119         Reported by Brett Hutley.
    4120 
    4121 2005-06-30  David Turner  <david@freetype.org>
    4122 
    4123         * src/sfnt/ftbitmap.c, src/truetype/ttgload.c, src/sfnt/ttcmap.c:
    4124         Removing compiler warnings (Visual C++ /W4).
    4125 
    4126 
    4127         Implement a work-around for broken C preprocessor in Visual C++ (it
    4128         has been confirmed by the MS developers that it is indeed a bug
    4129         which won't be fixed in the very near future).
    4130 
    4131         * Jamfile (FT2_COMPONENTS): Include otvalid (again).
    4132 
    4133         * src/otvalid/otvcommn.h (OTV_NAME, OTV_FUNC): New macros.
    4134         (OTV_NEST1, OTV_NEST2, OTV_NEST3): Use OTV_NAME and OTV_FUNC to
    4135         avoid argument expansion by argument prescan.
    4136         Append `Func' to all affected macros and change them to take just a
    4137         single argument.  Example: `AttachList' is renamed to
    4138         `AttachListFunc'.
    4139 
    4140         * src/otvalid/otvgdef.c, src/otvalid/otvgpos.c,
    4141         src/otvalid/otvgsub.c, src/otvjstf.c: Append `Func' to macros
    4142         affected by the changes to OTV_NESTx and modify them to take just a
    4143         single argument.
    4144 
    4145 2005-06-20  Chia I Wu  <b90201047@ntu.edu.tw>
    4146 
    4147         * include/freetype/internal/ftobjs.h, src/base/ftobjs.c: New function
    4148         ft_glyphslot_grid_fit_metrics.
    4149 
    4150         * src/truetype/ttgload.c (compute_glyph_metrics): Use
    4151         ft_glyphslot_grid_fit_metrics.
    4152 
    4153         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
    4154         (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Use
    4155         ft_glyphslot_grid_fit_metrics.
    4156         FT_Outline_Get_CBox is called twice.
    4157 
    4158         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Modify metrics to more
    4159         reasonable values when emboldening outline glyphs.  The theoretic
    4160         ones are unrealistic.
    4161 
    4162 2005-06-16  Chia I Wu  <b90201047@ntu.edu.tw>
    4163 
    4164         * src/base/ftoutln.c (FT_Outline_Embolden): Strength should be
    4165         halved.
    4166 
    4167         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Change the default
    4168         strength.
    4169         Don't increase slot->advance.y.
    4170 
    4171 2005-06-16  Werner Lemberg  <wl@gnu.org>
    4172 
    4173         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 2.
    4174         (FREETYPE_PATCH): Set to 0.
    4175 
    4176         * builds/unix/configure.ac (version_info): Set to 9:9:3.
    4177         Currently, we are still binary compatible.
    4178 
    4179         * builds/win32/visualc/index.html,
    4180         builds/win32/visualc/freetype.dsp,
    4181         builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/.
    4182 
    4183         * builds/freetype.mk (refdoc), README, Jamfile (RefDoc):
    4184         s/2.1.9/2.1.10/.
    4185 
    4186         * docs/CHANGES, docs/VERSION.DLL: Updated.
    4187 
    4188         * ChangeLog: Split off older entries into...
    4189         * ChangeLog.20, ChangeLog.21: These new files.
    4190 
    4191 2005-06-15  Kirill Smelkov  <kirr@mns.spb.ru>
    4192 
    4193         The next release will be 2.2.0, so don't worry about source code
    4194         backwards compatibility.
    4195 
    4196         * include/freetype/ftimage.h (FT_Outline_MoveToFunc,
    4197         FT_Outline_LineToFunc, FT_Outline_ConicToFunc,
    4198         FT_Outline_CubicToFunc, FT_SpanFunc, FT_Raster_RenderFunc),
    4199         include/freetype/ftrender.h (FT_Glyph_TransformFunc,
    4200         FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Decorate
    4201         parameters with `const' where appropriate.
    4202 
    4203 2005-06-15  Chia I Wu  <b90201047@ntu.edu.tw>
    4204 
    4205         * src/sfnt/ttsbit.c (tt_face_load_sbit_image): Compute vertBearingY
    4206         to make glyphs centered vertically.
    4207 
    4208         * src/truetype/ttgload.c (compute_glyph_metrics): Compute
    4209         vertBearingY to make glyphs centered vertically.
    4210         Fix some bugs in vertical metrics:
    4211 
    4212           . loader->pp3.y and loader->pp4.y are in 26.6 format, not in font
    4213             units.
    4214           . As we use the glyph's cbox to calculate the top bearing now
    4215             there iss no need to adjust `top'.
    4216 
    4217 2005-06-15  Werner Lemberg  <wl@gnu.org>
    4218 
    4219         * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE): Use FT_UShort to be
    4220         in sync with OTV_OPTIONAL_OFFSET.  Reported by YAMATO Masatake.
    4221 
    4222 2005-06-13  Werner Lemberg  <wl@gnu.org>
    4223 
    4224         * docs/release: Update.
    4225 
    42262442----------------------------------------------------------------------------
    42272443
    4228 Copyright 2005, 2006, 2007 by
     2444Copyright 2006, 2007 by
    42292445David Turner, Robert Wilhelm, and Werner Lemberg.
    42302446
  • trunk/poppler/freetype2/README

    r182 r209  
    1010
    1111
    12   FreeType 2.3.0
     12  FreeType 2.3.5
    1313  ==============
    1414
     
    2727  and download one of the following files.
    2828
    29     freetype-doc-2.3.0.tar.bz2
    30     freetype-doc-2.3.0.tar.gz
    31     ftdoc221.zip
     29    freetype-doc-2.3.5.tar.bz2
     30    freetype-doc-2.3.5.tar.gz
     31    ftdoc235.zip
    3232
    3333
  • trunk/poppler/freetype2/devel/ftoption.h

    r182 r209  
    303303  /* to do all of its work.                                                */
    304304  /*                                                                       */
    305   /* This must be greater than 4KByte.                                     */
     305  /* This must be greater than 4KByte if you use FreeType to rasterize     */
     306  /* glyphs; otherwise, you may set it to zero to avoid unnecessary        */
     307  /* allocation of the render pool.                                        */
    306308  /*                                                                       */
    307309#define FT_RENDER_POOL_SIZE  16384L
     
    335337  /*   them for certain configurations only.                               */
    336338  /*                                                                       */
    337 #define FT_DEBUG_LEVEL_ERROR
    338 #define FT_DEBUG_LEVEL_TRACE
     339//#define FT_DEBUG_LEVEL_ERROR
     340//#define FT_DEBUG_LEVEL_TRACE
    339341
    340342
     
    354356  /*   it for certain configurations only.                                 */
    355357  /*                                                                       */
    356 #define FT_DEBUG_MEMORY
     358//#define FT_DEBUG_MEMORY
    357359
    358360
     
    462464  /*************************************************************************/
    463465  /*                                                                       */
    464   /* Define TT_CONFIG_OPTION_UNPATENTED_HINTING (in addition to            */
    465   /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER) to compile the unpatented      */
    466   /* work-around hinting system.  Note that for the moment, the algorithm  */
    467   /* is only used when selected at runtime through the parameter tag       */
    468   /* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook               */
    469   /* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally activated.               */
     466  /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version  */
     467  /* of the TrueType bytecode interpreter is used that doesn't implement   */
     468  /* any of the patented opcodes and algorithms.  Note that the            */
     469  /* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you     */
     470  /* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words,       */
     471  /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                */
     472  /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time.    */
     473  /*                                                                       */
     474  /* This macro is only useful for a small number of font files (mostly    */
     475  /* for Asian scripts) that require bytecode interpretation to properly   */
     476  /* load glyphs.  For all other fonts, this produces unpleasant results,  */
     477  /* thus the unpatented interpreter is never used to load glyphs from     */
     478  /* TrueType fonts unless one of the following two options is used.       */
     479  /*                                                                       */
     480  /*   - The unpatented interpreter is explicitly activated by the user    */
     481  /*     through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag         */
     482  /*     when opening the FT_Face.                                         */
     483  /*                                                                       */
     484  /*   - FreeType detects that the FT_Face corresponds to one of the       */
     485  /*     `trick' fonts (e.g., `Mingliu') it knows about.  The font engine  */
     486  /*     contains a hard-coded list of font names and other matching       */
     487  /*     parameters (see function `tt_face_init' in file                   */
     488  /*     `src/truetype/ttobjs.c').                                         */
     489  /*                                                                       */
     490  /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */
     491  /*                                                                       */
     492  /*   {                                                                   */
     493  /*     FT_Parameter  parameter;                                          */
     494  /*     FT_Open_Args  open_args;                                          */
     495  /*                                                                       */
     496  /*                                                                       */
     497  /*     parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING;                  */
     498  /*                                                                       */
     499  /*     open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;         */
     500  /*     open_args.pathname   = my_font_pathname;                          */
     501  /*     open_args.num_params = 1;                                         */
     502  /*     open_args.params     = &parameter;                                */
     503  /*                                                                       */
     504  /*     error = FT_Open_Face( library, &open_args, index, &face );        */
     505  /*     ...                                                               */
     506  /*   }                                                                   */
    470507  /*                                                                       */
    471508/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */
     
    592629#define AF_CONFIG_OPTION_CJK
    593630
     631
     632  /*************************************************************************/
     633  /*                                                                       */
     634  /* Compile autofit module with Indic script support.                     */
     635  /*                                                                       */
     636#define AF_CONFIG_OPTION_INDIC
    594637
    595638  /* */
  • trunk/poppler/freetype2/include/freetype/config/ftconfig.h

    r150 r209  
    55/*    ANSI-specific configuration file (specification only).               */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2006 by                         */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by                   */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    127127#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \
    128128    ( defined( __MWERKS__ ) && defined( macintosh )        )
     129  /* no Carbon frameworks for 64bit 10.4.x */
     130#include "AvailabilityMacros.h"
     131#if defined( __LP64__ ) && \
     132    ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
     133#define DARWIN_NO_CARBON 1
     134#else
    129135#define FT_MACINTOSH 1
     136#endif
    130137#endif
    131138
  • trunk/poppler/freetype2/include/freetype/config/ftoption.h

    r182 r209  
    303303  /* to do all of its work.                                                */
    304304  /*                                                                       */
    305   /* This must be greater than 4KByte.                                     */
     305  /* This must be greater than 4KByte if you use FreeType to rasterize     */
     306  /* glyphs; otherwise, you may set it to zero to avoid unnecessary        */
     307  /* allocation of the render pool.                                        */
    306308  /*                                                                       */
    307309#define FT_RENDER_POOL_SIZE  16384L
     
    462464  /*************************************************************************/
    463465  /*                                                                       */
    464   /* Define TT_CONFIG_OPTION_UNPATENTED_HINTING (in addition to            */
    465   /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER) to compile the unpatented      */
    466   /* work-around hinting system.  Note that for the moment, the algorithm  */
    467   /* is only used when selected at runtime through the parameter tag       */
    468   /* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook               */
    469   /* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally activated.               */
     466  /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version  */
     467  /* of the TrueType bytecode interpreter is used that doesn't implement   */
     468  /* any of the patented opcodes and algorithms.  Note that the            */
     469  /* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you     */
     470  /* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words,       */
     471  /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                */
     472  /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time.    */
     473  /*                                                                       */
     474  /* This macro is only useful for a small number of font files (mostly    */
     475  /* for Asian scripts) that require bytecode interpretation to properly   */
     476  /* load glyphs.  For all other fonts, this produces unpleasant results,  */
     477  /* thus the unpatented interpreter is never used to load glyphs from     */
     478  /* TrueType fonts unless one of the following two options is used.       */
     479  /*                                                                       */
     480  /*   - The unpatented interpreter is explicitly activated by the user    */
     481  /*     through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag         */
     482  /*     when opening the FT_Face.                                         */
     483  /*                                                                       */
     484  /*   - FreeType detects that the FT_Face corresponds to one of the       */
     485  /*     `trick' fonts (e.g., `Mingliu') it knows about.  The font engine  */
     486  /*     contains a hard-coded list of font names and other matching       */
     487  /*     parameters (see function `tt_face_init' in file                   */
     488  /*     `src/truetype/ttobjs.c').                                         */
     489  /*                                                                       */
     490  /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */
     491  /*                                                                       */
     492  /*   {                                                                   */
     493  /*     FT_Parameter  parameter;                                          */
     494  /*     FT_Open_Args  open_args;                                          */
     495  /*                                                                       */
     496  /*                                                                       */
     497  /*     parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING;                  */
     498  /*                                                                       */
     499  /*     open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;         */
     500  /*     open_args.pathname   = my_font_pathname;                          */
     501  /*     open_args.num_params = 1;                                         */
     502  /*     open_args.params     = &parameter;                                */
     503  /*                                                                       */
     504  /*     error = FT_Open_Face( library, &open_args, index, &face );        */
     505  /*     ...                                                               */
     506  /*   }                                                                   */
    470507  /*                                                                       */
    471508#define TT_CONFIG_OPTION_UNPATENTED_HINTING
     
    592629#define AF_CONFIG_OPTION_CJK
    593630
     631  /*************************************************************************/
     632  /*                                                                       */
     633  /* Compile autofit module with Indic script support.                     */
     634  /*                                                                       */
     635#define AF_CONFIG_OPTION_INDIC
    594636
    595637  /* */
  • trunk/poppler/freetype2/include/freetype/config/ftstdlib.h

    r165 r209  
    66/*    only).                                                               */
    77/*                                                                         */
    8 /*  Copyright 2002, 2003, 2004, 2005, 2006 by                              */
     8/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007 by                        */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    7979
    8080
    81 #include <ctype.h>
    82 
    83 #define ft_isalnum   isalnum
    84 #define ft_isdigit   isdigit
    85 #define ft_islower   islower
    86 #define ft_isupper   isupper
    87 #define ft_isxdigit  isxdigit
    88 
    89 
    9081#include <string.h>
    9182
     
    10293#define ft_strncpy  strncpy
    10394#define ft_strrchr  strrchr
     95#define ft_strstr   strstr
    10496
    10597
  • trunk/poppler/freetype2/include/freetype/freetype.h

    r200 r209  
    649649    FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ),
    650650
    651     FT_ENC_TAG( FT_ENCODING_MS_SYMBOL,  's', 'y', 'm', 'b' ),
    652     FT_ENC_TAG( FT_ENCODING_UNICODE,    'u', 'n', 'i', 'c' ),
     651    FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ),
     652    FT_ENC_TAG( FT_ENCODING_UNICODE,   'u', 'n', 'i', 'c' ),
    653653
    654654    FT_ENC_TAG( FT_ENCODING_SJIS,    's', 'j', 'i', 's' ),
     
    21122112  /*                                                                       */
    21132113  /* <Note>                                                                */
     2114  /*    If either the character width or height is zero, it is set equal   */
     2115  /*    to the other value.                                                */
     2116  /*                                                                       */
    21142117  /*    If either the horizontal or vertical resolution is zero, it is set */
    2115   /*    to a default value of 72dpi.                                       */
    2116   /*                                                                       */
     2118  /*    equal to the other value.                                          */
     2119  /*                                                                       */
     2120  /*    A character width or height smaller than 1pt is set to 1pt; if     */
     2121  /*    both resolution values are zero, they are set to 72dpi.            */
     2122  /*                                                                       */
     2123
    21172124  FT_EXPORT( FT_Error )
    21182125  FT_Set_Char_Size( FT_Face     face,
     
    27322739  /* <Description>                                                         */
    27332740  /*    Retrieve the ASCII name of a given glyph in a face.  This only     */
    2734   /*    works for those faces where @FT_HAS_GLYPH_NAMES(face) returns      */
    2735   /*    TRUE.                                                              */
     2741  /*    works for those faces where @FT_HAS_GLYPH_NAMES(face) returns 1.   */
    27362742  /*                                                                       */
    27372743  /* <Input>                                                               */
     
    28132819  /*    This function returns an error if no charmap in the face           */
    28142820  /*    corresponds to the encoding queried here.                          */
     2821  /*                                                                       */
     2822  /*    Because many fonts contain more than a single cmap for Unicode     */
     2823  /*    encoding, this function has some special code to select the one    */
     2824  /*    which covers Unicode best.  It is thus preferable to               */
     2825  /*    @FT_Set_Charmap in this case.                                      */
    28152826  /*                                                                       */
    28162827  FT_EXPORT( FT_Error )
     
    33193330#define FREETYPE_MAJOR  2
    33203331#define FREETYPE_MINOR  3
    3321 #define FREETYPE_PATCH  1
     3332#define FREETYPE_PATCH  5
    33223333
    33233334
     
    33573368                      FT_Int      *apatch );
    33583369
     3370
     3371  /*************************************************************************/
     3372  /*                                                                       */
     3373  /* <Function>                                                            */
     3374  /*    FT_Face_CheckTrueTypePatents                                       */
     3375  /*                                                                       */
     3376  /* <Description>                                                         */
     3377  /*    Parse all bytecode instructions of a TrueType font file to check   */
     3378  /*    whether any of the patented opcodes are used.  This is only useful */
     3379  /*    if you want to be able to use the unpatented hinter with           */
     3380  /*    fonts that do *not* use these opcodes.                             */
     3381  /*                                                                       */
     3382  /*    Note that this function parses *all* glyph instructions in the     */
     3383  /*    font file, which may be slow.                                      */
     3384  /*                                                                       */
     3385  /* <Input>                                                               */
     3386  /*    face :: A face handle.                                             */
     3387  /*                                                                       */
     3388  /* <Return>                                                              */
     3389  /*    1 if this is a TrueType font that uses one of the patented         */
     3390  /*    opcodes, 0 otherwise.                                              */
     3391  /*                                                                       */
     3392  /* <Since>                                                               */
     3393  /*    2.3.5                                                              */
     3394  /*                                                                       */
     3395  FT_EXPORT( FT_Bool )
     3396  FT_Face_CheckTrueTypePatents( FT_Face  face );
     3397
     3398
     3399  /*************************************************************************/
     3400  /*                                                                       */
     3401  /* <Function>                                                            */
     3402  /*    FT_Face_SetUnpatentedHinting                                       */
     3403  /*                                                                       */
     3404  /* <Description>                                                         */
     3405  /*    Enable or disable the unpatented hinter for a given face.          */
     3406  /*    Only enable it if you have determined that the face doesn't        */
     3407  /*    use any patented opcodes (see @FT_Face_CheckTrueTypePatents).      */
     3408  /*                                                                       */
     3409  /* <Input>                                                               */
     3410  /*    face  :: A face handle.                                            */
     3411  /*                                                                       */
     3412  /*    value :: New boolean setting.                                      */
     3413  /*                                                                       */
     3414  /* <Return>                                                              */
     3415  /*    The old setting value.  This will always be false if this is not   */
     3416  /*    a SFNT font, or if the unpatented hinter is not compiled in this   */
     3417  /*    instance of the library.                                           */
     3418  /*                                                                       */
     3419  /* <Since>                                                               */
     3420  /*    2.3.5                                                              */
     3421  /*                                                                       */
     3422  FT_EXPORT( FT_Bool )
     3423  FT_Face_SetUnpatentedHinting( FT_Face  face,
     3424                                FT_Bool  value );
     3425
    33593426  /* */
    33603427
  • trunk/poppler/freetype2/include/freetype/ftcache.h

    r150 r209  
    55/*    FreeType Cache subsystem (specification).                            */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    412412  /*    height  :: The character height.                                   */
    413413  /*                                                                       */
    414   /*    pixel   :: A Boolean.  If TRUE, the `width' and `height' fields    */
    415   /*               are interpreted as integer pixel character sizes.       */
     414  /*    pixel   :: A Boolean.  If 1, the `width' and `height' fields are   */
     415  /*               interpreted as integer pixel character sizes.           */
    416416  /*               Otherwise, they are expressed as 1/64th of points.      */
    417417  /*                                                                       */
    418   /*    x_res   :: Only used when `pixel' is FALSE to indicate the         */
     418  /*    x_res   :: Only used when `pixel' is value 0 to indicate the       */
    419419  /*               horizontal resolution in dpi.                           */
    420420  /*                                                                       */
    421   /*    y_res   :: Only used when `pixel' is FALSE to indicate the         */
     421  /*    y_res   :: Only used when `pixel' is value 0 to indicate the       */
    422422  /*               vertical resolution in dpi.                             */
    423423  /*                                                                       */
     
    779779  /*************************************************************************/
    780780  /*                                                                       */
     781  /* <Function>                                                            */
     782  /*    FTC_ImageCache_LookupScaler                                        */
     783  /*                                                                       */
     784  /* <Description>                                                         */
     785  /*    A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec    */
     786  /*    to specify the face ID and its size.                               */
     787  /*                                                                       */
     788  /* <Input>                                                               */
     789  /*    cache      :: A handle to the source glyph image cache.            */
     790  /*                                                                       */
     791  /*    scaler     :: A pointer to a scaler descriptor.                    */
     792  /*                                                                       */
     793  /*    load_flags :: The corresponding load flags.                        */
     794  /*                                                                       */
     795  /*    gindex     :: The glyph index to retrieve.                         */
     796  /*                                                                       */
     797  /* <Output>                                                              */
     798  /*    aglyph     :: The corresponding @FT_Glyph object.  0 in case of    */
     799  /*                  failure.                                             */
     800  /*                                                                       */
     801  /*    anode      :: Used to return the address of of the corresponding   */
     802  /*                  cache node after incrementing its reference count    */
     803  /*                  (see note below).                                    */
     804  /*                                                                       */
     805  /* <Return>                                                              */
     806  /*    FreeType error code.  0 means success.                             */
     807  /*                                                                       */
     808  /* <Note>                                                                */
     809  /*    The returned glyph is owned and managed by the glyph image cache.  */
     810  /*    Never try to transform or discard it manually!  You can however    */
     811  /*    create a copy with @FT_Glyph_Copy and modify the new one.          */
     812  /*                                                                       */
     813  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
     814  /*    node containing the glyph image, after increasing its reference    */
     815  /*    count.  This ensures that the node (as well as the @FT_Glyph) will */
     816  /*    always be kept in the cache until you call @FTC_Node_Unref to      */
     817  /*    `release' it.                                                      */
     818  /*                                                                       */
     819  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
     820  /*    that the @FT_Glyph could be flushed out of the cache on the next   */
     821  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
     822  /*    is persistent!                                                     */
     823  /*                                                                       */
     824  FT_EXPORT( FT_Error )
     825  FTC_ImageCache_LookupScaler( FTC_ImageCache  cache,
     826                               FTC_Scaler      scaler,
     827                               FT_ULong        load_flags,
     828                               FT_UInt         gindex,
     829                               FT_Glyph       *aglyph,
     830                               FTC_Node       *anode );
     831
     832
     833  /*************************************************************************/
     834  /*                                                                       */
    781835  /* <Type>                                                                */
    782836  /*    FTC_SBit                                                           */
     
    931985
    932986
     987  /*************************************************************************/
     988  /*                                                                       */
     989  /* <Function>                                                            */
     990  /*    FTC_SBitCache_LookupScaler                                         */
     991  /*                                                                       */
     992  /* <Description>                                                         */
     993  /*    A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec     */
     994  /*    to specify the face ID and its size.                               */
     995  /*                                                                       */
     996  /* <Input>                                                               */
     997  /*    cache      :: A handle to the source sbit cache.                   */
     998  /*                                                                       */
     999  /*    scaler     :: A pointer to the scaler descriptor.                  */
     1000  /*                                                                       */
     1001  /*    load_flags :: The corresponding load flags.                        */
     1002  /*                                                                       */
     1003  /*    gindex     :: The glyph index.                                     */
     1004  /*                                                                       */
     1005  /* <Output>                                                              */
     1006  /*    sbit       :: A handle to a small bitmap descriptor.               */
     1007  /*                                                                       */
     1008  /*    anode      :: Used to return the address of of the corresponding   */
     1009  /*                  cache node after incrementing its reference count    */
     1010  /*                  (see note below).                                    */
     1011  /*                                                                       */
     1012  /* <Return>                                                              */
     1013  /*    FreeType error code.  0 means success.                             */
     1014  /*                                                                       */
     1015  /* <Note>                                                                */
     1016  /*    The small bitmap descriptor and its bit buffer are owned by the    */
     1017  /*    cache and should never be freed by the application.  They might    */
     1018  /*    as well disappear from memory on the next cache lookup, so don't   */
     1019  /*    treat them as persistent data.                                     */
     1020  /*                                                                       */
     1021  /*    The descriptor's `buffer' field is set to 0 to indicate a missing  */
     1022  /*    glyph bitmap.                                                      */
     1023  /*                                                                       */
     1024  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
     1025  /*    node containing the bitmap, after increasing its reference count.  */
     1026  /*    This ensures that the node (as well as the image) will always be   */
     1027  /*    kept in the cache until you call @FTC_Node_Unref to `release' it.  */
     1028  /*                                                                       */
     1029  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
     1030  /*    that the bitmap could be flushed out of the cache on the next      */
     1031  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
     1032  /*    is persistent!                                                     */
     1033  /*                                                                       */
     1034  FT_EXPORT( FT_Error )
     1035  FTC_SBitCache_LookupScaler( FTC_SBitCache  cache,
     1036                              FTC_Scaler     scaler,
     1037                              FT_ULong       load_flags,
     1038                              FT_UInt        gindex,
     1039                              FTC_SBit      *sbit,
     1040                              FTC_Node      *anode );
     1041
     1042
    9331043 /* */
    9341044
  • trunk/poppler/freetype2/include/freetype/fterrdef.h

    r150 r209  
    55/*    FreeType error codes (specification).                                */
    66/*                                                                         */
    7 /*  Copyright 2002, 2004, 2006 by                                          */
     7/*  Copyright 2002, 2004, 2006, 2007 by                                    */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    231231  FT_ERRORDEF_( Bbx_Too_Big,                                 0xB7, \
    232232                "`BBX' too big" )
     233  FT_ERRORDEF_( Corrupted_Font_Header,                       0xB8, \
     234                "Font header corrupted or missing fields" )
     235  FT_ERRORDEF_( Corrupted_Font_Glyphs,                       0xB9, \
     236                "Font glyphs corrupted or missing fields" )
    233237
    234238
  • trunk/poppler/freetype2/include/freetype/ftimage.h

    r200 r209  
    382382  /*                                 direction (typically for Type 1       */
    383383  /*                                 fonts).  This flag is ignored by the  */
    384   /*                                 scan-converter.  However, it is very  */
    385   /*                                 important for the auto-hinter.        */
     384  /*                                 scan-converter.                       */
    386385  /*                                                                       */
    387386  /*   FT_OUTLINE_IGNORE_DROPOUTS :: By default, the scan converter will   */
  • trunk/poppler/freetype2/include/freetype/ftmac.h

    r150 r209  
    55/*    Additional Mac-specific API.                                         */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2004, 2006 by                                     */
     7/*  Copyright 1996-2001, 2004, 2006, 2007 by                               */
    88/*  Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.     */
    99/*                                                                         */
     
    3636
    3737
     38/* gcc-3.4.1 and later can warn about functions tagged as deprecated */
     39#ifndef FT_DEPRECATED_ATTRIBUTE
     40#if defined(__GNUC__)                                               && \
     41    ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
     42#define FT_DEPRECATED_ATTRIBUTE  __attribute__((deprecated))
     43#else
     44#define FT_DEPRECATED_ATTRIBUTE
     45#endif
     46#endif
     47
     48
    3849  /*************************************************************************/
    3950  /*                                                                       */
     
    106117  /*                                                                       */
    107118  /* <Output>                                                              */
    108   /*    pathSpec   :: FSSpec to the file.  For passing to @FT_New_Face.    */
    109   /*                                                                       */
    110   /*    face_index :: Index of the face.  For passing to @FT_New_Face.     */
     119  /*    pathSpec   :: FSSpec to the file.  For passing to                  */
     120  /*                  @FT_New_Face_From_FSSpec.                            */
     121  /*                                                                       */
     122  /*    face_index :: Index of the face.  For passing to                   */
     123  /*                  @FT_New_Face_From_FSSpec.                            */
    111124  /*                                                                       */
    112125  /* <Return>                                                              */
     
    116129  FT_GetFile_From_Mac_Name( const char*  fontName,
    117130                            FSSpec*      pathSpec,
    118                             FT_Long*     face_index );
     131                            FT_Long*     face_index )
     132                          FT_DEPRECATED_ATTRIBUTE;
    119133
    120134
     
    131145  /*                                                                       */
    132146  /* <Output>                                                              */
    133   /*    pathSpec   :: FSSpec to the file.  For passing to @FT_New_Face.    */
    134   /*                                                                       */
    135   /*    face_index :: Index of the face.  For passing to @FT_New_Face.     */
     147  /*    pathSpec   :: FSSpec to the file. For passing to                   */
     148  /*                  @FT_New_Face_From_FSSpec.                            */
     149  /*                                                                       */
     150  /*    face_index :: Index of the face. For passing to                    */
     151  /*                  @FT_New_Face_From_FSSpec.                            */
    136152  /*                                                                       */
    137153  /* <Return>                                                              */
     
    141157  FT_GetFile_From_Mac_ATS_Name( const char*  fontName,
    142158                                FSSpec*      pathSpec,
    143                                 FT_Long*     face_index );
     159                                FT_Long*     face_index )
     160                              FT_DEPRECATED_ATTRIBUTE;
     161
     162
     163  /*************************************************************************/
     164  /*                                                                       */
     165  /* <Function>                                                            */
     166  /*    FT_GetFilePath_From_Mac_ATS_Name                                   */
     167  /*                                                                       */
     168  /* <Description>                                                         */
     169  /*    Return a pathname of the disk file and face index for given font   */
     170  /*    name which is handled by ATS framework.                            */
     171  /*                                                                       */
     172  /* <Input>                                                               */
     173  /*    fontName    :: Mac OS name of the font in ATS framework.           */
     174  /*                                                                       */
     175  /* <Output>                                                              */
     176  /*    path        :: Buffer to store pathname of the file.  For passing  */
     177  /*                   to @FT_New_Face.  The client must allocate this     */
     178  /*                   buffer before calling this function.                */
     179  /*                                                                       */
     180  /*    maxPathSize :: Lengths of the buffer `path' that client allocated. */
     181  /*                                                                       */
     182  /*    face_index  :: Index of the face.  For passing to @FT_New_Face.    */
     183  /*                                                                       */
     184  /* <Return>                                                              */
     185  /*    FreeType error code.  0 means success.                             */
     186  /*                                                                       */
     187  FT_EXPORT( FT_Error )
     188  FT_GetFilePath_From_Mac_ATS_Name( const char*  fontName,
     189                                    UInt8*       path,
     190                                    UInt32       maxPathSize,
     191                                    FT_Long*     face_index );
    144192
    145193
     
    175223                           const FSSpec  *spec,
    176224                           FT_Long        face_index,
    177                            FT_Face       *aface );
     225                           FT_Face       *aface )
     226                         FT_DEPRECATED_ATTRIBUTE;
    178227
    179228
     
    209258                          const FSRef  *ref,
    210259                          FT_Long       face_index,
    211                           FT_Face      *aface );
     260                          FT_Face      *aface )
     261                        FT_DEPRECATED_ATTRIBUTE;
    212262
    213263  /* */
  • trunk/poppler/freetype2/include/freetype/ftmodapi.h

    r150 r209  
    317317   *
    318318   * @section:
    319    *   ttengine
     319   *   truetype_engine
    320320   *
    321321   * @title:
  • trunk/poppler/freetype2/include/freetype/ftstroke.h

    r150 r209  
    298298   *
    299299   *   opened ::
    300    *     A boolean.  If TRUE, the outline is treated as an open path
    301    *     instead of a closed one.
     300   *     A boolean.  If 1, the outline is treated as an open path instead
     301   *     of a closed one.
    302302   *
    303303   * @return:
     
    335335   *
    336336   *   open ::
    337    *     A boolean.  If TRUE, the sub-path is treated as an open one.
     337   *     A boolean.  If 1, the sub-path is treated as an open one.
    338338   *
    339339   * @return:
     
    650650   *
    651651   *   destroy ::
    652    *     A Boolean.  If TRUE, the source glyph object is destroyed
     652   *     A Boolean.  If 1, the source glyph object is destroyed
    653653   *     on success.
    654654   *
     
    683683   *
    684684   *   inside ::
    685    *     A Boolean.  If TRUE, return the inside border, otherwise
     685   *     A Boolean.  If 1, return the inside border, otherwise
    686686   *     the outside border.
    687687   *
    688688   *   destroy ::
    689    *     A Boolean.  If TRUE, the source glyph object is destroyed
     689   *     A Boolean.  If 1, the source glyph object is destroyed
    690690   *     on success.
    691691   *
  • trunk/poppler/freetype2/include/freetype/fttypes.h

    r150 r209  
    55/*    FreeType simple types definitions (specification only).              */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2004, 2006 by                               */
     7/*  Copyright 1996-2001, 2002, 2004, 2006, 2007 by                         */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    9595  /*                                                                       */
    9696  /* <Description>                                                         */
    97   /*    A typedef of unsigned char, used for simple booleans.              */
     97  /*    A typedef of unsigned char, used for simple booleans.  As usual,   */
     98  /*    values 1 and 0 represent true and false, respectively.             */
    9899  /*                                                                       */
    99100  typedef unsigned char  FT_Bool;
     
    385386  /*                                                                       */
    386387  /* <Struct>                                                              */
    387   /*    FT_Data                                                            */
     388  /*    FT_Data                                                            */
    388389  /*                                                                       */
    389390  /* <Description>                                                         */
  • trunk/poppler/freetype2/include/freetype/internal/ftmemory.h

    r200 r209  
    323323
    324324
     325  FT_BASE( FT_Pointer )
     326  ft_mem_strdup( FT_Memory    memory,
     327                 const char*  str,
     328                 FT_Error    *p_error );
     329
     330  FT_BASE( FT_Pointer )
     331  ft_mem_dup( FT_Memory    memory,
     332              const void*  address,
     333              FT_ULong     size,
     334              FT_Error    *p_error );
     335
     336#define FT_MEM_STRDUP( dst, str )                                     \
     337          (dst) = ft_mem_strdup( memory, (const char*)(str), &error )
     338
     339#define FT_STRDUP( dst, str )                           \
     340          FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) )
     341
     342#define FT_MEM_DUP( dst, address, size )                                    \
     343          (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), &error )
     344
     345#define FT_DUP( dst, address, size )                           \
     346          FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) )
     347
     348
     349  /* Return >= 1 if a truncation occurs.            */
     350  /* Return 0 if the source string fits the buffer. */
     351  /* This is *not* the same as strlcpy().           */
     352  FT_BASE( FT_Int )
     353  ft_mem_strcpyn( char*        dst,
     354                  const char*  src,
     355                  FT_ULong     size );
     356
     357#define FT_STRCPYN( dst, src, size )                                         \
     358          ft_mem_strcpyn( (char*)dst, (const char*)(src), (FT_ULong)(size) )
     359
    325360 /* */
    326361
  • trunk/poppler/freetype2/include/freetype/internal/ftobjs.h

    r165 r209  
    9090
    9191
     92  /*
     93   *  character classification functions -- since these are used to parse
     94   *  font files, we must not use those in <ctypes.h> which are
     95   *  locale-dependent
     96   */
     97#define  ft_isdigit( x )   ( ( (unsigned)(x) - '0' ) < 10U )
     98
     99#define  ft_isxdigit( x )  ( ( (unsigned)(x) - '0' ) < 10U || \
     100                             ( (unsigned)(x) - 'a' ) < 6U  || \
     101                             ( (unsigned)(x) - 'A' ) < 6U  )
     102
     103  /* the next two macros assume ASCII representation */
     104#define  ft_isupper( x )  ( ( (unsigned)(x) - 'A' ) < 26U )
     105#define  ft_islower( x )  ( ( (unsigned)(x) - 'a' ) < 26U )
     106
     107#define  ft_isalpha( x )  ( ft_isupper( x ) || ft_islower( x ) )
     108#define  ft_isalnum( x )  ( ft_isdigit( x ) || ft_isalpha( x ) )
     109
     110
    92111  /*************************************************************************/
    93112  /*************************************************************************/
  • trunk/poppler/freetype2/include/freetype/internal/ftserv.h

    r150 r209  
    55/*    The FreeType services (specification only).                          */
    66/*                                                                         */
    7 /*  Copyright 2003, 2004, 2005, 2006 by                                    */
     7/*  Copyright 2003, 2004, 2005, 2006, 2007 by                              */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    316316#define FT_SERVICE_WINFNT_H             <freetype/internal/services/svwinfnt.h>
    317317#define FT_SERVICE_XFREE86_NAME_H       <freetype/internal/services/svxf86nm.h>
     318#define FT_SERVICE_TRUETYPE_GLYF_H      <freetype/internal/services/svttglyf.h>
    318319
    319320 /* */
  • trunk/poppler/freetype2/include/freetype/internal/services/svttcmap.h

    r182 r209  
    5353  {
    5454    FT_ULong language;
     55    FT_Long  format;
    5556
    5657  } TT_CMapInfo;
  • trunk/poppler/freetype2/include/freetype/ttnameid.h

    r200 r209  
    699699#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN      0x0850
    700700#define TT_MS_LANGID_TIBETAN_CHINA                     0x0451
     701  /* Don't use the next constant!  It has            */
     702  /*   (1) the wrong spelling (Dzonghka)             */
     703  /*   (2) Microsoft doesn't officially define it -- */
     704  /*       at least it is not in the List of Local   */
     705  /*       ID Values.                                */
     706  /*   (3) Dzongkha is not the same language as      */
     707  /*       Tibetan, so merging it is wrong anyway.   */
     708  /*                                                 */
     709  /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW.    */
    701710#define TT_MS_LANGID_DZONGHKA_BHUTAN                   0x0851
    702711
  • trunk/poppler/freetype2/include/freetype/tttables.h

    r182 r209  
    596596  /*    This function is only useful to access SFNT tables that are loaded */
    597597  /*    by the sfnt, truetype, and opentype drivers.  See @FT_Sfnt_Tag for */
    598   /*    a list.                                                             */
     598  /*    a list.                                                            */
    599599  /*                                                                       */
    600600  FT_EXPORT( void* )
     
    726726  FT_Get_CMap_Language_ID( FT_CharMap  charmap );
    727727
     728
     729  /*************************************************************************/
     730  /*                                                                       */
     731  /* <Function>                                                            */
     732  /*    FT_Get_CMap_Format                                                 */
     733  /*                                                                       */
     734  /* <Description>                                                         */
     735  /*    Return TrueType/sfnt specific cmap format.                         */
     736  /*                                                                       */
     737  /* <Input>                                                               */
     738  /*    charmap ::                                                         */
     739  /*      The target charmap.                                              */
     740  /*                                                                       */
     741  /* <Return>                                                              */
     742  /*    The format of `charmap'.  If `charmap' doesn't belong to a         */
     743  /*    TrueType/sfnt face, return -1.                                     */
     744  /*                                                                       */
     745  FT_EXPORT( FT_Long )
     746  FT_Get_CMap_Format( FT_CharMap  charmap );
     747
    728748  /* */
    729749
  • trunk/poppler/freetype2/readme_er

    r160 r209  
    55  /* Watcom doesn't provide 64-bit data types */
    66string.
     7
     8
     9In devel\ftoption.h commented:
     10#define FT_DEBUG_LEVEL_ERROR
     11#define FT_DEBUG_LEVEL_TRACE
     12#define FT_DEBUG_MEMORY
  • trunk/poppler/freetype2/src/autofit/afcjk.c

    r165 r209  
    55/*    Auto-fitter hinting routines for CJK script (body).                  */
    66/*                                                                         */
    7 /*  Copyright 2006 by                                                      */
     7/*  Copyright 2006, 2007 by                                                */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    333333    AF_Segment    seg;
    334334
    335     AF_Direction  up_dir;
    336335    FT_Fixed      scale;
    337336    FT_Pos        edge_distance_threshold;
     
    342341    scale = ( dim == AF_DIMENSION_HORZ ) ? hints->x_scale
    343342                                         : hints->y_scale;
    344 
    345     up_dir = ( dim == AF_DIMENSION_HORZ ) ? AF_DIR_UP
    346                                           : AF_DIR_RIGHT;
    347343
    348344    /*********************************************************************/
     
    432428        /* insert a new edge in the list and */
    433429        /* sort according to the position    */
    434         error = af_axis_hints_new_edge( axis, seg->pos, memory, &edge );
     430        error = af_axis_hints_new_edge( axis, seg->pos, seg->dir, memory, &edge );
    435431        if ( error )
    436432          goto Exit;
     
    13661362
    13671363
    1368     error = af_glyph_hints_reload( hints, outline );
     1364    error = af_glyph_hints_reload( hints, outline, 0 );
    13691365    if ( error )
    13701366      goto Exit;
  • trunk/poppler/freetype2/src/autofit/afglobal.c

    r200 r209  
    2121#include "aflatin.h"
    2222#include "afcjk.h"
     23#include "afindic.h"
     24
    2325#include "aferrors.h"
    2426
     27#ifdef FT_OPTION_AUTOFIT2
     28#include "aflatin2.h"
     29#endif
    2530
    2631  /* populate this list when you add new scripts */
     
    2833  {
    2934    &af_dummy_script_class,
     35#ifdef FT_OPTION_AUTOFIT2
     36    &af_latin2_script_class,
     37#endif
    3038    &af_latin_script_class,
    3139    &af_cjk_script_class,
    32 
     40    &af_indic_script_class,
    3341    NULL  /* do not remove */
    3442  };
    3543
    3644  /* index of default script in `af_script_classes' */
    37 #define AF_SCRIPT_LIST_DEFAULT  1
     45#define AF_SCRIPT_LIST_DEFAULT  2
    3846  /* indicates an uncovered glyph                   */
    3947#define AF_SCRIPT_LIST_NONE   255
     
    218226  af_face_globals_get_metrics( AF_FaceGlobals     globals,
    219227                               FT_UInt            gindex,
     228                               FT_UInt            options,
    220229                               AF_ScriptMetrics  *ametrics )
    221230  {
     
    223232    FT_UInt           gidx;
    224233    AF_ScriptClass    clazz;
    225     FT_Error          error = AF_Err_Ok;
     234    FT_UInt           script     = options & 15;
     235    const FT_UInt     script_max = sizeof ( af_script_classes ) /
     236                                     sizeof ( af_script_classes[0] );
     237    FT_Error          error      = AF_Err_Ok;
    226238
    227239
     
    232244    }
    233245
    234     gidx    = globals->glyph_scripts[gindex];
    235     clazz   = af_script_classes[gidx];
     246    gidx = script;
     247    if ( gidx == 0 || gidx + 1 >= script_max )
     248      gidx = globals->glyph_scripts[gindex];
     249
     250    clazz = af_script_classes[gidx];
     251    if ( script == 0 )
     252      script = clazz->script;
     253
    236254    metrics = globals->metrics[clazz->script];
    237255    if ( metrics == NULL )
  • trunk/poppler/freetype2/src/autofit/afglobal.h

    r150 r209  
    66/*    (specification).                                                     */
    77/*                                                                         */
    8 /*  Copyright 2003, 2004, 2005 by                                          */
     8/*  Copyright 2003, 2004, 2005, 2007 by                                    */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    5151  af_face_globals_get_metrics( AF_FaceGlobals     globals,
    5252                               FT_UInt            gindex,
     53                               FT_UInt            options,
    5354                               AF_ScriptMetrics  *ametrics );
    5455
  • trunk/poppler/freetype2/src/autofit/afhints.c

    r200 r209  
    5555
    5656    segment = axis->segments + axis->num_segments++;
    57 #if 0
    58     FT_ZERO( segment );
    59 #endif
    6057
    6158  Exit:
     
    6865  af_axis_hints_new_edge( AF_AxisHints  axis,
    6966                          FT_Int        fpos,
     67                          AF_Direction  dir,
    7068                          FT_Memory     memory,
    7169                          AF_Edge      *aedge )
     
    102100    edge  = edges + axis->num_edges;
    103101
    104     while ( edge > edges && edge[-1].fpos > fpos )
    105     {
     102    while ( edge > edges )
     103    {
     104      if ( edge[-1].fpos < fpos )
     105        break;
     106
     107      /* we want the edge with same position and minor direction */
     108      /* to appear before those in the major one in the list     */
     109      if ( edge[-1].fpos == fpos && dir == axis->major_dir )
     110        break;
     111
    106112      edge[0] = edge[-1];
    107113      edge--;
     
    112118    FT_ZERO( edge );
    113119    edge->fpos = (FT_Short)fpos;
     120    edge->dir  = (FT_Char)dir;
    114121
    115122  Exit:
     
    188195
    189196
     197  static const char*
     198  af_edge_flags_to_string( AF_Edge_Flags  flags )
     199  {
     200    static char  temp[32];
     201    int          pos = 0;
     202
     203
     204    if ( flags & AF_EDGE_ROUND )
     205    {
     206      memcpy( temp + pos, "round", 5 );
     207      pos += 5;
     208    }
     209    if ( flags & AF_EDGE_SERIF )
     210    {
     211      if ( pos > 0 )
     212        temp[pos++] = ' ';
     213      memcpy( temp + pos, "serif", 5 );
     214      pos += 5;
     215    }
     216    if ( pos == 0 )
     217      return "normal";
     218
     219    temp[pos] = 0;
     220
     221    return temp;
     222  }
     223
     224
    190225  /* A function to dump the array of linked segments. */
    191226  void
     
    205240      printf ( "Table of %s segments:\n",
    206241               dimension == AF_DIMENSION_HORZ ? "vertical" : "horizontal" );
    207       printf ( "  [ index |  pos |  dir  | link | serif |"
    208                " height  | extra ]\n" );
     242      printf ( "  [ index |  pos  |  dir  | link | serif |"
     243               " height  | extra | flags    ]\n" );
    209244
    210245      for ( seg = segments; seg < limit; seg++ )
    211246      {
    212         printf ( "  [ %5d | %4d | %5s | %4d | %5d | %5d | %5d ]\n",
     247        printf ( "  [ %5d | %5.2g | %5s | %4d | %5d | %5d | %5d | %s ]\n",
    213248                 seg - segments,
    214                  (int)seg->pos,
     249                 dimension == AF_DIMENSION_HORZ ? (int)seg->first->ox / 64.0
     250                                                : (int)seg->first->oy / 64.0,
    215251                 af_dir_str( (AF_Direction)seg->dir ),
    216252                 AF_INDEX_NUM( seg->link, segments ),
    217253                 AF_INDEX_NUM( seg->serif, segments ),
    218254                 seg->height,
    219                  seg->height - ( seg->max_coord - seg->min_coord ) );
     255                 seg->height - ( seg->max_coord - seg->min_coord ),
     256                 af_edge_flags_to_string( seg->flags ) );
    220257      }
    221258      printf( "\n" );
     
    244281      printf ( "Table of %s edges:\n",
    245282               dimension == AF_DIMENSION_HORZ ? "vertical" : "horizontal" );
    246       printf ( "  [ index |  pos |  dir  | link |"
    247                " serif | blue | opos  |  pos  ]\n" );
     283      printf ( "  [ index |  pos  |  dir  | link |"
     284               " serif | blue | opos  |  pos  | flags   ]\n" );
    248285
    249286      for ( edge = edges; edge < limit; edge++ )
    250287      {
    251         printf ( "  [ %5d | %4d | %5s | %4d |"
    252                  " %5d |   %c  | %5.2f | %5.2f ]\n",
     288        printf ( "  [ %5d | %5.2g | %5s | %4d |"
     289                 " %5d |   %c  | %5.2f | %5.2f | %s ]\n",
    253290                 edge - edges,
    254                  (int)edge->fpos,
     291                 (int)edge->opos / 64.0,
    255292                 af_dir_str( (AF_Direction)edge->dir ),
    256293                 AF_INDEX_NUM( edge->link, edges ),
     
    258295                 edge->blue_edge ? 'y' : 'n',
    259296                 edge->opos / 64.0,
    260                  edge->pos / 64.0 );
     297                 edge->pos / 64.0,
     298                 af_edge_flags_to_string( edge->flags ) );
    261299      }
    262300      printf( "\n" );
     
    297335                        FT_Pos  dy )
    298336  {
    299 
    300 #if 1
    301 
    302337    FT_Pos        ll, ss;  /* long and short arm lengths */
    303338    AF_Direction  dir;     /* candidate direction        */
     
    335370    }
    336371
    337     ss *= 12;
    338     if ( FT_ABS(ll) <= FT_ABS(ss) )
     372    ss *= 14;
     373    if ( FT_ABS( ll ) <= FT_ABS( ss ) )
    339374      dir = AF_DIR_NONE;
    340375
    341376    return dir;
    342 
    343 #else /* 0 */
    344 
    345     AF_Direction  dir;
    346     FT_Pos        ax = FT_ABS( dx );
    347     FT_Pos        ay = FT_ABS( dy );
    348 
    349 
    350     dir = AF_DIR_NONE;
    351 
    352     /* atan(1/12) == 4.7 degrees */
    353 
    354     /* test for vertical direction */
    355     if ( ax * 12 < ay )
    356     {
    357       dir = dy > 0 ? AF_DIR_UP : AF_DIR_DOWN;
    358     }
    359     /* test for horizontal direction */
    360     else if ( ay * 12 < ax )
    361     {
    362       dir = dx > 0 ? AF_DIR_RIGHT : AF_DIR_LEFT;
    363     }
    364 
    365     return dir;
    366 
    367 #endif /* 0 */
    368 
    369377  }
    370378
    371379
    372380  /* compute all inflex points in a given glyph */
    373 
    374 #if 1
    375381
    376382  static void
     
    485491  }
    486492
    487 #else /* old code */
    488 
    489   static void
    490   af_glyph_hints_compute_inflections( AF_GlyphHints  hints )
    491   {
    492     AF_Point*  contour       = hints->contours;
    493     AF_Point*  contour_limit = contour + hints->num_contours;
    494 
    495 
    496     /* do each contour separately */
    497     for ( ; contour < contour_limit; contour++ )
    498     {
    499       AF_Point  point = contour[0];
    500       AF_Point  first = point;
    501       AF_Point  start = point;
    502       AF_Point  end   = point;
    503       AF_Point  before;
    504       AF_Point  after;
    505       AF_Angle  angle_in, angle_seg, angle_out;
    506       AF_Angle  diff_in, diff_out;
    507       FT_Int    finished = 0;
    508 
    509 
    510       /* compute first segment in contour */
    511       first = point;
    512 
    513       start = end = first;
    514       do
    515       {
    516         end = end->next;
    517         if ( end == first )
    518           goto Skip;
    519 
    520       } while ( end->fx == first->fx && end->fy == first->fy );
    521 
    522       angle_seg = af_angle_atan( end->fx - start->fx,
    523                                  end->fy - start->fy );
    524 
    525       /* extend the segment start whenever possible */
    526       before = start;
    527       do
    528       {
    529         do
    530         {
    531           start  = before;
    532           before = before->prev;
    533           if ( before == first )
    534             goto Skip;
    535 
    536         } while ( before->fx == start->fx && before->fy == start->fy );
    537 
    538         angle_in = af_angle_atan( start->fx - before->fx,
    539                                   start->fy - before->fy );
    540 
    541       } while ( angle_in == angle_seg );
    542 
    543       first = start;
    544 
    545       AF_ANGLE_DIFF( diff_in, angle_in, angle_seg );
    546 
    547       /* now, process all segments in the contour */
    548       do
    549       {
    550         /* first, extend current segment's end whenever possible */
    551         after = end;
    552         do
    553         {
    554           do
    555           {
    556             end   = after;
    557             after = after->next;
    558             if ( after == first )
    559               finished = 1;
    560 
    561           } while ( end->fx == after->fx && end->fy == after->fy );
    562 
    563           angle_out = af_angle_atan( after->fx - end->fx,
    564                                      after->fy - end->fy );
    565 
    566         } while ( angle_out == angle_seg );
    567 
    568         AF_ANGLE_DIFF( diff_out, angle_seg, angle_out );
    569 
    570         if ( ( diff_in ^ diff_out ) < 0 )
    571         {
    572           /* diff_in and diff_out have different signs, we have */
    573           /* inflection points here...                          */
    574           do
    575           {
    576             start->flags |= AF_FLAG_INFLECTION;
    577             start = start->next;
    578 
    579           } while ( start != end );
    580 
    581           start->flags |= AF_FLAG_INFLECTION;
    582         }
    583 
    584         start     = end;
    585         end       = after;
    586         angle_seg = angle_out;
    587         diff_in   = diff_out;
    588 
    589       } while ( !finished );
    590 
    591     Skip:
    592       ;
    593     }
    594   }
    595 
    596 #endif /* old code */
    597 
    598493
    599494  FT_LOCAL_DEF( void )
     
    657552  FT_LOCAL_DEF( FT_Error )
    658553  af_glyph_hints_reload( AF_GlyphHints  hints,
    659                          FT_Outline*    outline )
     554                         FT_Outline*    outline,
     555                         FT_Bool        get_inflections )
    660556  {
    661557    FT_Error   error   = AF_Err_Ok;
     
    740636
    741637
    742       /* compute coordinates & Bezier flags */
    743       {
    744         FT_Vector*  vec = outline->points;
    745         char*       tag = outline->tags;
     638      /* compute coordinates & Bezier flags, next and prev */
     639      {
     640        FT_Vector*  vec           = outline->points;
     641        char*       tag           = outline->tags;
     642        AF_Point    first         = points;
     643        AF_Point    end           = points + outline->contours[0];
     644        AF_Point    prev          = end;
     645        FT_Int      contour_index = 0;
    746646
    747647
     
    764664            point->flags = 0;
    765665          }
    766         }
    767       }
    768 
    769       /* compute `next' and `prev' */
    770       {
    771         FT_Int    contour_index;
    772         AF_Point  prev;
    773         AF_Point  first;
    774         AF_Point  end;
    775 
    776 
    777         contour_index = 0;
    778 
    779         first = points;
    780         end   = points + outline->contours[0];
    781         prev  = end;
    782 
    783         for ( point = points; point < point_limit; point++ )
    784         {
     666
    785667          point->prev = prev;
    786           if ( point < end )
     668          prev->next  = point;
     669          prev        = point;
     670
     671          if ( point == end )
    787672          {
    788             point->next = point + 1;
    789             prev        = point;
    790           }
    791           else
    792           {
    793             point->next = first;
    794             contour_index++;
    795             if ( point + 1 < point_limit )
     673            if ( ++contour_index < outline->n_contours )
    796674            {
     675              first = point + 1;
    797676              end   = points + outline->contours[contour_index];
    798               first = point + 1;
    799677              prev  = end;
    800678            }
     
    820698      /* compute directions of in & out vectors */
    821699      {
     700        AF_Point      first  = points;
     701        AF_Point      prev   = NULL;
     702        FT_Pos        in_x   = 0;
     703        FT_Pos        in_y   = 0;
     704        AF_Direction  in_dir = AF_DIR_NONE;
     705
     706
    822707        for ( point = points; point < point_limit; point++ )
    823708        {
    824           AF_Point  prev;
    825709          AF_Point  next;
    826           FT_Pos    in_x, in_y, out_x, out_y;
    827 
    828 
    829           prev   = point->prev;
    830           in_x   = point->fx - prev->fx;
    831           in_y   = point->fy - prev->fy;
    832 
    833           point->in_dir = (FT_Char)af_direction_compute( in_x, in_y );
    834 
    835           next   = point->next;
    836           out_x  = next->fx - point->fx;
    837           out_y  = next->fy - point->fy;
    838 
    839           point->out_dir = (FT_Char)af_direction_compute( out_x, out_y );
     710          FT_Pos    out_x, out_y;
     711
     712
     713          if ( point == first )
     714          {
     715            prev   = first->prev;
     716            in_x   = first->fx - prev->fx;
     717            in_y   = first->fy - prev->fy;
     718            in_dir = af_direction_compute( in_x, in_y );
     719            first  = prev + 1;
     720          }
     721
     722          point->in_dir = (FT_Char)in_dir;
     723
     724          next  = point->next;
     725          out_x = next->fx - point->fx;
     726          out_y = next->fy - point->fy;
     727
     728          in_dir         = af_direction_compute( out_x, out_y );
     729          point->out_dir = (FT_Char)in_dir;
    840730
    841731          if ( point->flags & ( AF_FLAG_CONIC | AF_FLAG_CUBIC ) )
     
    846736          else if ( point->out_dir == point->in_dir )
    847737          {
    848 
    849 #if 1
    850 
    851738            if ( point->out_dir != AF_DIR_NONE )
    852739              goto Is_Weak_Point;
     
    854741            if ( ft_corner_is_flat( in_x, in_y, out_x, out_y ) )
    855742              goto Is_Weak_Point;
    856 
    857 #else /* old code */
    858 
    859             AF_Angle  angle_in, angle_out, delta;
    860 
    861 
    862             if ( point->out_dir != AF_DIR_NONE )
    863               goto Is_Weak_Point;
    864 
    865             angle_in  = af_angle_atan( in_x, in_y );
    866             angle_out = af_angle_atan( out_x, out_y );
    867 
    868             AF_ANGLE_DIFF( delta, angle_in, angle_out );
    869 
    870             if ( delta < 2 && delta > -2 )
    871               goto Is_Weak_Point;
    872 
    873 #endif /* old code */
    874 
    875743          }
    876744          else if ( point->in_dir == -point->out_dir )
    877745            goto Is_Weak_Point;
     746
     747          in_x = out_x;
     748          in_y = out_y;
     749          prev = point;
    878750        }
    879751      }
    880752    }
    881753
    882     /* compute inflection points */
    883     af_glyph_hints_compute_inflections( hints );
     754    /* compute inflection points --                 */
     755    /* disabled due to no longer perceived benefits */
     756    if ( 0 && get_inflections )
     757      af_glyph_hints_compute_inflections( hints );
    884758
    885759  Exit:
     
    924798                                    AF_Dimension   dim )
    925799  {
    926     AF_AxisHints  axis       = & hints->axis[dim];
    927     AF_Edge       edges      = axis->edges;
    928     AF_Edge       edge_limit = edges + axis->num_edges;
    929     AF_Edge       edge;
    930 
    931 
    932     for ( edge = edges; edge < edge_limit; edge++ )
    933     {
    934       /* move the points of each segment     */
    935       /* in each edge to the edge's position */
    936       AF_Segment  seg = edge->first;
    937 
    938 
    939       do
    940       {
    941         AF_Point  point = seg->first;
    942 
    943 
     800    AF_AxisHints  axis          = & hints->axis[dim];
     801    AF_Segment    segments      = axis->segments;
     802    AF_Segment    segment_limit = segments + axis->num_segments;
     803    AF_Segment    seg;
     804
     805
     806    if ( dim == AF_DIMENSION_HORZ )
     807    {
     808      for ( seg = segments; seg < segment_limit; seg++ )
     809      {
     810        AF_Edge   edge = seg->edge;
     811        AF_Point  point, first, last;
     812
     813
     814        if ( edge == NULL )
     815          continue;
     816
     817        first = seg->first;
     818        last  = seg->last;
     819        point = first;
    944820        for (;;)
    945821        {
    946           if ( dim == AF_DIMENSION_HORZ )
    947           {
    948             point->x      = edge->pos;
    949             point->flags |= AF_FLAG_TOUCH_X;
    950           }
    951           else
    952           {
    953             point->y      = edge->pos;
    954             point->flags |= AF_FLAG_TOUCH_Y;
    955           }
    956 
    957           if ( point == seg->last )
     822          point->x      = edge->pos;
     823          point->flags |= AF_FLAG_TOUCH_X;
     824
     825          if ( point == last )
     826            break;
     827
     828          point = point->next;
     829
     830        }
     831      }
     832    }
     833    else
     834    {
     835      for ( seg = segments; seg < segment_limit; seg++ )
     836      {
     837        AF_Edge   edge = seg->edge;
     838        AF_Point  point, first, last;
     839
     840
     841        if ( edge == NULL )
     842          continue;
     843
     844        first = seg->first;
     845        last  = seg->last;
     846        point = first;
     847        for (;;)
     848        {
     849          point->y      = edge->pos;
     850          point->flags |= AF_FLAG_TOUCH_Y;
     851
     852          if ( point == last )
    958853            break;
    959854
    960855          point = point->next;
    961856        }
    962 
    963         seg = seg->edge_next;
    964 
    965       } while ( seg != edge->first );
     857      }
    966858    }
    967859  }
     
    1057949          max = edge_limit - edges;
    1058950
     951#if 1
     952          /* for small edge counts, a linear search is better */
     953          if ( max <= 8 )
     954          {
     955            FT_UInt  nn;
     956
     957            for ( nn = 0; nn < max; nn++ )
     958              if ( edges[nn].fpos >= u )
     959                break;
     960
     961            if ( edges[nn].fpos == u )
     962            {
     963              u = edges[nn].pos;
     964              goto Store_Point;
     965            }
     966          &