Changeset 182 for trunk/poppler


Ignore:
Timestamp:
Jan 18, 2007, 5:32:59 PM (15 years ago)
Author:
Eugene Romanenko
Message:

freetype update to version 2.3.0

Location:
trunk/poppler/freetype2
Files:
2 added
1 deleted
85 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/freetype2/ChangeLog

    r150 r182  
     12007-01-17  Werner Lemberg  <wl@gnu.org>
     2
     3
     4        * Version 2.3.0 released.
     5        =========================
     6
     7
     8        Tag sources with `VER-2-3-0-FINAL'.
     9
     102007-01-17  Werner Lemberg  <wl@gnu.org>
     11
     12        * docs/release: Updated.
     13
     142007-01-16  David Turner  <david@freetype.org>
     15
     16        * src/autofit/aflatin.c (af_latin_hints_compute_segments),
     17        src/cff/cffdriver.c (cff_ps_get_font_info), src/truetype/ttobjs.c
     18        (tt_face_init), src/truetype/ttinterp.c (Ins_SHC): Fix compiler
     19        warnings.
     20
     212007-01-15  Detlef WÃŒrkner  <TetiSoft@apg.lahn.de>
     22
     23        * builds/amiga/makefile, builds/amiga/makefile.os4,
     24        builds/amiga/smakefile: Add `ftgasp.c' and `ftlcdfil.c'.
     25
     26        * builds/amiga/include/freetype/config/ftconfig.h: Synchronize.
     27
     282007-01-14  Detlef WÃŒrkner  <TetiSoft@apg.lahn.de>
     29
     30        Fix various compiler warnings.
     31
     32        * src/truetype/ttdriver.c (tt_size_select), src/cff/cffobjs.h,
     33        src/cff/cffobjs.c (cff_size_request), src/type42/t42objs.h:
     34        s/index/strike_index/.
     35        * src/base/ftobjs.c (FT_Match_Size): s/index/size_index/.
     36
     37        * src/gxvalid/gxvmorx5.c
     38        (gxv_morx_subtable_type5_InsertList_validate): s/index/table_index/.
     39
     40        * src/truetype/ttinterp.c (Compute_Point_Displacement),
     41        src/pcf/pcfread.c (pcf_seek_to_table_type): Avoid possibly
     42        uninitialized variables.
     43
     442007-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     45
     46        * docs/CHANGES, docs/INSTALL.MAC: Improvements.
     47
     482007-01-13  Werner Lemberg  <wl@gnu.org>
     49
     50        * src/type1/t1afm.c (T1_Read_Metrics): MS Windows allows PFM
     51        versions up to 0x3FF without complaining.
     52
     532007-01-13  Derek Clegg  <dclegg@apple.com>
     54
     55        Add FT_Get_PS_Font_Info interface to CFF driver.
     56
     57        * src/cff/cfftypes.h: Include FT_TYPE1_TABLES_H.
     58        (CFF_FontRec): Add `font_info' field.
     59
     60        * src/cff/cffload.c: Include FT_TYPE1_TABLES_H.
     61        (cff_font_done): Free font->font_info if necessary.
     62
     63        * src/cff/cffdrvr.c (cff_ps_get_font_info): New function.
     64        (cff_service_ps_info): Register cff_ps_get_font_info.
     65
     662007-01-13  Werner Lemberg  <wl@gnu.org>
     67
     68        * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix compilation
     69        with C++ compiler.
     70
     71        * src/autofit/afhints.c (af_glyph_hints_dump_segments,
     72        af_glyph_hints_dump_edges): Ditto.
     73
     74        * src/base/rules.mk (BASE_SRC): Remove ftgasp.c (it's already in
     75        `modules.cfg').
     76
     77        * src/sfnt/ttsbit0.h: Remove.
     78
     79        * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c.
     80
     812007-01-12  David Turner  <david@freetype.org>
     82
     83        * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix memory stomping
     84        bug in the bitmap emboldener if the pitch of the source bitmap is
     85        much larger than its width.
     86
     87        * src/truetype/ttinterp.c (Update_Max): Fix aliasing-related
     88        compilation warning.
     89
     902007-01-12  Werner Lemberg  <wl@gnu.org>
     91
     92        * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
     93        `automake' CVS module from sources.redhat.com.
     94
     952007-01-11  Werner Lemberg  <wl@gnu.org>
     96
     97        * src/type1/t1load.c (is_space): Removed.
     98        (parse_encoding, parse_charstrings): Use IS_PS_DELIM.
     99        (parse_charstrings): Use IS_PS_TOKEN.
     100
     101
     102        * autogen.sh: Avoid bash specific syntax.
     103
     1042007-01-11  David Turner  <david@freetype.org>
     105
     106        * docs/CHANGES: Small update.
     107
     108        * builds/unix/configure.raw (version_info): Set to 9:11:3.
     109
     110        * src/base/ftobjs.c (IsMacResource): Fix a small bug that caused a
     111        crash with some Mac OS X .dfont files.  Submitted by Masatake
     112        Yamato.
     113
     114        * autogen.sh: Small fix to get it working on Mac OS X properly:
     115        The issue is that GNU libtool is called `glibtool' on this platform,
     116        and we must call `glibtoolize', since `libtoolize' doesn't exist.
     117
     1182007-01-10  David Turner  <david@freetype.org>
     119
     120        * all-sources: Tag all sources with VER-2-3-0-RC1 and
     121        VER-2-3-0.
     122
     123        * Jamfile (RefDoc), README, builds/win32/visualc/freetype.dsp,
     124        builds/win32/visualc/freetype.vcproj, docs/VERSION.DLL: Update
     125        version number to 2.3.0.
     126
     127        * include/freetype/freetype.h (FREETYPE_MINOR): Set to 3.
     128        (FREETYPE_PATCH): Set to 0.
     129
     130        * include/freetype/ftchapters.h, include/freetype/ftgasp.h,
     131        include/freetype/ftlcdfil.h: Update reference documentation with
     132        GASP support and LCD filtering sections.
     133
     134        * src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix a typo
     135        which created an endless loop with some malformed font files.
     136
     1372007-01-10  Derek Clegg  <dclegg@apple.com>
     138
     139        * src/type1/t1load.c (T1_Get_MM_Var): Always return fixed point
     140        values.
     141
     1422007-01-08  David Turner  <david@freetype.org>
     143
     144        * docs/CHANGES: Updated.
     145
     146        * include/freetype/ftgasp.h, src/base/ftgasp.c: New files which add
     147        a new API `FT_Get_Gasp' to return entries of the `gasp' table
     148        corresponding to a given character pixel size.
     149
     150        * src/sfnt/ttload.c (tt_face_load_gasp): Add version check for the
     151        `gasp' table, in order to avoid potential problems with later
     152        versions.
     153
     154        * include/freetype/config/ftheader.h (FT_GASP_H): New macro for
     155        <freetype/ftgasp.h>.
     156
     157        * src/base/rules.mk (BASE_SRC), src/base/Jamfile (_sources),
     158        modules.cfg (BASE_EXTENSIONS), builds/win32/visualc/freetype.dsp,
     159        builds/win32/visualc/freetype.vcproj: Add src/base/ftgasp.c to the
     160        default build.
     161
     1622007-01-07  Werner Lemberg  <wl@gnu.org>
     163
     164        * src/cid/cidparse.c (cid_parser_new): Improve error message for
     165        Type 11 fonts.
     166        Scan for `/sfnts' token.
     167
     1682007-01-07  Werner Lemberg  <wl@gnu.org>
     169
     170        * src/cid/cidparse.c (cid_parser_new): Reject Type 11 fonts.
     171
     1722007-01-06  Werner Lemberg  <wl@gnu.org>
     173
     174        * src/cff/cffload.c (cff_index_init): Remove unused variable.
     175        (cff_index_read_offset): s/perror/errorp/ to avoid global shadowing.
     176
     1772007-01-04  David Turner  <david@freetype.org>
     178
     179        * src/pfr/pfrobjs.c (pfr_face_init): Detect non-scalable fonts
     180        correctly.  This fixes Savannah bug #17876.
     181
     182
     183        Do not allocate interpreter-specific tables in memory if we are not
     184        going to load glyphs with the bytecode interpreter anyway.
     185
     186        * src/truetype/ttgload.c (tt_loader_init): Load execution context
     187        only if glyph is hinted.
     188        Updated.
     189        * src/truetype/ttobjs.h (TT_SizeRec): Add members `bytecode_ready'
     190        and `cvs_ready'.
     191        Add `tt_size_ready_bytecode' declaration.
     192        * src/truetype/ttobjs.c (tt_size_done_bytecode,
     193        tt_size_init_bytecode, tt_size_ready_bytecode): New functions.
     194        (tt_size_init): Move most code into `tt_size_init_bytecode'.
     195        (tt_size_done): Move most code into `tt_size_done_bytecode'.
     196        (tt_size_reset): Move some code to `tt_size_ready_bytecode'.
     197
     198
     199        Don't extract the metrics table from the SFNT font file.  Instead,
     200        reparse it on each glyph load.  The runtime difference is not
     201        noticeable, and it can save a lot of heap memory when memory-mapped
     202        files are not used.
     203
     204        * include/freetype/internal/tttypes.h (TT_FaceRec): Add members
     205        `horz_metrics_offset' and `vert_metrics_ofset'.
     206        * src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics):
     207        Updated.
     208
     209
     210        * src/sfnt/ttcmap.c (tt_cmap4_validate): Slight optimization.
     211
     212
     213        Do not load the CFF index offsets into memory, since this wastes a
     214        *lot* of heap memory with large Asian CFF fonts.  There is no
     215        significant performance loss.
     216
     217        * src/cff/cffload.h: Add `cff_charset_cid_to_gindex' declaration.
     218        * src/cff/cfftypes.h (CFF_IndexRec): Add fields `start' and
     219        `data_size'.
     220        (CFF_CharsetRec): Add field `num_glyphs'.
     221
     222        * src/cff/cffload.c (cff_index_read_offset, cff_index_load_offsets,
     223        cff_charset_cid_to_gindex): New functions.
     224        (cff_new_index): Renamed to...
     225        (cff_index_init): This.  Update all callers.
     226        Updated -- some code has been moved to `cff_index_load_offsets'.
     227        (cff_done_index): Renamed to...
     228        (cff_index_done): This.  Update all callers.
     229        (cff_index_get_pointers, cff_index_access_element): Updated to use
     230        stream offsets.
     231        (cff_charset_compute_cids): Set `num_glyphs' field.
     232        (cff_encoding_load): Updated.
     233
     234        * src/cff/cffgload.c (cff_slot_load): Updated.
     235
     2362007-01-04  David Turner  <david@freetype.org>
     237
     238        * docs/INSTALL.UNIX: Simplify some parts, add reference to
     239        autogen.sh and pointer to README.CVS.
     240
     241        * README.CVS: Add common problem description and solution
     242        when running autogen.sh.
     243
     244        * docs/INSTALL: Add reference to MacOS X.
     245
     246        * docs/MAKEPP, docs/INSTALL.MAC: New documentation files.
     247
     248        * docs/TODO: Remove obsolete items.
     249
     250        * src/raster/ftraster.c: (TRaster_Instance): Replace it with...
     251        (TWorker): This.
     252        Remove `count_table' and `memory'.
     253        Make `grays' a pointer.
     254        (TRaster): New structure.
     255        (count_table): New static array.
     256        (RAS_ARGS, RAS_ARG, RAS_VARS, RAS_VAR, FT_UNUSED_RASTER, cur_ras,
     257        Vertical_Gray_Sweep_Step, ft_black_new, ft_black_done,
     258        ft_black_set_mode, ft_black_render): Updated.
     259        (ft_black_init): Don't initialize `count_table'.
     260        (ft_black_reset): Use the render pool.  This saves about 6KB of
     261        heap space for each FT_Library instance.
     262
     263        * src/smooth/ftgrays.c (TRaster): Replaced with...
     264        (TWorker): This.
     265        Remove `memory'.
     266        (TRaster): New structure.
     267
     268        (RAS_ARG_, RAS_ARG, RAS_VAR_, RAS_VAR, ras, gray_render_line,
     269        gray_move_to, gray_line_to, gray_conic_to, gray_cubic_to,
     270        gray_render_span, gray_raster_render): Updated.
     271        (gray_raster_reset): Use the render pool.  This saves about 6KB of
     272        heap space for each FT_Library instance.
     273
     274        * src/sfnt/sfobjs.c, src/sfnt/ttkern.c, src/sfnt/ttkern.h,
     275        src/sfnt/ttmtx.c, src/sfnt/ttsbit.c, src/sfnt/ttsbit.h,
     276        src/truetype/ttpload.c, include/freetype/config/ftoption.h: Remove
     277        FT_OPTIMIZE_MEMORY macro (and code for !FT_OPTIMIZE_MEMORY) since
     278        the optimization is no longer experimental.
     279
     280        * src/pshinter/pshalgo.c (psh_glyph_interpolate_normal_points):
     281        Remove a typo that results in no hinting and a memory leak with some
     282        large Asian CFF fonts.
     283
     284        * src/base/ftobjs.c (FT_Done_Library): Remove a subtle memory leak
     285        which happens when FT_Done_Library is called with still opened
     286        CFF_Faces in it.  We need to close all faces before destroying the
     287        modules, or else some bad things (memory leaks) may happen.
     288
     2892007-01-02  Werner Lemberg  <wl@gnu.org>
     290
     291        * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate):
     292        Remove compiler warning.
     293
     2942007-01-02  David Turner  <david@freetype.org>
     295
     296        * src/sfnt/sfobjs.c: Add documentation comment.
     297
     2982006-12-31  Masatake YAMATO  <jet@gyve.org>
     299
     300        * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate): New
     301        function.
     302        Check uniqueness of the gid pairs.
     303        (gxv_kern_subtable_fmt0_validate): Move some code to
     304        `gxv_kern_subtable_fmt0_pairs_validate'.
     305
     3062006-12-22  David Turner  <david@freetype.org>
     307
     308        * src/autofit/aflatin.c, src/truetype/ttgload.c: Remove compiler
     309        warnings.
     310
     311        * builds/win32/visualc/freetype.vcproj: Add _CRT_SECURE_NO_DEPRECATE
     312        to avoid deprecation warnings with Visual C++ 8.
     313
     3142006-12-16  Anders Kaseorg  <anders@kaseorg.com>
     315
     316        * src/base/ftlcdfil.c (FT_Library_SetLcdFilter)
     317        [FT_FORCE_LIGHT_LCD_FILTER]: Fix typo.
     318
     3192006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     320
     321        * include/freetype/internal/services/svotval.h: Add `volatile' to
     322        sync with the modification by Jens Claudius on 2006-08-22; cf.
     323          http://cvs.savannah.gnu.org/viewcvs/freetype/freetype2/src/otvalid/otvmod.c?r1=1.4&r2=1.5
     324
     3252006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     326
     327        * src/base/ftmac.c: Specialized for Mac OS X only.
     328        * builds/unix/ftconfig.in: Fixed for ppc64 missing Carbon framework.
     329        * builds/unix/configure.raw: Ditto. When explicit switches for
     330        FSSpec/FSRef/QuickDraw/ATS availability are given to configure,
     331        builds/mac/ftmac.c is used instead of default src/base/ftmac.c.
     332
     3332006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     334
     335        * builds/mac/ftmac.c: Copied src/base/ftmac.c for legacy system.
     336        * builds/mac/FreeType.m68k_cfm.make.txt: Fix to use builds/mac/ftmac.c
     337        instead of src/base/ftmac.c
     338        * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
     339        * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
     340        * builds/mac/FreeType.m68k_far.make.txt: Ditto, and exclude gxvalid.c
     341        that cannot be built at present.
     342
     3432006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     344
     345        * src/base/ftobjs.c: Improvement of resource fork handler for
     346        POSIX, cf.
     347          http://lists.gnu.org/archive/html/freetype-devel/2006-10/msg00025.html
     348        (Mac_Read_sfnt_Resource): Count only `sfnt' resource of suitcase font
     349        format or .dfont, to simulate the face index number counted by ftmac.c.
     350        (IsMacResource): Return the number of scalable faces correctly.
     351
     3522006-12-10  Werner Lemberg  <wl@gnu.org>
     353
     354        * builds/toplevel.mk (version): Protect against `distclean' target.
     355
     3562006-12-09  Werner Lemberg  <wl@gnu.org>
     357
     358        * builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat'
     359        or `type'.
     360
     361        * builds/freetype.mk (version): Extracted from freetype.h, using
     362        GNU make's built-in string functions.
     363        (refdoc): Use $(version) instead of static version number.
     364
     3652006-12-08  Werner Lemberg  <wl@gnu.org>
     366
     367        * builds/toplevel.mk (dist): Extract version number from freetype.h.
     368
     3692006-12-08  Vladimir Volovich  <vvv@vsu.ru>
     370
     371        * src/tools/apinames (State): Remove final comma in structure -- xlc
     372        v5 under AIX 4.3 doesn't like this.
     373
     3742006-12-07  David Turner  <david@freetype.org>
     375
     376        * src/autofit/afloader.c (af_loader_load_g): Small adjustment
     377        to the spacing of auto-fitted glyphs.  This only impacts rare
     378        cases (e.g., Arial Bold at rather small character sizes).
     379
     3802006-12-03  Werner Lemberg  <wl@gnu.org>
     381
     382        * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c.
     383
     3842006-12-01  Werner Lemberg  <wl@gnu.org>
     385
     386        * src/sfnt/sfobjs.c (tt_face_get_name): All Unicode strings are
     387        encoded in UTF-16BE.  Patch from Rajeev Pahuja <rpahuja@esri.com>.
     388        (tt_name_entry_ascii_from_ucs4): Removed.
     389
     390
     391        * include/freetype/ftxf86.h: Fix and extend comment so that it
     392        appears in the documentation.
     393
     394        * include/freetype/ftchapters.h: Add `font_format' section.
     395
     396
     397        * src/tools/docmaker/tohtml.py (HtmlFormatter::index_exit): Add link
     398        to TOC in index page.
     399
     4002006-11-28  David Turner  <david@freetype.org>
     401
     402        * src/smooth/ftgrays.c (gray_raster_render): Return 0 when we are
     403        trying to render into a zero-width/height bitmap, not an error code.
     404
     405        * src/truetype/ttobjs.c (tt_face_init): Fix typo in previous patch.
     406
     407        * src/smooth/ftgrays.c: Remove hard-coded error values; use FreeType
     408        ones instead.
     409
     410        * src/autofit/afhints.c (af_glyph_hints_dump_segments): Remove unused
     411        variable.
     412
     4132006-11-26  Pierre Hanser  <hanser@club-internet.fr>
     414
     415        * src/truetype/ttobjs.c (tt_face_init): Protect against NULL pointer.
     416
     4172006-11-25  David Turner  <david@freetype.org>
     418
     419        * src/autofit/afhints.c (af_glyph_hints_dump_points,
     420        af_glyph_hints_dump_segments, af_glyph_hints_dumpedges) [!AF_DEBUG]:
     421        Add stubs to link the `ftgrid' test program when debugging is
     422        disabled in the auto-hinter.
     423
     4242006-11-23  David Turner  <david@freetype.org>
     425
     426        * src/autofit/afhints.c, src/autofit/afhints.h, src/autofit/aflatin.c,
     427        src/autofit/aftypes.h: Miscellaneous auto-hinter improvements.
     428
     429        * src/autofit/afhints.c (af_glyph_hints_dump_segments) [AF_DEBUG]:
     430        Emit more sensible information.
     431
     432        * src/autofit/afhints.h (AF_SegmentRec): Add `height' member.
     433
     434        * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Improve
     435        rounding of blue values.
     436        (af_latin_hints_compute_segments): Hint segment heights.
     437        (af_latin_hints_link_segments): Reduce `len_score' value.
     438        (af_latin_hints_compute_edges): Increase `segment_length_threshold'
     439        value and use `height' member for comparisons.
     440        (af_latin_hint_edges): Extend logging message.
     441        Improve handling of remaining edges.
     442
     4432006-11-22  Werner Lemberg  <wl@gnu.org>
     444
     445        Fix Savannah bug #15553.
     446
     447        * src/truetype/ttgload.c (tt_loader_init): Re-execute the CVT
     448        program after a change from mono to grayscaling (and vice versa).
     449        Use correct constant for comparison to get `exec->grayscale'.
     450
     4512006-11-18  Werner Lemberg  <wl@gnu.org>
     452
     453        Because FT_Load_Glyph expects CID values for CID-keyed fonts, the
     454        test for a valid glyph index must be deferred to the font drivers.
     455        This patch fixes Savannah bug #18301.
     456
     457        * src/base/ftobjs.c (FT_Load_Glyph): Don't check `glyph_index'.
     458        * src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/cff/cffgload.c
     459        (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph),
     460        src/pcf/pcfdrivr.c (PCF_Glyph_Load), src/pfr/pfrobjs.c
     461        (pfr_slot_load), src/truetype/ttdriver.c (Load_Glyph),
     462        src/type1/t1gload.c (T1_Load_Glyph), src/winfonts/winfnt.c
     463        (FNT_Load_Glyph): Check validity of `glyph_index'.
     464
     4652006-11-13  David Turner  <david@freetype.org>
     466
     467        * src/truetype/ttinterp.c (FIX_BYTECODE): Undefine.  The interpreter
     468        `enhancements' are still too buggy for general use.
     469
     470        * src/base/ftlcdfil.c: Add support for FT_FORCE_LIGHT_LCD_FILTER and
     471        FT_FORCE_LEGACY_LCD_FILTER at compile time.  Define these macros
     472        when building the library to change the default LCD filter to be
     473        used.  This is only useful for experimentation.
     474
     475        * include/freetype/ftlcdfil.h: Update documentation.
     476
     4772006-11-10  David Turner  <david@freetype.org>
     478
     479        * src/smooth/ftsmooth.c: API change for the LCD
     480        filter.  The FT_LcdFilter value is an enumeration describing which
     481        filter to apply, with new values FT_LCD_FILTER_LIGHT and
     482        FT_LCD_FILTER_LEGACY (the latter implements the LibXft original
     483        algorithm which produces strong color fringes for everything
     484        except very-well hinted text).
     485
     486        * include/freetype/ftlcdfil.h (FT_Library_SetLcdFilter): Change
     487        second parameter to an enum type.
     488
     489        * src/base/ftlcdfil.c (USE_LEGACY): Define.
     490        (_ft_lcd_filter): Rename to...
     491        (_ft_lcd_filter_fir): This.
     492        Update parameters.
     493        (_ft_lcd_filter_legacy) [USE_LEGACY]: New filter function.
     494        (FT_Library_Set_LcdFilter): Update parameters.
     495        Handle new filter modes.
     496
     497        * include/internal/ftobjs.h: Include FT_LCD_FILTER_H.
     498        (FT_Bitmap_LcdFilterFunc): Change third argument to `FT_Library'.
     499        (FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add filtering
     500        callback and update other fields.
     501
     502        * src/smooth/ftsmooth.c (ft_smooth_render_generic)
     503        [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Update.
     504        Other minor improvements.
     505
     506        * src/autofit/aflatin.c: Various tiny improvements that drastically
     507        improve the handling of serif fonts and of LCD/LCD_V hinting modes.
     508        (af_latin_hints_compute_edges): Fix typo.
     509        (af_latin_compute_stem_width): Take better care of diagonal stems.
     510
     5112006-11-09  David Turner  <david@freetype.org>
     512
     513        * src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix
     514        typo which created a variable-used-before-initialized bug.
     515
     5162006-11-07  Zhe Su  <james.su@gmail.com>
     517
     518        * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle vertical layout
     519        also.
     520
     5212006-11-03  Werner Lemberg  <wl@gnu.org>
     522
     523        * src/base/ftcalc.c: Don't use `long long' but `FT_Int64'.
     524
     5252006-11-02  David Turner  <david@freetype.org>
     526
     527        Add a few tweaks to better handle serif fonts.
     528        Add more debugging messages.
     529
     530        * src/autofit/aflatin.c (af_latin_hints_compute_edges): Ignore
     531        segments that are less than 1.5 pixels high.  This gets rid of
     532        *many* corner cases with serifs.
     533        (af_latin_align_linked_edge): Add logging message.
     534        (af_latin_hint_edges): Use AF_HINTS_DO_BLUES.
     535        Add logging messages.
     536        Handle AF_EDGE_FLAG flag specially.
     537
     538        * src/autofit/afmodule.c [AF_DEBUG]: Add _af_debug,
     539        _af_debug_disable_blue_hints, and _af_debug_hints variables.
     540
     541        * src/autofit/aftypes.h (AF_LOG) [AF_DEBUG]: Use _af_debug.
     542        Update external declarations.
     543        (af_corner_orientation, af_corner_is_flat): Replaced by...
     544
     545        * include/freetype/internal/ftcalc.h (ft_corner_orientation,
     546        ft_corner_is_flat): These declarations.
     547
     548        * src/autofit/afangles.c (af_corner_orientation, af_corner_is_flat):
     549        Comment out.  Replaced by...
     550
     551        * src/base/ftcalc.h (ft_corner_orientation, ft_corner_is_flat):
     552        These functions.  Update all callers.
     553        (FT_Add64) [!FT_LONG64]: Simplify.
     554
     555        * src/autofit/afhints.c: Include FT_INTERNAL_CALC_H.
     556        (af_direction_compute): Add a missing FT_ABS call.  This bug caused
     557        production of garbage by missing lots of segments.
     558
     559        * src/autofit/afhints.h (AF_HINTS_DO_BLUES): New macro.
     560
     561        * src/autofit/afloader.c (af_loader_init, af_loader_done)
     562        [AF_DEBUG]: Set _af_debug_hints.
     563
     564
     565        * src/pshinter/pshalgo.c: Include FT_INTERNAL_CALC_H.
     566        (psh_corner_is_flat, psh_corner_orientation): Use ft_corner_is_flat
     567        and ft_corner_orientation.
     568
     569
     570        * src/gzip/inftrees.c (huft_build): Remove compiler warning.
     571
     5722006-10-24  Werner Lemberg  <wl@gnu.org>
     573
     574        * src/cff/cffload.c (cff_encoding_load): Remove unused variable.
     575
     576        * src/base/ftobjs.c (FT_Select_Charmap): Disallow FT_ENCODING_NONE
     577        as argument.
     578
     5792006-10-23  Zhe Su  <zsu@novell.com>
     580
     581        * src/base/ftoutln.c (FT_Outline_Get_Orientation): Re-implement to
     582        better deal with broken Asian fonts with strange glyphs, having
     583        self-intersections and other peculiarities.  The used algorithm is
     584        based on the nonzero winding rule.
     585
     5862006-10-23  David Turner  <david@freetype.org>
     587
     588        Speed up the CFF font loader.  With some large CFF fonts,
     589        FT_Open_Face is now more than three times faster.
     590
     591        * src/cff/cffload.c (cff_get_offset): Removed.
     592        (cff_new_index): Inline functionality of `cff_get_offset'.
     593        (cff_charset_compute_cids, cff_charset_free_cids): New functions.
     594        (cff_charset_done): Call `cff_charset_free_cids'.
     595        (cff_charset_load): Call `cff_charset_compute_cids'.
     596        (cff_encoding_load) <Populate>: Ditto, to replace inefficient loop.
     597
     598        * src/sfnt/ttmtx.c (tt_face_load_hmtx): Replace calls to FT_GET_XXX
     599        with FT_NEXT_XXX.
     600
     601
     602        Speed up the Postscript hinter, with more than 100% speed increase
     603        on my machine.
     604
     605        * src/pshinter/pshalgo.c (psh_corner_is_flat,
     606        psh_corner_orientation): New functions.
     607        (psh_glyph_compute_inflections): Merge loops for efficiency.
     608        Use `psh_corner_orientation'.
     609        (psh_glyph_init): Use `psh_corner_is_flat'.
     610        (psh_hint_table_find_strong_point): Renamed to...
     611        (psh_hint_table_find_strong_points): This.
     612        Rewrite, adding argument to handle all points at once.
     613        Update all callers.
     614        (PSH_MAX_STRONG_INTERNAL): New macro.
     615        (psh_glyph_interpolate_normal_points): Rewrite for efficiency.
     616
     6172006-10-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     618
     619        * src/base/ftmac.c (FT_New_Face_From_FOND): Initialize variable
     620        `error' with FT_Err_Ok.
     621
     6222006-10-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     623
     624        * docs/INSTALL.CROSS: New document file for cross-building.
     625
     626        * builds/unix/configure.raw: Preliminary cross-building support.
     627        Find native C compiler and pass it by CC_BUILD, and
     628        find suffix for native executable and pass it by EXEEXT_BUILD.
     629        Also suffix for target executable is passed by EXEEXT.
     630
     631        * builds/unix/unix-cc.in (CCraw_build, E_BUILD): New variables to
     632        build `apinames' which runs on building system.  They are set by
     633        CC_BUILD and EXEEXT_BUILD.
     634
     635        * builds/exports.mk (APINAMES_EXE): Change the extension for
     636        apinames from the suffix for target (E) to that for building host
     637        (E_BUILD).
     638
     6392006-10-12  Werner Lemberg  <wl@gnu.org>
     640
     641        * docs/INSTALL.UNX, docs/UPGRADE.UNX: Renamed to...
     642        * docs/INSTALL.UNIX, docs/UPGRADE.UNIX: This.  Update all documents
     643        which reference those files.
     644
     6452006-10-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     646
     647        * builds/unix/configure.raw (FT2_EXTRA_LIBS): New variable.  It is
     648        embedded in freetype2.pc and freetype-config.  Use it to record
     649        Carbon dependency of MacOSX.
     650
     651        * builds/unix/freetype2.in: Embed FT2_EXTRA_LIBS.
     652
     653        * builds/unix/freetype-config.in: Ditto.
     654
     6552006-10-11  Werner Lemberg  <wl@gnu.org>
     656
     657        * devel/ftoption.h (FT_CONFIG_OPTION_SUBPIXEL_RENDERING): Define for
     658        development.
     659
     6602006-10-03  Jens Claudius  <jens.claudius@yahoo.com>
     661
     662        * include/freetype/config/ftstdlib.h: Cast away volatileness from
     663        argument to ft_setjmp.
     664
     665        * include/freetype/internal/ftvalid.h: Add comment that
     666        ft_validator_run must not be used.
     667
     6682006-10-01  Werner Lemberg  <wl@gnu.org>
     669
     670        * src/base/ftbase.c: Undo change from 2006-09-30.
     671
     672        * src/base/rules.mk (BASE_SRC): Remove `ftlcdfil.c'.
     673
     6742006-09-30  David Turner  <david@freetype.org>
     675
     676        * include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
     677        s/unpatented_hinting/ignore_unpatented_hinter/.
     678        Update all callers.
     679
     680        * src/base/ftobjs.c (FT_Load_Glyph): Refine the algorithm whether
     681        auto-hinting shall be used or not.
     682
     683        * src/truetype/ttobjs.c (tt_face_init): Ditto.
     684
     6852006-09-30  Werner Lemberg  <wl@gnu.org>
     686
     687        * src/base/rules.mk (BASE_SRC): Remove `ftapi.c' (which is no longer
     688        in use).
     689
     690        * src/base/ftbase.c: Include `ftlcdfil.c'.
     691
     6922006-09-29  Werner Lemberg  <wl@gnu.org>
     693
     694        * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Fix algorithm for
     695        overlapping segments.  Bug reported by Stefan Koch.
     696
     6972006-09-28  David Turner  <david@freetype.org>
     698
     699        Fix a bug in the automatic unpatented hinting support which prevents
     700        normal bytecode hinting to work properly.
     701
     702        * include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
     703        s/force_autohint/unpatented_hinting/.  Update all callers.
     704
     705        * src/base/ftobjs.c (FT_Load_Glyph): Updated code.
     706
     707        * src/autofit/aftypes.h (AF_DEBUG): Undefine to get rid of traces.
     708
     7092006-09-27  David Turner  <david@freetype.org>
     710
     711        * include/freetype/freetype.h (FT_FREETYPE_PATCH): Set to 2.
     712
     713
     714        Add a new API to support color filtering of subpixel glyph bitmaps.
     715        In a default build, the function `FT_Library_SetLcdFilter' returns
     716        `FT_Err_Unimplemented_Feature'; you need to #define
     717        FT_CONFIG_OPTION_SUBPIXEL_RENDERING in ftoption.h to compile the
     718        real implementation.
     719
     720        * include/freetype/ftlcdfil.h, src/base/ftlcdfil.c: New files.
     721
     722        * include/freetype/internal/ftobjs.h (FT_Bitmap_LcdFilterFunc): New
     723        typedef.
     724        (FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: New members
     725        `lcd_filter_weights' and `lcd_filter'.
     726
     727        * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove arguments
     728        `hmul' and `vmul'.
     729
     730        Handle subpixel rendering.
     731        Simplify function.
     732        (ft_smooth_render_lcd): Use `FT_RENDER_MODE_LCD'.
     733        (ft_smooth_render_lcd_v): Use `FT_RENDER_MODE_LCD_V'.
     734
     735        * include/freetype/config/ftheader.h (FT_LCD_FILTER_H): New macro,
     736        pointing to <freetype/ftlcdfil.h>.
     737
     738        * src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC),
     739        vms_make.com: Add `ftlcdfil.c' to the list of compiled source files.
     740
     741        * modules.cfg (BASE_EXTENSIONS): Add ftlcdfil.c.
     742
     7432006-09-26  David Bustin
     744
     745        * src/pfr/pfrobjs.c (pfr_face_get_kerning): Skip adjustment bytes
     746        correctly.  Reported as Savannah bug #17843.
     747
     7482006-09-26  David Turner  <david@freetype.org>
     749
     750        * src/autofit/afhints.h (AF_HINTS_DO_HORIZONTAL,
     751        AF_HINTS_DO_VERTICAL, AF_HINTS_DO_ADVANCE): New macros to disable
     752        horizontal and vertical hinting for the purpose of debugging the
     753        auto-fitter.
     754
     755        * src/autofit/afmodule.c (_af_debug_disable_horz_hints,
     756        _af_debug_disable_vert_hints) [AF_DEBUG]: New global variables.
     757
     758        * src/autofit/aftypes.h [AF_DEBUG]: Declare above variables.
     759
     760        * include/freetype/config/ftoption.h, devel/ftoption.h
     761        (FT_CONFIG_OPTION_SUBPIXEL_RENDERING): New macro to control whether
     762        we want to compile LCD-optimized rendering code (à la ClearType) or
     763        not.  The macro *must* be disabled in default builds of the library
     764        for patent reasons.
     765
     766        * src/smooth/ftsmooth.c (ft_smooth_render_generic): Disable
     767        LCD-specific rendering when FT_CONFIG_OPTION_SUBPIXEL_RENDERING
     768        isn't defined at compile time.  This only changes the content of the
     769        rendered glyph to match the one of normal gray-level rendering,
     770        hence clients should not need to be modified.
     771
     772        * docs/CHANGES: Updated.
     773
     7742006-09-18  Garrick Meeker  <garrick@digitalanarchy.com>
     775
     776        * src/base/ftmac.c (FT_New_Face_From_FOND): Fall back to SFNT if
     777        LWFN fails and both are available.
     778
     7792006-09-11  David Turner  <david@freetype.org>
     780
     781        * src/sfnt/sfobjs.c (tt_face_get_name): Support some fonts which
     782        report their English names through an Apple Roman
     783        (platform,encoding) pair, with language_id != English.
     784
     785        If the font uses another name entry with language_id == English, it
     786        will be selected correctly, though.
     787
     788        * src/truetype/ttobjs.c (tt_face_init): Add unpatented hinting
     789        selection for `mingli.ttf'.
     790
     7912006-09-05  Werner Lemberg  <wl@gnu.org>
     792
     793        * src/truetype/ttpload.c (tt_face_load_hdmx): Handle `record_size'
     794        values which have the upper two bytes set to 0xFF instead of 0x00
     795        (as it happens in at least two CJKV fonts, `HAN NOM A.ttf' and
     796        `HAN NOM B.ttf').
     797
     798        * src/smooth/ftgrays.c [GRAYS_USE_GAMMA]: Really remove all code.
     799
     8002006-09-05  David Turner  <david@freetype.org>
     801
     802        Minor source cleanups and optimizations.
     803
     804        * src/smooth/ftgrays.c (GRAYS_COMPACT): Removed.
     805        (TRaster): Remove `count_ex' and `count_ey'.
     806        (gray_find_cell): Remove 2nd and 3rd argument.
     807        (gray_alloc_cell): Merged with `gray_find_cell'.
     808        (gray_record_cell): Simplify.
     809        (gray_set_cell): Rewrite.
     810        (gray_start_cell): Apply offsets to `ras.ex' and `ras.ey'.
     811        (gray_render_span): Don't use FT_MEM_SET for small values.
     812        (gray_dump_cells) [DEBUG_GRAYS]: New function.
     813        (gray_sweep): Avoid buffer overwrites when to drawing the end of a
     814        bitmap scanline.
     815        (gray_convert_glyph): Fix speed-up.
     816
     8172006-09-04  David Turner  <david@freetype.org>
     818
     819        * src/smooth/ftgrays.c (gray_convert_glyphs): Make it work with
     820        64bit processors.
     821
     8222006-09-03  Werner Lemberg  <wl@gnu.org>
     823
     824        * devel/ftoption.h: Synchronize with
     825        include/freetype/config/ftoption.h.
     826
     827        * src/smooth/ftgrays.c (gray_record_cell): Remove shadowing
     828        variable declaration.
     829        (gray_convert_glyph): Fix compiler warnings.
     830
     8312006-09-01  David Turner  <david@freetype.org>
     832
     833        * src/truetype/ttobjs.c (tt_face_init): Update the TrueType loader
     834        to recognize a few fonts that require the automatic unpatented
     835        loader.
     836
     837        * src/smooth/ftgrays.c: Optmize the performance of the anti-aliased
     838        rasterizer.  The speed improvement is between 15% and 25%, depending
     839        on the font data.
     840
     841        (GRAYS_USE_GAMMA, GRAYS_COMPACT): Removed, and all associated code.
     842        (TCell): Redefine.
     843        (TRaster): New members `buffer', `buffer_size', `ycells', `ycount'.
     844        (gray_init_cells): Updated.
     845        (gray_find_cell, gray_alloc_cell): New functions.
     846        (gray_record_cell): Rewritten to use `gray_find_cell' and
     847        `gray_alloc_cell'.
     848        (PACK, LESS_THAN, SWAP_CELLS, DEBUG_SORT, QUICK_SORT, SHELL_SORT,
     849        QSORT_THRESHOLD):
     850        Removed.
     851        (gray_shell_sort, gray_quick_sort, gray_check_sort,
     852        gray_dump_cells): Removed.
     853        (gray_sweep): Rewritten.
     854        (gray_convert_glyph): Rewrite code which used one of the sorting
     855        functions.
     856        (gray_raster_render): Updated.
     857
     8582006-08-29  Dr. Werner Fink  <werner@suse.de>
     859
     860        * configure: Make it possible to handle configure options which
     861        have strings containing spaces.
     862
     8632006-08-27  David Turner  <david@freetype.org>
     864
     865        * include/freetype/config/ftoption.h (TT_USE_BYTECODE_INTERPRETER):
     866        New macro, defined if either TT_CONFIG_OPTION_BYTECODE_INTERPRETER
     867        or TT_CONFIG_OPTION_UNPATENTED_HINTING is defined.
     868
     869        * include/freetype/internal/ftcalc.h, src/base/ftcalc.c,
     870        src/truetype/truetype.c, src/truetype/ttdriver.c,
     871        src/truetype/ttgload.c, src/truetype/ttgload.h,
     872        src/truetype/ttinterp.c, src/truetype/ttobjs.c,
     873        src/truetype/ttobjs.h, src/truetype/ttpload.c, src/type42/t42drivr.c:
     874        s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
     875
     876        * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
     877        member `force_autohint'.
     878
     879        * src/base/ftobjs.c (FT_Load_Glyph): Use `force_autohint'.
     880
     881        * src/truetype/ttobjs.c (tt_face_init): Prepare code for testing
     882        against a list of font names which need the bytecode interpreter.
     883
     8842006-08-27  Jens Claudius  <jens.claudius@yahoo.com>
     885
     886        Fix miscellaneous compiler warnings.
     887
     888        * freetype2/include/freetype/internal/ftobjs.h: Close comment with
     889        `*/' to avoid `/* in comment' compiler warning.
     890
     891        * freetype2/src/base/ftdbgmem.c (ft_mem_table_get_source): Turn cast
     892        `(FT_UInt32)(void*)' into `(FT_UInt32)(FT_PtrDist)(void*)' since on
     893        64-bit platforms void* is larger than FT_UInt32.
     894
     895        * freetype2/src/base/ftobjs.c (t_validator_error): Cast away
     896        volatileness of argument to ft_longjmp.  Spotted by Werner
     897        `Putzfrau' Lemberg.
     898
     899        * freetype2/src/bdf/bdflib.c (bdf_load_font): Initialize local
     900        variable `lineno'.
     901
     902        * freetype2/src/gxvalid/gxvmod.c (classic_kern_validate): Mark local
     903        variable `error' as volatile.
     904
     9052006-08-27  Werner Lemberg  <wl@gnu.org>
     906
     907        * builds/unix/ftconfig.in: Synchronize with main ftconfig.h.
     908        Reported by Jens.
     909
     9102006-08-22  Jens Claudius  <jens.claudius@yahoo.com>
     911
     912        Fix for previous commit, which caused many compiler warnings/errors
     913        about addresses of volatile objects passed as function arguments as
     914        non-volatile pointers.
     915
     916        * freetype2/include/freetype/internal/ftvalid.h: Make FT_Validator
     917        typedef a pointer to a volatile object.
     918
     919        * freetype2/src/gxvalid/gxvmod.c (gxv_load_table): Make function
     920        argument `table' a pointer to a volatile object.
     921
     922        * freetype2/src/otvalid/otvmod.c (otv_load_table): Make function
     923        argument `table' a pointer to a volatile object.
     924
     9252006-08-18  Jens Claudius  <jens.claudius@yahoo.com>
     926
     927        * freetype2/src/gxvalid/gxvmod.c (GXV_TABLE_DECL): Mark local
     928        variable `_sfnt' as volatile since it must keep its value across
     929        a call to ft_setjmp.
     930        (gxv_validate): Same for local variables `memory' and `valid'.
     931        (classic_kern_validate): Same for local variables `memory',
     932        `ckern', and `valid'.
     933
     934        * freetype2/src/otvalid/otvmod.c (otv_validate): Same for function
     935        parameter `face' and local variables `base', `gdef', `gpos', `gsub',
     936        `jstf', and 'valid'.
     937
     938        * freetype2/src/sfnt/ttcmap.c (tt_face_build_cmaps): Same for
     939        local variable `cmap'.
     940
     9412006-08-16  David Turner  <david@freetype.org>
     942
     943        * src/cid/cidgload.c (cid_slot_load_glyph): Remove compiler
     944        warnings.
     945
     946        * src/base/ftobjs.c (ft_validator_run): Disable function; it is
     947        buggy by design.  Always return -1.
     948
     949
     950        Improvements to native TrueType hinting. This is a first try,
     951        controlled by the FIX_BYTECODE macro in src/truetype/ttinterp.c.
     952
     953        * include/freetype/internal/ftgloadr.h (FT_GlyphLoadRec): Add member
     954        `extra_points2'.
     955
     956        * include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add member
     957        `orus'.
     958
     959        * src/base/ftgloadr.c (FT_GlyphLoader_Reset,
     960        FT_GlyphLoader_Adjust_Points, FT_GlyphLoader_CreateExtra,
     961        FT_GlyphLoader_CheckPoints, FT_GlyphLoader_CopyPoints): Updated to
     962        handle `extra_points2'.
     963
     964        * src/truetype/ttgload.c (tt_prepare_zone): Handle `orus'.
     965        Remove compiler warning.
     966        (cur_to_arg): Remove macro.
     967        (TT_Hint_Glyph): Updated.
     968        (TT_Process_Simple_Glyph): Handle `orus'.
     969
     970        * src/truetype/ttinterp.c (FIX_BYTECODE): New macro.
     971        (Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Handle `orus'.
     972        (LOC_Ins_IUP): Renamed to...
     973        (IUP_WorkerRec): This.
     974        Add `orus' member.
     975        (Shift): Renamed to...
     976        (_iup_worker_shift): This.
     977        Updated.
     978        (Interp): Renamed to...
     979        (_iup_worker_interpolate): This.
     980        Updated to handle `orus'.
     981        (Ins_IUP): Updated.
     982
     983        * src/truetype/ttobjs.c (tt_glyphzone_done, tt_glyphzone_new):
     984        Handle `orus'.
     985
     9862006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     987
     988        * modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to
     989        build ftvalid in ft2demos.  This has been inadvertedly changed
     990        2006-08-13.
     991
     9922006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     993
     994        `ft_validator_run' wrapping `setjmp' can cause a crash, as found by
     995        Jens:
     996        http://lists.nongnu.org/archive/html/freetype-devel/2006-08/msg00004.htm.
     997
     998        * freetype2/src/otvalid/otvmod.c: Replace `ft_validator_run' by
     999        `ft_setjmp'.  It reverts the change introduced on 2005-08-20.
     1000
     1001        * freetype2/src/gxvalid/gxvmod.c: Ditto.
     1002
     10032006-08-13  Jens Claudius  <jens.claudius@yahoo.com>
     1004
     1005        * freetype2/include/freetype/internal/psaux.h: (T1_TokenType): Add
     1006        T1_TOKEN_TYPE_KEY.
     1007        (T1_FieldRec): Add `dict'.
     1008        (T1_FIELD_DICT_FONTDICT, T1_FIELD_DICT_PRIVATE): New macros.
     1009        (T1_NEW_XXX, T1_FIELD_XXX): Update to take the dictionary where a PS
     1010        keyword is expected as an additional argument.
     1011
     1012        * freetype2/src/cid/cidload.c: (cid_field_records): Adjust
     1013        invocations of T1_FIELD_XXX.
     1014
     1015        * freetype2/src/cid/cidtoken.h: Adjust invocations of T1_FIELD_XXX.
     1016
     1017        * freetype2/src/psaux/psobjs.c: Add macro FT_COMPONENT for tracing.
     1018        (ps_parser_to_token): Report a PostScript key as T1_TOKEN_TYPE_KEY,
     1019        not T1_TOKEN_TYPE_ANY.
     1020        (ps_parser_load_field): Make sure a token that should be a string or
     1021        name is really a string or name.
     1022        Avoid memory leak if a keyword has been already encountered and its
     1023        value is overwritten.
     1024        * freetype2/src/type1/t1load.c: (t1_keywords): Adjust invocations of
     1025        T1_FIELD_XXX.
     1026        (parse_dict): Ignore keywords that occur in the wrong dictionary
     1027        (e.g., in `Private' instead of `FontDict').
     1028
     1029        * freetype2/src/type1/t1tokens.h: Adjust invocations of
     1030        T1_FIELD_XXX.
     1031
     1032        * freetype2/src/type42/t42parse.c: (t42_keywords): Adjust
     1033        invocations of T1_FIELD_XXX.
     1034
     10352006-07-18  Jens Claudius  <jens.claudius@yahoo.com>
     1036
     1037        Move creation of field `buildchar' of T1_DecoderRec out of
     1038        `t1_decoder_init' and let the caller of `t1_decoder_init' take care
     1039        of it.
     1040
     1041        Call the finisher for T1_Decoder in `cid_face_compute_max_advance'
     1042        and `T1_Compute_Max_Advance'.
     1043
     1044        * freetype2/include/freetype/internal/psaux.h (T1_DecoderRec):
     1045        Remove field `face', add `len_buildchar'.
     1046
     1047        * freetype2/include/freetype/internal/t1types.h (T1_FaceRec): Add
     1048        field `buildchar'.
     1049
     1050        * freetype2/src/cid/cidgload.c (cid_face_compute_max_advance): Call
     1051        finisher for T1_Decoder.
     1052        (cid_slot_load_glyph): Do not ignore failure when initializing the
     1053        T1_Decoder.
     1054
     1055        * freetype2/src/psaux/t1decode.c (t1_decoder_parse_charstrings):
     1056        Updated.
     1057        (t1_decoder_init): Remove initialization of fields `buildchar' and
     1058        `len_buildchar'.
     1059        (t1_decoder_done): Remove deallocation of field `buildchar'.
     1060
     1061        * freetype/src/type1/t1gload.c (T1_Compute_Max_Advance): Initialize
     1062        T1_Decoder's `buildchar' and `len_buildchar'; call finisher for
     1063        T1_Decoder.
     1064        (T1_Load_Glyph): Initialize T1_Decoder's `buildchar' and
     1065        `len_buildchar'; make sure to call finisher for T1_Decoder even in
     1066        case of error.
     1067
     1068        * freetype2/src/type1/t1load.c (T1_Open_Face): Allocate new field
     1069        `buildchar' of T1_FaceRec.
     1070
     1071        * freetype2/src/type1/t1objs.c (T1_Face_Done): Free new field
     1072        `buildchar' of T1_FaceRec.
     1073
     10742006-07-14  Jens Claudius  <jens.claudius@yahoo.com>
     1075
     1076        * freetype2/include/freetype/internal/psaux.h: New macros
     1077        IS_PS_NEWLINE, IS_PS_SPACE, IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT,
     1078        IS_PS_XDIGIT, and IS_PS_BASE85 (from freetype2/src/psaux/psconv.h).
     1079        (T1_FieldLocation): Add T1_FIELD_LOCATION_LOADER,
     1080        T1_FIELD_LOCATION_FACE, and T1_FIELD_LOCATION_BLEND.
     1081        (T1_DecoderRec): New fields `buildchar' and `face'.
     1082        (IS_PS_TOKEN): New macro.
     1083
     1084        * freetype2/include/freetype/internal/t1types.h (T1_FaceRec): New
     1085        fields `ndv_idx', `cdv_idx', and `len_buildchar'.
     1086
     1087        * freetype2/include/freetype/t1tables.h (PS_BlendRec): New fields
     1088        `default_design_vector' and `num_default_design_vector'.
     1089
     1090        * freetype2/src/psaux/psconv.h: Move macros IS_PS_NEWLINE,
     1091        IS_PS_SPACE, IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT,
     1092        and IS_PS_BASE85 to freetype2/include/freetype/internal/psaux.h.
     1093
     1094        * freetype2/src/psaux/psobjs.c (ps_parser_to_token_array): Allow
     1095        `token' argument to be NULL if we want only to count the number of
     1096        tokens.
     1097        (ps_tocoordarray): Allow `coords' argument to be NULL if we just
     1098        want to skip the array.
     1099        (ps_tofixedarray): Allow `values' argument to be NULL if we just
     1100        want to skip the array.
     1101
     1102        * freetype2/src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add
     1103        support for (partially commented out) othersubrs 19-25, 27, and 28.
     1104        (t1_decoder_init): Initialize new fields `face' and `buildchar'.
     1105        (t1_decoder_done): Release new field `buildchar'.
     1106
     1107        * freetype2/src/type1/t1load.c (parse_buildchar, parse_private): New
     1108        functions.
     1109        (t1_keywords): Register them.
     1110        (t1_allocate_blend): Updated.
     1111        (t1_load_keyword): Handle field types T1_FIELD_LOCATION_LOADER,
     1112        T1_FIELD_LOCATION_FACE and T1_FIELD_LOCATION_BLEND.
     1113        (parse_dict): Remove `keyword_flags' argument.
     1114        Use new macro IS_PS_TOKEN.
     1115        Changed function so that later PostScript definitions override
     1116        earlier ones.
     1117        (t1_init_loader): Initialize new field `keywords_encountered'.
     1118        (T1_Open_Face): Initialize new fields `ndv_idx', `cdv_idx', and
     1119        `len_buildchar'.
     1120        Remove `keywords_flags'.
     1121
     1122        * freetype2/src/type1/t1load.h (T1_LoaderRect): New field
     1123        `keywords_encountered'.
     1124        (T1_PRIVATE, T1_FONTDIR_AFTER_PRIVATE): New macros.
     1125
     1126        * freetype2/src/type1/t1tokens.h [!T1_CONFIG_OPTION_NO_MM_SUPPORT]:
     1127        New entries for parsing /NDV, /CDV, and /DesignVector.
     1128
     11292006-07-07  Werner Lemberg  <wl@gnu.org>
     1130
     1131        Add many checks to protect against malformed PCF files.
     1132
     1133        * src/pcf/pcfdrivr.c (PCF_Face_Done): Protect against NULL pointers.
     1134        (PCF_Face_Init): Add calls to PCF_Face_Done in case of errors.
     1135
     1136        * src/pcf/pcfread.c (pcf_read_TOC): Protect against malformed table
     1137        data and check that tables don't overlap (using a simple
     1138        bubblesort).
     1139        (PCF_METRIC_SIZE, PCF_COMPRESSED_METRIC_SIZE, PCF_PROPERTY_SIZE):
     1140        New macros which give the size of data structures in the data
     1141        stream.
     1142        (pcf_get_properties): Use rough estimates to get array size limits.
     1143        Assign `face->nprops' and `face->properties' earlier so that a call
     1144        to PCF_Face_Done can do the clean-up in case of error.
     1145        Protect against invalid string offsets.
     1146        (pcf_get_metrics): Clean up code.
     1147        Adjust tracing message levels.
     1148        Use rough estimate to get array size limit.
     1149        (pcf_get_bitmaps): Clean up code.
     1150        Adjust tracing message levels.
     1151        Use rough estimates to get offset limits.
     1152        (pcf_get_encodings): Adjust tracing message level.
     1153        (pcf_get_accel): Clean up code.
     1154
     11552006-06-26  Werner Lemberg  <wl@gnu.org>
     1156
     1157        * src/bdf/bdfdrivr.c (BDF_Face_Init): Handle fonts correctly which
     1158        don't have a POINT_SIZE property.  This fixes Savannah bug #16914.
     1159
     11602006-06-26  Jens Claudius  <jens.claudius@yahoo.com>
     1161
     1162        * src/psaux/t1decode.c (T1_Operator, t1_args_count): Add opcode 15.
     1163        (t1_decoder_parse_charstrings): Operator with
     1164        opcode 15 pops its two arguments.
     1165        Handle the case where the pops of an othersubr may be part of a
     1166        subroutine.
     1167        Handle unknown othersubrs gracefully: count their operands and let
     1168        the following pop operators push the operands as the results onto
     1169        the Type1 stack.
     1170        Improve handling of setcurrentpoint opcode.
     1171
     11722006-06-25  Jens Claudius  <jens.claudius@yahoo.com>
     1173
     1174        The Type 1 parser now skips over top-level procedures as required
     1175        for a `Simplified Parser'.  This makes the parser more robust as it
     1176        doesn't poke around in PostScript code.  Additionally, it makes the
     1177        FontDirectory hackery in src/type1/t1load.c unnecessary.
     1178
     1179        * src/psaux/psobjs.c (IS_OCTAL_DIGIT): New macro.
     1180        (skip_literal_string): Add FT_Error as return value.
     1181        Handle escapes better.
     1182        (skip_string): Add FT_Error as return value.
     1183        Don't set `parser->error' but return error code directly.
     1184        (skip_procedure): New function.
     1185        (ps_parser_skip_PS_token): Handle procedures.
     1186        Update code.
     1187        (ps_parser_to_token): Update code.
     1188        (ps_parser_load_field_table): Handle bbox entries also.
     1189
     1190        * src/type1/t1load.c (parse_dict): Remove FontDirectory hackery.
     1191        Add commented-out code for synthetic fonts.
     1192
     11932006-06-24  Eugeniy Meshcheryakov  <eugen@univ.kiev.ua>
     1194
     1195        Fix two hinting bugs as reported in
     1196        http://lists.nongnu.org/archive/html/freetype-devel/2006-06/msg00057.html.
     1197
     1198        * include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add
     1199        `first_point' member.
     1200
     1201        * src/truetype/ttgload.c (tt_prepare_zone): Initialize
     1202        `first_point'.
     1203        (TT_Process_Composite_Glyph): Always untouch points.
     1204
     1205        * src/truetype/ttinterp.c (Ins_SHC): Fix computation of
     1206        `first_point' and `last_point' in case of composite glyphs.
     1207        (Ins_IUP): Fix computation of `end_point'.
     1208
     12092006-06-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     1210
     1211        Insert EndianS16_BtoN and EndianS32_BtoN as workaround for Intel
     1212        Mac.  The original patch was written by David Sachitano and Lawrence
     1213        Coopet, and modified by Sean McBride for MPW compatibility.  Only
     1214        required data are converted; unused data are left in big endian.
     1215
     1216        * src/base/ftmac.c: Include <Endian.h> for byteorder macros for non
     1217        Mac OS X platforms.
     1218        (OS_INLINE): Undefine before definition.
     1219        (count_faces_sfnt): Insert EndianS16_BtoN to parse the header of
     1220        FontAssociation table in FOND resource.
     1221        (count_faces_scalable): Insert EndianS16_BtoN to parse the header
     1222        and fontSize at each entry of FontAssociation table in FOND
     1223        resource.
     1224        (parse_fond): Insert EndianS16_BtoN and EndianS32_BtoN to parse
     1225        ffStylOff of FamilyRecord header of FOND resource, the header,
     1226        fontSize, fontID at each entry of FontAssociation table, and
     1227        StyleMapping table.
     1228        (count_faces): Call `HUnlock' after all FOND utilization.
     1229
     12302006-06-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     1231
     1232        Public API of TrueTypeGX, OpenType, and classic kern table validator
     1233        should return `FT_Err_Unimplemented_Feature' if validation service
     1234        is unavailable (disabled in `modules.cfg').  It is originally
     1235        suggested by David Turner, cf.
     1236        http://lists.gnu.org/archive/html/freetype-devel/2005-11/msg00078.html
     1237
     1238        * src/base/ftgxval.c (FT_TrueTypeGX_Validate): Return
     1239        FT_Err_Unimplemented_Feature if TrueTypeGX validation service is
     1240        unavailable.
     1241        (FT_ClassicKern_Validate): Return FT_Err_Unimplemented_Feature if
     1242        classic kern table validation service is unavailable.
     1243
     1244        * src/base/ftotval.c (FT_OpenType_Validate): Return
     1245        FT_Err_Unimplemented_Feature if OpenType validation service is
     1246        unavailable.
     1247
     12482006-06-08  Werner Lemberg  <wl@gnu.org>
     1249
     1250        * src/bdf/bdflib.c (bdf_load_font): Fix memory leaks in case of
     1251        errors.
     1252
     12532006-06-07  David Turner  <david@freetype.org>
     1254
     1255        * src/type1/t1afm.c (KERN_INDEX): Make it more robust.
     1256        (T1_Read_Metrics): Fix memory leak which happened when the metrics
     1257        file doesn't have kerning pairs.  This fixes Savannah bug #16768.
     1258
     12592006-06-06  David Turner  <david@freetype.org>
     1260
     1261        Fix memory leak described in Savannah bug #16759.
     1262
     1263        We change `ps_unicodes_init' so that it also takes a
     1264        `free_glyph_name' callback to release the glyph names returned by
     1265        `get_glyph_name'
     1266
     1267        * include/freetype/internal/services/svpscmap.h (PS_Glyph_NameFunc):
     1268        Renamed to ...
     1269        (PS_GetGlyphNameFunc): This.
     1270        (PS_FreeGlyphNameFunc): New typedef.
     1271        (PS_Unicodes_InitFunc): Add variable for PS_FreeGlyphNameFunc.
     1272
     1273        * src/cff/cffcmap.c (cff_sid_to_glyph_name): Use `TT_Face' for first
     1274        argument.
     1275        (cff_sid_free_glyph_name): New function.
     1276        (cff_cmap_unicode_init): Updated.
     1277
     1278        * src/psaux/t1cmap.c (t1_cmap_unicode_init): Updated.
     1279
     1280        * src/psnames/psmodule.c (ps_unicodes_init): Add variable for
     1281        PS_FreeGlyphNameFunc and use it.
     1282
     1283
     12842006-06-04  David Turner  <david@freetype.org>
     1285
     1286        * src/base/ftutil.c (ft_mem_qrealloc): Fix the function to accept
     1287        `item_size == 0' as well -- though this sounds weird, it can
     1288        theorically happen.  This fixes Savannah bug #16669.
     1289
     1290        * src/pfr/pfrobjs.c (pfr_face_init): Fix the computation
     1291        of `face->num_glyphs' which missed the last glyph, due to
     1292        the offset-by-1 computation, since the PFR format doesn't
     1293        guarantee that glyph index 0 corresponds to the `missing
     1294        glyph.  This fixes Savannah bug #16668.
     1295
     12962006-05-25  Werner Lemberg  <wl@gnu.org>
     1297
     1298        * builds/unix/unix-cc.in (LINK_LIBRARY): Don't comment out
     1299        `-no-undefined'.  Reported by Christian Biesinger.
     1300
     13012006-05-19  Brian Weed  <bw@imaginengine.com>
     1302
     1303        * builds/win32/visualc/freetype.dsp: Release libraries no longer
     1304        have debug information, and debug libraries use `C7 compatible'
     1305        debug info.
     1306
     13072006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     1308
     1309        Apply patch by Derek Clegg to fix two memory leaks in the MacOS
     1310        resource fork handler.  This fixes Savannah bug #16631.
     1311
     1312        * src/base/ftobjs.c (load_face_in_embedded_rfork): Replace
     1313        `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.
     1314
     1315        * src/base/ftrfrk.c (raccess_guess_linux_double_from_file_name):
     1316        Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.
     1317
     13182006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     1319
     1320        * build/unix/configure.raw: Add a fallback to disable Carbon
     1321        dependency, if configured with no options on Mac OS X.
     1322
     13232006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
     1324
     1325        * src/base/ftmac.c (open_face_from_buffer): Deallocate stream when
     1326        its content cannot be parsed as supported font.  This fixes
     1327        the second part of Savannah bug #16590.
     1328
     13292006-05-18  Werner Lemberg  <wl@gnu.org>
     1330
     1331        * src/truetype/ttgload.c (TT_Load_Composite_Glyph)
     1332        [FT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Make it compilable again.
     1333
     13342006-05-17  David Turner  <david@freetype.org>
     1335
     1336        This is a major patch used to drastically improve the performance of
     1337        loading glyphs.  This both speeds up loading the glyph vectors
     1338        themselves and the auto-fitter module.
     1339
     1340        We now use inline assembler code with GCC to implement `FT_MulFix',
     1341        which is probably the most important function related to the
     1342        engine's performance.
     1343
     1344        The resulting speed-up is about 25%.
     1345
     1346
     1347        * include/freetype/internal/tttypes.h (TT_LoaderRec): Add fields
     1348        `cursor' and `limit'.
     1349
     1350        * src/autofit/afangles.c (af_corner_is_flat, af_corner_orientation):
     1351        New functions.
     1352        (AF_ATAN_BITS, af_arctan, af_angle_atan): Comment out.
     1353        [TEST]: Remove.
     1354
     1355        * src/autofit/afcjk.c (AF_Script_UniRangeRec): Comment out test
     1356        code.
     1357
     1358        * src/autofit/afhints.c (af_axis_hints_new_segment): Don't call
     1359        `FT_ZERO'
     1360        (af_direction_compute, af_glyph_hints_compute_inflections): Rewritten.
     1361        (af_glyph_hints_reload: Rewrite recognition of weak points.
     1362
     1363        * src/autofit/aflatin.c (af_latin_hints_compute_segments): Move
     1364        constant values out of the loops.
     1365
     1366        * src/autofit/aftypes.h: Updated.
     1367
     1368        * src/base/ftcalc.c (FT_MulFix): Use inline assembler code.
     1369
     1370        * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use vector
     1371        product to get orientation.
     1372
     1373        * src/gzip/ftgzip.c (ft_get_uncompressed_size): New function.
     1374        (FT_Stream_OpenGzip): Use it to handle small files directly in
     1375        memory.
     1376
     1377        * src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_ConvEexecDecode):
     1378        Improve performance.
     1379
     1380        * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Set `cursor' and
     1381        `limit'.
     1382
     1383        (TT_Load_Glyph_Header, TT_Load_Simple_Glyph,
     1384        TT_Load_Composite_Glyph): Updated.  Add threshold to protect against
     1385        exceedingly large values of number of contours.  Speed up by
     1386        reducing the number of loops.
     1387
     1388        * src/type1/t1gload.c (T1_Load_Glyph): Don't apply unit matrix.
     1389
     1390
     1391        * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the threshold
     1392        used to detect rogue clients from 4 to 16.  This is to prevent some
     1393        segmentation faults with fonts like `KozMinProVI-Regular.otf' which
     1394        comes from the Japanese Adobe Reader Asian Font pack.
     1395
     13962007-05-17  Werner Lemberg  <wl@gnu.org>
     1397
     1398        * src/cff/cffload.c (cff_font_done): Deallocate subfont array.  This
     1399        fixes the first part of Savannah bug #16590.
     1400
     14012006-05-16  Werner Lemberg  <wl@gnu.org>
     1402
     1403        * docs/PROBLEMS: Updated icl issues.
     1404
    114052006-05-12  Werner Lemberg  <wl@gnu.org>
    21406
    31407
    41408        * Version 2.2.1 released.
    5         ===============++========
     1409        =========================
    61410
    71411
     
    371441
    3814422006-05-11  Masatake YAMATO  <jet@gyve.org>
    39  
    40         * builds/unix/ftsystem.c (FT_Stream_Open): Check errno only if 
     1443
     1444        * builds/unix/ftsystem.c (FT_Stream_Open): Check errno only if
    411445        read system call returns -1.
    421446        Remove a redundant parenthesis.
     
    7092113        (FTC_CMapCache_Lookup) [FT_CONFIG_OPTION_OLD_INTERNALS]: New
    7102114        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.
    7112120
    71221212006-02-23  Chia-I Wu  <b90201047@ntu.edu.tw>
     
    9552364
    9562365        Clean up the SFNT_Interface.  In this final pass, `load_hmtx' is
    957         splitted from `load_hhea'.
     2366        split from `load_hhea'.
    9582367
    9592368        * include/freetype/internal/sfnt.h, src/sfnt/sfdriver.c,
     
    10122421        * src/truetype/ttpload.c, src/truetype/ttpload.h: `hdmx' loading and
    10132422        parsing code is moved here.
    1014         New function `tt_face_load_prep' splitted from `tt_face_load_fpgm'.
     2423        New function `tt_face_load_prep' split from `tt_face_load_fpgm'.
    10152424        `tt_face_load_fpgm' returns `FT_Err_Ok' if `fpgm' doesn't exist.
    10162425
     
    28174226----------------------------------------------------------------------------
    28184227
    2819 Copyright 2005, 2006 by
     4228Copyright 2005, 2006, 2007 by
    28204229David Turner, Robert Wilhelm, and Werner Lemberg.
    28214230
  • trunk/poppler/freetype2/README

    r150 r182  
    22  ===========================
    33
    4   Please  read  the file  `docs/UPGRADE.UNX'.   It contains  important
     4  Please  read  the file  `docs/UPGRADE.UNIX'.  It contains  important
    55  information regarding the installation  of FreeType on Unix systems,
    66  especially GNU based operating systems like GNU/Linux.
     
    1010
    1111
    12   FreeType 2.2.1
     12  FreeType 2.3.0
    1313  ==============
    1414
     
    2727  and download one of the following files.
    2828
    29     freetype-doc-2.2.1.tar.bz2
    30     freetype-doc-2.2.1.tar.gz
     29    freetype-doc-2.3.0.tar.bz2
     30    freetype-doc-2.3.0.tar.gz
    3131    ftdoc221.zip
    3232
     
    5252----------------------------------------------------------------------
    5353
    54 Copyright 2001, 2002, 2003, 2004, 2006 by
     54Copyright 2006, 2007 by
    5555David Turner, Robert Wilhelm, and Werner Lemberg.
    5656
  • trunk/poppler/freetype2/devel/ftoption.h

    r165 r182  
    55/*    User-selectable configuration macros (specification only).           */
    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/*                                                                         */
     
    594594
    595595  /* */
    596 
    597   /*
    598    * This temporary macro is used to control various optimizations for
    599    * reducing the heap footprint of memory-mapped TrueType files.
    600    */
    601 #define FT_OPTIMIZE_MEMORY
    602596
    603597
  • trunk/poppler/freetype2/include/freetype/config/ftheader.h

    r165 r182  
    55/*    Build macros of the FreeType 2 library.                              */
    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/*                                                                         */
     
    676676   *   FreeType 2 API which performs color filtering for subpixel rendering.
    677677   */
    678 #define FT_LCD_FILTER_H    <freetype/ftlcdfil.h>
     678#define FT_LCD_FILTER_H  <freetype/ftlcdfil.h>
     679
     680
     681  /*************************************************************************
     682   *
     683   * @macro:
     684   *   FT_GASP_H
     685   *
     686   * @description:
     687   *   A macro used in #include statements to name the file containing the
     688   *   FreeType 2 API which returns entries from the TrueType GASP table.
     689   */
     690#define FT_GASP_H  <freetype/ftgasp.h>
     691
    679692
    680693  /* */
  • trunk/poppler/freetype2/include/freetype/config/ftoption.h

    r165 r182  
    55/*    User-selectable configuration macros (specification only).           */
    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/*                                                                         */
     
    594594
    595595  /* */
    596 
    597   /*
    598    * This temporary macro is used to control various optimizations for
    599    * reducing the heap footprint of memory-mapped TrueType files.
    600    */
    601 #define FT_OPTIMIZE_MEMORY
    602596
    603597
  • trunk/poppler/freetype2/include/freetype/freetype.h

    r165 r182  
    55/*    FreeType high-level API and common types (specification only).       */
    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/*                                                                         */
     
    17991799  /* <Return>                                                              */
    18001800  /*    FreeType error code.  0 means success.                             */
     1801  /*                                                                       */
     1802  /* <Note>                                                                */
     1803  /*    You must not deallocate the memory before calling @FT_Done_Face.   */
    18011804  /*                                                                       */
    18021805  FT_EXPORT( FT_Error )
     
    33113314   */
    33123315#define FREETYPE_MAJOR  2
    3313 #define FREETYPE_MINOR  2
    3314 #define FREETYPE_PATCH  2
     3316#define FREETYPE_MINOR  3
     3317#define FREETYPE_PATCH  0
    33153318
    33163319
  • trunk/poppler/freetype2/include/freetype/ftbitmap.h

    r150 r182  
    44/*                                                                         */
    55/*    FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */
    6 /*    bitmaps into 8bpp format (specification).                            */ 
     6/*    bitmaps into 8bpp format (specification).                            */
    77/*                                                                         */
    88/*  Copyright 2004, 2005, 2006 by                                          */
  • trunk/poppler/freetype2/include/freetype/ftchapters.h

    r165 r182  
    5858/*    winfnt_fonts                                                         */
    5959/*    font_formats                                                         */
     60/*    gasp_table                                                           */
    6061/*                                                                         */
    6162/***************************************************************************/
     
    9596/*    gzip                                                                 */
    9697/*    lzw                                                                  */
     98/*    lcd_filtering                                                        */
    9799/*                                                                         */
    98100/***************************************************************************/
  • trunk/poppler/freetype2/include/freetype/ftincrem.h

    r150 r182  
    230230   * @struct:
    231231   *   FT_Incremental_FuncsRec
    232    * 
     232   *
    233233   * @description:
    234234   *   A table of functions for accessing fonts that load data
    235235   *   incrementally.  Used in @FT_Incremental_InterfaceRec.
    236    * 
     236   *
    237237   * @fields:
    238238   *   get_glyph_data ::
     
    244244   *   get_glyph_metrics ::
    245245   *     The function to get glyph metrics.  May be null if the font does
    246    *     not provide overriding glyph metrics. 
     246   *     not provide overriding glyph metrics.
    247247   */
    248248  typedef struct  FT_Incremental_FuncsRec_
     
    294294    const FT_Incremental_FuncsRec*  funcs;
    295295    FT_Incremental                  object;
    296  
     296
    297297  } FT_Incremental_InterfaceRec;
    298298
     
    322322#define FT_PARAM_TAG_INCREMENTAL  FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
    323323
    324  /* */ 
     324 /* */
    325325
    326326FT_END_HEADER
  • trunk/poppler/freetype2/include/freetype/ftlcdfil.h

    r165 r182  
    66/*    (specification).                                                     */
    77/*                                                                         */
    8 /*  Copyright 2006 by                                                      */
     8/*  Copyright 2006, 2007 by                                                */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    2626
    2727FT_BEGIN_HEADER
     28
     29  /***************************************************************************
     30   *
     31   * @section:
     32   *   lcd_filtering
     33   *
     34   * @title:
     35   *   LCD Filtering
     36   *
     37   * @abstract:
     38   *   Reduce color fringes of LCD-optimized bitmaps.
     39   *
     40   * @description:
     41   *   The @FT_Library_SetLcdFilter API can be used to specify a low-pass
     42   *   filter which is then applied to LCD-optimized bitmaps generated
     43   *   through @FT_Render_Glyph.  This is useful to reduce color fringes
     44   *   which would occur with unfiltered rendering.
     45   *
     46   *   Note that no filter is active by default, and that this function is
     47   *   *not* implemented in default builds of the library.  You need to
     48   *   #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file
     49   *   in order to activate it.
     50   */
    2851
    2952
     
    4871   *     The light filter is a variant that produces less blurriness at the
    4972   *     cost of slightly more color fringes than the default one.  It might
    50    *     be better than the default one, depending on the monitor, personal
    51    *     vision, and taste.
     73   *     be better, depending on taste, your monitor, or your personal vision.
    5274   *
    5375   *   FT_LCD_FILTER_LEGACY ::
    5476   *     This filter corresponds to the original libXft color filter.  It
    5577   *     provides high contrast output but can exhibit really bad color
    56    *     fringes if glyphs are not extremely well hinted to the pixel grid. 
     78   *     fringes if glyphs are not extremely well hinted to the pixel grid.
    5779   *     In other words, it only works well if the TrueType bytecode
    5880   *     interpreter is enabled *and* high-quality hinted fonts are used.
     
    6082   *     This filter is only provided for comparison purposes, and might be
    6183   *     disabled or stay unsupported in the future.
     84   *
     85   * @since:
     86   *   2.3.0
    6287   */
    6388  typedef enum
     
    106131   *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
    107132   *   defined in your build of the library, which should correspond to all
    108    *   default builds of the library.
     133   *   default builds of FreeType.
    109134   *
    110135   *   The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
     
    124149   *   the filter.
    125150   *
     151   * @since:
     152   *   2.3.0
    126153   */
    127154  FT_EXPORT( FT_Error )
  • trunk/poppler/freetype2/include/freetype/ftotval.h

    r150 r182  
    155155  FT_OpenType_Validate( FT_Face    face,
    156156                        FT_UInt    validation_flags,
    157                         FT_Bytes  *BASE_table, 
    158                         FT_Bytes  *GDEF_table, 
    159                         FT_Bytes  *GPOS_table, 
    160                         FT_Bytes  *GSUB_table, 
     157                        FT_Bytes  *BASE_table,
     158                        FT_Bytes  *GDEF_table,
     159                        FT_Bytes  *GPOS_table,
     160                        FT_Bytes  *GSUB_table,
    161161                        FT_Bytes  *JSTF_table );
    162162
  • trunk/poppler/freetype2/include/freetype/ftoutln.h

    r150 r182  
    443443  * @enum:
    444444  *   FT_Orientation
    445   * 
     445  *
    446446  * @description:
    447447  *   A list of values used to describe an outline's contour orientation.
     
    449449  *   The TrueType and Postscript specifications use different conventions
    450450  *   to determine whether outline contours should be filled or unfilled.
    451   *   
     451  *
    452452  * @values:
    453453  *   FT_ORIENTATION_TRUETYPE ::
     
    481481    FT_ORIENTATION_FILL_LEFT  = FT_ORIENTATION_POSTSCRIPT,
    482482    FT_ORIENTATION_NONE
    483  
     483
    484484  } FT_Orientation;
    485485
     
    489489  * @function:
    490490  *   FT_Outline_Get_Orientation
    491   * 
     491  *
    492492  * @description:
    493493  *   This function analyzes a glyph outline and tries to compute its
  • trunk/poppler/freetype2/include/freetype/ftwinfnt.h

    r150 r182  
    6565   * @values:
    6666   *   FT_WinFNT_ID_DEFAULT ::
    67    *     This is used for font enumeration and font creation as a 
     67   *     This is used for font enumeration and font creation as a
    6868   *     `don't care' value.  Valid font files don't contain this value.
    6969   *     When querying for information about the character set of the font
     
    9696   *
    9797   *         http://www.microsoft.com/globaldev/reference/cphome.mspx,
    98    *   
     98   *
    9999   *       and is used for the `DOS boxes', to support legacy applications.
    100100   *       A German Windows version for example usually uses ANSI codepage
     
    131131   *   FT_WinFNT_ID_CP1253 ::
    132132   *     A superset of Greek ISO 8859-7 (with minor modifications).
    133    *     
     133   *
    134134   *   FT_WinFNT_ID_CP1254 ::
    135135   *     A superset of Turkish ISO 8859-9.
    136    *     
     136   *
    137137   *   FT_WinFNT_ID_CP1255 ::
    138138   *     A superset of Hebrew ISO 8859-8 (with some modifications).
  • trunk/poppler/freetype2/include/freetype/internal/ftstream.h

    r150 r182  
    415415  /* Useful to optimize access to memory-based streams transparently.   */
    416416  /*                                                                    */
    417   /* All extracted frames must be `freed` with a call to the function   */
     417  /* All extracted frames must be `freed' with a call to the function   */
    418418  /* FT_Stream_ReleaseFrame().                                          */
    419419  /*                                                                    */
  • trunk/poppler/freetype2/include/freetype/internal/services/svkern.h

    r150 r182  
    3737  FT_DEFINE_SERVICE( Kerning )
    3838  {
    39     FT_Kerning_TrackGetFunc  get_track; 
     39    FT_Kerning_TrackGetFunc  get_track;
    4040  };
    4141
    4242  /* */
    4343
    44  
     44
    4545FT_END_HEADER
    4646
  • trunk/poppler/freetype2/include/freetype/internal/services/svotval.h

    r150 r182  
    3030
    3131  typedef FT_Error
    32   (*otv_validate_func)( FT_Face    face,
    33                         FT_UInt    ot_flags,
    34                         FT_Bytes  *base,
    35                         FT_Bytes  *gdef,
    36                         FT_Bytes  *gpos,
    37                         FT_Bytes  *gsub,
    38                         FT_Bytes  *jstf );
     32  (*otv_validate_func)( FT_Face volatile  face,
     33                        FT_UInt           ot_flags,
     34                        FT_Bytes         *base,
     35                        FT_Bytes         *gdef,
     36                        FT_Bytes         *gpos,
     37                        FT_Bytes         *gsub,
     38                        FT_Bytes         *jstf );
    3939
    4040
  • trunk/poppler/freetype2/include/freetype/internal/services/svttcmap.h

    r150 r182  
    1919/***************************************************************************/
    2020
    21 /* Development of this service is support of 
     21/* Development of this service is support of
    2222   Information-technology Promotion Agency, Japan. */
    2323
    2424#ifndef __SVTTCMAP_H__
    25 #define __SVTTCMAP_H__ 
     25#define __SVTTCMAP_H__
    2626
    2727#include FT_INTERNAL_SERVICE_H
     
    6565  {
    6666    TT_CMap_Info_GetFunc  get_cmap_info;
    67   }; 
    68  
     67  };
     68
    6969  /* */
    7070
  • trunk/poppler/freetype2/include/freetype/internal/services/svxf86nm.h

    r150 r182  
    4646  /* */
    4747
    48  
     48
    4949FT_END_HEADER
    5050
  • trunk/poppler/freetype2/include/freetype/internal/sfnt.h

    r150 r182  
    739739    TT_Load_Table_Func           load_font_dir;
    740740    TT_Load_Metrics_Func         load_hmtx;
    741    
     741
    742742    TT_Load_Table_Func           load_eblc;
    743743    TT_Free_Table_Func           free_eblc;
    744    
     744
    745745    TT_Set_SBit_Strike_Func      set_sbit_strike;
    746746    TT_Load_Strike_Metrics_Func  load_strike_metrics;
    747    
     747
    748748    TT_Get_Metrics_Func          get_metrics;
    749749
  • trunk/poppler/freetype2/include/freetype/internal/t1types.h

    r165 r182  
    204204#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
    205205    PS_Unicodes     unicode_map;
    206 #endif   
     206#endif
    207207
    208208    /* support for Multiple Masters fonts */
  • trunk/poppler/freetype2/include/freetype/internal/tttypes.h

    r165 r182  
    66/*    only).                                                               */
    77/*                                                                         */
    8 /*  Copyright 1996-2001, 2002, 2004, 2005, 2006 by                         */
     8/*  Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007 by                   */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    13961396    /* since version 2.2 */
    13971397
    1398 #ifdef FT_OPTIMIZE_MEMORY
    13991398    FT_Byte*              horz_metrics;
    14001399    FT_ULong              horz_metrics_size;
     
    14211420    FT_UInt32             kern_avail_bits;
    14221421    FT_UInt32             kern_order_bits;
    1423 #endif
    14241422
    14251423#ifdef TT_CONFIG_OPTION_BDF
    14261424    TT_BDFRec             bdf;
    14271425#endif /* TT_CONFIG_OPTION_BDF */
     1426
     1427    /* since 2.3.0 */
     1428    FT_ULong              horz_metrics_offset;
     1429    FT_ULong              vert_metrics_offset;
    14281430
    14291431  } TT_FaceRec;
  • trunk/poppler/freetype2/include/freetype/t1tables.h

    r165 r182  
    257257    FT_BBox*         bboxes    [T1_MAX_MM_DESIGNS + 1];
    258258
    259     /* since 2.2.2 */
     259    /* since 2.3.0 */
    260260
    261261    /* undocumented, optional: the default design instance;   */
  • trunk/poppler/freetype2/include/freetype/tttables.h

    r150 r182  
    620620  *     definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new
    621621  *     one with @FT_MAKE_TAG.
    622   *             
     622  *
    623623  *   offset ::
    624624  *     The starting offset in the table (or file if tag == 0).
     
    631631  * @inout:
    632632  *   length ::
    633   *     If the `length' parameter is NULL, then try to load the whole table. 
     633  *     If the `length' parameter is NULL, then try to load the whole table.
    634634  *     Return an error code if it fails.
    635635  *
  • trunk/poppler/freetype2/src/autofit/afhints.c

    r165 r182  
    55/*    Auto-fitter hinting routines (body).                                 */
    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/*                                                                         */
     
    192192  af_glyph_hints_dump_segments( AF_GlyphHints  hints )
    193193  {
    194     FT_Int    dimension;
     194    FT_Int  dimension;
    195195
    196196
     
    213213                 seg - segments,
    214214                 (int)seg->pos,
    215                  af_dir_str( seg->dir ),
     215                 af_dir_str( (AF_Direction)seg->dir ),
    216216                 AF_INDEX_NUM( seg->link, segments ),
    217217                 AF_INDEX_NUM( seg->serif, segments ),
     
    253253                 edge - edges,
    254254                 (int)edge->fpos,
    255                  af_dir_str( edge->dir ),
     255                 af_dir_str( (AF_Direction)edge->dir ),
    256256                 AF_INDEX_NUM( edge->link, edges ),
    257257                 AF_INDEX_NUM( edge->serif, edges ),
  • trunk/poppler/freetype2/src/autofit/aflatin.c

    r165 r182  
    55/*    Auto-fitter hinting routines for latin script (body).                */
    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/*                                                                         */
     
    724724            segment->min_coord = (FT_Short)min_pos;
    725725            segment->max_coord = (FT_Short)max_pos;
    726             segment->height    = segment->max_coord - segment->min_coord;
     726            segment->height    = (FT_Short)( segment->max_coord -
     727                                             segment->min_coord );
    727728
    728729            on_edge = 0;
     
    798799          p = first->prev;
    799800          if ( p->v < first_v )
    800             segment->height += ( first_v - p->v ) >> 1;
     801            segment->height = (FT_Short)( segment->height +
     802                                          ( ( first_v - p->v ) >> 1 ) );
    801803
    802804          p = last->next;
    803805          if ( p->v > last_v )
    804             segment->height += ( p->v - last_v ) >> 1;
     806            segment->height = (FT_Short)( segment->height +
     807                                          ( ( p->v - last_v ) >> 1 ) );
    805808        }
    806809        else
     
    811814          p = first->prev;
    812815          if ( p->v > first_v )
    813             segment->height += ( p->v - first_v ) >> 1;
     816            segment->height = (FT_Short)( segment->height +
     817                                          ( ( p->v - first_v ) >> 1 ) );
    814818
    815819          p = last->next;
    816820          if ( p->v < last_v )
    817             segment->height += ( last_v - p->v ) >> 1;
     821            segment->height = (FT_Short)( segment->height +
     822                                          ( ( last_v - p->v ) >> 1 ) );
    818823        }
    819824      }
  • trunk/poppler/freetype2/src/autofit/afloader.c

    r165 r182  
    207207          loader->pp2.x = FT_PIX_ROUND( pp2x_uh );
    208208
     209          if ( loader->pp1.x >= new_lsb )
     210            loader->pp1.x -= 64;
     211
     212          if ( loader->pp2.x <= pp2x_uh )
     213            loader->pp2.x += 64;
     214
    209215          slot->lsb_delta = loader->pp1.x - pp1x_uh;
    210216          slot->rsb_delta = loader->pp2.x - pp2x_uh;
  • trunk/poppler/freetype2/src/autofit/aftypes.h

    r165 r182  
    55/*    Auto-fitter types (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/*                                                                         */
     
    5555
    5656#define xxAF_USE_WARPER  /* only define to use warp hinting */
    57 #define AF_DEBUG
     57#define xxAF_DEBUG
    5858
    5959#ifdef AF_DEBUG
  • trunk/poppler/freetype2/src/base/ftapi.c

    r150 r182  
    5050
    5151    FT_Stream_OpenMemory( stream, base, size );
    52   }                       
     52  }
    5353
    5454
     
    5858  {
    5959    return FT_Stream_Seek( stream, pos );
    60   }                 
     60  }
    6161
    6262
     
    6666  {
    6767    return FT_Stream_Skip( stream, distance );
    68   }                 
     68  }
    6969
    7070
     
    7575  {
    7676    return FT_Stream_Read( stream, buffer, count );
    77   }                 
     77  }
    7878
    7979
     
    8585  {
    8686    return FT_Stream_ReadAt( stream, pos, buffer, count );
    87   }                   
     87  }
    8888
    8989
     
    9494  {
    9595    return FT_Stream_ExtractFrame( stream, count, pbytes );
    96   }                   
     96  }
    9797
    9898
     
    102102  {
    103103    FT_Stream_ReleaseFrame( stream, pbytes );
    104   }                   
     104  }
    105105
    106106  FT_BASE_DEF( FT_Error )
     
    109109  {
    110110    return FT_Stream_EnterFrame( stream, count );
    111   }                   
     111  }
    112112
    113113
     
    117117    FT_Stream_ExitFrame( stream );
    118118  }
    119                    
     119
    120120
    121121/* END */
  • trunk/poppler/freetype2/src/base/ftbitmap.c

    r150 r182  
    66/*    bitmaps into 8bpp format (body).                                     */
    77/*                                                                         */
    8 /*  Copyright 2004, 2005, 2006 by                                          */
     8/*  Copyright 2004, 2005, 2006, 2007 by                                    */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    105105    int             new_pitch;
    106106    FT_UInt         ppb;
    107     FT_Int          i;
     107    FT_Int          i, width;
    108108    unsigned char*  buffer;
    109109
    110110
     111    width = bitmap->width;
    111112    pitch = bitmap->pitch;
    112113    if ( pitch < 0 )
     
    171172    if ( bitmap->pitch > 0 )
    172173    {
     174      FT_Int  len = ( width + ppb - 1 ) / ppb;
     175
     176
    173177      for ( i = 0; i < bitmap->rows; i++ )
    174178        FT_MEM_COPY( buffer + new_pitch * ( ypixels + i ),
    175                      bitmap->buffer + pitch * i, pitch );
     179                     bitmap->buffer + pitch * i, len );
    176180    }
    177181    else
    178182    {
     183      FT_Int  len = ( width + ppb - 1 ) / ppb;
     184
     185
    179186      for ( i = 0; i < bitmap->rows; i++ )
    180187        FT_MEM_COPY( buffer + new_pitch * i,
    181                      bitmap->buffer + pitch * i, pitch );
     188                     bitmap->buffer + pitch * i, len );
    182189    }
    183190
  • trunk/poppler/freetype2/src/base/ftlcdfil.c

    r165 r182  
    273273    static const FT_Byte  light_filter[5] =
    274274                            { 0, 85, 86, 85, 0 };
     275    /* the values here sum up to a value larger than 256, */
     276    /* providing a cheap gamma correction                 */
    275277    static const FT_Byte  default_filter[5] =
    276278                            { 0x10, 0x40, 0x70, 0x40, 0x10 };
     
    295297#elif defined( FT_FORCE_LIGHT_LCD_FILTER )
    296298
    297       memcpy( library->lcd_weights, default_filter, 5 );
     299      memcpy( library->lcd_weights, light_filter, 5 );
    298300      library->lcd_filter_func = _ft_lcd_filter_fir;
    299301      library->lcd_extra       = 2;
  • trunk/poppler/freetype2/src/base/ftmac.c

    r165 r182  
    44/*                                                                         */
    55/*    Mac FOND support.  Written by just@letterror.com.                    */
    6 /*  Heavily Fixed by mpsuzuki, George Williams and Sean McBride            */
     6/*  Heavily modified by mpsuzuki, George Williams, and Sean McBride.       */
     7/*                                                                         */
     8/*  This file is for Mac OS X only; see builds/mac/ftoldmac.c for          */
     9/*  classic platforms built by MPW.                                        */
    710/*                                                                         */
    811/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by                   */
     
    6770#include FT_INTERNAL_STREAM_H
    6871
    69 #if defined( __GNUC__ ) || defined( __IBMC__ )
    7072  /* This is for Mac OS X.  Without redefinition, OS_INLINE */
    7173  /* expands to `static inline' which doesn't survive the   */
     
    7476#define OS_INLINE   static __inline__
    7577#include <Carbon/Carbon.h>
    76 #else
    77 #include <Resources.h>
    78 #include <Fonts.h>
    79 #include <Endian.h>
    80 #include <Errors.h>
    81 #include <Files.h>
    82 #include <TextUtils.h>
    83 #endif
    84 
    85 #if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO
    86 #include <FSp_fopen.h>
    87 #endif
    88 
    89 #include FT_MAC_H
    90 
    91 
    92   /* FSSpec functions are deprecated since Mac OS X 10.4 */
    93 #ifndef HAVE_FSSPEC
    94 #if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON
    95 #define HAVE_FSSPEC  1
    96 #else
    97 #define HAVE_FSSPEC  0
    98 #endif
    99 #endif
    100 
    101   /* most FSRef functions were introduced since Mac OS 9 */
    102 #ifndef HAVE_FSREF
    103 #if TARGET_API_MAC_OSX
    104 #define HAVE_FSREF  1
    105 #else
    106 #define HAVE_FSREF  0
    107 #endif
    108 #endif
    10978
    11079#ifndef HFS_MAXPATHLEN
     
    11382
    11483
    115   /* QuickDraw is deprecated since Mac OS X 10.4 */
    116 #ifndef HAVE_QUICKDRAW_CARBON
    117 #if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON
    118 #define HAVE_QUICKDRAW_CARBON  1
    119 #else
    120 #define HAVE_QUICKDRAW_CARBON  0
    121 #endif
    122 #endif
    123 
    124   /* AppleTypeService is available since Mac OS X */
    125 #ifndef HAVE_ATS
    126 #if TARGET_API_MAC_OSX
    127 #define HAVE_ATS  1
    128 #else
    129 #define HAVE_ATS  0
    130 #endif
    131 #endif
     84#include FT_MAC_H
     85
     86  /* undefine blocking-macros in ftmac.h */
     87#undef FT_GetFile_From_Mac_Name( a, b, c )
     88#undef FT_GetFile_From_Mac_ATS_Name( a, b, c )
     89#undef FT_New_Face_From_FSSpec( a, b, c, d )
     90
    13291
    13392  /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over
     
    13998
    14099
    141 #if !HAVE_QUICKDRAW_CARBON  /* QuickDraw is deprecated since Mac OS X 10.4 */
    142 
    143100  FT_EXPORT_DEF( FT_Error )
    144101  FT_GetFile_From_Mac_Name( const char*  fontName,
     
    149106  }
    150107
    151 #else
    152 
    153   FT_EXPORT_DEF( FT_Error )
    154   FT_GetFile_From_Mac_Name( const char*  fontName,
    155                             FSSpec*      pathSpec,
    156                             FT_Long*     face_index )
    157   {
    158     OptionBits            options = kFMUseGlobalScopeOption;
    159 
    160     FMFontFamilyIterator  famIter;
    161     OSStatus              status = FMCreateFontFamilyIterator( NULL, NULL,
    162                                                                options,
    163                                                                &famIter );
    164     FMFont                the_font = 0;
    165     FMFontFamily          family   = 0;
    166 
    167 
    168     *face_index = 0;
    169     while ( status == 0 && !the_font )
    170     {
    171       status = FMGetNextFontFamily( &famIter, &family );
    172       if ( status == 0 )
    173       {
    174         int                           stat2;
    175         FMFontFamilyInstanceIterator  instIter;
    176         Str255                        famNameStr;
    177         char                          famName[256];
    178 
    179 
    180         /* get the family name */
    181         FMGetFontFamilyName( family, famNameStr );
    182         CopyPascalStringToC( famNameStr, famName );
    183 
    184         /* iterate through the styles */
    185         FMCreateFontFamilyInstanceIterator( family, &instIter );
    186 
    187         *face_index = 0;
    188         stat2       = 0;
    189 
    190         while ( stat2 == 0 && !the_font )
    191         {
    192           FMFontStyle  style;
    193           FMFontSize   size;
    194           FMFont       font;
    195 
    196 
    197           stat2 = FMGetNextFontFamilyInstance( &instIter, &font,
    198                                                &style, &size );
    199           if ( stat2 == 0 && size == 0 )
    200           {
    201             char  fullName[256];
    202 
    203 
    204             /* build up a complete face name */
    205             ft_strcpy( fullName, famName );
    206             if ( style & bold )
    207               ft_strcat( fullName, " Bold" );
    208             if ( style & italic )
    209               ft_strcat( fullName, " Italic" );
    210 
    211             /* compare with the name we are looking for */
    212             if ( ft_strcmp( fullName, fontName ) == 0 )
    213             {
    214               /* found it! */
    215               the_font = font;
    216             }
    217             else
    218               ++(*face_index);
    219           }
    220         }
    221 
    222         FMDisposeFontFamilyInstanceIterator( &instIter );
    223       }
    224     }
    225 
    226     FMDisposeFontFamilyIterator( &famIter );
    227 
    228     if ( the_font )
    229     {
    230       FMGetFontContainer( the_font, pathSpec );
    231       return FT_Err_Ok;
    232     }
    233     else
    234       return FT_Err_Unknown_File_Format;
    235   }
    236 
    237 #endif /* HAVE_QUICKDRAW_CARBON */
    238 
    239 
    240 #if !HAVE_ATS
    241 
    242   FT_EXPORT_DEF( FT_Error )
    243   FT_GetFile_From_Mac_ATS_Name( const char*  fontName,
    244                                 FSSpec*      pathSpec,
    245                                 FT_Long*     face_index )
    246   {
    247     return FT_Err_Unimplemented_Feature;
    248   }
    249 
    250 #else
    251108
    252109  FT_EXPORT_DEF( FT_Error )
     
    296153  }
    297154
    298 #endif /* HAVE_ATS */
    299 
    300 
    301 #if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO
    302 
    303 #define STREAM_FILE( stream )  ( (FT_FILE*)stream->descriptor.pointer )
    304 
    305 
    306   FT_CALLBACK_DEF( void )
    307   ft_FSp_stream_close( FT_Stream  stream )
    308   {
    309     ft_fclose( STREAM_FILE( stream ) );
    310 
    311     stream->descriptor.pointer = NULL;
    312     stream->size               = 0;
    313     stream->base               = 0;
    314   }
    315 
    316 
    317   FT_CALLBACK_DEF( unsigned long )
    318   ft_FSp_stream_io( FT_Stream       stream,
    319                     unsigned long   offset,
    320                     unsigned char*  buffer,
    321                     unsigned long   count )
    322   {
    323     FT_FILE*  file;
    324 
    325 
    326     file = STREAM_FILE( stream );
    327 
    328     ft_fseek( file, offset, SEEK_SET );
    329 
    330     return (unsigned long)ft_fread( buffer, 1, count, file );
    331   }
    332 
    333 #endif  /* __MWERKS__ && !TARGET_RT_MAC_MACHO */
    334 
    335 
    336 #if HAVE_FSSPEC && !HAVE_FSREF
    337 
    338   static OSErr
    339   FT_FSPathMakeSpec( const UInt8*  pathname,
    340                      FSSpec*       spec_p,
    341                      Boolean       isDirectory )
    342   {
    343     const char  *p, *q;
    344     short       vRefNum;
    345     long        dirID;
    346     Str255      nodeName;
    347     OSErr       err;
    348 
    349 
    350     p = q = (const char *)pathname;
    351     dirID   = 0;
    352     vRefNum = 0;
    353 
    354     while ( 1 )
    355     {
    356       q = p + FT_MIN( 255, ft_strlen( p ) );
    357 
    358       if ( q == p )
    359         return 0;
    360 
    361       if ( 255 < ft_strlen( (char *)pathname ) )
    362       {
    363         while ( p < q && *q != ':' )
    364           q--;
    365       }
    366 
    367       if ( p < q )
    368         *(char *)nodeName = q - p;
    369       else if ( ft_strlen( p ) < 256 )
    370         *(char *)nodeName = ft_strlen( p );
    371       else
    372         return errFSNameTooLong;
    373 
    374       ft_strncpy( (char *)nodeName + 1, (char *)p, *(char *)nodeName );
    375       err = FSMakeFSSpec( vRefNum, dirID, nodeName, spec_p );
    376       if ( err || '\0' == *q )
    377         return err;
    378 
    379       vRefNum = spec_p->vRefNum;
    380       dirID   = spec_p->parID;
    381 
    382       p = q;
    383     }
    384   }
    385 
    386 
    387   static OSErr
    388   FT_FSpMakePath( const FSSpec*  spec_p,
    389                   UInt8*         path,
    390                   UInt32         maxPathSize )
    391   {
    392     OSErr   err;
    393     FSSpec  spec = *spec_p;
    394     short   vRefNum;
    395     long    dirID;
    396     Str255  parDir_name;
    397 
    398 
    399     FT_MEM_SET( path, 0, maxPathSize );
    400     while ( 1 )
    401     {
    402       int             child_namelen = ft_strlen( (char *)path );
    403       unsigned char   node_namelen  = spec.name[0];
    404       unsigned char*  node_name     = spec.name + 1;
    405 
    406 
    407       if ( node_namelen + child_namelen > maxPathSize )
    408         return errFSNameTooLong;
    409 
    410       FT_MEM_MOVE( path + node_namelen + 1, path, child_namelen );
    411       FT_MEM_COPY( path, node_name, node_namelen );
    412       if ( child_namelen > 0 )
    413         path[node_namelen] = ':';
    414 
    415       vRefNum        = spec.vRefNum;
    416       dirID          = spec.parID;
    417       parDir_name[0] = '\0';
    418       err = FSMakeFSSpec( vRefNum, dirID, parDir_name, &spec );
    419       if ( noErr != err || dirID == spec.parID )
    420         break;
    421     }
    422     return noErr;
    423   }
    424 
    425 #endif /* HAVE_FSSPEC && !HAVE_FSREF */
    426 
    427155
    428156  static OSErr
     
    430158                    short*        res )
    431159  {
    432 
    433 #if HAVE_FSREF
    434 
    435160    OSErr  err;
    436161    FSRef  ref;
     
    449174    err  = ResError();
    450175
    451 #else
    452 
    453     OSErr   err;
    454     FSSpec  spec;
    455 
    456 
    457     if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) )
    458       return FT_Err_Cannot_Open_Resource;
    459 
    460     /* at present, no support for dfont format without FSRef */
    461     /* (see above), try original resource-fork font          */
    462     *res = FSpOpenResFile( &spec, fsRdPerm );
    463     err  = ResError();
    464 
    465 #endif /* HAVE_FSREF */
    466 
    467176    return err;
    468177  }
     
    473182  get_file_type_from_path( const UInt8*  pathname )
    474183  {
    475 
    476 #if HAVE_FSREF
    477 
    478184    FSRef          ref;
    479185    FSCatalogInfo  info;
     
    488194
    489195    return ((FInfo *)(info.finderInfo))->fdType;
    490 
    491 #else
    492 
    493     FSSpec  spec;
    494     FInfo  finfo;
    495 
    496 
    497     if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) )
    498       return ( OSType ) 0;
    499 
    500     if ( noErr != FSpGetFInfo( &spec, &finfo ) )
    501       return ( OSType ) 0;
    502 
    503     return finfo.fdType;
    504 
    505 #endif /* HAVE_FSREF */
    506 
    507196  }
    508197
     
    690379                       int              path_size )
    691380  {
    692 
    693 #if HAVE_FSREF
    694 
    695381    FSRef  ref, par_ref;
    696382    int    dirname_len;
     
    731417
    732418    return FT_Err_Ok;
    733 
    734 #else
    735 
    736     int     i;
    737     FSSpec  spec;
    738 
    739 
    740     /* pathname for FSSpec is always HFS format */
    741     if ( ft_strlen( (char *)path_fond ) > path_size )
    742       return FT_Err_Invalid_Argument;
    743 
    744     ft_strcpy( (char *)path_lwfn, (char *)path_fond );
    745 
    746     i = ft_strlen( (char *)path_lwfn ) - 1;
    747     while ( i > 0 && ':' != path_lwfn[i] )
    748       i--;
    749 
    750     if ( i + 1 + base_lwfn[0] > path_size )
    751       return FT_Err_Invalid_Argument;
    752 
    753     if ( ':' == path_lwfn[i] )
    754     {
    755       ft_strcpy( (char *)path_lwfn + i + 1, (char *)base_lwfn + 1 );
    756       path_lwfn[i + 1 + base_lwfn[0]] = '\0';
    757     }
    758     else
    759     {
    760       ft_strcpy( (char *)path_lwfn, (char *)base_lwfn + 1 );
    761       path_lwfn[base_lwfn[0]] = '\0';
    762     }
    763 
    764     if ( noErr != FT_FSPathMakeSpec( path_lwfn, &spec, FALSE ) )
    765       return FT_Err_Cannot_Open_Resource;
    766 
    767     return FT_Err_Ok;
    768 
    769 #endif /* HAVE_FSREF */
    770 
    771419  }
    772420
     
    1186834        goto found_no_lwfn_file;
    1187835
    1188 #if HAVE_FSREF
    1189 
    1190836      {
    1191837        UInt8  path_fond[HFS_MAXPATHLEN];
     
    1207853          have_lwfn = 1;
    1208854      }
    1209 
    1210 #elif HAVE_FSSPEC
    1211 
    1212       {
    1213         UInt8     path_fond[HFS_MAXPATHLEN];
    1214         FCBPBRec  pb;
    1215         Str255    fond_file_name;
    1216         FSSpec    spec;
    1217 
    1218 
    1219         FT_MEM_SET( &spec, 0, sizeof ( FSSpec ) );
    1220         FT_MEM_SET( &pb,   0, sizeof ( FCBPBRec ) );
    1221 
    1222         pb.ioNamePtr = fond_file_name;
    1223         pb.ioVRefNum = 0;
    1224         pb.ioRefNum  = res;
    1225         pb.ioFCBIndx = 0;
    1226 
    1227         err = PBGetFCBInfoSync( &pb );
    1228         if ( noErr != err )
    1229           goto found_no_lwfn_file;
    1230 
    1231         err = FSMakeFSSpec( pb.ioFCBVRefNum, pb.ioFCBParID,
    1232                             fond_file_name, &spec );
    1233         if ( noErr != err )
    1234           goto found_no_lwfn_file;
    1235 
    1236         err = FT_FSpMakePath( &spec, path_fond, sizeof ( path_fond ) );
    1237         if ( noErr != err )
    1238           goto found_no_lwfn_file;
    1239 
    1240         error = lookup_lwfn_by_fond( path_fond, lwfn_file_name,
    1241                                      path_lwfn, sizeof ( path_lwfn ) );
    1242         if ( FT_Err_Ok == error )
    1243           have_lwfn = 1;
    1244       }
    1245 
    1246 #endif /* HAVE_FSREF, HAVE_FSSPEC */
    1247 
    1248855    }
    1249856
     
    1354961                          FT_Face*      aface )
    1355962  {
    1356 
    1357 #if !HAVE_FSREF
    1358 
    1359     return FT_Err_Unimplemented_Feature;
    1360 
    1361 #else
    1362 
    1363963    FT_Error      error;
    1364964    FT_Open_Args  args;
     
    1382982    args.pathname = (char*)pathname;
    1383983    return FT_Open_Face( library, &args, face_index, aface );
    1384 
    1385 #endif /* HAVE_FSREF */
    1386 
    1387984  }
    1388985
     
    14031000                           FT_Face*       aface )
    14041001  {
    1405 
    1406 #if HAVE_FSREF
    1407 
    14081002    FSRef  ref;
    14091003
     
    14131007    else
    14141008      return FT_New_Face_From_FSRef( library, &ref, face_index, aface );
    1415 
    1416 #elif HAVE_FSSPEC
    1417 
    1418     FT_Error      error;
    1419     FT_Open_Args  args;
    1420     OSErr         err;
    1421     UInt8         pathname[HFS_MAXPATHLEN];
    1422 
    1423 
    1424     if ( !spec )
    1425       return FT_Err_Invalid_Argument;
    1426 
    1427     err = FT_FSpMakePath( spec, pathname, sizeof ( pathname ) );
    1428     if ( err )
    1429       error = FT_Err_Cannot_Open_Resource;
    1430 
    1431     error = FT_New_Face_From_Resource( library, pathname, face_index, aface );
    1432     if ( error != 0 || *aface != NULL )
    1433       return error;
    1434 
    1435     /* fallback to datafork font */
    1436     args.flags    = FT_OPEN_PATHNAME;
    1437     args.pathname = (char*)pathname;
    1438     return FT_Open_Face( library, &args, face_index, aface );
    1439 
    1440 #else
    1441 
    1442     return FT_Err_Unimplemented_Feature;
    1443 
    1444 #endif /* HAVE_FSREF, HAVE_FSSPEC */
    1445 
    14461009  }
    14471010
  • trunk/poppler/freetype2/src/base/ftmm.c

    r150 r182  
    175175
    176176  /* documentation is in ftmm.h */
    177  
     177
    178178  /* This is exactly the same as the previous function.  It exists for */
    179179  /* orthogonality.                                                    */
  • trunk/poppler/freetype2/src/base/ftobjs.c

    r165 r182  
    55/*    The FreeType private base classes (body).                            */
    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/*                                                                         */
     
    13721372    FT_Long    rlen;
    13731373    int        is_cff;
     1374    FT_Long    face_index_in_resource = 0;
    13741375
    13751376
     
    14031404                                   sfnt_data,
    14041405                                   rlen,
    1405                                    face_index,
     1406                                   face_index_in_resource,
    14061407                                   is_cff ? "cff" : "truetype",
    14071408                                   aface );
     
    14451446                                      face_index, aface );
    14461447      FT_FREE( data_offsets );
     1448      /* POST exists in an LWFN providing a single face */
     1449      if ( !error )
     1450        (*aface)->num_faces = 1;
    14471451      return error;
    14481452    }
     
    14541458    if ( !error )
    14551459    {
     1460      FT_Long  face_index_internal = face_index % count;
     1461
     1462
    14561463      error = Mac_Read_sfnt_Resource( library, stream, data_offsets, count,
    1457                                       face_index, aface );
     1464                                      face_index_internal, aface );
    14581465      FT_FREE( data_offsets );
     1466      if ( !error )
     1467        (*aface)->num_faces = count;
    14591468    }
    14601469
     
    20812090                 FT_Size_Request  req,
    20822091                 FT_Bool          ignore_width,
    2083                  FT_ULong*        index )
     2092                 FT_ULong*        size_index )
    20842093  {
    20852094    FT_Int   i;
     
    21152124      if ( w == FT_PIX_ROUND( bsize->x_ppem ) || ignore_width )
    21162125      {
    2117         if ( index )
    2118           *index = (FT_ULong)i;
     2126        if ( size_index )
     2127          *size_index = (FT_ULong)i;
    21192128
    21202129        return FT_Err_Ok;
     
    37523761      library->generic.finalizer( library );
    37533762
    3754     /* Close all modules in the library */
     3763    /* Close all faces in the library.  If we don't do
     3764     * this, we can have some subtle memory leaks.
     3765     * Example:
     3766     *
     3767     *  - the cff font driver uses the pshinter module in cff_size_done
     3768     *  - if the pshinter module is destroyed before the cff font driver,
     3769     *    opened FT_Face objects managed by the driver are not properly
     3770     *    destroyed, resulting in a memory leak
     3771     */
     3772    {
     3773      FT_UInt  n;
     3774
     3775
     3776      for ( n = 0; n < library->num_modules; n++ )
     3777      {
     3778        FT_Module  module = library->modules[n];
     3779        FT_List    faces;
     3780
     3781
     3782        if ( ( module->clazz->module_flags & FT_MODULE_FONT_DRIVER ) == 0 )
     3783          continue;
     3784
     3785        faces = &FT_DRIVER(module)->faces_list;
     3786        while ( faces->head )
     3787          FT_Done_Face( FT_FACE( faces->head->data ) );
     3788      }
     3789    }
     3790
     3791    /* Close all other modules in the library */
    37553792#if 1
    37563793    /* XXX Modules are removed in the reversed order so that  */
  • trunk/poppler/freetype2/src/base/ftoutln.c

    r165 r182  
    55/*    FreeType outline management (body).                                  */
    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/*                                                                         */
     
    947947    FT_Vector*  point;
    948948
    949     int         i;
    950     FT_Pos      ray_y[3];
    951     int         result[3];
     949    int             i;
     950    FT_Pos          ray_y[3];
     951    FT_Orientation  result[3];
    952952
    953953
  • trunk/poppler/freetype2/src/bdf/README

    r150 r182  
    99
    1010BDF (Bitmap Distribution Format) is a bitmap font format defined by Adobe,
    11 which is intended to be easily understood by both humans and computers. 
     11which is intended to be easily understood by both humans and computers.
    1212This code implements a BDF driver for the FreeType library, following the
    1313Adobe Specification V 2.2.  The specification of the BDF font format is
     
    1616  http://partners.adobe.com/asn/developer/PDFS/TN/5005.BDF_Spec.pdf
    1717
    18 Many good bitmap fonts in bdf format come with XFree86 (www.XFree86.org). 
     18Many good bitmap fonts in bdf format come with XFree86 (www.XFree86.org).
    1919They do not define vertical metrics, because the X Consortium BDF
    2020specification has removed them.
     
    4141
    4242  bdfface = (BDF_Public_Face)face;
    43  
    44   if ( ( bdfface->charset_registry == "ISO10646" ) && 
     43
     44  if ( ( bdfface->charset_registry == "ISO10646" ) &&
    4545       ( bdfface->charset_encoding == "1" )        )
    4646    [..]
    4747
    4848
    49 Thus the driver always exports `ft_encoding_none' as face->charmap.encoding. 
     49Thus the driver always exports `ft_encoding_none' as face->charmap.encoding.
    5050FT_Get_Char_Index's behavior is unmodified, that is, it converts the ULong
    5151value given as argument into the corresponding glyph number.
  • trunk/poppler/freetype2/src/bdf/bdf.c

    r150 r182  
    44
    55    Copyright (C) 2001, 2002 by
    6     Francesco Zappa Nardelli 
     6    Francesco Zappa Nardelli
    77
    88Permission is hereby granted, free of charge, to any person obtaining a copy
  • trunk/poppler/freetype2/src/bdf/bdf.h

    r150 r182  
    162162    const char*  key;
    163163    void*        data;
    164  
     164
    165165  } _hashnode, *hashnode;
    166166
  • trunk/poppler/freetype2/src/cff/cffcmap.h

    r150 r182  
    4040    FT_CMapRec  cmap;
    4141    FT_UShort*  gids;   /* up to 256 elements */
    42    
     42
    4343  } CFF_CMapStdRec;
    4444
     
    4747  cff_cmap_encoding_class_rec;
    4848
    49  
     49
    5050  /*************************************************************************/
    5151  /*************************************************************************/
  • trunk/poppler/freetype2/src/cff/cffdrivr.c

    r150 r182  
    55/*    OpenType font driver implementation (body).                          */
    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/*                                                                         */
     
    303303
    304304
     305  static FT_Error
     306  cff_ps_get_font_info( CFF_Face         face,
     307                        PS_FontInfoRec*  afont_info )
     308  {
     309    CFF_Font  cff   = (CFF_Font)face->extra.data;
     310    FT_Error  error = FT_Err_Ok;
     311
     312
     313    if ( cff && cff->font_info == NULL )
     314    {
     315      CFF_FontRecDict  dict = &cff->top_font.font_dict;
     316      PS_FontInfoRec  *font_info;
     317      FT_Memory        memory = face->root.memory;
     318
     319
     320      if ( FT_ALLOC( font_info, sizeof ( *font_info ) ) )
     321        goto Fail;
     322
     323      font_info->version     = cff_index_get_sid_string( &cff->string_index,
     324                                                         dict->version,
     325                                                         cff->psnames );
     326      font_info->notice      = cff_index_get_sid_string( &cff->string_index,
     327                                                         dict->notice,
     328                                                         cff->psnames );
     329      font_info->full_name   = cff_index_get_sid_string( &cff->string_index,
     330                                                         dict->full_name,
     331                                                         cff->psnames );
     332      font_info->family_name = cff_index_get_sid_string( &cff->string_index,
     333                                                         dict->family_name,
     334                                                         cff->psnames );
     335      font_info->weight      = cff_index_get_sid_string( &cff->string_index,
     336                                                         dict->weight,
     337                                                         cff->psnames );
     338      font_info->italic_angle        = dict->italic_angle;
     339      font_info->is_fixed_pitch      = dict->is_fixed_pitch;
     340      font_info->underline_position  = (FT_Short)dict->underline_position;
     341      font_info->underline_thickness = (FT_Short)dict->underline_thickness;
     342
     343      cff->font_info = font_info;
     344    }
     345
     346    *afont_info = *cff->font_info;
     347
     348  Fail:
     349    return error;
     350  }
     351
     352
    305353  static const FT_Service_PsInfoRec  cff_service_ps_info =
    306354  {
    307     (PS_GetFontInfoFunc)   NULL,        /* unsupported with CFF fonts */
     355    (PS_GetFontInfoFunc)   cff_ps_get_font_info,
    308356    (PS_HasGlyphNamesFunc) cff_ps_has_glyph_names,
    309357    (PS_GetFontPrivateFunc)NULL         /* unsupported with CFF fonts */
  • trunk/poppler/freetype2/src/cff/cffgload.c

    r165 r182  
    55/*    OpenType Glyph Loader (body).                                        */
    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/*                                                                         */
     
    22762276                 FT_Int32       load_flags )
    22772277  {
    2278     FT_Error      error;
    2279     CFF_Decoder   decoder;
    2280     TT_Face       face     = (TT_Face)glyph->root.face;
    2281     FT_Bool       hinting;
    2282     CFF_Font      cff      = (CFF_Font)face->extra.data;
    2283 
    2284     FT_Matrix     font_matrix;
    2285     FT_Vector     font_offset;
     2278    FT_Error     error;
     2279    CFF_Decoder  decoder;
     2280    TT_Face      face     = (TT_Face)glyph->root.face;
     2281    FT_Bool      hinting;
     2282    CFF_Font     cff      = (CFF_Font)face->extra.data;
     2283
     2284    FT_Matrix    font_matrix;
     2285    FT_Vector    font_offset;
    22862286
    22872287
     
    22922292         cff->charset.cids )
    22932293    {
    2294       if ( glyph_index < cff->charset.max_cid )
    2295         glyph_index = cff->charset.cids[glyph_index];
    2296       else
     2294      glyph_index = cff_charset_cid_to_gindex( &cff->charset, glyph_index );
     2295      if ( glyph_index == 0 )
    22972296        return CFF_Err_Invalid_Argument;
    22982297    }
     
    24242423        /* cffload.c.                                                     */
    24252424        {
    2426           CFF_IndexRec csindex = cff->charstrings_index;
    2427 
    2428 
    2429           glyph->root.control_data =
    2430             csindex.bytes + csindex.offsets[glyph_index] - 1;
    2431           glyph->root.control_len =
    2432             charstring_len;
     2425          CFF_Index csindex = &cff->charstrings_index;
     2426
     2427
     2428          if ( csindex->offsets )
     2429          {
     2430            glyph->root.control_data = csindex->bytes +
     2431                                         csindex->offsets[glyph_index] - 1;
     2432            glyph->root.control_len  = charstring_len;
     2433          }
    24332434        }
    24342435      }
  • trunk/poppler/freetype2/src/cff/cffload.c

    r165 r182  
    55/*    OpenType and CFF data/program tables loader (body).                  */
    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/*                                                                         */
     
    2323#include FT_SERVICE_POSTSCRIPT_CMAPS_H
    2424#include FT_TRUETYPE_TAGS_H
     25#include FT_TYPE1_TABLES_H
    2526
    2627#include "cffload.h"
     
    3334  static const FT_UShort  cff_isoadobe_charset[229] =
    3435  {
    35     0,
    36     1,
    37     2,
    38     3,
    39     4,
    40     5,
    41     6,
    42     7,
    43     8,
    44     9,
    45     10,
    46     11,
    47     12,
    48     13,
    49     14,
    50     15,
    51     16,
    52     17,
    53     18,
    54     19,
    55     20,
    56     21,
    57     22,
    58     23,
    59     24,
    60     25,
    61     26,
    62     27,
    63     28,
    64     29,
    65     30,
    66     31,
    67     32,
    68     33,
    69     34,
    70     35,
    71     36,
    72     37,
    73     38,
    74     39,
    75     40,
    76     41,
    77     42,
    78     43,
    79     44,
    80     45,
    81     46,
    82     47,
    83     48,
    84     49,
    85     50,
    86     51,
    87     52,
    88     53,
    89     54,
    90     55,
    91     56,
    92     57,
    93     58,
    94     59,
    95     60,
    96     61,
    97     62,
    98     63,
    99     64,
    100     65,
    101     66,
    102     67,
    103     68,
    104     69,
    105     70,
    106     71,
    107     72,
    108     73,
    109     74,
    110     75,
    111     76,
    112     77,
    113     78,
    114     79,
    115     80,
    116     81,
    117     82,
    118     83,
    119     84,
    120     85,
    121     86,
    122     87,
    123     88,
    124     89,
    125     90,
    126     91,
    127     92,
    128     93,
    129     94,
    130     95,
    131     96,
    132     97,
    133     98,
    134     99,
    135     100,
    136     101,
    137     102,
    138     103,
    139     104,
    140     105,
    141     106,
    142     107,
    143     108,
    144     109,
    145     110,
    146     111,
    147     112,
    148     113,
    149     114,
    150     115,
    151     116,
    152     117,
    153     118,
    154     119,
    155     120,
    156     121,
    157     122,
    158     123,
    159     124,
    160     125,
    161     126,
    162     127,
    163     128,
    164     129,
    165     130,
    166     131,
    167     132,
    168     133,
    169     134,
    170     135,
    171     136,
    172     137,
    173     138,
    174     139,
    175     140,
    176     141,
    177     142,
    178     143,
    179     144,
    180     145,
    181     146,
    182     147,
    183     148,
    184     149,
    185     150,
    186     151,
    187     152,
    188     153,
    189     154,
    190     155,
    191     156,
    192     157,
    193     158,
    194     159,
    195     160,
    196     161,
    197     162,
    198     163,
    199     164,
    200     165,
    201     166,
    202     167,
    203     168,
    204     169,
    205     170,
    206     171,
    207     172,
    208     173,
    209     174,
    210     175,
    211     176,
    212     177,
    213     178,
    214     179,
    215     180,
    216     181,
    217     182,
    218     183,
    219     184,
    220     185,
    221     186,
    222     187,
    223     188,
    224     189,
    225     190,
    226     191,
    227     192,
    228     193,
    229     194,
    230     195,
    231     196,
    232     197,
    233     198,
    234     199,
    235     200,
    236     201,
    237     202,
    238     203,
    239     204,
    240     205,
    241     206,
    242     207,
    243     208,
    244     209,
    245     210,
    246     211,
    247     212,
    248     213,
    249     214,
    250     215,
    251     216,
    252     217,
    253     218,
    254     219,
    255     220,
    256     221,
    257     222,
    258     223,
    259     224,
    260     225,
    261     226,
    262     227,
    263     228
     36      0,   1,   2,   3,   4,   5,   6,   7,
     37      8,   9,  10,  11,  12,  13,  14,  15,
     38     16,  17,  18,  19,  20,  21,  22,  23,
     39     24,  25,  26,  27,  28,  29,  30,  31,
     40     32,  33,  34,  35,  36,  37,  38,  39,
     41     40,  41,  42,  43,  44,  45,  46,  47,
     42     48,  49,  50,  51,  52,  53,  54,  55,
     43     56,  57,  58,  59,  60,  61,  62,  63,
     44     64,  65,  66,  67,  68,  69,  70,  71,
     45     72,  73,  74,  75,  76,  77,  78,  79,
     46     80,  81,  82,  83,  84,  85,  86,  87,
     47     88,  89,  90,  91,  92,  93,  94,  95,
     48     96,  97,  98,  99, 100, 101, 102, 103,
     49    104, 105, 106, 107, 108, 109, 110, 111,
     50    112, 113, 114, 115, 116, 117, 118, 119,
     51    120, 121, 122, 123, 124, 125, 126, 127,
     52    128, 129, 130, 131, 132, 133, 134, 135,
     53    136, 137, 138, 139, 140, 141, 142, 143,
     54    144, 145, 146, 147, 148, 149, 150, 151,
     55    152, 153, 154, 155, 156, 157, 158, 159,
     56    160, 161, 162, 163, 164, 165, 166, 167,
     57    168, 169, 170, 171, 172, 173, 174, 175,
     58    176, 177, 178, 179, 180, 181, 182, 183,
     59    184, 185, 186, 187, 188, 189, 190, 191,
     60    192, 193, 194, 195, 196, 197, 198, 199,
     61    200, 201, 202, 203, 204, 205, 206, 207,
     62    208, 209, 210, 211, 212, 213, 214, 215,
     63    216, 217, 218, 219, 220, 221, 222, 223,
     64    224, 225, 226, 227, 228
    26465  };
    26566
    26667  static const FT_UShort  cff_expert_charset[166] =
    26768  {
    268     0,
    269     1,
    270     229,
    271     230,
    272     231,
    273     232,
    274     233,
    275     234,
    276     235,
    277     236,
    278     237,
    279     238,
    280     13,
    281     14,
    282     15,
    283     99,
    284     239,
    285     240,
    286     241,
    287     242,
    288     243,
    289     244,
    290     245,
    291     246,
    292     247,
    293     248,
    294     27,
    295     28,
    296     249,
    297     250,
    298     251,
    299     252,
    300     253,
    301     254,
    302     255,
    303     256,
    304     257,
    305     258,
    306     259,
    307     260,
    308     261,
    309     262,
    310     263,
    311     264,
    312     265,
    313     266,
    314     109,
    315     110,
    316     267,
    317     268,
    318     269,
    319     270,
    320     271,
    321     272,
    322     273,
    323     274,
    324     275,
    325     276,
    326     277,
    327     278,
    328     279,
    329     280,
    330     281,
    331     282,
    332     283,
    333     284,
    334     285,
    335     286,
    336     287,
    337     288,
    338     289,
    339     290,
    340     291,
    341     292,
    342     293,
    343     294,
    344     295,
    345     296,
    346     297,
    347     298,
    348     299,
    349     300,
    350     301,
    351     302,
    352     303,
    353     304,
    354     305,
    355     306,
    356     307,
    357     308,
    358     309,
    359     310,
    360     311,
    361     312,
    362     313,
    363     314,
    364     315,
    365     316,
    366     317,
    367     318,
    368     158,
    369     155,
    370     163,
    371     319,
    372     320,
    373     321,
    374     322,
    375     323,
    376     324,
    377     325,
    378     326,
    379     150,
    380     164,
    381     169,
    382     327,
    383     328,
    384     329,
    385     330,
    386     331,
    387     332,
    388     333,
    389     334,
    390     335,
    391     336,
    392     337,
    393     338,
    394     339,
    395     340,
    396     341,
    397     342,
    398     343,
    399     344,
    400     345,
    401     346,
    402     347,
    403     348,
    404     349,
    405     350,
    406     351,
    407     352,
    408     353,
    409     354,
    410     355,
    411     356,
    412     357,
    413     358,
    414     359,
    415     360,
    416     361,
    417     362,
    418     363,
    419     364,
    420     365,
    421     366,
    422     367,
    423     368,
    424     369,
    425     370,
    426     371,
    427     372,
    428     373,
    429     374,
    430     375,
    431     376,
    432     377,
    433     378
     69      0,   1, 229, 230, 231, 232, 233, 234,
     70    235, 236, 237, 238,  13,  14,  15,  99,
     71    239, 240, 241, 242, 243, 244, 245, 246,
     72    247, 248,  27,  28, 249, 250, 251, 252,
     73    253, 254, 255, 256, 257, 258, 259, 260,
     74    261, 262, 263, 264, 265, 266, 109, 110,
     75    267, 268, 269, 270, 271, 272, 273, 274,
     76    275, 276, 277, 278, 279, 280, 281, 282,
     77    283, 284, 285, 286, 287, 288, 289, 290,
     78    291, 292, 293, 294, 295, 296, 297, 298,
     79    299, 300, 301, 302, 303, 304, 305, 306,
     80    307, 308, 309, 310, 311, 312, 313, 314,
     81    315, 316, 317, 318, 158, 155, 163, 319,
     82    320, 321, 322, 323, 324, 325, 326, 150,
     83    164, 169, 327, 328, 329, 330, 331, 332,
     84    333, 334, 335, 336, 337, 338, 339, 340,
     85    341, 342, 343, 344, 345, 346, 347, 348,
     86    349, 350, 351, 352, 353, 354, 355, 356,
     87    357, 358, 359, 360, 361, 362, 363, 364,
     88    365, 366, 367, 368, 369, 370, 371, 372,
     89    373, 374, 375, 376, 377, 378
    43490  };
    43591
    43692  static const FT_UShort  cff_expertsubset_charset[87] =
    43793  {
    438     0,
    439     1,
    440     231,
    441     232,
    442     235,
    443     236,
    444     237,
    445     238,
    446     13,
    447     14,
    448     15,
    449     99,
    450     239,
    451     240,
    452     241,
    453     242,
    454     243,
    455     244,
    456     245,
    457     246,
    458     247,
    459     248,
    460     27,
    461     28,
    462     249,
    463     250,
    464     251,
    465     253,
    466     254,
    467     255,
    468     256,
    469     257,
    470     258,
    471     259,
    472     260,
    473     261,
    474     262,
    475     263,
    476     264,
    477     265,
    478     266,
    479     109,
    480     110,
    481     267,
    482     268,
    483     269,
    484     270,
    485     272,
    486     300,
    487     301,
    488     302,
    489     305,
    490     314,
    491     315,
    492     158,
    493     155,
    494     163,
    495     320,
    496     321,
    497     322,
    498     323,
    499     324,
    500     325,
    501     326,
    502     150,
    503     164,
    504     169,
    505     327,
    506     328,
    507     329,
    508     330,
    509     331,
    510     332,
    511     333,
    512     334,
    513     335,
    514     336,
    515     337,
    516     338,
    517     339,
    518     340,
    519     341,
    520     342,
    521     343,
    522     344,
    523     345,
    524     346
     94      0,   1, 231, 232, 235, 236, 237, 238,
     95     13,  14,  15,  99, 239, 240, 241, 242,
     96    243, 244, 245, 246, 247, 248,  27,  28,
     97    249, 250, 251, 253, 254, 255, 256, 257,
     98    258, 259, 260, 261, 262, 263, 264, 265,
     99    266, 109, 110, 267, 268, 269, 270, 272,
     100    300, 301, 302, 305, 314, 315, 158, 155,
     101    163, 320, 321, 322, 323, 324, 325, 326,
     102    150, 164, 169, 327, 328, 329, 330, 331,
     103    332, 333, 334, 335, 336, 337, 338, 339,
     104    340, 341, 342, 343, 344, 345, 346
    525105  };
    526106
    527107  static const FT_UShort  cff_standard_encoding[256] =
    528108  {
    529     0,
    530     0,
    531     0,
    532     0,
    533     0,
    534     0,
    535     0,
    536     0,
    537     0,
    538     0,
    539     0,
    540     0,
    541     0,
    542     0,
    543     0,
    544     0,
    545     0,
    546     0,
    547     0,
    548     0,
    549     0,
    550     0,
    551     0,
    552     0,
    553     0,
    554     0,
    555     0,
    556     0,
    557     0,
    558     0,
    559     0,
    560     0,
    561     1,
    562     2,
    563     3,
    564     4,
    565     5,
    566     6,
    567     7,
    568     8,
    569     9,
    570     10,
    571     11,
    572     12,
    573     13,
    574     14,
    575     15,
    576     16,
    577     17,
    578     18,
    579     19,
    580     20,
    581     21,
    582     22,
    583     23,
    584     24,
    585     25,
    586     26,
    587     27,
    588     28,
    589     29,
    590     30,
    591     31,
    592     32,
    593     33,
    594     34,
    595     35,
    596     36,
    597     37,
    598     38,
    599     39,
    600     40,
    601     41,
    602     42,
    603     43,
    604     44,
    605     45,
    606     46,
    607     47,
    608     48,
    609     49,
    610     50,
    611     51,
    612     52,
    613     53,
    614     54,
    615     55,
    616     56,
    617     57,
    618     58,
    619     59,
    620     60,
    621     61,
    622     62,
    623     63,
    624     64,
    625     65,
    626     66,
    627     67,
    628     68,
    629     69,
    630     70,
    631     71,
    632     72,
    633     73,
    634     74,
    635     75,
    636     76,
    637     77,
    638     78,
    639     79,
    640     80,
    641     81,
    642     82,
    643     83,
    644     84,
    645     85,
    646     86,
    647     87,
    648     88,
    649     89,
    650     90,
    651     91,
    652     92,
    653     93,
    654     94,
    655     95,
    656     0,
    657     0,
    658     0,
    659     0,
    660     0,
    661     0,
    662     0,
    663     0,
    664     0,
    665     0,
    666     0,
    667     0,
    668     0,
    669     0,
    670     0,
    671     0,
    672     0,
    673     0,
    674     0,
    675     0,
    676     0,
    677     0,
    678     0,
    679     0,
    680     0,
    681     0,
    682     0,
    683     0,
    684     0,
    685     0,
    686     0,
    687     0,
    688     0,
    689     0,
    690     96,
    691     97,
    692     98,
    693     99,
    694     100,
    695     101,
    696     102,
    697     103,
    698     104,
    699     105,
    700     106,
    701     107,
    702     108,
    703     109,
    704     110,
    705     0,
    706     111,
    707     112,
    708     113,
    709     114,
    710     0,
    711     115,
    712     116,
    713     117,
    714     118,
    715     119,
    716     120,
    717     121,
    718     122,
    719     0,
    720     123,
    721     0,
    722     124,
    723     125,
    724     126,
    725     127,
    726     128,
    727     129,
    728     130,
    729     131,
    730     0,
    731     132,
    732     133,
    733     0,
    734     134,
    735     135,
    736     136,
    737     137,
    738     0,
    739     0,
    740     0,
    741     0,
    742     0,
    743     0,
    744     0,
    745     0,
    746     0,
    747     0,
    748     0,
    749     0,
    750     0,
    751     0,
    752     0,
    753     0,
    754     138,
    755     0,
    756     139,
    757     0,
    758     0,
    759     0,
    760     0,
    761     140,
    762     141,
    763     142,
    764     143,
    765     0,
    766     0,
    767     0,
    768     0,
    769     0,
    770     144,
    771     0,
    772     0,
    773     0,
    774     145,
    775     0,
    776     0,
    777     146,
    778     147,
    779     148,
    780     149,
    781     0,
    782     0,
    783     0,
    784     0
     109      0,   0,   0,   0,   0,   0,   0,   0,
     110      0,   0,   0,   0,   0,   0,   0,   0,
     111      0,   0,   0,   0,   0,   0,   0,   0,
     112      0,   0,   0,   0,   0,   0,   0,   0,
     113      1,   2,   3,   4,   5,   6,   7,   8,
     114      9,  10,  11,  12,  13,  14,  15,  16,
     115     17,  18,  19,  20,  21,  22,  23,  24,
     116     25,  26,  27,  28,  29,  30,  31,  32,
     117     33,  34,  35,  36,  37,  38,  39,  40,
     118     41,  42,  43,  44,  45,  46,  47,  48,
     119     49,  50,  51,  52,  53,  54,  55,  56,
     120     57,  58,  59,  60,  61,  62,  63,  64,
     121     65,  66,  67,  68,  69,  70,  71,  72,
     122     73,  74,  75,  76,  77,  78,  79,  80,
     123     81,  82,  83,  84,  85,  86,  87,  88,
     124     89,  90,  91,  92,  93,  94,  95,   0,
     125      0,   0,   0,   0,   0,   0,   0,   0,
     126      0,   0,   0,   0,   0,   0,   0,   0,
     127      0,   0,   0,   0,   0,   0,   0,   0,
     128      0,   0,   0,   0,   0,   0,   0,   0,
     129      0,  96,  97,  98,  99, 100, 101, 102,
     130    103, 104, 105, 106, 107, 108, 109, 110,
     131      0, 111, 112, 113, 114,   0, 115, 116,
     132    117, 118, 119, 120, 121, 122,   0, 123,
     133      0, 124, 125, 126, 127, 128, 129, 130,
     134    131,   0, 132, 133,   0, 134, 135, 136,
     135    137,   0,   0,   0,   0,   0,   0,   0,
     136      0,   0,   0,   0,   0,   0,   0,   0,
     137      0, 138,   0, 139,   0,   0,   0,   0,
     138    140, 141, 142, 143,   0,   0,   0,   0,
     139      0, 144,   0,   0,   0, 145,   0,   0,
     140    146, 147, 148, 149,   0,   0,   0,   0
    785141  };
    786142
    787143  static const FT_UShort  cff_expert_encoding[256] =
    788144  {
    789     0,
    790     0,
    791     0,
    792     0,
    793     0,
    794     0,
    795     0,
    796     0,
    797     0,
    798     0,
    799     0,
    800     0,
    801     0,
    802     0,
    803     0,
    804     0,
    805     0,
    806     0,
    807     0,
    808     0,
    809     0,
    810     0,
    811     0,
    812     0,
    813     0,
    814     0,
    815     0,
    816     0,
    817     0,
    818     0,
    819     0,
    820     0,
    821     1,
    822     229,
    823     230,
    824     0,
    825     231,
    826     232,
    827     233,
    828     234,
    829     235,
    830     236,
    831     237,
    832     238,
    833     13,
    834     14,
    835     15,
    836     99,
    837     239,
    838     240,
    839     241,
    840     242,
    841     243,
    842     244,
    843     245,
    844     246,
    845     247,
    846     248,
    847     27,
    848     28,
    849     249,
    850     250,
    851     251,
    852     252,
    853     0,
    854     253,
    855     254,
    856     255,
    857     256,
    858     257,
    859     0,
    860     0,
    861     0,
    862     258,
    863     0,
    864     0,
    865     259,
    866     260,
    867     261,
    868     262,
    869     0,
    870     0,
    871     263,
    872     264,
    873     265,
    874     0,
    875     266,
    876     109,
    877     110,
    878     267,
    879     268,
    880     269,
    881     0,
    882     270,
    883     271,
    884     272,
    885     273,
    886     274,
    887     275,
    888     276,
    889     277,
    890     278,
    891     279,
    892     280,
    893     281,
    894     282,
    895     283,
    896     284,
    897     285,
    898     286,
    899     287,
    900     288,
    901     289,
    902     290,
    903     291,
    904     292,
    905     293,
    906     294,
    907     295,
    908     296,
    909     297,
    910     298,
    911     299,
    912     300,
    913     301,
    914     302,
    915     303,
    916     0,
    917     0,
    918     0,
    919     0,
    920     0,
    921     0,
    922     0,
    923     0,
    924     0,
    925     0,
    926     0,
    927     0,
    928     0,
    929     0,
    930     0,
    931     0,
    932     0,
    933     0,
    934     0,
    935     0,
    936     0,
    937     0,
    938     0,
    939     0,
    940     0,
    941     0,
    942     0,
    943     0,
    944     0,
    945     0,
    946     0,
    947     0,
    948     0,
    949     0,
    950     304,
    951     305,
    952     306,
    953     0,
    954     0,
    955     307,
    956     308,
    957     309,
    958     310,
    959     311,
    960     0,
    961     312,
    962     0,
    963     0,
    964     312,
    965     0,
    966     0,
    967     314,
    968     315,
    969     0,
    970     0,
    971     316,
    972     317,
    973     318,
    974     0,
    975     0,
    976     0,
    977     158,
    978     155,
    979     163,
    980     319,
    981     320,
    982     321,
    983     322,
    984     323,
    985     324,
    986     325,
    987     0,
    988     0,
    989     326,
    990     150,
    991     164,
    992     169,
    993     327,
    994     328,
    995     329,
    996     330,
    997     331,
    998     332,
    999     333,
    1000     334,
    1001     335,
    1002     336,
    1003     337,
    1004     338,
    1005     339,
    1006     340,
    1007     341,
    1008     342,
    1009     343,
    1010     344,
    1011     345,
    1012     346,
    1013     347,
    1014     348,
    1015     349,
    1016     350,
    1017     351,
    1018     352,
    1019     353,
    1020     354,
    1021     355,
    1022     356,
    1023     357,
    1024     358,
    1025     359,
    1026     360,
    1027     361,
    1028     362,
    1029     363,
    1030     364,
    1031     365,
    1032     366,
    1033     367,
    1034     368,
    1035     369,
    1036     370,
    1037     371,
    1038     372,
    1039     373,
    1040     374,
    1041     375,
    1042     376,
    1043     377,
    1044     378
     145      0,   0,   0,   0,   0,   0,   0,   0,
     146      0,   0,   0,   0,   0,   0,   0,   0,
     147      0,   0,   0,   0,   0,   0,   0,   0,
     148      0,   0,   0,   0,   0,   0,   0,   0,
     149      1, 229, 230,   0, 231, 232, 233, 234,
     150    235, 236, 237, 238,  13,  14,  15,  99,
     151    239, 240, 241, 242, 243, 244, 245, 246,
     152    247, 248,  27,  28, 249, 250, 251, 252,
     153      0, 253, 254, 255, 256, 257,   0,   0,
     154      0, 258,   0,   0, 259, 260, 261, 262,
     155      0,   0, 263, 264, 265,   0, 266, 109,
     156    110, 267, 268, 269,   0, 270, 271, 272,
     157    273, 274, 275, 276, 277, 278, 279, 280,
     158    281, 282, 283, 284, 285, 286, 287, 288,
     159    289, 290, 291, 292, 293, 294, 295, 296,
     160    297, 298, 299, 300, 301, 302, 303,   0,
     161      0,   0,   0,   0,   0,   0,   0,   0,
     162      0,   0,   0,   0,   0,   0,   0,   0,
     163      0,   0,   0,   0,   0,   0,   0,   0,
     164      0,   0,   0,   0,   0,   0,   0,   0,
     165      0, 304, 305, 306,   0,   0, 307, 308,
     166    309, 310, 311,   0, 312,   0,   0, 312,
     167      0,   0, 314, 315,   0,   0, 316, 317,
     168    318,   0,   0,   0, 158, 155, 163, 319,
     169    320, 321, 322, 323, 324, 325,   0,   0,
     170    326, 150, 164, 169, 327, 328, 329, 330,
     171    331, 332, 333, 334, 335, 336, 337, 338,
     172    339, 340, 341, 342, 343, 344, 345, 346,
     173    347, 348, 349, 350, 351, 352, 353, 354,
     174    355, 356, 357, 358, 359, 360, 361, 362,
     175    363, 364, 365, 366, 367, 368, 369, 370,
     176    371, 372, 373, 374, 375, 376, 377, 378
    1045177  };
    1046178#endif
     
    1064196
    1065197
     198  /* read an offset from the index's stream current position */
     199  static FT_ULong
     200  cff_index_read_offset( CFF_Index  idx,
     201                         FT_Error  *errorp )
     202  {
     203    FT_Error   error;
     204    FT_Stream  stream = idx->stream;
     205    FT_Byte    tmp[4];
     206    FT_ULong   result = 0;
     207
     208
     209    if ( !FT_STREAM_READ( tmp, idx->off_size ) )
     210    {
     211      FT_Int  nn;
     212
     213
     214      for ( nn = 0; nn < idx->off_size; nn++ )
     215        result = ( result << 8 ) | tmp[nn];
     216    }
     217
     218    *errorp = error;
     219    return result;
     220  }
     221
     222
    1066223  static FT_Error
    1067   cff_new_index( CFF_Index  idx,
    1068                  FT_Stream  stream,
    1069                  FT_Bool    load )
     224  cff_index_init( CFF_Index  idx,
     225                  FT_Stream  stream,
     226                  FT_Bool    load )
    1070227  {
    1071228    FT_Error   error;
     
    1077234
    1078235    idx->stream = stream;
     236    idx->start  = FT_STREAM_POS();
    1079237    if ( !FT_READ_USHORT( count ) &&
    1080238         count > 0                )
    1081239    {
    1082       FT_Byte*   p;
    1083       FT_Byte    offsize;
    1084       FT_ULong   data_size;
    1085       FT_ULong*  poff;
    1086       FT_Byte*   p_end;
     240      FT_Byte   offsize;
     241      FT_ULong  size;
    1087242
    1088243
     
    1098253      }
    1099254
    1100       idx->stream   = stream;
    1101255      idx->count    = count;
    1102256      idx->off_size = offsize;
    1103       data_size     = (FT_ULong)( count + 1 ) * offsize;
    1104 
    1105       if ( FT_NEW_ARRAY( idx->offsets, count + 1 ) ||
    1106            FT_FRAME_ENTER( data_size )             )
     257      size          = (FT_ULong)( count + 1 ) * offsize;
     258
     259      idx->data_offset = idx->start + 3 + size;
     260
     261      if ( FT_STREAM_SKIP( size - offsize ) )
     262        goto Exit;
     263
     264      size = cff_index_read_offset( idx, &error );
     265      if ( error )
     266        goto Exit;
     267
     268      if ( size == 0 )
     269      {
     270        error = CFF_Err_Invalid_Table;
     271        goto Exit;
     272      }
     273
     274      idx->data_size = --size;
     275
     276      if ( load )
     277      {
     278        /* load the data */
     279        if ( FT_FRAME_EXTRACT( size, idx->bytes ) )
     280          goto Exit;
     281      }
     282      else
     283      {
     284        /* skip the data */
     285        if ( FT_STREAM_SKIP( size ) )
     286          goto Exit;
     287      }
     288    }
     289
     290  Exit:
     291    if ( error )
     292      FT_FREE( idx->offsets );
     293
     294    return error;
     295  }
     296
     297
     298  static void
     299  cff_index_done( CFF_Index  idx )
     300  {
     301    if ( idx->stream )
     302    {
     303      FT_Stream  stream = idx->stream;
     304      FT_Memory  memory = stream->memory;
     305
     306
     307      if ( idx->bytes )
     308        FT_FRAME_RELEASE( idx->bytes );
     309
     310      FT_FREE( idx->offsets );
     311      FT_MEM_ZERO( idx, sizeof ( *idx ) );
     312    }
     313  }
     314
     315
     316  static FT_Error
     317  cff_index_load_offsets( CFF_Index  idx )
     318  {
     319    FT_Error   error  = 0;
     320    FT_Stream  stream = idx->stream;
     321    FT_Memory  memory = stream->memory;
     322
     323
     324    if ( idx->count > 0 && idx->offsets == NULL )
     325    {
     326      FT_Byte    offsize = idx->off_size;
     327      FT_ULong   data_size;
     328      FT_Byte*   p;
     329      FT_Byte*   p_end;
     330      FT_ULong*  poff;
     331
     332
     333      data_size = (FT_ULong)( idx->count + 1 ) * offsize;
     334
     335      if ( FT_NEW_ARRAY( idx->offsets, idx->count + 1 ) ||
     336           FT_STREAM_SEEK( idx->start + 3 )             ||
     337           FT_FRAME_ENTER( data_size )                  )
    1107338        goto Exit;
    1108339
     
    1134365
    1135366      FT_FRAME_EXIT();
    1136 
    1137       idx->data_offset = FT_STREAM_POS();
    1138       data_size        = poff[-1] - 1;
    1139 
    1140       if ( load )
    1141       {
    1142         /* load the data */
    1143         if ( FT_FRAME_EXTRACT( data_size, idx->bytes ) )
    1144           goto Exit;
    1145       }
    1146       else
    1147       {
    1148         /* skip the data */
    1149         if ( FT_STREAM_SKIP( data_size ) )
    1150           goto Exit;
    1151       }
    1152367    }
    1153368
     
    1157372
    1158373    return error;
    1159   }
    1160 
    1161 
    1162   static void
    1163   cff_done_index( CFF_Index  idx )
    1164   {
    1165     if ( idx->stream )
    1166     {
    1167       FT_Stream  stream = idx->stream;
    1168       FT_Memory  memory = stream->memory;
    1169 
    1170 
    1171       if ( idx->bytes )
    1172         FT_FRAME_RELEASE( idx->bytes );
    1173 
    1174       FT_FREE( idx->offsets );
    1175       FT_MEM_ZERO( idx, sizeof ( *idx ) );
    1176     }
    1177374  }
    1178375
     
    1191388    *table = 0;
    1192389
     390    if ( idx->offsets == NULL )
     391    {
     392      error = cff_index_load_offsets( idx );
     393      if ( error )
     394        goto Exit;
     395    }
     396
    1193397    if ( idx->count > 0 && !FT_NEW_ARRAY( t, idx->count + 1 ) )
    1194398    {
     
    1200404          offset = old_offset;
    1201405
     406        /* sanity check for invalid offset tables */
     407        else if ( offset < old_offset || offset - 1 >= idx->data_size )
     408          offset = old_offset;
     409
    1202410        t[n] = idx->bytes + offset - 1;
    1203411
     
    1207415    }
    1208416
     417  Exit:
    1209418    return error;
    1210419  }
     
    1223432    {
    1224433      /* compute start and end offsets */
    1225       FT_ULong  off1, off2 = 0;
    1226 
    1227 
    1228       off1 = idx->offsets[element];
    1229       if ( off1 )
    1230       {
    1231         do
     434      FT_Stream  stream = idx->stream;
     435      FT_ULong   off1, off2 = 0;
     436
     437
     438      /* load offsets from file or the offset table */
     439      if ( !idx->offsets )
     440      {
     441        FT_ULong  pos = element * idx->off_size;
     442
     443
     444        if ( FT_STREAM_SEEK( idx->start + 3 + pos ) )
     445          goto Exit;
     446
     447        off1 = cff_index_read_offset( idx, &error );
     448        if ( error )
     449          goto Exit;
     450
     451        if ( off1 != 0 )
    1232452        {
    1233           element++;
    1234           off2 = idx->offsets[element];
    1235 
    1236         } while ( off2 == 0 && element < idx->count );
    1237 
    1238         if ( !off2 )
    1239           off1 = 0;
     453          do
     454          {
     455            element++;
     456            off2 = cff_index_read_offset( idx, &error );
     457          }
     458          while ( off2 == 0 && element < idx->count );
     459        }
     460      }
     461      else   /* use offsets table */
     462      {
     463        off1 = idx->offsets[element];
     464        if ( off1 )
     465        {
     466          do
     467          {
     468            element++;
     469            off2 = idx->offsets[element];
     470
     471          } while ( off2 == 0 && element < idx->count );
     472        }
    1240473      }
    1241474
     
    1253486        {
    1254487          /* this index is still on disk/file, access it through a frame */
    1255           FT_Stream  stream = idx->stream;
    1256 
    1257 
    1258488          if ( FT_STREAM_SEEK( idx->data_offset + off1 - 1 ) ||
    1259489               FT_FRAME_EXTRACT( off2 - off1, *pbytes )      )
     
    1523753      charset->cids[charset->sids[i]] = (FT_UShort)i;
    1524754
    1525     charset->max_cid = max_cid;
     755    charset->max_cid    = max_cid;
     756    charset->num_glyphs = num_glyphs;
    1526757
    1527758  Exit:
    1528759    return error;
     760  }
     761
     762
     763  FT_LOCAL_DEF( FT_UInt )
     764  cff_charset_cid_to_gindex( CFF_Charset  charset,
     765                             FT_UInt      cid )
     766  {
     767    FT_UInt  result = 0;
     768
     769
     770    if ( cid < charset->max_cid )
     771      result = charset->cids[cid];
     772
     773    return result;
    1529774  }
    1530775
     
    19591204
    19601205          if ( sid )
    1961             gid = charset->cids[sid];
     1206            gid = cff_charset_cid_to_gindex( charset, sid );
    19621207
    19631208          if ( gid != 0 )
     
    20791324        goto Exit;
    20801325
    2081       error = cff_new_index( &font->local_subrs_index, stream, 1 );
     1326      error = cff_index_init( &font->local_subrs_index, stream, 1 );
    20821327      if ( error )
    20831328        goto Exit;
     
    21011346    if ( subfont )
    21021347    {
    2103       cff_done_index( &subfont->local_subrs_index );
     1348      cff_index_done( &subfont->local_subrs_index );
    21041349      FT_FREE( subfont->local_subrs );
    21051350    }
     
    21571402
    21581403    /* read the name, top dict, string and global subrs index */
    2159     if ( FT_SET_ERROR( cff_new_index( &font->name_index,         stream, 0 )) ||
    2160          FT_SET_ERROR( cff_new_index( &font->font_dict_index,    stream, 0 )) ||
    2161          FT_SET_ERROR( cff_new_index( &font->string_index,       stream, 0 )) ||
    2162          FT_SET_ERROR( cff_new_index( &font->global_subrs_index, stream, 1 )) )
     1404    if ( FT_SET_ERROR( cff_index_init( &font->name_index,
     1405                                       stream, 0 ) )              ||
     1406         FT_SET_ERROR( cff_index_init( &font->font_dict_index,
     1407                                       stream, 0 ) )              ||
     1408         FT_SET_ERROR( cff_index_init( &font->string_index,
     1409                                       stream, 0 ) )              ||
     1410         FT_SET_ERROR( cff_index_init( &font->global_subrs_index,
     1411                                       stream, 1 ) )              )
    21631412      goto Exit;
    21641413
     
    21881437      goto Exit;
    21891438
    2190     error = cff_new_index( &font->charstrings_index, stream, 0 );
     1439    error = cff_index_init( &font->charstrings_index, stream, 0 );
    21911440    if ( error )
    21921441      goto Exit;
     
    22051454        goto Exit;
    22061455
    2207       error = cff_new_index( &fd_index, stream, 0 );
     1456      error = cff_index_init( &fd_index, stream, 0 );
    22081457      if ( error )
    22091458        goto Exit;
     
    22411490
    22421491    Fail_CID:
    2243       cff_done_index( &fd_index );
     1492      cff_index_done( &fd_index );
    22441493
    22451494      if ( error )
     
    23111560
    23121561
    2313     cff_done_index( &font->global_subrs_index );
    2314     cff_done_index( &font->string_index );
    2315     cff_done_index( &font->font_dict_index );
    2316     cff_done_index( &font->name_index );
    2317     cff_done_index( &font->charstrings_index );
     1562    cff_index_done( &font->global_subrs_index );
     1563    cff_index_done( &font->string_index );
     1564    cff_index_done( &font->font_dict_index );
     1565    cff_index_done( &font->name_index );
     1566    cff_index_done( &font->charstrings_index );
    23181567
    23191568    /* release font dictionaries, but only if working with */
     
    23351584    CFF_Done_FD_Select( &font->fd_select, font->stream );
    23361585
     1586    if (font->font_info != NULL)
     1587    {
     1588      FT_FREE( font->font_info->version );
     1589      FT_FREE( font->font_info->notice );
     1590      FT_FREE( font->font_info->full_name );
     1591      FT_FREE( font->font_info->family_name );
     1592      FT_FREE( font->font_info->weight );
     1593      FT_FREE( font->font_info );
     1594    }
     1595
    23371596    FT_FREE( font->global_subrs );
    23381597    FT_FREE( font->font_name );
  • trunk/poppler/freetype2/src/cff/cffload.h

    r150 r182  
    55/*    OpenType & CFF data/program tables loader (specification).           */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003 by                                     */
     7/*  Copyright 1996-2001, 2002, 2003, 2007 by                               */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    5353
    5454
     55  FT_LOCAL( FT_UInt )
     56  cff_charset_cid_to_gindex( CFF_Charset  charset,
     57                             FT_UInt      cid );
     58
     59
    5560  FT_LOCAL( FT_Error )
    5661  cff_font_load( FT_Stream  stream,
  • trunk/poppler/freetype2/src/cff/cffobjs.c

    r150 r182  
    55/*    OpenType objects manager (body).                                     */
    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/*                                                                         */
     
    208208      CFF_Face      cffface = (CFF_Face)size->face;
    209209      SFNT_Service  sfnt    = (SFNT_Service)cffface->sfnt;
    210       FT_ULong      index;
    211 
    212 
    213       if ( sfnt->set_sbit_strike( cffface, req, &index ) )
     210      FT_ULong      strike_index;
     211
     212
     213      if ( sfnt->set_sbit_strike( cffface, req, &strike_index ) )
    214214        cffsize->strike_index = 0xFFFFFFFFUL;
    215215      else
    216         return cff_size_select( size, index );
     216        return cff_size_select( size, strike_index );
    217217    }
    218218
  • trunk/poppler/freetype2/src/cff/cffobjs.h

    r150 r182  
    55/*    OpenType objects manager (specification).                            */
    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/*                                                                         */
     
    121121  FT_LOCAL( FT_Error )
    122122  cff_size_select( FT_Size   size,
    123                    FT_ULong  index );
     123                   FT_ULong  strike_index );
    124124
    125125#endif
  • trunk/poppler/freetype2/src/cff/cfftypes.h

    r150 r182  
    66/*    only).                                                               */
    77/*                                                                         */
    8 /*  Copyright 1996-2001, 2002, 2003, 2006 by                               */
     8/*  Copyright 1996-2001, 2002, 2003, 2006, 2007 by                         */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    2424#include <ft2build.h>
    2525#include FT_FREETYPE_H
     26#include FT_TYPE1_TABLES_H
    2627
    2728
     
    4041  /*    stream      :: The source input stream.                            */
    4142  /*                                                                       */
     43  /*    start       :: The position of the first index byte in the         */
     44  /*                   input stream.                                       */
     45  /*                                                                       */
    4246  /*    count       :: The number of elements in the index.                */
    4347  /*                                                                       */
     
    4751  /*                   bytes.                                              */
    4852  /*                                                                       */
    49   /*    offsets     :: A table of element offsets in the index.            */
     53  /*    data_size   :: The size of the data table in this index.           */
     54  /*                                                                       */
     55  /*    offsets     :: A table of element offsets in the index.  Must be   */
     56  /*                   loaded explicitly.                                  */
    5057  /*                                                                       */
    5158  /*    bytes       :: If the index is loaded in memory, its bytes.        */
     
    5461  {
    5562    FT_Stream  stream;
     63    FT_ULong   start;
    5664    FT_UInt    count;
    5765    FT_Byte    off_size;
    5866    FT_ULong   data_offset;
     67    FT_ULong   data_size;
    5968
    6069    FT_ULong*  offsets;
     
    8695                            /* for CID-keyed fonts                        */
    8796    FT_UInt     max_cid;
     97    FT_UInt     num_glyphs;
     98
    8899  } CFF_CharsetRec, *CFF_Charset;
    89100
     
    246257    void*            psnames;
    247258
     259    /* since version 2.3.0 */
     260    PS_FontInfoRec*  font_info;   /* font info dictionary */
     261
    248262  } CFF_FontRec, *CFF_Font;
    249263
  • trunk/poppler/freetype2/src/cid/cidparse.c

    r150 r182  
    55/*    CID-keyed Type1 parser (body).                                       */
    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/*                                                                         */
     
    8484
    8585  Again:
    86     /* now, read the rest of the file until we find a `StartData' */
     86    /* now, read the rest of the file until we find */
     87    /* `StartData' or `/sfnts'                      */
    8788    {
    8889      FT_Byte   buffer[256 + 10];
     
    9394      for ( offset = (FT_ULong)FT_STREAM_POS(); ; offset += 256 )
    9495      {
    95         FT_Int    stream_len;
     96        FT_Int  stream_len;
    9697
    9798
     
    117118            goto Found;
    118119          }
     120          else if ( p[1] == 's' && ft_strncmp( (char*)p, "/sfnts", 6 ) == 0 )
     121          {
     122            offset += p - buffer + 7;
     123            goto Found;
     124          }
    119125        }
    120126
     
    126132
    127133  Found:
    128     /* We have found the start of the binary data.  Now rewind and */
    129     /* extract the frame corresponding to the PostScript section.  */
     134    /* We have found the start of the binary data or the `/sfnts' token. */
     135    /* Now rewind and extract the frame corresponding to this PostScript */
     136    /* section.                                                          */
    130137
    131138    ps_len = offset - base_offset;
     
    141148    parser->num_dict       = -1;
    142149
    143     /* Finally, we check whether `StartData' was real -- it could be  */
    144     /* in a comment or string.  We also get its arguments to find out */
    145     /* whether the data is represented in binary or hex format.       */
     150    /* Finally, we check whether `StartData' or `/sfnts' was real --  */
     151    /* it could be in a comment or string.  We also get the arguments */
     152    /* of `StartData' to find out whether the data is represented in  */
     153    /* binary or hex format.                                          */
    146154
    147155    arg1 = parser->root.cursor;
     
    160168        break;
    161169
    162       if ( *cur == 'S' && ft_strncmp( (char*)cur, "StartData", 9 ) == 0 )
     170      if ( cur[0] == 'S' && ft_strncmp( (char*)cur, "StartData", 9 ) == 0 )
    163171      {
    164172        if ( ft_strncmp( (char*)arg1, "(Hex)", 5 ) == 0 )
     
    167175        limit = parser->root.limit;
    168176        cur   = parser->root.cursor;
     177        goto Exit;
     178      }
     179      else if ( cur[1] == 's' && ft_strncmp( (char*)cur, "/sfnts", 6 ) == 0 )
     180      {
     181        FT_TRACE2(( "cid_parser_new: cannot handle Type 11 fonts\n" ));
     182        error = CID_Err_Unknown_File_Format;
    169183        goto Exit;
    170184      }
  • trunk/poppler/freetype2/src/gxvalid/README

    r150 r182  
    440440      are documented  by each vendors' TrueType  font specification, but
    441441      the documentation for classic Apple dialect is not available.
    442      
     442
    443443      For example,  in the  new Apple dialect,  bit 15 is  documented as
    444444      `set to  1 if  the kerning  is vertical'.  On  the other  hand, in
     
    488488    We checked  59 fonts  bundled with MacOS  and 38 fonts  bundled with
    489489    Windows, where all font include a `kern' table.
    490    
     490
    491491      - fonts bundled with MacOS
    492492        * new Apple dialect
  • trunk/poppler/freetype2/src/gxvalid/gxvfgen.c

    r150 r182  
    466466              feat_name ? 1 : 0,
    467467              ( feat_name                                                  &&
    468                 ( ft_strncmp( feat_name, 
     468                ( ft_strncmp( feat_name,
    469469                              APPLE_RESERVED, APPLE_RESERVED_LENGTH ) == 0 )
    470470              ) ? 1 : 0,
  • trunk/poppler/freetype2/src/gxvalid/gxvkern.c

    r150 r182  
    55/*    TrueTypeGX/AAT kern table validation (body).                         */
    66/*                                                                         */
    7 /*  Copyright 2004, 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */
     7/*  Copyright 2004, 2005, 2006, 2007                                       */
     8/*  by suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                      */
    89/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    910/*                                                                         */
     
    107108
    108109  static void
     110  gxv_kern_subtable_fmt0_pairs_validate( FT_Bytes       table,
     111                                         FT_Bytes       limit,
     112                                         FT_UShort      nPairs,
     113                                         GXV_Validator  valid )
     114  {
     115    FT_Bytes   p = table;
     116    FT_UShort  i;
     117
     118    FT_UShort  last_gid_left  = 0;
     119    FT_UShort  last_gid_right = 0;
     120
     121    FT_UNUSED( limit );
     122
     123
     124    GXV_NAME_ENTER( "kern format 0 pairs" );
     125
     126    for ( i = 0; i < nPairs; i++ )
     127    {
     128      FT_UShort  gid_left;
     129      FT_UShort  gid_right;
     130      FT_Short   kernValue;
     131
     132
     133      /* left */
     134      gid_left  = FT_NEXT_USHORT( p );
     135      gxv_glyphid_validate( gid_left, valid );
     136
     137      /* right */
     138      gid_right = FT_NEXT_USHORT( p );
     139      gxv_glyphid_validate( gid_right, valid );
     140
     141      /* Pairs of left and right GIDs must be unique and sorted. */
     142      GXV_TRACE(( "left gid = %u, right gid = %u\n", gid_left, gid_right ));
     143      if ( gid_left == last_gid_left )
     144      {
     145        if ( last_gid_right < gid_right )
     146          last_gid_right = gid_right;
     147        else
     148          FT_INVALID_DATA;
     149      }
     150      else if ( last_gid_left < gid_left )
     151      {
     152        last_gid_left  = gid_left;
     153        last_gid_right = gid_right;
     154      }
     155      else
     156        FT_INVALID_DATA;
     157
     158      /* skip the kern value */
     159      kernValue = FT_NEXT_SHORT( p );
     160    }
     161
     162    GXV_EXIT;
     163  }
     164
     165  static void
    109166  gxv_kern_subtable_fmt0_validate( FT_Bytes       table,
    110167                                   FT_Bytes       limit,
     
    115172    FT_UShort  nPairs;
    116173    FT_UShort  unitSize;
    117     FT_UShort  i;
    118 
    119 
    120     GXV_NAME_ENTER( "kern subtable format0" );
     174
     175
     176    GXV_NAME_ENTER( "kern subtable format 0" );
    121177
    122178    unitSize = 2 + 2 + 2;
     
    128184    p += 2 + 2 + 2 + 2;
    129185
    130     for ( i = 0; i < nPairs; i++ )
    131     {
    132       FT_UShort  gid_left;
    133       FT_UShort  gid_right;
    134       FT_Short   kernValue;
    135 
    136       /* TODO: should be checked pairs are unique. */
    137 
    138 
    139       /* left */
    140       gid_left  = FT_NEXT_USHORT( p );
    141       gxv_glyphid_validate( gid_left, valid );
    142 
    143       /* right */
    144       gid_right = FT_NEXT_USHORT( p );
    145       gxv_glyphid_validate( gid_right, valid );
    146 
    147       /* skip the kern value */
    148       kernValue = FT_NEXT_SHORT( p );
    149     }
     186    gxv_kern_subtable_fmt0_pairs_validate( p, limit, nPairs, valid );
    150187
    151188    GXV_EXIT;
     
    267304
    268305
    269     GXV_NAME_ENTER( "kern subtable format1" );
     306    GXV_NAME_ENTER( "kern subtable format 1" );
    270307
    271308    valid->statetable.optdata =
     
    369406
    370407
    371     GXV_NAME_ENTER( "kern subtable format2" );
     408    GXV_NAME_ENTER( "kern subtable format 2" );
    372409
    373410    GXV_ODTECT_INIT( odtect );
     
    426463
    427464
    428     GXV_NAME_ENTER( "kern subtable format3" );
     465    GXV_NAME_ENTER( "kern subtable format 3" );
    429466
    430467    GXV_LIMIT_CHECK( 2 + 1 + 1 + 1 + 1 );
  • trunk/poppler/freetype2/src/gxvalid/gxvmort2.c

    r150 r182  
    206206    setComponent = (FT_UShort)( ( flags >> 15 ) & 1 );
    207207    dontAdvance  = (FT_UShort)( ( flags >> 14 ) & 1 );
    208    
     208
    209209    offset = (FT_UShort)( flags & 0x3FFFU );
    210210
  • trunk/poppler/freetype2/src/gxvalid/gxvmorx5.c

    r150 r182  
    66/*    body for type5 (Contextual Glyph Insertion) subtable.                */
    77/*                                                                         */
    8 /*  Copyright 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K.,      */
     8/*  Copyright 2005, 2007 by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    110110
    111111  static void
    112   gxv_morx_subtable_type5_InsertList_validate( FT_UShort      index,
     112  gxv_morx_subtable_type5_InsertList_validate( FT_UShort      table_index,
    113113                                               FT_UShort      count,
    114114                                               FT_Bytes       table,
     
    116116                                               GXV_Validator  valid )
    117117  {
    118     FT_Bytes p = table + index * 2;
    119 
    120 
    121     while ( p < table + count * 2 + index * 2 )
     118    FT_Bytes p = table + table_index * 2;
     119
     120
     121    while ( p < table + count * 2 + table_index * 2 )
    122122    {
    123123      FT_UShort  insert_glyphID;
  • trunk/poppler/freetype2/src/otvalid/otvmod.c

    r165 r182  
    199199
    200200  static
    201   const FT_Service_OTvalidateRec  otvalid_interface = 
     201  const FT_Service_OTvalidateRec  otvalid_interface =
    202202  {
    203203    otv_validate
     
    206206
    207207  static
    208   const FT_ServiceDescRec  otvalid_services[] = 
     208  const FT_ServiceDescRec  otvalid_services[] =
    209209  {
    210210    { FT_SERVICE_ID_OPENTYPE_VALIDATE, &otvalid_interface },
  • trunk/poppler/freetype2/src/pcf/README

    r150 r182  
    1414
    1515Informations on the PCF font format can only be worked out from
    16 ``pcfread.c'', and ``pcfwrite.c'', to be found, for instance, in the XFree86
     16`pcfread.c', and `pcfwrite.c', to be found, for instance, in the XFree86
    1717(www.xfree86.org) source tree (xc/lib/font/bitmap/).
    1818
    1919Many good bitmap fonts in bdf format come with XFree86: they can be
    20 compiled into the pcf format using the ``bdftopcf'' utility.
     20compiled into the pcf format using the `bdftopcf' utility.
    2121
    2222
     
    4747
    4848  pcfface = (PCF_Public_Face)face;
    49  
    50   if ((pcfface->charset_registry == "ISO10646") && 
     49
     50  if ((pcfface->charset_registry == "ISO10646") &&
    5151        (pcfface->charset_encoding) == "1")) [..]
    5252
    53 Thus the driver always export ``ft_encoding_none'' as
     53Thus the driver always export `ft_encoding_none' as
    5454face->charmap.encoding.  FT_Get_Char_Index() behavior is unmodified, that
    5555is, it converts the ULong value given as argument into the corresponding
  • trunk/poppler/freetype2/src/pcf/pcfread.c

    r165 r182  
    33    FreeType font driver for pcf fonts
    44
    5   Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006 by
     5  Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by
    66  Francesco Zappa Nardelli
    77
     
    322322
    323323  Fail:
     324    *asize = 0;
    324325    return error;
    325326  }
     
    550551
    551552    error = PCF_Err_Ok;
    552    
     553
    553554  Bail:
    554555    FT_FREE( props );
     
    11831184        root->family_name = NULL;
    11841185
    1185       /* 
     1186      /*
    11861187       * Note: We shift all glyph indices by +1 since we must
    11871188       * respect the convention that glyph 0 always corresponds
  • trunk/poppler/freetype2/src/pcf/pcfutil.c

    r165 r182  
    4848    {
    4949      unsigned int  val = *buf;
    50      
     50
    5151
    5252      val = ( ( val >> 1 ) & 0x55 ) | ( ( val << 1 ) & 0xAA );
    5353      val = ( ( val >> 2 ) & 0x33 ) | ( ( val << 2 ) & 0xCC );
    5454      val = ( ( val >> 4 ) & 0x0F ) | ( ( val << 4 ) & 0xF0 );
    55      
     55
    5656      *buf = (unsigned char)val;
    5757    }
  • trunk/poppler/freetype2/src/pfr/pfrcmap.c

    r150 r182  
    1717
    1818
    19 #include "pfrcmap.h" 
     19#include "pfrcmap.h"
    2020#include "pfrobjs.h"
    2121#include FT_INTERNAL_DEBUG_H
     
    3030    cmap->num_chars = face->phy_font.num_chars;
    3131    cmap->chars     = face->phy_font.chars;
    32    
     32
    3333    /* just for safety, check that the character entries are correctly */
    3434    /* sorted in increasing character code order                       */
    3535    {
    3636      FT_UInt  n;
    37      
     37
    3838
    3939      for ( n = 1; n < cmap->num_chars; n++ )
     
    4343      }
    4444    }
    45    
     45
    4646    return 0;
    4747  }
  • trunk/poppler/freetype2/src/pfr/pfrcmap.h

    r150 r182  
    3232    FT_UInt     num_chars;
    3333    PFR_Char    chars;
    34  
     34
    3535  } PFR_CMapRec, *PFR_CMap;
    3636
  • trunk/poppler/freetype2/src/pfr/pfrload.h

    r150 r182  
    5555    FT_UInt                  type;
    5656    PFR_ExtraItem_ParseFunc  parser;
    57  
     57
    5858  } PFR_ExtraItemRec;
    59  
     59
    6060  typedef const struct PFR_ExtraItemRec_*  PFR_ExtraItem;
    61  
     61
    6262
    6363  FT_LOCAL( FT_Error )
     
    110110
    111111  /* */
    112  
     112
    113113FT_END_HEADER
    114114
  • trunk/poppler/freetype2/src/pfr/pfrobjs.c

    r165 r182  
    55/*    FreeType PFR object methods (body).                                  */
    66/*                                                                         */
    7 /*  Copyright 2002, 2003, 2004, 2005, 2006 by                              */
     7/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007 by                        */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    123123      goto Exit;
    124124
    125     /* now, set-up all root face fields */
     125    /* now set up all root face fields */
    126126    {
    127127      PFR_PhyFont  phy_font = &face->phy_font;
     
    131131      pfrface->num_glyphs = phy_font->num_chars + 1;
    132132      pfrface->face_flags = FT_FACE_FLAG_SCALABLE;
     133
     134      /* if all characters point to the same gps_offset 0, we */
     135      /* assume that the font only contains bitmaps           */
     136      {
     137        FT_UInt  nn;
     138
     139
     140        for ( nn = 0; nn < phy_font->num_chars; nn++ )
     141          if ( phy_font->chars[nn].gps_offset != 0 )
     142            break;
     143
     144        if ( nn == phy_font->num_chars )
     145          pfrface->face_flags = 0;        /* not scalable */
     146      }
    133147
    134148      if ( (phy_font->flags & PFR_PHY_PROPORTIONAL) == 0 )
  • trunk/poppler/freetype2/src/psaux/psobjs.c

    r165 r182  
    589589                 "but invalid at this point\n",
    590590                 *cur ));
    591      
     591
    592592      error = PSaux_Err_Invalid_File_Format;
    593593    }
     
    12831283    FT_Error  error = PSaux_Err_Ok;
    12841284    FT_Byte*  cur;
    1285    
    1286    
     1285
     1286
    12871287    ps_parser_skip_spaces( parser );
    12881288    cur = parser->cursor;
  • trunk/poppler/freetype2/src/pshinter/pshalgo.c

    r165 r182  
    55/*    PostScript hinting algorithm (body).                                 */
    66/*                                                                         */
    7 /*  Copyright 2001, 2002, 2003, 2004, 2005, 2006 by                        */
     7/*  Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 by                  */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    10331033        orient_prev = psh_corner_orientation( in_x, in_y, out_x, out_y );
    10341034
    1035       } while ( orient_prev != 0 );
     1035      } while ( orient_prev == 0 );
    10361036
    10371037      first = start;
     
    18671867
    18681868
    1869       if ( !FT_NEW_ARRAY( strongs, num_strongs ) )
     1869      if ( FT_NEW_ARRAY( strongs, num_strongs ) )
    18701870        return;
    18711871    }
  • trunk/poppler/freetype2/src/raster/ftraster.c

    r150 r182  
    55/*    The FreeType glyph rasterizer (body).                                */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2005 by                               */
     7/*  Copyright 1996-2001, 2002, 2003, 2005, 2007 by                         */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    379379
    380380
    381 #define RAS_ARGS       TRaster_Instance*  raster,
    382 #define RAS_ARG        TRaster_Instance*  raster
    383 
    384 #define RAS_VARS       raster,
    385 #define RAS_VAR        raster
    386 
    387 #define FT_UNUSED_RASTER  FT_UNUSED( raster )
     381#define RAS_ARGS       PWorker    worker,
     382#define RAS_ARG        PWorker    worker
     383
     384#define RAS_VARS       worker,
     385#define RAS_VAR        worker
     386
     387#define FT_UNUSED_RASTER  FT_UNUSED( worker )
    388388
    389389
     
    391391
    392392
    393   typedef struct TRaster_Instance_  TRaster_Instance;
     393  typedef struct TWorker_   TWorker, *PWorker;
    394394
    395395
     
    423423  /* opcodes, and it results in a smaller executable.          */
    424424
    425   struct  TRaster_Instance_
     425  struct  TWorker_
    426426  {
    427427    Int       precision_bits;       /* precision related variables         */
     
    499499    Int       band_top;             /* band stack top                      */
    500500
    501     Int       count_table[256];     /* Look-up table used to quickly count */
    502                                     /* set bits in a gray 2x2 cell         */
    503 
    504     void*     memory;
    505 
    506501#ifdef FT_RASTER_OPTION_ANTI_ALIASING
    507502
    508     Byte      grays[5];             /* Palette of gray levels used for     */
    509                                     /* render.                             */
     503    Byte*     grays;
    510504
    511505    Byte      gray_lines[RASTER_GRAY_LINES];
     
    524518#endif /* FT_RASTER_ANTI_ALIASING */
    525519
    526 #if 0
    527     PByte       flags;              /* current flags table                 */
    528     PUShort     outs;               /* current outlines table              */
    529     FT_Vector*  coords;
    530 
    531     UShort      nPoints;            /* number of points in current glyph   */
    532     Short       nContours;          /* number of contours in current glyph */
    533 #endif
    534 
    535520  };
    536521
    537522
     523  typedef struct TRaster_
     524  {
     525    char*     buffer;
     526    long      buffer_size;
     527    void*     memory;
     528    PWorker   worker;
     529    Byte      grays[5];
     530    Short     gray_width;
     531
     532  } TRaster, *PRaster;
     533
    538534#ifdef FT_STATIC_RASTER
    539535
    540   static TRaster_Instance  cur_ras;
     536  static TWorker   cur_ras;
    541537#define ras  cur_ras
    542538
    543539#else
    544540
    545 #define ras  (*raster)
     541#define ras  (*worker)
    546542
    547543#endif /* FT_STATIC_RASTER */
     544
     545
     546static const char  count_table[256] =
     547{
     548  0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4,
     549  1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
     550  1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
     551  2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
     552  1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
     553  2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
     554  2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
     555  3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
     556  1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
     557  2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
     558  2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
     559  3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
     560  2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
     561  3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
     562  3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
     563  4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 5 , 6 , 6 , 7 , 6 , 7 , 7 , 8 };
     564
    548565
    549566
     
    24952512    Int    c1, c2;
    24962513    PByte  pix, bit, bit2;
    2497     Int*   count = ras.count_table;
     2514    char*  count = (char*)count_table;
    24982515    Byte*  grays;
    24992516
     
    31543171
    31553172  static void
    3156   ft_black_init( TRaster_Instance*  raster )
    3157   {
     3173  ft_black_init( PRaster  raster )
     3174  {
     3175    FT_UNUSED( raster );
     3176
     3177#ifdef FT_RASTER_OPTION_ANTI_ALIASING
    31583178    FT_UInt  n;
    3159     FT_ULong c;
    3160 
    3161 
    3162     /* setup count table */
    3163     for ( n = 0; n < 256; n++ )
    3164     {
    3165       c = ( n & 0x55 ) + ( ( n & 0xAA ) >> 1 );
    3166 
    3167       c = ( ( c << 6 ) & 0x3000 ) |
    3168           ( ( c << 4 ) & 0x0300 ) |
    3169           ( ( c << 2 ) & 0x0030 ) |
    3170                    (c  & 0x0003 );
    3171 
    3172       ras.count_table[n] = (UInt)c;
    3173     }
    3174 
    3175 #ifdef FT_RASTER_OPTION_ANTI_ALIASING
     3179
    31763180
    31773181    /* set default 5-levels gray palette */
     
    31793183      raster->grays[n] = n * 255 / 4;
    31803184
    3181     ras.gray_width = RASTER_GRAY_LINES / 2;
     3185    raster->gray_width = RASTER_GRAY_LINES / 2;
    31823186
    31833187#endif
     
    31963200                FT_Raster  *araster )
    31973201  {
    3198      static TRaster_Instance  the_raster;
     3202     static TRaster  the_raster;
    31993203
    32003204
     
    32193223
    32203224  static int
    3221   ft_black_new( FT_Memory           memory,
    3222                 TRaster_Instance**  araster )
    3223   {
    3224     FT_Error           error;
    3225     TRaster_Instance*  raster;
     3225  ft_black_new( FT_Memory   memory,
     3226                PRaster    *araster )
     3227  {
     3228    FT_Error  error;
     3229    PRaster   raster;
    32263230
    32273231
     
    32403244
    32413245  static void
    3242   ft_black_done( TRaster_Instance*  raster )
     3246  ft_black_done( PRaster  raster )
    32433247  {
    32443248    FT_Memory  memory = (FT_Memory)raster->memory;
     
    32513255
    32523256  static void
    3253   ft_black_reset( TRaster_Instance*  raster,
    3254                   char*              pool_base,
    3255                   long               pool_size )
    3256   {
    3257     if ( (&ras) && pool_base && pool_size >= 4096 )
    3258     {
    3259       /* save the pool */
    3260       ras.buff     = (PLong)pool_base;
    3261       ras.sizeBuff = ras.buff + pool_size / sizeof ( Long );
     3257  ft_black_reset( PRaster   raster,
     3258                  char*     pool_base,
     3259                  long      pool_size )
     3260  {
     3261    if ( raster )
     3262    {
     3263      if ( pool_base && pool_size >= (long)sizeof(TWorker) + 2048 )
     3264      {
     3265        PWorker  worker = (PWorker)pool_base;
     3266
     3267
     3268        raster->buffer      = pool_base + ( (sizeof ( *worker ) + 7 ) & ~7 );
     3269        raster->buffer_size = ( ( pool_base + pool_size ) -
     3270                                (char*)raster->buffer ) / sizeof ( Long );
     3271        raster->worker      = worker;
     3272      }
     3273      else
     3274      {
     3275        raster->buffer      = NULL;
     3276        raster->buffer_size = 0;
     3277        raster->worker      = NULL;
     3278      }
    32623279    }
    32633280  }
     
    32653282
    32663283  static void
    3267   ft_black_set_mode( TRaster_Instance*  raster,
     3284  ft_black_set_mode( PRaster            raster,
    32683285                     unsigned long      mode,
    32693286                     const char*        palette )
     
    32743291    {
    32753292      /* set 5-levels gray palette */
    3276       ras.grays[0] = palette[0];
    3277       ras.grays[1] = palette[1];
    3278       ras.grays[2] = palette[2];
    3279       ras.grays[3] = palette[3];
    3280       ras.grays[4] = palette[4];
     3293      raster->grays[0] = palette[0];
     3294      raster->grays[1] = palette[1];
     3295      raster->grays[2] = palette[2];
     3296      raster->grays[3] = palette[3];
     3297      raster->grays[4] = palette[4];
    32813298    }
    32823299
     
    32923309
    32933310  static int
    3294   ft_black_render( TRaster_Instance*        raster,
     3311  ft_black_render( PRaster                  raster,
    32953312                   const FT_Raster_Params*  params )
    32963313  {
    32973314    const FT_Outline*  outline    = (const FT_Outline*)params->source;
    32983315    const FT_Bitmap*   target_map = params->target;
    3299 
    3300 
    3301     if ( !(&ras) || !ras.buff || !ras.sizeBuff )
     3316    PWorker            worker;
     3317
     3318
     3319    if ( !raster || !raster->buffer || !raster->buffer_size )
    33023320      return Raster_Err_Not_Ini;
    33033321
     
    33123330      return Raster_Err_Invalid;
    33133331
     3332    worker = raster->worker;
     3333
    33143334    /* this version of the raster does not support direct rendering, sorry */
    33153335    if ( params->flags & FT_RASTER_FLAG_DIRECT )
     
    33213341    ras.outline  = *outline;
    33223342    ras.target   = *target_map;
     3343
     3344    worker->buff        = (PLong) raster->buffer;
     3345    worker->sizeBuff    = worker->buff +
     3346                            raster->buffer_size / sizeof ( Long );
     3347#ifdef FT_RASTER_OPTION_ANTI_ALIASING
     3348    worker->grays       = raster->grays;
     3349    worker->gray_width  = raster->gray_width;
     3350#endif
    33233351
    33243352    return ( ( params->flags & FT_RASTER_FLAG_AA )
  • trunk/poppler/freetype2/src/sfnt/sfdriver.c

    r150 r182  
    413413    FT_UNUSED( face );
    414414    FT_UNUSED( stream );
    415    
     415
    416416    return FT_Err_Unimplemented_Feature;
    417   }                         
     417  }
    418418
    419419
     
    450450    *astrike_index = 0x7FFFFFFFUL;
    451451
    452     return tt_face_set_sbit_strike( face, &req, astrike_index );   
    453   }                               
     452    return tt_face_set_sbit_strike( face, &req, astrike_index );
     453  }
    454454
    455455
     
    460460    FT_UNUSED( face );
    461461    FT_UNUSED( stream );
    462    
     462
    463463    /*
    464      *  This function was originally implemented to load the sbit table. 
     464     *  This function was originally implemented to load the sbit table.
    465465     *  However, it has been replaced by `tt_face_load_eblc', and this stub
    466466     *  is only there for some rogue clients which would want to call it
     
    468468     */
    469469    return FT_Err_Unimplemented_Feature;
    470   }                         
     470  }
    471471