summaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty')
-rw-r--r--src/3rdparty/freetype/ChangeLog3004
-rw-r--r--src/3rdparty/freetype/Jamfile2
-rw-r--r--src/3rdparty/freetype/README12
-rw-r--r--src/3rdparty/freetype/README.git (renamed from src/3rdparty/freetype/README.CVS)4
-rw-r--r--src/3rdparty/freetype/autogen.sh7
-rw-r--r--src/3rdparty/freetype/builds/atari/ATARI.H4
-rw-r--r--src/3rdparty/freetype/builds/atari/deflinejoiner.awk181
-rw-r--r--src/3rdparty/freetype/builds/atari/gen-purec-patch.sh40
-rw-r--r--src/3rdparty/freetype/builds/compiler/bcc-dev.mk12
-rw-r--r--src/3rdparty/freetype/builds/compiler/bcc.mk12
-rw-r--r--src/3rdparty/freetype/builds/compiler/gcc.mk4
-rw-r--r--src/3rdparty/freetype/builds/exports.mk4
-rw-r--r--src/3rdparty/freetype/builds/mac/README4
-rw-r--r--src/3rdparty/freetype/builds/toplevel.mk10
-rw-r--r--src/3rdparty/freetype/builds/unix/aclocal.m415
-rwxr-xr-xsrc/3rdparty/freetype/builds/unix/config.guess211
-rwxr-xr-xsrc/3rdparty/freetype/builds/unix/config.sub59
-rwxr-xr-xsrc/3rdparty/freetype/builds/unix/configure131
-rw-r--r--src/3rdparty/freetype/builds/unix/configure.ac75
-rw-r--r--src/3rdparty/freetype/builds/unix/configure.raw73
-rw-r--r--src/3rdparty/freetype/builds/unix/freetype-config.in22
-rw-r--r--src/3rdparty/freetype/builds/unix/freetype2.m48
-rw-r--r--src/3rdparty/freetype/builds/unix/ftconfig.in2
-rw-r--r--src/3rdparty/freetype/builds/unix/ftsystem.c9
-rwxr-xr-xsrc/3rdparty/freetype/builds/unix/install-sh5
-rwxr-xr-xsrc/3rdparty/freetype/builds/unix/ltmain.sh16
-rw-r--r--src/3rdparty/freetype/builds/win32/ftdebug.c40
-rw-r--r--src/3rdparty/freetype/builds/win32/vc2005/freetype.sln2
-rw-r--r--src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj20
-rw-r--r--src/3rdparty/freetype/builds/win32/vc2005/index.html10
-rw-r--r--src/3rdparty/freetype/builds/win32/vc2008/freetype.vcproj28
-rw-r--r--src/3rdparty/freetype/builds/win32/vc2008/index.html10
-rw-r--r--src/3rdparty/freetype/builds/win32/visualc/freetype.dsp20
-rw-r--r--src/3rdparty/freetype/builds/win32/visualc/index.html10
-rw-r--r--src/3rdparty/freetype/builds/win32/visualce/freetype.dsp400
-rw-r--r--src/3rdparty/freetype/builds/win32/visualce/freetype.dsw29
-rw-r--r--src/3rdparty/freetype/builds/win32/visualce/index.html47
-rw-r--r--src/3rdparty/freetype/builds/win32/win32-def.mk1
-rw-r--r--src/3rdparty/freetype/builds/wince/ftdebug.c20
-rw-r--r--src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj90
-rw-r--r--src/3rdparty/freetype/builds/wince/vc2005-ce/index.html10
-rw-r--r--src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.vcproj104
-rw-r--r--src/3rdparty/freetype/builds/wince/vc2008-ce/index.html10
-rwxr-xr-xsrc/3rdparty/freetype/configure24
-rw-r--r--src/3rdparty/freetype/devel/ftoption.h50
-rw-r--r--src/3rdparty/freetype/docs/CHANGES79
-rw-r--r--src/3rdparty/freetype/docs/DEBUG7
-rw-r--r--src/3rdparty/freetype/docs/INSTALL.ANY10
-rw-r--r--src/3rdparty/freetype/docs/LICENSE.TXT9
-rw-r--r--src/3rdparty/freetype/docs/VERSION.DLL5
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-base_interface.html162
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-basic_types.html229
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html12
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html76
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-computations.html44
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-font_formats.html5
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-gasp_table.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-glyph_management.html30
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html14
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-gx_validation.html12
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-gzip.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html214
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-incremental.html42
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-index.html494
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-list_processing.html20
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-lzw.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-mac_specific.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-module_management.html5
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-ot_validation.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-outline_processing.html37
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-quick_advance.html12
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-raster.html16
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html50
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-sizes_management.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-system_interface.html20
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-toc.html6
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html12
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-type1_tables.html60
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-user_allocation.html4
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-version.html6
-rw-r--r--src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html12
-rw-r--r--src/3rdparty/freetype/docs/release89
-rw-r--r--src/3rdparty/freetype/include/freetype/config/ftconfig.h36
-rw-r--r--src/3rdparty/freetype/include/freetype/config/ftoption.h33
-rw-r--r--src/3rdparty/freetype/include/freetype/config/ftstdlib.h1
-rw-r--r--src/3rdparty/freetype/include/freetype/freetype.h35
-rw-r--r--src/3rdparty/freetype/include/freetype/ftbbox.h2
-rw-r--r--src/3rdparty/freetype/include/freetype/ftglyph.h6
-rw-r--r--src/3rdparty/freetype/include/freetype/ftimage.h117
-rw-r--r--src/3rdparty/freetype/include/freetype/ftincrem.h8
-rw-r--r--src/3rdparty/freetype/include/freetype/ftmodapi.h6
-rw-r--r--src/3rdparty/freetype/include/freetype/ftoutln.h11
-rw-r--r--src/3rdparty/freetype/include/freetype/ftsnames.h34
-rw-r--r--src/3rdparty/freetype/include/freetype/ftstroke.h12
-rw-r--r--src/3rdparty/freetype/include/freetype/fttypes.h3
-rw-r--r--src/3rdparty/freetype/include/freetype/ftwinfnt.h2
-rw-r--r--src/3rdparty/freetype/include/freetype/ftxf86.h3
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/autohint.h26
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/ftcalc.h3
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/ftdriver.h173
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/ftgloadr.h18
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/ftobjs.h526
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/ftpic.h67
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/ftserv.h292
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/fttrace.h5
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/internal.h1
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/psaux.h13
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/pshints.h47
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svbdf.h20
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svcid.h25
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svgldict.h22
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svmm.h25
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h21
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h37
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h27
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h22
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h23
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h19
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/sfnt.h135
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/t1types.h6
-rw-r--r--src/3rdparty/freetype/include/freetype/internal/tttypes.h4
-rw-r--r--src/3rdparty/freetype/src/autofit/Jamfile6
-rw-r--r--src/3rdparty/freetype/src/autofit/afcjk.c71
-rw-r--r--src/3rdparty/freetype/src/autofit/afcjk.h3
-rw-r--r--src/3rdparty/freetype/src/autofit/afdummy.c6
-rw-r--r--src/3rdparty/freetype/src/autofit/afdummy.h3
-rw-r--r--src/3rdparty/freetype/src/autofit/afglobal.c63
-rw-r--r--src/3rdparty/freetype/src/autofit/afglobal.h8
-rw-r--r--src/3rdparty/freetype/src/autofit/afhints.c11
-rw-r--r--src/3rdparty/freetype/src/autofit/afindic.c18
-rw-r--r--src/3rdparty/freetype/src/autofit/afindic.h3
-rw-r--r--src/3rdparty/freetype/src/autofit/aflatin.c126
-rw-r--r--src/3rdparty/freetype/src/autofit/aflatin.h9
-rw-r--r--src/3rdparty/freetype/src/autofit/aflatin2.c142
-rw-r--r--src/3rdparty/freetype/src/autofit/aflatin2.h3
-rw-r--r--src/3rdparty/freetype/src/autofit/afloader.c38
-rw-r--r--src/3rdparty/freetype/src/autofit/afmodule.c15
-rw-r--r--src/3rdparty/freetype/src/autofit/afmodule.h4
-rw-r--r--src/3rdparty/freetype/src/autofit/afpic.c92
-rw-r--r--src/3rdparty/freetype/src/autofit/afpic.h64
-rw-r--r--src/3rdparty/freetype/src/autofit/aftypes.h55
-rw-r--r--src/3rdparty/freetype/src/autofit/autofit.c1
-rw-r--r--src/3rdparty/freetype/src/base/Jamfile3
-rw-r--r--src/3rdparty/freetype/src/base/basepic.c83
-rw-r--r--src/3rdparty/freetype/src/base/basepic.h62
-rw-r--r--src/3rdparty/freetype/src/base/ftadvanc.c2
-rw-r--r--src/3rdparty/freetype/src/base/ftbase.c6
-rw-r--r--src/3rdparty/freetype/src/base/ftbase.h6
-rw-r--r--src/3rdparty/freetype/src/base/ftbbox.c27
-rw-r--r--src/3rdparty/freetype/src/base/ftbitmap.c8
-rw-r--r--src/3rdparty/freetype/src/base/ftcalc.c34
-rw-r--r--src/3rdparty/freetype/src/base/ftdbgmem.c4
-rw-r--r--src/3rdparty/freetype/src/base/ftgloadr.c7
-rw-r--r--src/3rdparty/freetype/src/base/ftglyph.c27
-rw-r--r--src/3rdparty/freetype/src/base/ftinit.c113
-rw-r--r--src/3rdparty/freetype/src/base/ftobjs.c166
-rw-r--r--src/3rdparty/freetype/src/base/ftoutln.c8
-rw-r--r--src/3rdparty/freetype/src/base/ftpatent.c19
-rw-r--r--src/3rdparty/freetype/src/base/ftpic.c54
-rw-r--r--src/3rdparty/freetype/src/base/ftrfork.c4
-rw-r--r--src/3rdparty/freetype/src/base/ftsnames.c (renamed from src/3rdparty/freetype/src/base/ftnames.c)10
-rw-r--r--src/3rdparty/freetype/src/base/ftstream.c54
-rw-r--r--src/3rdparty/freetype/src/base/ftstroke.c64
-rw-r--r--src/3rdparty/freetype/src/base/ftsynth.c29
-rw-r--r--src/3rdparty/freetype/src/base/ftsystem.c9
-rw-r--r--src/3rdparty/freetype/src/base/fttrigon.c10
-rw-r--r--src/3rdparty/freetype/src/base/rules.mk2
-rw-r--r--src/3rdparty/freetype/src/bdf/bdf.h6
-rw-r--r--src/3rdparty/freetype/src/bdf/bdfdrivr.c68
-rw-r--r--src/3rdparty/freetype/src/bdf/bdfdrivr.h4
-rw-r--r--src/3rdparty/freetype/src/bdf/bdflib.c78
-rw-r--r--src/3rdparty/freetype/src/cache/ftcbasic.c94
-rw-r--r--src/3rdparty/freetype/src/cache/ftccache.c23
-rw-r--r--src/3rdparty/freetype/src/cache/ftccache.h11
-rw-r--r--src/3rdparty/freetype/src/cache/ftccback.h4
-rw-r--r--src/3rdparty/freetype/src/cache/ftccmap.c34
-rw-r--r--src/3rdparty/freetype/src/cache/ftcglyph.c8
-rw-r--r--src/3rdparty/freetype/src/cache/ftcglyph.h9
-rw-r--r--src/3rdparty/freetype/src/cache/ftcimage.c6
-rw-r--r--src/3rdparty/freetype/src/cache/ftcmanag.c56
-rw-r--r--src/3rdparty/freetype/src/cache/ftcmru.c8
-rw-r--r--src/3rdparty/freetype/src/cache/ftcmru.h7
-rw-r--r--src/3rdparty/freetype/src/cache/ftcsbits.c17
-rw-r--r--src/3rdparty/freetype/src/cff/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/cff/cff.c1
-rw-r--r--src/3rdparty/freetype/src/cff/cffcmap.c17
-rw-r--r--src/3rdparty/freetype/src/cff/cffcmap.h6
-rw-r--r--src/3rdparty/freetype/src/cff/cffdrivr.c121
-rw-r--r--src/3rdparty/freetype/src/cff/cffdrivr.h3
-rw-r--r--src/3rdparty/freetype/src/cff/cffgload.c261
-rw-r--r--src/3rdparty/freetype/src/cff/cffgload.h16
-rw-r--r--src/3rdparty/freetype/src/cff/cffload.c70
-rw-r--r--src/3rdparty/freetype/src/cff/cffload.h3
-rw-r--r--src/3rdparty/freetype/src/cff/cffobjs.c61
-rw-r--r--src/3rdparty/freetype/src/cff/cffparse.c161
-rw-r--r--src/3rdparty/freetype/src/cff/cffparse.h35
-rw-r--r--src/3rdparty/freetype/src/cff/cffpic.c99
-rw-r--r--src/3rdparty/freetype/src/cff/cffpic.h80
-rw-r--r--src/3rdparty/freetype/src/cff/cfftypes.h2
-rw-r--r--src/3rdparty/freetype/src/cid/cidgload.c70
-rw-r--r--src/3rdparty/freetype/src/cid/cidload.c2
-rw-r--r--src/3rdparty/freetype/src/cid/cidobjs.c9
-rw-r--r--src/3rdparty/freetype/src/cid/cidparse.c9
-rw-r--r--src/3rdparty/freetype/src/cid/cidriver.c1
-rw-r--r--src/3rdparty/freetype/src/cid/cidriver.h4
-rw-r--r--src/3rdparty/freetype/src/cid/cidtoken.h2
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvbsln.c8
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvcommn.c35
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvcommn.h13
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvfeat.c2
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvjust.c26
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvkern.c4
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvlcar.c8
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmod.h4
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmort.c6
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmort.h2
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmort0.c6
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmort1.c6
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmort2.c4
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmort4.c8
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmort5.c6
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmorx.c4
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmorx0.c4
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmorx1.c16
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmorx2.c4
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvmorx5.c6
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvopbd.c12
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvprop.c8
-rw-r--r--src/3rdparty/freetype/src/gxvalid/gxvtrak.c2
-rw-r--r--src/3rdparty/freetype/src/gzip/adler32.c2
-rw-r--r--src/3rdparty/freetype/src/gzip/ftgzip.c12
-rw-r--r--src/3rdparty/freetype/src/gzip/zconf.h15
-rw-r--r--src/3rdparty/freetype/src/gzip/zlib.h7
-rw-r--r--src/3rdparty/freetype/src/gzip/zutil.c8
-rw-r--r--src/3rdparty/freetype/src/gzip/zutil.h4
-rw-r--r--src/3rdparty/freetype/src/lzw/ftlzw.c16
-rw-r--r--src/3rdparty/freetype/src/lzw/ftzopen.c9
-rw-r--r--src/3rdparty/freetype/src/lzw/ftzopen.h4
-rw-r--r--src/3rdparty/freetype/src/otvalid/otvcommn.h44
-rw-r--r--src/3rdparty/freetype/src/otvalid/otvgpos.c5
-rw-r--r--src/3rdparty/freetype/src/otvalid/otvgsub.c3
-rw-r--r--src/3rdparty/freetype/src/otvalid/otvmod.c23
-rw-r--r--src/3rdparty/freetype/src/otvalid/otvmod.h4
-rw-r--r--src/3rdparty/freetype/src/pcf/pcf.h4
-rw-r--r--src/3rdparty/freetype/src/pcf/pcfdrivr.c82
-rw-r--r--src/3rdparty/freetype/src/pcf/pcfdrivr.h4
-rw-r--r--src/3rdparty/freetype/src/pcf/pcfread.c49
-rw-r--r--src/3rdparty/freetype/src/pcf/pcfutil.c8
-rw-r--r--src/3rdparty/freetype/src/pcf/pcfutil.h6
-rw-r--r--src/3rdparty/freetype/src/pfr/pfrcmap.c5
-rw-r--r--src/3rdparty/freetype/src/pfr/pfrdrivr.h4
-rw-r--r--src/3rdparty/freetype/src/pfr/pfrload.c15
-rw-r--r--src/3rdparty/freetype/src/pfr/pfrsbit.c34
-rw-r--r--src/3rdparty/freetype/src/pfr/pfrtypes.h6
-rw-r--r--src/3rdparty/freetype/src/psaux/afmparse.c31
-rw-r--r--src/3rdparty/freetype/src/psaux/afmparse.h4
-rw-r--r--src/3rdparty/freetype/src/psaux/psauxmod.h4
-rw-r--r--src/3rdparty/freetype/src/psaux/psconv.c10
-rw-r--r--src/3rdparty/freetype/src/psaux/psconv.h6
-rw-r--r--src/3rdparty/freetype/src/psaux/psobjs.c39
-rw-r--r--src/3rdparty/freetype/src/psaux/psobjs.h2
-rw-r--r--src/3rdparty/freetype/src/psaux/t1cmap.c8
-rw-r--r--src/3rdparty/freetype/src/psaux/t1decode.c360
-rw-r--r--src/3rdparty/freetype/src/pshinter/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/pshinter/pshalgo.c14
-rw-r--r--src/3rdparty/freetype/src/pshinter/pshinter.c1
-rw-r--r--src/3rdparty/freetype/src/pshinter/pshmod.c17
-rw-r--r--src/3rdparty/freetype/src/pshinter/pshmod.h2
-rw-r--r--src/3rdparty/freetype/src/pshinter/pshpic.c67
-rw-r--r--src/3rdparty/freetype/src/pshinter/pshpic.h53
-rw-r--r--src/3rdparty/freetype/src/pshinter/pshrec.c101
-rw-r--r--src/3rdparty/freetype/src/psnames/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/psnames/psmodule.c73
-rw-r--r--src/3rdparty/freetype/src/psnames/psmodule.h2
-rw-r--r--src/3rdparty/freetype/src/psnames/psnames.c1
-rw-r--r--src/3rdparty/freetype/src/psnames/pspic.c77
-rw-r--r--src/3rdparty/freetype/src/psnames/pspic.h54
-rw-r--r--src/3rdparty/freetype/src/raster/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/raster/ftmisc.h25
-rw-r--r--src/3rdparty/freetype/src/raster/ftraster.c578
-rw-r--r--src/3rdparty/freetype/src/raster/ftrend1.c46
-rw-r--r--src/3rdparty/freetype/src/raster/ftrend1.h4
-rw-r--r--src/3rdparty/freetype/src/raster/raster.c1
-rw-r--r--src/3rdparty/freetype/src/raster/rastpic.c89
-rw-r--r--src/3rdparty/freetype/src/raster/rastpic.h50
-rw-r--r--src/3rdparty/freetype/src/raster/rules.mk3
-rw-r--r--src/3rdparty/freetype/src/sfnt/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/sfnt/sfdriver.c194
-rw-r--r--src/3rdparty/freetype/src/sfnt/sfdriver.h2
-rw-r--r--src/3rdparty/freetype/src/sfnt/sfnt.c1
-rw-r--r--src/3rdparty/freetype/src/sfnt/sfntpic.c101
-rw-r--r--src/3rdparty/freetype/src/sfnt/sfntpic.h88
-rw-r--r--src/3rdparty/freetype/src/sfnt/sfobjs.c35
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttbdf.c16
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttcmap.c591
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttcmap.h40
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttcmapc.h55
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttkern.c13
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttload.c25
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttmtx.c6
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttpost.c3
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttsbit.c2
-rw-r--r--src/3rdparty/freetype/src/sfnt/ttsbit0.c56
-rw-r--r--src/3rdparty/freetype/src/smooth/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/smooth/ftgrays.c137
-rw-r--r--src/3rdparty/freetype/src/smooth/ftgrays.h1
-rw-r--r--src/3rdparty/freetype/src/smooth/ftsmooth.c64
-rw-r--r--src/3rdparty/freetype/src/smooth/ftsmooth.h8
-rw-r--r--src/3rdparty/freetype/src/smooth/ftspic.c97
-rw-r--r--src/3rdparty/freetype/src/smooth/ftspic.h50
-rw-r--r--src/3rdparty/freetype/src/smooth/smooth.c1
-rw-r--r--src/3rdparty/freetype/src/tools/apinames.c4
-rw-r--r--src/3rdparty/freetype/src/tools/chktrcmp.py114
-rw-r--r--src/3rdparty/freetype/src/tools/docmaker/content.py2
-rw-r--r--src/3rdparty/freetype/src/tools/test_afm.c2
-rw-r--r--src/3rdparty/freetype/src/truetype/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/truetype/truetype.c1
-rw-r--r--src/3rdparty/freetype/src/truetype/ttdriver.c91
-rw-r--r--src/3rdparty/freetype/src/truetype/ttdriver.h2
-rw-r--r--src/3rdparty/freetype/src/truetype/ttgload.c317
-rw-r--r--src/3rdparty/freetype/src/truetype/ttgxvar.c83
-rw-r--r--src/3rdparty/freetype/src/truetype/ttgxvar.h2
-rw-r--r--src/3rdparty/freetype/src/truetype/ttinterp.c52
-rw-r--r--src/3rdparty/freetype/src/truetype/ttobjs.c20
-rw-r--r--src/3rdparty/freetype/src/truetype/ttobjs.h38
-rw-r--r--src/3rdparty/freetype/src/truetype/ttpic.c79
-rw-r--r--src/3rdparty/freetype/src/truetype/ttpic.h59
-rw-r--r--src/3rdparty/freetype/src/truetype/ttpload.c40
-rw-r--r--src/3rdparty/freetype/src/type1/t1afm.c22
-rw-r--r--src/3rdparty/freetype/src/type1/t1driver.h4
-rw-r--r--src/3rdparty/freetype/src/type1/t1gload.c94
-rw-r--r--src/3rdparty/freetype/src/type1/t1load.c58
-rw-r--r--src/3rdparty/freetype/src/type1/t1objs.c14
-rw-r--r--src/3rdparty/freetype/src/type1/t1parse.c36
-rw-r--r--src/3rdparty/freetype/src/type42/t42drivr.h4
-rw-r--r--src/3rdparty/freetype/src/type42/t42objs.c15
-rw-r--r--src/3rdparty/freetype/src/type42/t42parse.c33
-rw-r--r--src/3rdparty/freetype/src/winfonts/winfnt.c10
-rw-r--r--src/3rdparty/freetype/src/winfonts/winfnt.h4
346 files changed, 13251 insertions, 3418 deletions
diff --git a/src/3rdparty/freetype/ChangeLog b/src/3rdparty/freetype/ChangeLog
index 7de9ecfa7d..83a7d53c6d 100644
--- a/src/3rdparty/freetype/ChangeLog
+++ b/src/3rdparty/freetype/ChangeLog
@@ -1,3 +1,2995 @@
+2010-02-13 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.3.12 released.
+ ==========================
+
+
+ Tag sources with `VER-2-3-12'.
+
+ * docs/CHANGES: Updated.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.3.12.
+
+ * README, Jamfile (RefDoc),
+ builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
+ builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.3.11/2.3.12/, s/2311/2312/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
+
+ * builds/unix/configure.raw (version_info): Set to 10:0:4.
+
+2010-02-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Improve autotool version checking to work with beta releases.
+
+ * autogen.sh (check_tool_version): Improve the extraction of version
+ number from "tool --version" output. Some beta releases of
+ autotools have extra strings before version number.
+
+2010-02-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Fix overallocating bug in FT_Outline_New_Internal().
+
+ * src/base/ftoutln.c (FT_Outline_New_Internal): The length of
+ FT_Outline->points[] should be numPoints, not 2 * numPoints.
+ Found by Paul Messmer, see
+ http://lists.gnu.org/archive/html/freetype-devel/2010-02/msg00003.html
+
+2010-02-10 Ken Sharp <ken.sharp@artifex.com>
+
+ Really fix Savannah bug #28678 (part 2).
+
+ Since we consider `sbw' for the horizontal direction only, we still have
+ to synthesize vertical metrics if the user wants to use the vertical
+ writing direction.
+
+ * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
+ (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph):
+ Synthesize vertical metrics (only) if FT_LOAD_VERTICAL_LAYOUT is
+ set.
+
+2010-02-10 Ken Sharp <ken.sharp@artifex.com>
+
+ Really fix Savannah bug #28678 (part 1).
+
+ After long discussion, we now consider the character width vector
+ (wx,wy) returned by the `sbw' Type 1 operator as being part of *one*
+ direction only. For example, if you are using the horizontal
+ writing direction, you get the horizontal and vertical components of
+ the advance width for this direction. Note that OpenType and CFF fonts
+ don't have such a vertical component; instead, the GPOS table can be
+ used to generate two-dimensional advance widths (but this isn't
+ handled by FreeType).
+
+ * include/freetype/ftincrem.h (FT_Incremental_MetricsRec): Add
+ `advance_v' field to hold the vertical component of the advance
+ value.
+
+ * src/truetype/ttgload.c (tt_get_metrics), src/cff/cffgload.c
+ (cff_slot_load), src/type1/t1gload.c
+ (T1_Parse_Glyph_And_Get_Char_String), src/cid/cidgload.c
+ (cid_load_glyph): Use it.
+
+2010-02-08 Werner Lemberg <wl@gnu.org>
+
+ * devel/ftoption.h [FT_CONFIG_OPTION_PIC]: Define.
+
+2010-02-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Prevent NULL pointer dereference passed to FT_Module_Requester.
+
+ * src/sfnt/sfdriver.c (sfnt_get_interface): Don't use `module'.
+ * src/psnames/psmodule.c (psnames_get_interface): Ditto.
+
+ * src/cff/cffdrivr.c (cff_get_interface): Check NULL `driver'.
+ * src/truetype/ttdriver.c (tt_get_interface): Ditto.
+
+2010-01-29 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Fix memory leaks in previous patch.
+
+ * src/sfnt/sfobjs.c (sfnt_load_face): Don't overwrite the strings
+ allocated for face->root.family_name and style_name.
+
+2010-01-29 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ New parameters for FT_Open_Face() to ignore preferred family names.
+
+ Preferred family names should be used for legacy systems that
+ can hold only a few faces (<= 4) for a family name. Suggested by
+ Andreas Heinrich.
+ http://lists.gnu.org/archive/html/freetype/2010-01/msg00001.html
+
+ * include/freetype/ftsnames.h (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
+ FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Define.
+
+ * src/sfnt/sfobjs.h (sfnt_load_face): Check the arguments and
+ ignore preferred family and subfamily names if requested.
+
+2010-01-27 Ken Sharp <ken.sharp@artifex.com>
+
+ Fix Savannah bug #28678.
+
+ * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
+ (cid_load_glyph): Handle vertical metrics correctly.
+
+ * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Handle
+ vertical metrics correctly.
+ (T1_Load_Glyph): Don't synthesize vertical metrics.
+
+2010-01-14 Werner Lemberg <wl@gnu.org>
+
+ Make FT_Set_Transform work if no renderer is available.
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Apply `standard' transformation
+ if no renderer is compiled into the library.
+
+2010-01-14 Werner Lemberg <wl@gnu.org>
+
+ Fix compilation warning.
+
+ * src/base/ftbase.h: s/LOCAL_DEF/LOCAL/.
+ * src/base/ftobjc.s: Include ftbase.h conditionally.
+
+2010-01-11 Kwang Yul Seo <skyul@company100.net>
+
+ Provide inline assembly code for RVCT compiler.
+ This is Savannah patch #7059.
+
+ * include/freetype/config/ftconfig.h (FT_MULFIX_ASSEMBLER,
+ FT_MulFix_arm) [__CC_ARM || __ARM_CC]: Define.
+
+2010-01-08 Ken Sharp <ken.sharp@artifex.com>
+
+ Fix Savannah bug #28521.
+
+ Issue #28226 involved a work-around for a font which used the
+ `setcurrentpoint' operator in an invalid way; this operator is only
+ supposed to be used with the result of OtherSubrs, and the font used
+ it directly. The supplied patch removed the block of code which
+ checked this usage entirely.
+
+ This turns out to be a Bad Thing. If `setcurrentpoint' is being
+ used correctly it should reset the flex flag in the decoder. If we
+ don't do this then the flag never gets reset and we omit any further
+ contours from the glyph (at least until we close the path or
+ similar).
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
+ <op_setcurrentpoint>: Handle `flex_state' correctly.
+
+2010-01-05 Werner Lemberg <wl@gnu.org>
+
+ Apply reports from clang static analyzer.
+
+ * src/lzw/ftlzw.c (ft_lzw_file_init), src/base/ftstroke.c
+ (FT_Stroker_ParseOutline), src/base/ftsynth.c
+ (FT_GlyphSlot_Embolden): Remove dead code.
+
+ * src/base/ftpatent.c (_tt_check_patents_in_table): Initialize
+ `offset_i' and `length_i'.
+
+2010-01-05 Ralph Giles <giles@ghostscript.com>
+
+ Enable the incremental font interface by default.
+
+ Ghostscript requires the incremental font interface for handling
+ some Postscript documents. It is moving to using FreeType as its
+ primary renderer; supporting this in the default build makes it
+ Ghostscript to be linked against the system FreeType when one is
+ available.
+
+ * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_INCREMENTAL):
+ Uncomment.
+
+2010-01-05 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #28395.
+
+ * src/truetype/ttdriver.c (Load_Glyph), src/type1/t1gload.c
+ (T1_Loada_Glyph): Don't check `num_glyphs' if incremental interface
+ is used.
+
+2010-01-05 Ken Sharp <ken.sharp@artifex.com>
+
+ Make Type 1 `seac' operator work with incremental interface.
+ This fixes Savannah bug #28480.
+
+ * src/psaux/t1decode.c (t1operator_seac): Don't check `glyph_names'
+ if incremental interface is used.
+
+2010-01-04 Ken Sharp <ken.sharp@artifex.com>
+
+ Make incremental interface work with TrueType fonts.
+ This fixes Savannah bug #28478.
+
+ * src/truetype/ttgload.c (load_truetype_glyph): Don't check
+ `glyf_offset' if incremental interface is used.
+
+2009-12-31 Lars Abrahamsson <wonko@opera.com>
+
+ Make compilation with FT_CONFIG_OPTION_PIC work again.
+
+ * src/base/ftglyph.c (FT_Glyph_To_Bitmap) [FT_CONFIG_OPTION_PIC]:
+ Declare `library' for FT_BITMAP_GLYPH_CLASS_GET.
+
+ * src/base/ftinit.c (ft_destroy_default_module_classes,
+ ft_create_default_module_classes): Use proper casts (needed for C++
+ compilation).
+
+ * src/sfnt/ttcmap.c (tt_cmap13_class_rec): Use FT_DEFINE_TT_CMAP.
+
+2009-12-22 Marc Kleine-Budde <mkl@pengutronix.de>
+
+ Make freetype-config aware of $SYSROOT.
+ This is Savannah patch #7040.
+
+ * builds/unix/freetype-config.in: Decorate with ${SYSROOT} where
+ appropriate.
+
+2009-12-20 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warning.
+ Reported by Sean.
+
+ * src/base/ftdbgmem.c [!FT_DEBUG_MEMORY]: ANSI C doesn't like empty
+ source files; however, some compilers warn about an unused variable
+ declaration. This is now replaced with a typedef.
+
+2009-12-18 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #28320.
+
+ There exist corrupt, subsetted fonts (embedded in PDF files) which
+ contain a private dict that ends with an unterminated floating point
+ number (no operator following). We now ignore this error (as
+ acrobat does).
+
+ * src/cff/cffparse.c (cff_parser_run): Don't emit a syntax error for
+ unterminated floating point numbers.
+
+2009-12-16 Werner Lemberg <wl@gnu.org>
+
+ Really fix compiler warnings.
+ Reported by Sean.
+
+ * src/truetype/ttgxvar.c (GX_PT_POINTS_ARE_WORDS,
+ GX_PT_POINT_RUN_COUNT_MASK): Convert enum values to macros.
+
+2009-12-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Improve configure.raw to copy some options from CFLAGS to LDFLAGS.
+ The linker of Mac OS X 10.6 is sensitive to the architecture. If
+ the architectures are specified explicitly for the C compiler, the
+ linker requires the architecture specifications too.
+
+ * builds/unix/configure.raw: Replace `-isysroot' option parser by
+ more generic argument parser.
+
+2009-12-15 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warnings.
+ Reported by Sean.
+
+ * src/truetype/ttgxvar.c (ft_var_readpackeddeltas): Fix counter data
+ type.
+
+2009-12-14 Ken Sharp <ken.sharp@artifex.com>
+
+ Ignore invalid `setcurrentpoint' operations in Type 1 fonts.
+ This fixes Savannah bug #28226.
+
+ At least two wild PostScript files of unknown provenance contain
+ Type 1 fonts, apparently converted from TrueType fonts in earlier
+ PDF versions of the files, which use the `setcurrentpoint' operator
+ inappropriately.
+
+ FreeType currently throws an error in this case, but Ghostscript and
+ Adobe Distiller both accept the fonts and ignore the problem. This
+ commit #ifdefs out the check so PostScript interpreters using
+ FreeType can render these files.
+
+ The specification says `setcurrentpoint' should only be used to set
+ the point after a `Subr' call, but these fonts use it to set the
+ initial point to (0,0). Unnecessarily so, as they correctly use an
+ `hsbw' operation which implicitly sets the initial point.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
+ <op_setcurrentpoint>: Comment out code.
+
+2009-12-14 Bram Tassyns <bramt@enfocus.be>
+
+ Fix parsing of /CIDFontVersion.
+ This fixes Savannah bug #28287.
+
+ * src/cid/cidtoken.h: `cid_version' in CID_FaceInfoRec (in
+ t1tables.h) is of type FT_Fixed.
+
+2009-12-14 Werner Lemberg <wl@gnu.org>
+
+ Trace glyph index in CID module.
+ Suggested in Savannah patch #7023.
+
+ * src/cid/cidgload.c (cid_load_glyph): Add tracing message.
+
+2009-12-03 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warnings.
+
+ * src/truetype/ttgload.c (tt_get_metrics): Put `Exit' label into the
+ proper preprocessor conditional.
+ * src/pfr/pfrobjs.c (pfr_slot_load): Pacify gcc.
+
+2009-11-25 John Tytgat <John.Tytgat@esko.com>
+
+ Better handling of start of `eexec' section.
+ This fixes Savannah bug #28090.
+
+ * src/type1/t1parse.c (T1_Get_Private_Dict): Skip all whitespace
+ characters before start of `eexec' section.
+
+2009-11-20 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #27742.
+
+ * src/base/ftstroke.c (ft_stroker_outside): Avoid silent division by
+ zero, using a threshold for `theta'.
+
+2009-11-20 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #28036.
+
+ * src/type1/t1afm.c (t1_get_index): Fix comparison.
+
+2009-11-16 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warnings.
+ Reported by Kevin Blenkinsopp <arqon@promode.org>.
+
+ * src/sfnt/ttload.c (check_table_dir): Use proper data type.
+
+2009-11-15 Werner Lemberg <wl@gnu.org>
+
+ Really fix FreeDesktop bug #21197.
+ This also fixes Savannah bug #28021.
+
+ * src/autofit/aflatin.c (af_latin_metrics_check_digits),
+ src/autofit/aflatin2.c (af_latin2_metrics_check_digits): Fix loop.
+
+2009-11-15 Werner Lemberg <wl@gnu.org>
+
+ Add tracing messages for advance values.
+
+ * src/base/ftobjs.c (FT_Load_Glyph), src/truetype/ttgload.c
+ (TT_Get_HMetrics, TT_Get_VMetrics): Do it.
+
+2009-11-08 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warning.
+ Reported by Jeremy Manson <jeremy.manson@gmail.com>.
+
+ * src/truetype/ttgload.c (load_truetype_glyph): Initialize `error'.
+
+2009-11-04 Werner Lemberg <wl@gnu.org>
+
+ Remove compiler warning.
+ Reported by Sean McBride <sean@rogue-research.com>.
+
+ * src/tools/apinames.c (read_header_file)<STATE_TYPE>: Use a cast to
+ `int', as specified in the printf(3) man page.
+
+2009-11-04 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #27921.
+
+ * src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
+ (cid_face_init), src/type1/t1afm.c (T1_Read_Metrics),
+ src/type1/t1objs.c (T1_Face_Init): Don't use unsigned constant
+ values for rounding if the argument can be negative.
+
+2009-11-03 Bram Tassyns <bramt@enfocus.be>
+
+ Add basic support for Type1 charstrings in CFF.
+ This fixes Savannah bug #27922.
+
+ * src/cff/cffgload.c (CFF_Operator, cff_argument_counts): Handle
+ `seac', `sbw', and `setcurrentpoint' opcodes.
+ (cff_compute_bias): Add parameter to indicate the charstring type.
+ Update all callers.
+ (cff_operator_seac): Add parameter for side bearing.
+ (cff_decoder_parse_charstrings): Updated for more Type1 support.
+
+2009-11-03 Werner Lemberg <wl@gnu.org>
+
+ Return correct `linearHoriAdvance' value for embedded TT bitmaps too.
+ Reported by Jeremy Manson <jeremy.manson@gmail.com>.
+
+ src/truetype/ttgload.c (load_truetype_glyph): Add parameter to
+ quickly load the glyph header only.
+ Update all callers.
+ (tt_loader_init): Add parameter to quickly load the `glyf' table
+ only.
+ Update all callers.
+ (TT_Load_Glyph): Compute linear advance values for embedded bitmap
+ glyphs too.
+
+2009-11-03 Werner Lemberg <wl@gnu.org>
+
+ Improve code readability.
+
+ * src/ttgload.c (load_truetype_glyph): Move metrics calculation
+ to...
+ (tt_get_metrics): This new function.
+
+2009-10-26 Bram Tassyns <bramt@enfocus.be>
+
+ Fix Savannah bug #27811.
+
+ * src/truetype/ttxgvar.c (ft_var_readpackeddeltas): Fix
+ signed/unsigned mismatch.
+
+2009-10-19 Ning Dong <flintning@163.com>
+
+ Fix handling of `get' and `put' CFF instructions.
+
+ * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_get,
+ cff_op_put>: Appendix B of Adobe Technote #5177 limits the number of
+ elements for the `get' and `put' operators to 32.
+ * src/cff/cffgload.h (CFF_MAX_TRANS_ELEMENTS): Define.
+ (CFF_Decoder): Use it for `buildchar' and remove `len_buildchar'.
+
+2009-10-18 Werner Lemberg <wl@gnu.org>
+
+ Fix handling of `dup' CFF instruction.
+ Problem and solution reported by Ning Dong <flintning@163.com>.
+
+ * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_dup>:
+ Increase `args' by 2, not 1.
+
+2009-10-10 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.3.11 released.
+ ==========================
+
+
+ Tag sources with `VER-2-3-11'.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.3.11.
+
+ * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj: s/2.3.10/2.3.11/, s/2310/2311/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
+
+ * builds/unix/configure.raw (version_info): Set to 9:22:3.
+
+2009-10-10 Werner Lemberg <wl@gnu.org>
+
+ * docs/CHANGES, docs/release: Updated.
+
+2009-10-10 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ * src/pcf/pcfread.c (pcf_get_properties): Fix a bug in the nprops
+ truncation. Reported by Martin von Gagern and Peter Volkov.
+ https://bugs.gentoo.org/288357 and https://bugs.gentoo.org/288256
+
+2009-10-06 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.3.10 released.
+ ==========================
+
+
+ Tag sources with `VER-2-3-10'.
+
+ * builds/toplevel.mk (major, minor, patch): Fix regexp to allow more
+ than a single digit.
+ (dist): We now use git.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.3.10.
+
+ * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj: s/2.3.9/2.3.10/, s/239/2310/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
+
+ * builds/unix/configure.raw (version_info): Set to 9:21:3.
+
+2009-10-06 Werner Lemberg <wl@gnu.org>
+
+ Fix `make multi'.
+
+ * src/cache/ftccache.c, src/cache/ftcsbits.c (FT_COMPONENT): Define.
+
+ * src/sfnt/sfdriver.c: Include FT_INTERNAL_DEBUG_H.
+
+2009-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ [cache] Fix Savannah bug #27441, clean up Redhat bugzilla #513582.
+ Tricky casts in FTC_{CACHE,GCACHE,MRULIST}_LOOKUP_CMP() are removed.
+ Now these functions should be called with FTC_Node or FTC_MruNode
+ variable, and the caller should cast them to appropriate pointers to
+ concrete data. These tricky casts can GCC-4.4 optimizer (-O2)
+ confused and the crashing binaries are generated.
+
+ * src/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Drop tricky cast.
+ Now the 4th argument `node' of this function should be typed as
+ FTC_MruNode.
+
+ * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): For inline
+ implementation, new temporal variable FTC_MruNode `_mrunode' to take
+ the pointer from FTC_MRULIST_LOOKUP_CMP(). For non-inline
+ implementation, tricky cast is dropped.
+
+ * src/cache/ftcmanag.c (FTC_SIZE_NODE): New macro casting
+ to FTC_SizeNode.
+ (FTC_Manager_LookupSize): Replace FTC_SizeNode `node' by FTC_MruNode
+ `mrunode', and FTC_SIZE_NODE() is inserted.
+ (FTC_FACE_NODE): New macro casting to FTC_FaceNode.
+ (FTC_Manager_LookupFace) Replace FTC_FaceNode `node' by FTC_MruNode
+ `mrunode', and FTC_FACE_NODE() is inserted.
+
+ * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Change the type of
+ `node' from FTC_INode to FTC_Node. Extra casting macro FTC_NODE()
+ is dropped.
+ (FTC_ImageCache_LookupScaler): Ditto.
+ (FTC_SBitCache_Lookup): Change the type of `node' from FTC_SNode to
+ FTC_Node. Extra casting macro FTC_NODE() is dropped. FTC_SNODE()
+ is inserted.
+ (FTC_SBitCache_LookupScaler): Ditto.
+
+ * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the type of
+ `node' from FTC_CMapNode to FTC_Node. Extra casting macro
+ FTC_NODE() is dropped, FTC_CMAP_NODE() is inserted.
+
+2009-09-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ [cache, psaux, type1] Fix for multi build.
+ In multi build, some cpp functions are left as unresolved symbols.
+
+ * src/cache/ftcbasic.c: Include FT_INTERNAL_DEBUG_H for FT_TRACE1().
+
+ * src/psaux/t1decode.c: Include FT_INTERNAL_CALC_H for
+ FIXED_TO_INT().
+ * src/type1/t1gload.c: Ditto.
+ * src/type1/t1objs.c: Ditto.
+
+2009-09-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ [autofit] Fix for multi build.
+
+ * src/autofit/afmodule.h: Include FT_INTERNAL_OBJECTS_H to use
+ FT_DECLARE_MODULE() macro in multi build.
+
+ * src/autofit/aflatin.c: Include <ft2build.h> to handle
+ FT_ADVANCES_H correctly in multi build.
+
+2009-09-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ [cache] Check the face filled by FTC_Manager_LookupFace().
+
+ * src/cache/ftcbasic.c (ftc_basic_family_get_count): Return
+ immediately if FTC_Manager_LookupFace() fills face by NULL. Such
+ case can occur when the code is optimized by GCC-4.2.x.
+
+2009-09-23 Werner Lemberg <wl@gnu.org>
+
+ * docs/CHANGES: Updated.
+
+2009-09-12 Werner Lemberg <wl@gnu.org>
+
+ [raster] Fix 5-levels grayscale output.
+ This was broken since version 2.3.0.
+
+ * src/raster/ftraster.c (count_table): Use pre-2.3.0 values (which
+ were then computed dynamically).
+ (Vertical_Gray_Sweep_Step): Updated.
+
+ (ft_black_render): Initialize `worker->gray_lines' (problem found by
+ valgrind).
+
+ (FT_RASTER_OPTION_ANTI_ALIASING, DEBUG_RASTER): Dont' #undef, just
+ comment out.
+
+2009-09-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Improve configure.raw for cross build.
+
+ * builds/unix/configure.raw: Remove temporal files created by the
+ suffix checking for CC_BUILD. Set XX_ANSIFLAGS and XX_CFLAGS when
+ cross compiler is GCC. AC_PROG_CC checks whether the cross compiler
+ is GCC, its result is stored in GCC.
+
+2009-09-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ [BDF] Modify hash API to take size_t value instead of void *.
+
+ The hash API in BDF driver is designed to be generic, it takes
+ void * typed data. But BDF driver always gives an unsigned long
+ integer (the index to a property). To reduce non-essential
+ casts from unsigned long to void* and from void* to unsigned
+ long, the hash API is changed to take size_t integer.
+ The issue of incompatible cast between unsigned long and void*
+ on LLP64 platform is reported by NightStrike from MinGW-Win64
+ project. See
+ http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html
+
+ * src/bdf/bdf.h: The type of hashnode->data is changed from
+ void* to size_t.
+
+ * src/bdf/bdflib.c (hash_insert): Get size_t data, instead of
+ void* data.
+ (bdf_create_property): Get the name length of new property by
+ size_t variable, with a cut-off at FT_ULONG_MAX.
+ (_bdf_set_default_spacing): Get the name length of the face by
+ size_t variable, with a cut-off at 256.
+ (bdf_get_property): Get the property id by size_t variable to
+ reduce the casts between 32-bit prop ID & hashnode->data during
+ simple copying.
+ (_bdf_add_property): Ditto.
+ (_bdf_parse_start): Calculate the index to the property array
+ by size_t variable.
+ (bdf_get_font_property): Drop a cast to unsigned long.
+
+2009-09-10 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ [Win64] Improve the computation of random seed from stack address.
+
+ On LLP64 platform, the conversion from pointer to FT_Fixed need
+ to drop higher 32-bit. Explict casts are required. Reported by
+ NightStrike from MinGW-w64 project. See
+ http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html
+
+ * src/cff/cffgload.c: Convert the pointers to FT_Fixed explicitly.
+
+ * src/psaux/t1decode.c: Ditto.
+
+
+2009-09-03 Werner Lemberg <wl@gnu.org>
+
+ [raster] Improvements for stand-alone mode.
+
+ * src/raster/rules.mk: Don't handle ftmisc.h. It is needed for
+ stand-alone mode only.
+
+ * src/raster/ftmisc.h (FT_MemoryRec , FT_Alloc_Func, FT_Free_Func,
+ FT_Realloc_Func): Copy declarations from ftsystem.h.
+
+2009-09-02 Bram Tassyns <bramt@enfocus.be>
+
+ Improve vertical metrics calculation (Savannah bug #27364).
+
+ The calculation of `vertBearingX' is not defined in the OTF font
+ spec so FreeType does a `best effort' attempt. However, this value
+ is defined in the PDF and PostScript specs, and that algorithm is
+ better than the one FreeType currently uses:
+
+ FreeType: Use the middle of the bounding box as the X coordinate
+ of the vertical origin.
+
+ Adobe PDF spec: Use the middle of the horizontal advance vector as
+ the X coordinate of the vertical origin.
+
+ FreeType's algorithm goes wrong if you have a really small glyph
+ (like the full-width, circle-like dot at the end of the sentence, as
+ used in CJK scripts) with large bearings. With the FreeType
+ algorithm this dot gets centered on the baseline; with the PDF
+ algorithm it gets the correct location (in the top right). Note
+ that this is a serious issue, it's like printing the dot at the end
+ of a Roman sentence at the center of the textline instead of on the
+ baseline like it should. So i believe the PDF spec's algorithm
+ should be used in FreeType as well.
+
+ The `vertBearingY' value for such small glyphs is also very strange
+ if no `vmtx' information is present, since the height of the bbox is
+ not representable for the height of the glyph visually (the
+ whitespace up to the baseline is part of the glyph). The fix also
+ includes some code for a better estimate of `vertBearingY'.
+
+ * src/base/ftobjs.c (ft_synthesize_vertical_metrics): `vertBearingX'
+ is now calculated as described by the Adobe PDF Spec. Estimate for
+ `vertBearingY' now works better for small glyphs completely above or
+ below the baseline into account.
+
+ * src/cff/cffgload.c (cff_slot_load): `vertBearingX' is now
+ calculated as described by the Adobe PDF Spec. Vertical metrics
+ information was always ignored when FT_CONFIG_OPTION_OLD_INTERNALS
+ was not defined.
+
+ * src/truetype/ttgload.c (compute_glyph_metrics): `vertBearingX' is
+ now calculated as described by the Adobe PDF Spec.
+
+2009-09-01 John Tytgat <John.Tytgat@esko.com>
+
+ Fix custom cmap for empty Type 1 font (Savannah bug #27294).
+
+ * include/freetype/internal/t1types.h (T1_EncodingRecRec_): Update
+ comment to reflect revised code_last meaning.
+ * src/type1/t1load.c (T1_Open_Face), src/type42/t42objs.c
+ (T42_Open_Face): Assign max_char as highest character code + 1 and
+ use this for T1_EncodingRecRec_::code_last.
+ * src/psaux/t1cmap.c (t1_cmap_custom_init): Follow revised
+ T1_EncodingRecRec_::code_last meaning.
+
+2009-08-25 Werner Lemberg <wl@gnu.org>
+
+ Fix rendering of horizontally compressed CFFs.
+ Bug reported by Ivan Nincic <inincic@pdftron.com>.
+
+ * src/cff/cffgload.c (cff_slot_load): Thinko: Check `xx' element of
+ `font_matrix' also.
+
+ * docs/CHANGES: Updated.
+
+2009-08-03 suyu0925@gmail.com
+
+ Don't call `ft_fseek' every time when executing `ft_fread'.
+
+ * src/base/ftstream.c (FT_Stream_Seek), src/base/ftsystem.c
+ (ft_ansi_stream_io): Implement it.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Cast a charcode to 32-bit in cmap format 14 parser.
+
+ * src/sfnt/ttcmap.c (tt_cmap14_char_var_index,
+ tt_cmap14_char_var_isdefault, tt_cmap14_char_variants,
+ tt_cmap14_variant_chars): Correct mismatches from
+ FT_CMap_CharVarIndexFunc prototype, FT_ULong arguments
+ are replaced by FT_UInt32 arguments.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Cast a charcode to 32-bit in cmap format 12 parser.
+
+ * src/sfnt/ttcmap.c (tt_cmap12_char_next):
+ Insert explicit cast from FT_UFast to FT_UInt32
+ for return value.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ psaux: Fix a few casts to FT_Int32 value.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
+ Fix a few casts setting `value' from FT_Long to FT_Int32,
+ because `value' is typed as FT_Int32 since 2009-06-22.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Fix a data type mismatching with its source.
+
+ * src/sfnt/ttcmap.c (tt_cmap13_char_next): Fix the
+ type of `gindex' from FT_ULong to FT_UInt because
+ it is set by FT_UInt tt_cmap13_char_map_binary() or
+ TT_CMap13->cur_gindex.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Extend a few local variables to load 32-bit values.
+
+ * src/sfnt/ttkern.c (tt_face_load_kern): Extend `count'
+ and `kern' to load 32-bit values.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pfr: Extend `num_aux' to take 32-bit value.
+
+ * src/pfr/pfrload.c (pfr_phy_font_load): Extend
+ `num_aux' to load 32-bit value.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pcf: Truncate FT_ULong `nprops' to fit to int PCF_Face->nprops.
+
+ * src/pcf/pcfread.c (pcf_get_properties): Load `nprops'
+ as FT_ULong value from PCF file, but truncate it as
+ int to fit PCF_Face->nprops. The number of truncated
+ properties is shown in the trace message.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gxvalid: Extend a few local variables to reduce the casts.
+
+ * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
+ Extend `type' and `rest' to take FT_ULong values.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gxvalid: Extend `settingTable' to take 32-bit offset.
+
+ * src/gxvalid/gxvfeat.c (gxv_feat_name_validate):
+ Extend `settingTable' to take 32-bit offset.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ autofit: Cast FT_Long glyph_count to compare with FT_UInt GID.
+
+ * src/autofit/afglobal.c (af_face_globals_is_digit,
+ af_face_globals_compute_script_coverage): Cast FT_Long
+ globals->glyph_count to FT_ULong, to compare with FT_UInt
+ gindex.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ smooth: Exclude 16-bit system in invalid pitch/height check.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic):
+ pitch and height are typed as FT_UInt but checked to fit
+ 16-bit range, to avoid the overflows. On 16-bit system,
+ this checking inserts a conditional that never occurs.
+
+2009-07-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cff: Type large constants > 0x7FFF as long for 16-bit systems.
+
+ * src/cff/cffload.c (cff_charset_load): Type large
+ constants > 0x7FFF as long, because normal constants
+ are typed signed integer that is less than 0x8000 on
+ 16-bit systems.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ base: Remove an unused variable.
+
+ * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove an
+ unused variable `library'. glyph->library is used.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Check higher bits in flags for non ILP32 systems.
+
+ 4 public functions ought to take FT_ULong flags, but take
+ FT_UInt flags. To keep binary compatibility, we drop higher
+ bits on non ILP32 platforms,
+ ILP64 systems: No drop occurs.
+ LP64 systems: Higher bits are not used.
+ 16-bit systems: Drop can occur.
+ See
+ http://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00065.html
+ These functions will be refined to take FT_ULong flags in
+ next bump with incompatible API change.
+
+ * src/cache/ftcbasic.c (FTC_ImageCache_Lookup):
+ Check `flags' in `type', the 2nd argument.
+ (FTC_SBitCache_Lookup): Ditto.
+ (FTC_ImageCache_LookupScaler): Check `load_flags',
+ the 3rd argument.
+ (FTC_SBitCache_LookupScaler): Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Ignore invalid GIDs in glyph name lookup.
+
+ * include/freetype/internal/fttrace.h:
+ New trace module for sfdriver.c is added.
+
+ * src/sfnt/sfdriver.c (sfnt_get_name_index):
+ Restrict glyph name lookup to FT_UInt GID.
+ Genuine TrueType can hold 16-bit glyphs.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pcf: Fix a comparison between FT_Long and FT_ULong.
+
+ * src/pcf/pcfread.c (pcf_get_bitmaps): Return an error
+ if PCF_Face->nemetrics is negative.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gxvalid: Guarantee `nFeatureFlags' size up to 32-bit.
+
+ * src/gxvalid/gxvmort.c (gxv_mort_featurearray_validate):
+ Extend the 3rd argument `nFeatureFlags' to FT_ULong.
+ * src/gxvalid/gxvmort.h: Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Insert explicit cast for LP64 system.
+
+ * src/sfnt/ttkern.c (tt_face_load_kern): Insert
+ cast from unsigned long to FT_UInt32.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gxvalid: Guarantee `just' table size upto 32-bit.
+
+ * src/gxvalid/gxvjust.c (gxv_just_validate):
+ The type of `offset' is changed from FT_UInt to
+ FT_Offset, for 16-bit platforms.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gxvalid: Guarantee `trak' table size upto 32-bit.
+
+ * src/gxvalid/gxvtrak.c (gxv_trak_validate):
+ The type of `offset' is changed from FT_UInt to
+ FT_Offset, for 16-bit platforms.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ type1: Fix a data type mismatching with its source.
+
+ * include/freetype/internal/t1types.h: The type of
+ T1_Face->buildchar is matched with T1_Decorder->top.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pfr: Fix a data type mismatching with its source.
+
+ * src/pfr/pfrtypes.h: The type of PFR_KernItem->offset
+ is extended from FT_UInt32 to FT_Offset, because it is
+ calculated with the pointer difference, in
+ pfr_extra_item_load_kerning_pairs().
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pfr: Fix a data type mismatching with its source.
+
+ * src/pfr/pfrtypes.h: The type of PFR_PhysFont->chars_offset
+ is extended from FT_UInt32 to FT_Offset, because it is
+ calculated with the pointer difference in pfr_phy_font_load().
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pfr: Fix a data type mismatching with its source.
+
+ * src/pfr/pfrtypes.h: The type of PFR_PhyFont->bct_offset
+ is extended from FT_UInt32 to FT_Long, because it is
+ loaded by FT_STREAM_POS() in pfr_phy_font_load().
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ smooth: Improve the format in debug message.
+
+ * src/smooth/ftgrays.c (gray_dump_cells): Improve the
+ format specifications to dump variables.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Fix a data type mismatching with its source.
+
+ * src/sfnt/sfobjs.c (sfnt_load_face): The type of
+ local `flags' is matched with FT_Face->face_flags.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ psaux: Fix a data type mismatching with its source.
+
+ * include/freetype/internal/psaux.h: The type of
+ T1_DecorderRec.buildchar is matched with
+ T1_DecorderRec.top.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Extend TrueType GX packed deltas to FT_Offset.
+
+ * src/truetype/ttgxvar.c (ft_var_readpackeddeltas):
+ The type of 2nd argument `delta_cnt' is changed from
+ FT_Int to FT_Offset, because its source can be cvt
+ table size calculated from stream position.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Extend mmvar_len to hold size_t values.
+
+ * src/truetype/ttgxvar.h: The type of
+ GX_BlendRec.mmvar_len is changed from FT_Int to
+ FT_Offset, because TT_Get_MM_Var() calculates it
+ by sizeof() results.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Check invalid function number in IDEF instruction.
+
+ * src/truetype/ttinterp.c (Ins_IDEF): Check
+ if the operand fits to 8-bit opcode limitation.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Check invalid function number in FDEF instruction.
+
+ * src/truetype/ttinterp.c (Ins_FDEF): Check
+ if the operand fits 16-bit function number.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Truncate the deltas of composite glyph at 16-bit values.
+
+ * src/truetype/ttgload.c (load_truetype_glyph):
+ Insert cast from FT_Long (deltas[i].{x,y}) to
+ FT_Int16 in the summation of deltas[] for composite
+ glyphs. Because deltas[i] is typed as FT_Pos,
+ its component x, y are typed as FT_Long, but
+ their sources are always FT_Int16 when they are
+ loaded by ft_var_readpackeddeltas(). However,
+ the limitation about the summed deltas is unclear.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Truncate the instructions upto 16-bit per a glyph.
+
+ * src/truetype/ttgload.c (TT_Hint_Glyph): Truncate
+ the instructions upto 16-bit length per a glyph.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Cast the numerical operands to 32-bit for LP64 systems.
+
+ * src/truetype/ttinterp.c (Ins_SPHIX, INS_MIAP,
+ Ins_MIRP): Insert cast from long (args[], the
+ operands passed to TrueType operator) to FT_Int32
+ (the argument of TT_MulFix14()).
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Cast the project vector to 32-bit for LP64 system.
+
+ * src/truetype/ttinterp.c (Project, DualProject):
+ Insert casts from FT_Pos (the arguments `dx', `dy')
+ to FT_UInt32 (the argument to TT_DotFix14()).
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Cast the scaling params to 32-bit for LP64 system.
+
+ * src/truetype/ttgload.c (TT_Process_Composite_Component):
+ Insert casts from long (return value of FT_MulFix()) to
+ FT_Int32 (the argument to FT_SqrtFixed()).
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Cast a character code to FT_UInt32 for LP64 system.
+
+ * src/sfnt/ttcmap.c (tt_cmap14_char_map_nondef_binary,
+ tt_cmap14_variants, tt_cmap14_char_variants,
+ tt_cmap14_def_char_count, tt_cmap14_get_def_chars,
+ tt_cmap14_get_nondef_chars, tt_cmap14_variant_chars)
+ Insert casts when FT_UInt32 variable is loaded by
+ TT_NEXT_{UINT24|ULONG}. Because most of them are
+ compared with FT_UInt32 values in public API, replacing
+ FT_UFast is not recommended.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Cast a character code to FT_UInt32 for LP64 system.
+
+ * src/sfnt/ttcmap.c (tt_cmap4_init, tt_cmap4_next):
+ Insert the casts from unsigned long constant to
+ FT_UInt32.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Extend TT_BDF->strings_size to FT_ULong for huge BDF.
+
+ * include/freetype/internal/tttypes.h: The type
+ of TT_BDF->string_size is extended from FT_UInt32
+ to FT_ULong, because BDF specification does not
+ restrict the length of string.
+ * src/sfnt/ttbdf.c: The scratch variable `strings'
+ to load TT_BDF->string_size is matched with
+ TT_BDF->string_size.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ psaux: Handle the string length by FT_Offset variables.
+
+ * src/psaux/afmparse.c (afm_parser_next_key,
+ afm_tokenize, afm_parse_track_kern,
+ afm_parse_kern_pairs, afm_parse_kern_data,
+ afm_parser_skip_section, afm_parser_parse):
+ The length of key is handled by FT_Offset,
+ instead of FT_UInt. Although the length of
+ PostScript strings or name object is 16-bit,
+ AFM_STREAM_KEY_LEN() calculates the length
+ from the pointer difference.
+
+ * src/psaux/afmparse.h (afm_parser_next_key):
+ Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pcf: Fix some data types mismatching with their sources.
+
+ * src/pcf/pcfread.c (pcf_get_bitmaps): The types
+ of `nbitmaps', `i', `sizebitmaps' are matched with
+ the type of area FT_Bitmap.pitch * FT_Bitmap.rows.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pcf: Handle the string length by size_t variables.
+
+ * src/pcf/pcfread.c (pcf_interpret_style): The types
+ of nn, len, lengths[4] are changed to size_t, because
+ they are loaded by (or compared with) ft_strlen().
+
+ * src/pcf/pcfutil.c (BitOrderInvert, TwoByteSwap,
+ FourByteSwap): The type of the 2nd argument `nbytes'
+ is changed to size_t, for similarity with ANSI C
+ string functions.
+
+ * src/pcf/pcfdrivr.c (PCF_Glyph_Load): The type of
+ `bytes' is changed to FT_Offset, because it is passed
+ to FT_ALLOC(), via ft_glyphslot_alloc_bitmap(). At
+ least, using unsigned type is better.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pcf: Fix some data types mismatching with their sources.
+
+ * src/pcf/pcfread.c (pcf_seek_to_table_type,
+ pcf_has_table_type): The type of 3rd argument
+ `ntables' is matched with PCF_Toc->count.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ otvalid: Truncate the glyph index to 16-bit.
+
+ * src/otvalid/otvalid.c (otv_validate): Checks
+ face->num_glyphs does not exceed 16-bit limit,
+ pass FT_UInt num_glyphs to backend functions
+ otv_{GPOS|GSUB|GDEF|JSTF|MATH}_validate().
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Insert explict casts for LP64 systems.
+
+ * src/cache/ftcbasic.c (FTC_ImageCache_Lookup,
+ FTC_SBitCache_Lookup): The type of FTC_ImageType->width
+ is FT_Int, so the cast to unsigned larger type FT_ULong
+ is introduced for the comparisons with 0x10000L for
+ LP64 platform.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Fix some data types mismatching with their sources.
+
+ * src/cache/ftccache.h: The type of return value
+ by FTC_Node_WeightFunc function is changed to
+ FT_Offset. The type of FTC_CacheClass->cache_size
+ is changed to FT_Offset, too.
+
+ * src/cache/ftccback.h (ft_inode_weight,
+ ftc_snode_weight): Ditto.
+
+ * src/cache/ftccmap.c (ftc_cmap_node_weight): Ditto.
+
+ * src/cache/ftcimage.c (ftc_inode_weight,
+ FTC_INode_Weight): Ditto.
+
+ * src/cache/ftcsbits.c (ftc_snode_weight,
+ FTC_SNode_Weight): Ditto.
+
+ * src/cache/ftcmru.h: The type of
+ FTC_MruListClass->node_size is changed to FT_Offset,
+ because it is passed to FT_ALLOC() to specify the
+ size of buffer.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ XXX_cmap_encoding_char_next() return FT_UInt32 values.
+
+ * include/freetype/internal/services/svpscmap.h:
+ The size of the charcode value returned by
+ the function typed PS_Unicodes_CharNextFunc is
+ matched with its input charcode value.
+
+ * src/cff/cffmap.c (cff_cmap_encoding_char_next,
+ cff_cmap_unicode_char_next): Ditto.
+
+ * src/pfr/pfrmap.c (pfr_cmap_encoding_char_next):
+ Ditto.
+
+ * src/psaux/t1cmap.c (t1_cmap_std_char_next,
+ t1_cmap_custom_char_next, t1_cmap_unicode_char_next):
+ Ditto.
+
+ * src/psnames/psmodule.c (ps_unicodes_char_next):
+ Ditto.
+
+ * src/winfonts/winfnt.c (fnt_cmap_char_next):
+ Ditto.
+
+ * src/sfnt/ttcmap.c (tt_cmap0_char_next,
+ tt_cmap2_char_next, tt_cmap4_char_next,
+ tt_cmap6_char_next, tt_cmap10_char_next,
+ tt_cmap12_char_next, tt_cmap13_char_next): Ditto.
+ (tt_cmap14_char_variants): Handle base unicode
+ codepoint by FT_UInt32 variable to avoid overflow
+ on 16-bit platforms.
+ (tt_cmap14_ensure): The type of `num_results' is
+ extend to FT_UInt32, to cover unsigned 32-bit
+ `numVarSelectorRecords' in cmap14 table header.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ truetype: Extend TT_Face->num_locations for broken TTFs.
+
+ * include/freetype/internal/tttypes.h:
+ TT_Face->num_locations are extended from FT_UInt
+ to FT_ULong, to stand with broken huge loca table.
+ Some people insists there are broken TTF including
+ the glyphs over 16-bit limitation, in PRC market.
+ * src/truetype/ttpload.c (tt_face_load_loca):
+ Remove unrequired 16-bit truncation for FT_UInt
+ TT_Face->num_locations.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ smooth: Fix some data types mismatching with their sources.
+
+ * src/smooth/ftgrays.c: The type of `TCoord' is
+ matched to `TPos', because they are mixed in
+ gray_set_cell(). The type of TCell->x is extended
+ to `TPos', because gray_find_cell() sets it by
+ TWorker.ex. The type of TCell->cover is extended
+ to `TCoord', because gray_render_scanline() adds
+ TCoord value to it. The type of TWork.cover is matched
+ with TCell->cover. The types of
+ TWork.{max_cells,num_cells} are changed to FT_PtrDist,
+ because they are calculated from the memory addresses.
+ The type of TWork.ycount is changed to TPos, because
+ it is calculated from TPos variables.
+ (gray_find_cell): The type of `x' is matched with
+ its initial value ras.ex.
+ (gray_render_scanline): The types of `mod', `lift'
+ and `rem' are changed to TCoord, because their values
+ are set with explicit casts to TCoord. When ras.area
+ is updated by the differential values including
+ `delta', they are explicitly cast to TArea, because
+ the type of `delta' is not TArea but TCoord.
+ (gray_render_line): The type of `mod' is extended
+ from int to TCoord, because (TCoord)dy is added to mod.
+ (gray_hline): The argument `acount' is extended to
+ TCoord, to match with the parameters in the callers.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cff: Fix some data types mismatching with their sources.
+
+ * src/cff/cffobjs.c (cff_face_init): The type of
+ `scaling' is matched with the scaling parameter
+ in FT_Matrix_Multiply_Scaled() and
+ FT_Vector_Transform_Scaled().
+
+ * src/cff/cffparse.c (cff_parse_real): The type of
+ `power_ten', `scaling', `exponent_add',
+ `integer_length', `fraction_length',
+ `new_fraction_length' and `shift' are matched with
+ the type of `exponent' to avoid unexpected truncation.
+ (cff_parse_fixed_scaled): The type of `scaling' is
+ matched with the `scaling' argument to
+ cff_parse_real().
+ (cff_parse_fixed_dynamic): Ditto.
+ (cff_parse_font_matrix): The type of `scaling' is
+ matched with the `scaling' argument to
+ cff_parse_dynamic().
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ autofit: Fix some data types mismatching with their sources.
+
+ * src/autofit/afglobal.c: Correct the type of
+ AF_FaceGlobalsRec.glyph_count to match with
+ FT_Face->num_glyphs.
+ (af_face_globals_compute_script_coverage):
+ Insert explicit cast to compare
+ FT_Long AF_FaceGlobalsRec.glyph_count versus
+ FT_UInt gindex. The type of `nn' is changed
+ to scan glyph index upto AF_FaceGlobalsRec.glyph_count.
+ (af_face_globals_get_metrics): The type of `script_max'
+ is changed to cover size_t value. Insert explicit cast
+ to compare FT_Long AF_FaceGlobalsRec.glyph_count versus
+ FT_UInt gindex.
+
+ * src/autofit/afhints.c (af_axis_hints_new_segment):
+ Insert explicit cast to calculate `big_max' from
+ integer and size_t values.
+ (af_axis_hints_new_edge): Ditto.
+
+ * src/autofit/aflatin.c (af_latin_metrics_init_blues):
+ The type of `best_y' is matched to FT_Vector.y.
+ (af_latin_compute_stem_width): The type of `delta' is
+ matched to `dist' and `org_dist'.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ autofit: Count the size of the memory object by ptrdiff_t.
+
+ * src/autofit/afcjk.c (af_cjk_hint_edges): The
+ number of edges `n_edges' should be counted by
+ FT_PtrDist variable instead of FT_Int.
+
+ * src/autofit/aflatin.c (af_latin_hint_edges):
+ Ditto.
+
+ * src/autofit/aftypes.h: In AF_ScriptClassRec,
+ the size of metric `script_metrics_size' should
+ be counted by FT_Offset variable instead of FT_UInt.
+
+ * src/autofit/afhints.c
+ (af_glyph_hints_align_strong_points): The cursors
+ for the edges `min', `max', `mid' in the memory
+ buffer should be typed FT_PtrDist.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ autofit: Fix for unused variable `first'.
+
+ * src/autofit/afhints.c (af_glyph_hints_reload): Insert
+ FT_UNUSED() to hide the unused variable warning.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Improve bitmap size or pixel variables for 16-bit systems.
+
+ * include/freetype/config/ftstdlib.h: Introduce
+ FT_INT_MIN, to use in signed integer overflow in
+ 16-bit and 64-bit platforms.
+
+ * include/freetype/internal/fttrace.h: Add a tracer
+ to ftsynth.c.
+
+ * src/base/ftbitmap.c (FT_Bitmap_Embolden): Check
+ invalid strength causing integer overflow on 16-bit
+ platform.
+
+ * src/base/ftcalc.c (ft_corner_orientation): Change
+ the internal calculation from FT_Int to FT_Long, to
+ avoid an overflow on 16-bit platforms. The caller of
+ this function should use only the sign of result,
+ so the cast to FT_Int is acceptable.
+
+ * src/base/ftsynth.c: Introduce a tracer for synth module.
+ (FT_GlyphSlot_Embolden): Check invalid strength causing
+ integer overflow on 16-bit platform.
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init): The glyph index
+ in FT2 API is typed as FT_UInt, although BDF driver
+ can handle unsigned long glyph index internally. To
+ avoid integer overflow on 16-bit platform, too large
+ glyph index should be excluded.
+ (BDF_Glyph_Load): The glyph pitch in FT2 is typed as
+ FT_UInt, although BDF driver can handle unsigned long
+ glyph pitch internally. To avoid integer overflow on
+ 16-bit platform, too large glyph pitch should not be
+ returned.
+
+ * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): The glyph
+ pitch in FT2 is typed as FT_UInt, although PFR font
+ format can include huge bitmap glyph with 24-bit pitch
+ (however, a glyph spends 16.7 pixel, it's not realistic).
+ To avoid integer overflow on 16-bit platform, huge
+ bitmap glyph should be excluded.
+
+ * src/smooth/ftgrays.c (gray_hline): As FT_Span.x is
+ truncated to fit its type (16-bit short), FT_Span.y
+ should be truncated to fit its type (FT_Int).
+
+ * src/cff/cffdrivr.c (cff_get_ros): CFF specification
+ defines the supplement in ROS as a real number.
+ Truncate it to fit public FT2 API.
+
+ * src/cff/cffparse.c (cff_parse_cid_ros): Warn the
+ supplement if it is truncated or rounded in cff_get_ros().
+
+ * src/cff/cfftypes.h: Change the type of internal variable
+ `supplement' from FT_Long to FT_ULong to fit the signedness
+ to the type in public API.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ psaux: Prevent invalid arguments to afm_parser_read_vals().
+
+ * src/psaux/afmparse.c (afm_parser_read_vals): Change
+ the type of `n' to prevent negative number how many
+ arguments should be parsed.
+
+ * src/psaux/afmparse.h (afm_parser_read_vals): Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ base: Prevent some overflows on LP64 systems.
+
+ * src/base/ftadvance.c (FT_Get_Advances): Cast the
+ unsigned long constant FT_LOAD_ADVANCE_ONLY to FT_UInt32
+ for LP64 platforms.
+
+ * src/base/ftcalc.c (FT_Sqrt32): All internal variables
+ are changed to FT_UInt32 from FT_ULong.
+ (FT_MulDiv): Insert casts to FT_Int32 for LP64 platforms.
+ This function is designed for 32-bit integer, although
+ their arguments and return value are FT_Long.
+
+ * src/base/ftobjs.c (FT_Get_Char_Index): Check `charcode'
+ is within unsigned 32-bit integer for LP64 platforms.
+ (FT_Face_GetCharVariantIndex): Check `charcode' and
+ `variantSelector' are within 32-bit integer for LP64
+ platforms.
+ (FT_Face_GetCharsOfVariant): Check `variantSelector' is
+ within unsigned 32-bit integer for LP64 platforms.
+
+ * src/base/fttrigon.c (ft_trig_downscale): The FT_Fixed
+ variable `val' and unsigned long constant FT_TRIG_SCALE
+ are cast to FT_UInt32, when calculates FT_UInt32.
+ (FT_Vector_Rotate): The long constant 1L is cast to
+ FT_Int32 to calculate FT_Int32 `half'.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cff: Cast the long variables to 32-bit for LP64 systems.
+
+ * src/cff/cffdrivr.c (cff_get_advances): Insert
+ explicit cast to modify a 32-bit flag by unsigned
+ long constant.
+
+ * src/cff/cffobjs.c (cff_face_init): Ditto.
+
+ * src/cff/cffgload.c (cff_decoder_parse_charstrings):
+ Replace the casts to FT_Long by the casts to FT_Int32
+ for LP64 platforms.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pcf: Improve PCF_PropertyRec.value names on LP64 platforms.
+
+ * src/pcf/pcf.h: In PCF_PropertyRec.value, the member
+ `integer' is replaced by `l', `cardinal' is replaced
+ by `ul', to fix the difference between the name and
+ the types on LP64 platforms.
+
+ * src/pcf/pcfdrivr.c (pcf_get_bdf_property): Reflect
+ PCF_PropertyRec.value change, with appropriate casts
+ to FT_Int32/FT_UInt32. Their destinations
+ BDF_PropertyRec.{integer|cardinal} are public and
+ explicitly defined as FT_Int32/FT_UInt32.
+
+ * src/pcf/pcfread.c (pcf_get_properties, pcf_load_font):
+ Reflect PCF_PropertyRec.value change.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ pcf: Fix some data types mismatching with their sources.
+
+ * src/pcf/pcfdrivr.c (pcf_cmap_char_index): The type of
+ `code' is matched to PCF_Encoding->enc.
+ (pcf_cmap_char_next): The type of `charcode' is matched
+ to PCF_Encoding->enc. When *acharcode is set by charcode,
+ an overflow is checked and cast to unsigned 32-bit
+ integer.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ bdf: Improve bdf_property_t.value names for LP64 platforms.
+
+ * src/bdf/bdf.h: In bdf_property_t.value, the member
+ `int32' is replaced by `l', `card32' is replaced by
+ `ul', to fix the difference between the name and the
+ types on LP64 platforms.
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init): Reflect
+ bdf_property_t.value change.
+ (bdf_get_bdf_property): Reflect bdf_property_t.value
+ change, with appropriate casts to FT_Int32/FT_UInt32.
+ Their destinations BDF_PropertyRec.{integer|cardinal}
+ are public and explicitly defined as FT_Int32/FT_UInt32.
+
+ * src/bdf/bdflib.c (_bdf_add_property): Reflect
+ bdf_property_t.value change.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ bdf: Fix some data types mismatching with their sources.
+
+ * src/bdf/bdrdrivr.c (bdf_cmap_char_index): The type
+ of `code' is matched with BDF_encoding_el->enc.
+ (bdf_cmap_char_next): The type of `charcode' is
+ matched with BDF_encoding_el->enc. When *acharcode
+ is set by charcode, an overflow is checked and
+ cast to unsigned 32-bit integer.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ autofit: Improve Unicode range definitions.
+
+ * src/autofit/aftypes.h (AF_UNIRANGE_REC): New macro
+ to declare a range by two unsigned 32-bit integer,
+ to avoid 64-bit range definition on LP64 platforms.
+
+ * src/autofit/aflatin.c (af_latin_uniranges): Ditto.
+
+ * src/autofit/aflatin2.c (af_latin2_uniranges): Ditto.
+
+ * src/autofit/afindic.c (af_indic_uniranges): Ditto.
+
+ * src/autofit/afcjk.c (af_cjk_uniranges): Declare
+ the ranges by AF_UNIRANGE_REC.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ smooth: Fix a data type mismatching with its source.
+
+ * src/smooth/ftgrays.c (gray_sweep): The type of
+ `area' is matched with the 3rd argument `area'
+ of gray_hline().
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ smooth: Fix a data type mismatching with its source.
+
+ * src/smooth/ftgrays.c (gray_render_line): The type
+ of `area' is matched with TWorker.area.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Disable the legacy compatibility if 16-bit system.
+
+ * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Exclude
+ the legacy behaviour from 16-bit platform, because the
+ current hack cannot detect the caller uses this function
+ via legacy convension.
+ (FTC_SBitCache_Lookup): Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Check 32-bit glyph index on 16-bit systems.
+
+ * src/cache/ftcbasic.c (ftc_basic_family_get_count):
+ Check overflow caused by the face including large
+ number of glyphs > 64k.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Fix some data types mismatching with their sources.
+
+ * src/cache/ftccache.c (ftc_cache_resize): The types of
+ `p', `mask', `count' are matched with FTC_Cache->{p,mask}.
+ (FTC_Cache_Clear): The type of `old_index' is matched to
+ FTC_Cache->{p,mask}.
+
+ * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): The type
+ of `_idx' is matched with FTC_Cache->{p,mask}.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Fix some data types mismatching with their sources.
+
+ * src/cache/ftcsbits.c (ftc_snode_load): The types
+ of `xadvance' and `yadvance' are matched with
+ FT_GlyphSlot->advance.{x|y}.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cache: Cast NULL to a required function type explicitly.
+
+ * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID):
+ Insert explicit cast from NULL to function type.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ fttypes.h: Cast FT_MAKE_TAG output to FT_Tag exlicitly.
+
+ * include/freetype/fttypes.h (FT_MAKE_TAG):
+ Cast the result to FT_Tag.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ psnames: Handle Unicode codepoints by FT_UInt32 variables.
+
+ * src/psnames/psmodule.c (BASE_GLYPH): Cast the result
+ to unsigned 32-bit integer for LP64 platform.
+ (ps_unicode_value): Return the value by unsigned 32-bit
+ integer instead of unsigned long.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ psaux: Use size_t variable to pass the buffer size.
+
+ * src/psaux/psaux.h (to_bytes): The type of `max_bytes'
+ (the argument to pass the buffer size) is changed to
+ size_t, to match with ANSI C string functions.
+
+ * src/psaux/psconv.h (PS_Conv_StringDecode,
+ PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.
+
+ * src/psaux/psconv.c (PS_Conv_StringDecode,
+ PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.
+
+ * src/psaux/psobjs.h (ps_parser_to_bytes): Ditto.
+
+ * src/psaux/psobjs.c (ps_parser_to_bytes): Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ type1: Use size_t variable to pass the string length.
+
+ * psaux.h: The type of `len' (the argument to pass
+ the buffer size to the function in AFM_ParserRec)
+ is changed to size_t, to match with ANSI C string
+ functions.
+
+ * t1afm.c (t1_get_index): Ditto.
+
+ * test_afm.c (dummy_get_index): Ditto.
+
+ * afmparse.c (afm_parser_read_vals): To call
+ AFM_ParserRec.get_index, the length of token
+ `len' is cast to size_t.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cid: Fix some data types mismatching with their sources.
+
+ * src/cid/cidparse.c (cid_parser_new): The types of
+ `read_len' and `stream_len' are matched to
+ FT_Stream->size. Unrequired cast is removed.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cff: Fix for unused variable `rest'.
+
+ * src/cff/cffparse.c (cff_parse_real): Insert
+ FT_UNUSED() to hide the unused variable warning.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ cff: Fix some data types mismatching with their sources.
+
+ * src/cff/cffgload.c (cff_slot_load): The types of
+ `top_upm' and `sub_upm' are matched with
+ CFF_FontRecDict->units_per_em.
+
+ * src/cff/cffobjs.c (cff_size_select): Ditto.
+ (cff_size_request): Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ bdf: Fix some data types mismatching with their sources.
+
+ * bdflib.c (_bdf_list_ensure): The type of `num_items'
+ is matched with _bdf_list_t.used. Also the types of
+ `oldsize', `newsize', `bigsize' are matched too.
+ (_bdf_readstream): `cursor' is used as an offset to
+ the pointer, it should be typed as FT_Offset. Also
+ the types of `bytes', `start', `end', `avail' are matched.
+
+ * bdfdrivr.c: The type of BDF_CMap->num_encodings is
+ matched with FT_CMap->clazz->size.
+ (bdf_cmap_char_index): The types of `min', `max', `mid'
+ are matched with BDF_CMap->num_encodings. The type of
+ `result' is matched with encoding->glyph.
+ (bdf_cmap_char_next): Ditto, the type of `code' is
+ matched with BDF_encoding_el.enc.
+ (bdf_interpret_style): The type of `lengths' is changed
+ to size_t, to take the value by ft_strlen(). Also the
+ types of `len', `nn', `mm' are matched.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ sfnt: Count the size of the memory object by ptrdiff_t.
+
+ * src/sfnt/ttbdf.c (tt_face_find_bdf_prop): The type of
+ `peroperty_len' is changed from FT_UInt to FT_Offset,
+ to match with size_t, which is appropriate type for the
+ object in the memory buffer.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ lzw: Count the size of the memory object by ptrdiff_t.
+
+ * src/lzw/ftzopen.h: The types of FT_LzwState->{buf_total,
+ stack_size} are changed from FT_UInt to FT_Offset, to match
+ with size_t, which is appropriate type for the object in
+ the memory buffer.
+
+ * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): The types of
+ `old_size' and `new_size' are changed from FT_UInt to
+ FT_Offset, to match with size_t, which is appropriate type
+ for the object in the memory buffer.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ otvalid: Count the table size on memory by ptrdiff_t.
+
+ * src/otvalid/otvgpos.c (otv_ValueRecord_validate):
+ Change the type of table size from FT_UInt to
+ FT_PtrDist because it is calculated by the memory
+ addresses.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ otvalid: Prevent an overflow by GPOS/GSUB 32b-bit offset.
+
+ * src/otvalid/otvgpos.c (otv_ExtensionPos_validate):
+ Extend ExtensionOffset from FT_UInt to FT_ULong, to
+ cover 32-bit offset on 16-bit platform.
+
+ * src/otvalid/otvgsub.c (otv_ExtensionSubst_validate):
+ Ditto.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ ftobjs.c: Prevent an overflow in glyph index handling.
+
+ * src/base/ftobjs.c (FT_Face_GetCharsOfVariant):
+ Improve the cast in comparison to avoid the truncation.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Improve the variable types in raccess_make_file_name().
+
+ * src/base/ftrfork.c (raccess_make_file_name):
+ Change the type of cursor variable `tmp' to const char*,
+ to prevent the unexpected modification of original pathname.
+ (raccess_make_file_name): Change the type of new_length
+ to size_t.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ ftpatent.c: Fix for unused variable `error'.
+
+ * src/base/ftpatent.c (_tt_check_patents_in_range):
+ Fix warning for unused variable `error'.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ type1: Check invalid string longer than PostScript limit.
+
+ * src/type1/t1afm.c (t1_get_index): Check invalid string
+ which exceeds the limit of PostScript string/name objects.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gzip: Use FT2 zcalloc() & zfree() in ftgzip.c by default.
+
+ * src/gzip/ftgzip.c (zcalloc, zcfree): Disable all
+ zcalloc() & zfree() by zlib in zutil.c, those in
+ ftgzip.c by FT2 are enabled by default. To use
+ zlib zcalloc() & zfree(), define USE_ZLIB_ZCALLOC.
+ See discussion:
+ http://lists.gnu.org/archive/html/freetype-devel/2009-02/msg00000.html
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gzip: Distinguish PureC from TurboC on MSDOS.
+
+ * src/gzip/zutil.c (zcalloc, zcfree): Enable only for
+ MSDOS platform.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gxvalid: Insert PureC pragma to allow unevaluated variables.
+
+ * builds/atari/ATARI.H: Insert PureC pragma not to
+ warn against set-but-unevaluated variable in gxvalid
+ module.
+
+2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ gxvalid: Pass the union by the pointer instead of the value.
+
+ * src/gxvalid/gxvcommn.h:
+ - Declare new type `GXV_LookupValueCPtr'.
+ - Update the type of the 2nd argument to pass GXV_LookupValueDesc
+ data to the function prototyped as GXV_Lookup_Value_Validate_Func,
+ from GXV_LookupValueDesc to GXV_LookupValueCPtr.
+ - Likewise for the function prototyped as
+ GXV_Lookup_Fmt4_Transit_Func.
+
+ - Declare new type `GXV_StateTable_GlyphOffsetCPtr'.
+ - Update the type of the 3rd argument to pass
+ GXV_StateTable_GlyphOffsetDesc data to the function prototyped
+ as GXV_StateTable_Entry_Validate_Func, from
+ GXV_StateTable_GlyphOffsetDesc to GXV_StateTable_GlyphOffsetCPtr.
+
+ - Declare new type `GXV_XStateTable_GlyphOffsetCPtr'.
+ - Update the type of the 3rd argument to pass
+ GXV_XStateTable_GlyphOffsetDesc data to the function prototyped
+ as GXV_XStateTable_Entry_Validate_Func,
+ from GXV_XStateTable_GlyphOffsetDesc
+ to GXV_XStateTable_GlyphOffsetCPtr.
+
+ * src/gxvalid/gxvcommn.c (gxv_LookupTable_fmt0_validate,
+ gxv_XClassTable_lookupval_validate,
+ gxv_XClassTable_lookupfmt4_transit):
+ Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
+
+ * src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
+ gxv_bsln_LookupFmt4_transit): Ditto.
+
+ * src/gxvalid/gxvjust.c
+ (gxv_just_pcTable_LookupValue_entry_validate,
+ gxv_just_classTable_entry_validate,
+ gxv_just_wdcTable_LookupValue_validate): Ditto.
+
+ * src/gxvalid/gxvkern.c
+ (gxv_kern_subtable_fmt1_entry_validate): Ditto.
+
+ * src/gxvalid/gxvlcar.c (gxv_lcar_LookupValue_validate,
+ gxv_lcar_LookupFmt4_transit): Ditto.
+
+ * src/gxvalid/gxvopbd.c (gxv_opbd_LookupValue_validate,
+ gxv_opbd_LookupFmt4_transit): Ditto.
+
+ * src/gxvalid/gxvprop.c (gxv_prop_LookupValue_validate,
+ gxv_prop_LookupFmt4_transit): Ditto.
+
+ * src/gxvalid/gxvmort4.c
+ (gxv_mort_subtable_type4_lookupval_validate): Ditto.
+
+ * src/gxvalid/gxvmort0.c
+ (gxv_mort_subtable_type0_entry_validate): Update
+ from GXV_StateTable_GlyphOffsetDesc
+ to GXV_StateTable_GlyphOffsetCPtr.
+
+ * src/gxvalid/gxvmort1.c
+ (gxv_mort_subtable_type1_entry_validate): Ditto.
+
+ * src/gxvalid/gxvmort2.c
+ (gxv_mort_subtable_type2_entry_validate): Ditto.
+
+ * src/gxvalid/gxvmort5.c
+ (gxv_mort_subtable_type5_entry_validate): Ditto.
+
+ * src/gxvalid/gxvmorx2.c
+ (gxv_morx_subtable_type2_entry_validate): Ditto.
+
+ * src/gxvalid/gxvmorx5.c
+ (gxv_morx_subtable_type5_entry_validate): Ditto.
+
+ * src/gxvalid/gxvmorx1.c
+ (gxv_morx_subtable_type1_entry_validate): Ditto.
+ (gxv_morx_subtable_type1_LookupValue_validate,
+ gxv_morx_subtable_type1_LookupFmt4_transit):
+ Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
+
+ * src/gxvalid/gxvmorx0.c
+ (gxv_morx_subtable_type0_entry_validate): Update
+ from GXV_XStateTable_GlyphOffsetDesc
+ to GXV_XStateTable_GlyphOffsetCPtr.
+
+2009-07-29 Fabrice Bellet <fabrice@bellet.info>
+
+ Fix Redhat bugzilla #513582 and Savannah bug #26849.
+
+ * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) <FTC_INLINE>: Fix
+ aliasing bug.
+
+2009-07-19 Werner Lemberg <wl@gnu.org>
+
+ Document recent library changes.
+
+ * docs/CHANGES: Do it.
+
+2009-07-17 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #23786.
+
+ * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't reset x_ppem
+ and y_ppem. Otherwise the `*_CVT_Stretched' functions in ttinterp.c
+ get never called.
+ An anonymous guy suggested this change on Savannah, and it seems to
+ be the right solution.
+
+2009-07-15 Werner Lemberg <wl@gnu.org>
+
+ * docs/release: Updated.
+
+2009-07-15 Werner Lemberg <wl@gnu.org>
+
+ README.CVS -> README.git
+
+ * README.CVS: Renamed to...
+ * README.git: This.
+ Updated.
+
+2009-07-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Borland C++ compiler patch proposed by Mirco Babin.
+ http://lists.gnu.org/archive/html/freetype/2009-07/msg00016.html.
+
+ * builds/exports.mk: Delete unused flags, CCexe_{CFLAGS,LDFLAGS}.
+ Fix APINAMES_C and APINAMES_EXE pathnames to reflect the platform
+ specific pathname syntax.
+ * builds/compiler/bcc.mk: Remove unused flag, CCexe_LDFLAGS.
+ Define TE = `-e' separately (bcc32 cannot specify the pathname of
+ binary executable by T = `-o').
+ Extend the large page size in linking freetype.lib.
+ Add extra CLEAN target to delete bcc specific temporary files.
+ * builds/compiler/bcc-dev.mk: Ditto.
+
+2009-07-14 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #27026.
+
+ * builds/win32/vc2005/freetype.sln: Use correct version number.
+
+2009-07-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Add a script to check the undefined and unused trace macros.
+
+ * src/tools/chktrcmp.py: A script to check trace_XXXX macros
+ that are used in C source but undefined in fttrace.h, or
+ defined in fttrace.h but unused in C sources. See
+ http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html.
+ * docs/DEBUG: Mention on chktrcmp.py.
+ * docs/release: Ditto.
+
+2009-07-09 Werner Lemberg <wl@gnu.org>
+
+ [ftraster] Make it compile again with -D_STANDALONE_.
+
+ * src/raster/ftraster.c [_STANDALONE_]: Define
+ FT_CONFIG_STANDARD_LIBRARY_H.
+ Include `string.h'.
+ Don't include `rastpic.h'.
+ Define FT_DEFINE_RASTER_FUNCS.
+
+2009-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ smooth: Check glyph size by width/height, instead of pitch/height.
+ Suggested by der Mouse <mouse@Rodents-Montreal.ORG>.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Improve
+ the check for too large glyph. Replace the pair of `pitch' and
+ `height' by the pair of `width' and `height'. `pitch' cannot
+ be greater than `height'. The required is checking the product
+ `pitch' * `height' <= FT_ULONG_MAX, but we use cheap checks for
+ the realistic case only.
+
+2009-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Register 2 missing trace components, t1afm and ttbdf.
+
+ * include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( t1afm )
+ and FT_TRACE_DEF( ttbdf ). See
+ http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html
+
+2009-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Register a trace component for ftgloadr.c.
+
+ * include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( gloader ).
+ The macro `trace_gloader' was already used in the initial version
+ on 2002-02-24.
+
+2009-07-08 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Prevent the overflows by a glyph with too many points or contours.
+ The bug is reported by Boris Letocha <b.letocha@gmc.net>. See
+ http://lists.gnu.org/archive/html/freetype-devel/2009-06/msg00031.html
+ http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00002.html
+
+ * include/freetype/ftimage.h (FT_OUTLINE_CONTOURS_MAX,
+ FT_OUTLINE_POINTS_MAX): New macros to declare the maximum
+ values of FT_Outline.{n_contours,n_points}.
+ * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Check the
+ total numbers of points and contours cause no overflows in
+ FT_Outline.{n_contours,n_points}.
+
+ * include/freetype/internal/ftgloadr.h (FT_GLYPHLOADER_CHECK_P,
+ FT_GLYPHLOADER_CHECK_C): Compare the numbers of points and
+ contours as unsigned long number, instead of signed int, to
+ prevent the overflows on 16-bit systems.
+
+2009-07-05 Bram Tassyns <bramt@enfocus.be>
+
+ Improve compatibility to Acroread.
+ This fixes Savannah bug #26944.
+
+ * src/cff/cffload.c (cff_charset_compute_cids): For multiple GID to
+ single CID mappings, make the lowest value win.
+
+2009-06-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ ftpatent: Fix a bug by wrong usage of service->table_info().
+ http://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00039.html
+
+ * include/freetype/internal/services/svsfnt.h: Extend
+ FT_SFNT_TableInfoFunc() to take new argument to obtain the offset
+ to the specified table.
+ * src/sfnt/sfdriver.c (sfnt_table_info): Extend to return the
+ table-offset to the caller function.
+ * src/base/ftpatent.c (_tt_check_patents_in_table): Use new
+ service->table_info().
+ * src/base/ftobjs.c (FT_Sfnt_Table_Info): Synchronize to new
+ service->table_info().
+
+2009-06-28 Werner Lemberg <wl@gnu.org>
+
+ [psaux, cff] Protect against nested `seac' calls.
+
+ * include/freetype/internal/psaux.h (T1_Decoder), src/cff/cffgload.h
+ (CFF_Decoder): Add `seac' boolean variable.
+
+ * src/cff/cffgload.c (cff_operator_seac), src/psaux/t1decode.c
+ (t1operator_seac): Use it.
+
+2009-06-28 Werner Lemberg <wl@gnu.org>
+
+ Thinko.
+
+ * src/psaux/t1decode.c (t1operator_seac)
+ [FT_CONFIG_OPTION_INCREMENTAL]: Test for existence of incremental
+ interface.
+
+2009-06-28 Werner Lemberg <wl@gnu.org>
+
+ * devel/ftoption.h [FT_CONFIG_OPTION_INCREMENTAL]: Define.
+
+2009-06-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Add tools to preprocess the source files for AtariST PureC.
+
+ * builds/atari/deflinejoiner.awk: New file to filter C source files
+ for broken C preprocessor of PureC compiler.
+
+ * builds/atari/gen-purec-patch.sh: New file to generate a patch set
+ for PureC, by using deflinejoiner.awk.
+
+2009-06-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Keep existing modules.cfg in the building tree.
+
+ * configure: If `configure' is executed outside of the source tree,
+ an existing `modules.cfg' file in the build directory should be
+ kept, not overwritten by the version in the source tree.
+
+2009-06-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Filter --srcdir= option before invoking builds/unix/configure.
+
+ * configure: If builds/unix/configure is invoked with --srcdir
+ option, the option should take `builds/unix' directory instead of
+ the top source directory. Thus the configure script in the top
+ directory should modify the --srcdir= option if
+ `builds/unix/configure' is invoked.
+
+2009-06-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Improve configure.raw for cross-building on exe-suffixed systems.
+
+ * builds/unix/configure.raw: Fix a bug in sed script to extract
+ native suffix for binary executables, patch by Peter Breitenlohner.
+ http://lists.gnu.org/archive/html/freetype-devel/2009-04/msg00036.html
+
+2009-06-26 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Remove TT_SubGlyphRec.
+
+ * src/truetype/ttobjs.h (TT_SubGlyphRec): Removed, unused.
+
+2009-06-26 Werner Lemberg <wl@gnu.org>
+
+ * */*: For warning messages, replace FT_ERROR with FT_TRACE0.
+
+ FT_ERROR is now used only if a function produces a non-zero `error'
+ value.
+
+ Formatting, improving and harmonizing debug strings.
+
+2009-06-25 Werner Lemberg <wl@gnu.org>
+
+ Provide version information better.
+
+ * src/base/ftinit.c (FT_Init_FreeType): Don't set version here
+ but...
+ * src/base/ftobjs.c (FT_New_Library): Here.
+
+2009-06-22 Werner Lemberg <wl@gnu.org>
+
+ Use 16.16 format while parsing Type 1 charstrings.
+ This fixes Savannah bug #26867.
+
+ Previously, only integers have been used which can lead to serious
+ rounding errors.
+
+ However, fractional values are only used internally; after the
+ charstrings (of either Type 1 or 2) have been processed, the
+ resulting coordinates get rounded to integers currently -- before
+ applying scaling. This should be fixed; at the same time a new load
+ flag should be introduced, to be used in combination with
+ FT_LOAD_NO_SCALE, which indicates that font units are returned in
+ 16.16 format. Similarly, the incremental interface should be
+ extended to allow fractional values for metrics.
+
+ * include/freetype/internal/psaux.h (T1_BuilderRec): Remove `shift'
+ field.
+ * include/freetype/internal/pshints.h (T1_Hints_SetStemFunc,
+ T1_Hints_SetStem3Func): Use FT_Fixed for coordinates.
+
+ * src/psaux/psobjs.c: Include FT_INTERNAL_CALC_H.
+ (t1_build_add_point): Always convert fixed to integer.
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
+ Use 16.16 format everywhere (except for large integers followed by a
+ `div').
+ [CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS]: Remove #ifdef and activate
+ code uncoditionally.
+ Add support for random numbers and update remaining code
+ accordingly; this should work now.
+ (t1_operator_seac): Updated.
+ * src/psaux/pshrec.c: Include FT_INTERNAL_CALC_H.
+ (ps_hints_t1stem3, t1_hints_stem): Updated.
+
+ * src/cid/cidgload.c: Include FT_INTERNAL_CALC_H.
+ (cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL],
+ (cid_face_compute_max_advance, cid_slot_load_glyph): Updated.
+
+ * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String)
+ [FT_CONFIG_OPTION_INCREMENTAL], (T1_Get_Advances, T1_Load_Glyph):
+ Updated.
+ * src/type1/t1load.c: Include FT_INTERNAL_CALC_H.
+ * src/type1/t1objs.c (T1_Face_Init): Updated.
+
+2009-06-21 Werner Lemberg <wl@gnu.org>
+
+ * src/pshinter/pshrec.c: Use PSH_Err_Ok.
+
+2009-06-21 Werner Lemberg <wl@gnu.org>
+
+ Code beautification.
+
+ * src/type1/t1load.c (FT_INT_TO_FIXED): Removed.
+ Replace everywhere with INT_TO_FIXED.
+ (FT_FIXED_TO_INT): Move to ...
+ * include/freetype/internal/ftcalc.h (FIXED_TO_INT): Here.
+ Update all users.
+
+2009-06-20 Werner Lemberg <wl@gnu.org>
+
+ Remove unused variables.
+
+ * include/freetype/internal/psaux.h (T1_BuilderRec),
+ src/cff/cffgload.h (CFF_Builder): Remove `last'.
+ Update all users.
+
+2009-06-20 Werner Lemberg <wl@gnu.org>
+
+ [psaux] Check large integers while parsing charstrings.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Large
+ integers must be followed by a `div' operator.
+
+2009-06-20 Werner Lemberg <wl@gnu.org>
+
+ [cff] Revert last change.
+
+ * src/cff/cffgload.c (cff_decoder_parse_charstrings): Do it.
+ Next time, don't confuse Type 2 charstring opcodes with TOP DICT
+ values...
+
+2009-06-20 Werner Lemberg <wl@gnu.org>
+
+ * src/autofit/aflatin.c (af_latin_metrics_check_digits): Fix
+ compiler warning.
+
+2009-06-20 Werner Lemberg <wl@gnu.org>
+
+ * builds/compiler/gcc.mk (CFLAGS): Use -O3, not -O6.
+
+2009-06-19 Werner Lemberg <wl@gnu.org>
+
+ [cff] Fix handling of reserved byte 0xFF.
+
+ * src/cff/cffgload.c (cff_decoder_parse_charstrings): Abort if byte
+ 0xFF is encountered.
+
+2009-06-19 Werner Lemberg <wl@gnu.org>
+
+ Improve debug messages for Type1 charstrings.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Emit newlines
+ after instructions.
+ Prettify output.
+
+2009-06-19 Werner Lemberg <wl@gnu.org>
+
+ More ftgray fixes for FT_STATIC_RASTER.
+ Problems reported by suyu@cooee.cn.
+
+ * src/smooth/ftgrays.c (gray_move_to, gray_raster_render): Use
+ RAS_VAR.
+
+2009-06-18 Werner Lemberg <wl@gnu.org>
+
+ * docs/CHANGES: Updated.
+
+2009-06-18 Werner Lemberg <wl@gnu.org>
+
+ Fix B/W rasterization of subglyphs with different drop-out modes.
+
+ Normally, the SCANMODE instruction (if present) to set the drop-out
+ mode in a TrueType font is located in the `prep' table only and thus
+ valid for all glyphs. However, there are fonts like `pala.ttf'
+ which additionally contain this instruction in the hinting code of
+ some glyphs (but not all). As a result it can happen that a
+ composite glyph needs multiple drop-out modes for its subglyphs
+ since the rendering state gets reset for each subglyph.
+
+ FreeType collects the hinted outlines from all subglyphs, then it
+ sends the data to the rasterizer. It also sends the drop-out mode
+ -- after hinting has been applied -- and here is the error: It sends
+ the drop-out mode of the last subglyph only; drop-out modes of all
+ other subglyphs are lost.
+
+ This patch fixes the problem; it adds a second, alternative
+ mechanism to pass the drop-out mode: For each contour, the
+ rasterizer now checks the first `tags' array element. If bit 2 is
+ set, bits 5-7 contain the contour's drop-out mode, overriding the
+ global drop-out mode.
+
+ * include/freetype/ftimage.h (FT_CURVE_TAG_HAS_SCANMODE): New macro.
+
+ * src/truetype/ttgload.c (TT_Hint_Glyph): Store drop-out mode in
+ `tags[0]'.
+
+ * src/raster/ftraster.c (Flow_Up, Overshoot_Top, Overshoot_Bottom):
+ Use bits 3-5 instead of 0-2.
+ (New_Profile): Set the drop-out mode in the profile's `flags' field.
+ (Decompose_Curve): Check `tags[0]' and set `dropOutControl' if
+ necessary.
+ (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
+ Horizontal_Gray_Sweep_Drop, Draw_Sweep): Use the profile's drop-out
+ mode.
+
+2009-06-16 Werner Lemberg <wl@gnu.org>
+
+ Improve scan conversion rules 4 and 6.
+
+ Two new constraints are introduced to better identify a `stub' -- a
+ concept which is only vaguely described in the OpenType
+ specification. The old code was too rigorous and suppressed more
+ pixel than it should.
+
+ . The intersection of the two profiles with the scanline is less
+ than a half pixel. Code related to this was already present in
+ the sources but has been commented out.
+
+ . The endpoint of the original contour forming a profile has a
+ distance (`overshoot') less than half a pixel to the scanline.
+
+ Note that the two additional conditions fix almost all differences
+ to the Windows rasterizer, but some problematic cases remain.
+
+ * src/raster/ftraster.c (Overshoot_Top, Overshoot_Bottom): New
+ macros for the `flags' field in the `TProfile' structure.
+ (IS_BOTTOM_OVERSHOOT, IS_TOP_OVERSHOOT): New macros.
+ (New_Profile, End_Profile): Pass overshoot flag as an argument and
+ set it accordingly.
+ Update callers.
+ (Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Implement the two new
+ constraints.
+
+2009-06-11 Werner Lemberg <wl@gnu.org>
+
+ Increase precision for B/W rasterizer.
+
+ * src/raster/ftraster.c (Set_High_Precision): Add two more bits to
+ the precision. This corrects rendering of some small glyphs, for
+ example, glyph `xi' in verdana.ttf at 13 ppem. Testing with ftbench
+ on my GNU/Linux box I don't see a performance degradation.
+
+2009-06-08 Michael Zucchi <notzed@gmail.com>
+
+ Handle FT_STROKER_LINECAP_BUTT.
+ This fixes Savannah bug #26757.
+
+ * src/base/ftstroke.c (ft_stroker_cap): Implement it.
+
+2009-06-07 Harald Fernengel <harry@kdevelop.org>
+
+ Fix some potential out-of-memory crashes.
+
+ * src/base/ftobjs.c (ft_glyphslot_done): Check `slot->internal'.
+ * src/base/ftstream.c (FT_Stream_ReleaseFrame): Check `stream'.
+ * src/truetype/ttinterp.c (TT_New_Context): Avoid double-free of
+ `exec' in case of failure.
+
+2009-06-07 Werner Lemberg <wl@gnu.org>
+
+ Simplify math.
+ Suggested by Alexei Podtelezhnikov <apodtele@gmail.com>.
+
+ * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
+ Horizontal_Gray_Sweep_Drop): Do it.
+
+2009-06-04 Werner Lemberg <wl@gnu.org>
+
+ Preparation for fixing scan conversion rules 4 and 6.
+
+ * src/raster/ftraster.c (TFlow): Replace enumeration with...
+ (Flow_Up): This macro.
+ (TProfile): Replace `flow' member with `flags' bit field.
+ Update all affected code.
+
+2009-05-29 James Cloos <cloos@jhcloos.com>
+
+ Enable autohinting for glyphs rotated by multiples of 90°.
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Alter check for permitted
+ matrices to allow rotations by multiples of 90°, not only unrotated,
+ possibly slanted matrices.
+
+2009-05-28 Werner Lemberg <wl@gnu.org>
+
+ Remove compiler warning.
+ Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.
+
+ * src/autofit/aflatin2.c (af_latin2_hint_edges): Move declaration of
+ `n_edges' into `#if' block.
+
+2009-05-28 Werner Lemberg <wl@gnu.org>
+
+ Make compilation work with FT_CONFIG_OPTION_USE_ZLIB not defined.
+ Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.
+
+ * src/pcf/pcfdrivr.c (PCF_Face_Init) [!FT_CONFIG_OPTION_USE_ZLIB]:
+ Make it work.
+ Simplify #ifdef logic.
+
+2009-05-22 Werner Lemberg <wl@gnu.org>
+
+ Improve b/w rasterizer.
+ Problem reported by Krzysztof Kotlenga <pocek@users.sf.net>.
+
+ * src/raster/raster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
+ Horizontal_Gray_Sweep_Drop): For smart drop-out mode, if
+ intersections are equally distant relative to next pixel center,
+ select the left pixel, not the right one.
+
+2009-05-19 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #26600.
+
+ * src/type42/t42parse.c (t42_load_keyword): Handle
+ T1_FIELD_LOCATION_FONT_EXTRA.
+
+2009-04-30 Werner Lemberg <wl@gnu.org>
+
+ Document recent changes to ftview.
+
+ * docs/CHANGES: Do it.
+
+2009-04-27 Werner Lemberg <wl@gnu.org>
+
+ autohinter: Don't change digit widths if all widths are the same.
+ This fixes FreeDesktop bug #21197.
+
+ * src/autofit/afglobal.c (AF_DIGIT): New macro.
+ (af_face_globals_compute_script_coverage): Mark ASCII digits in
+ `glyph_scripts' array.
+ (af_face_globals_get_metrics): Updated.
+ (af_face_globals_is_digit): New function.
+ * src/autofit/afglobal.h: Updated.
+ (AF_ScriptMetricsRec): Add `digits_have_same_width' flag.
+
+ * src/autofit/aflatin.c: Include FT_ADVANCES_H.
+ (af_latin_metrics_check_digits): New function.
+ (af_latin_metrics_init): Use it.
+ * src/autofit/aflatin.h: Updated.
+ * src/autofit/afcjk.c (af_cjk_metrics_init): Updated.
+
+ * src/autofit/aflatin2.c: Similar changes as with aflatin.c.
+
+ * src/autofit/afloader.c (af_loader_load_g): Test digit width.
+
+ * docs/CHANGES: Document it.
+
+2009-04-26 Werner Lemberg <wl@gnu.org>
+
+ Make ftgrays compile with _STANDALONE_ and FT_STATIC_RASTER again.
+ Problems reported by suyu@cooee.cn.
+
+ * src/smooth/ftgrays.c (FT_DEFINE_OUTLINE_FUNCS,
+ FT_DEFINE_RASTER_FUNCS) [_STANDALONE_]: Define.
+ [!_STANDALONE_]: Include ftspic.h only here.
+ (ras): Define/declare after definition of `TWorker'.
+ Use `RAS_VAR_' where necessary.
+
+2009-04-21 Karl Berry <karl@gnu.org>
+
+ Fix AC_CHECK_FT2.
+
+ * builds/unix/freetype2.m4: Only check PATH for freetype-config if
+ we did not already find it from a prefix option.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Add #error to modules and files that do not support PIC yet.
+
+ When FT_CONFIG_OPTION_PIC is defined the following files will
+ create #error:
+ * src/bdf/bdfdrivr.h
+ * src/cache/ftcmanag.c
+ * src/cid/cidriver.h
+ * src/gxvalid/gxvmod.h
+ * src/gzip/ftgzip.c
+ * src/lzw/ftlzw.c
+ * src/otvalid/otvmod.h
+ * src/pcf/pcfdrivr.h
+ * src/pfr/pfrdrivr.h
+ * src/psaux/psauxmod.h
+ * src/type1/t1driver.h
+ * src/type42/t42drivr.h
+ * src/winfonts/winfnt.h
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in autofit module.
+
+ * include/freetype/internal/autohint.h add macros to init
+ instances of FT_AutoHinter_ServiceRec.
+
+ * src/autofit/afmodule.h declare autofit_module_class
+ using macros from ftmodapi.h,
+ when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/autofit/afmodule.c when FT_CONFIG_OPTION_PIC is defined
+ af_autofitter_service and autofit_module_class structs
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from afpic.h in order to access them.
+
+ * src/autofit/aftypes.h add macros to init and declare
+ instances of AF_ScriptClassRec.
+
+ * src/autofit/afcjk.h declare af_cjk_script_class
+ using macros from aftypes.h,
+ when FT_CONFIG_OPTION_PIC is defined init function will be declared.
+ * src/autofit/afcjk.c when FT_CONFIG_OPTION_PIC is defined
+ af_cjk_script_class struct will have function to init it instead of
+ being allocated in the global scope.
+
+ * src/autofit/afdummy.h declare af_dummy_script_class
+ using macros from aftypes.h,
+ when FT_CONFIG_OPTION_PIC is defined init function will be declared.
+ * src/autofit/afdummy.c when FT_CONFIG_OPTION_PIC is defined
+ af_dummy_script_class struct will have function to init it instead of
+ being allocated in the global scope.
+
+ * src/autofit/afindic.h declare af_indic_script_class
+ using macros from aftypes.h,
+ when FT_CONFIG_OPTION_PIC is defined init function will be declared.
+ * src/autofit/afindic.c when FT_CONFIG_OPTION_PIC is defined
+ af_indic_script_class struct will have function to init it instead of
+ being allocated in the global scope.
+
+ * src/autofit/aflatin.h declare af_latin_script_class
+ using macros from aftypes.h,
+ when FT_CONFIG_OPTION_PIC is defined init function will be declared.
+ * src/autofit/aflatin.c when FT_CONFIG_OPTION_PIC is defined
+ af_latin_script_class struct will have function to init it instead of
+ being allocated in the global scope.
+ Change af_latin_blue_chars to be PIC-compatible by being a two
+ dimentional array rather than array of pointers.
+
+
+ * src/autofit/aflatin2.h declare af_latin2_script_class
+ using macros from aftypes.h,
+ when FT_CONFIG_OPTION_PIC is defined init function will be declared.
+ * src/autofit/aflatin2.c when FT_CONFIG_OPTION_PIC is defined
+ af_latin2_script_class struct will have function to init it instead of
+ being allocated in the global scope.
+ Change af_latin2_blue_chars to be PIC-compatible by being a two
+ dimentional array rather than array of pointers.
+
+ * src/autofit/afglobal.c when FT_CONFIG_OPTION_PIC is defined
+ af_script_classes array initialization was moved to afpic.c and
+ is later refered using macros defeined in afpic.h.
+
+ New Files:
+ * src/autofit/afpic.h declare struct to hold PIC globals for autofit
+ module and macros to access them.
+ * src/autofit/afpic.c implement functions to allocate, destroy and
+ initialize PIC globals for autofit module.
+
+ * src/autofit/autofit.c add new file to build: afpic.c.
+ * src/autofit/jamfile add new files to FT2_MULTI build: afpic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in pshinter module.
+
+ * include/freetype/internal/pshints.h add macros to init
+ instances of PSHinter_Interface.
+
+ * src/pshinter/pshmod.h declare pshinter_module_class
+ using macros from ftmodapi.h,
+ when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/pshinter/pshmod.c when FT_CONFIG_OPTION_PIC is defined
+ pshinter_interface and pshinter_module_class structs
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from pshpic.h in order to access them.
+
+ New Files:
+ * src/pshinter/pshpic.h declare struct to hold PIC globals for pshinter
+ module and macros to access them.
+ * src/pshinter/pshpic.c implement functions to allocate, destroy and
+ initialize PIC globals for pshinter module.
+
+ * src/pshinter/pshinter.c add new file to build: pshpic.c.
+ * src/pshinter/jamfile add new files to FT2_MULTI build: pshpic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in psnames module.
+
+ * include/freetype/internal/services/svpscmap.h add macros to init
+ instances of FT_Service_PsCMapsRec.
+
+ * src/psnames/psmodule.h declare psnames_module_class
+ using macros from ftmodapi.h,
+ when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/psnames/psmodule.c when FT_CONFIG_OPTION_PIC is defined
+ pscmaps_interface and pscmaps_services structs
+ and psnames_module_class array
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from pspic.h in order to access them.
+
+ New Files:
+ * src/psnames/pspic.h declare struct to hold PIC globals for psnames
+ module and macros to access them.
+ * src/psnames/pspic.c implement functions to allocate, destroy and
+ initialize PIC globals for psnames module.
+
+ * src/psnames/psnames.c add new file to build: pspic.c.
+ * src/psnames/jamfile add new files to FT2_MULTI build: pspic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in raster renderer.
+
+ * src/raster/ftrend1.h declare ft_raster1_renderer_class
+ and ft_raster5_renderer_class
+ using macros from ftrender.h,
+ when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/smooth/ftrend1.c when FT_CONFIG_OPTION_PIC is defined
+ ft_raster1_renderer_class and ft_raster5_renderer_class structs
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ Macros will be used from rastpic.h in order to access
+ ft_standard_raster from the pic_container (allocated in ftraster.c).
+ In ft_raster1_render when PIC is enabled, the last letter of
+ module_name is used to verfy the renderer class rather than the
+ class pointer.
+
+ * src/raster/ftraster.c when FT_CONFIG_OPTION_PIC is defined
+ ft_standard_raster struct will have function to init it
+ instead of being allocated in the global scope.
+
+ New Files:
+ * src/raster/rastpic.h declare struct to hold PIC globals for raster
+ renderer and macros to access them.
+ * src/raster/rastpic.c implement functions to allocate, destroy and
+ initialize PIC globals for raster renderer.
+
+ * src/raster/raster.c add new file to build: rastpic.c.
+ * src/raster/jamfile add new files to FT2_MULTI build: rastpic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in smooth renderer.
+
+ * src/smooth/ftsmooth.h declare ft_smooth_renderer_class,
+ ft_smooth_lcd_renderer_class and ft_smooth_lcd_v_renderer_class
+ using macros from ftrender.h,
+ when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/smooth/ftsmooth.c when FT_CONFIG_OPTION_PIC is defined
+ the following structs:
+ ft_smooth_renderer_class, ft_smooth_lcd_renderer_class
+ and ft_smooth_lcd_v_renderer_class
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from ftspic.h in order to access
+ ft_grays_raster from the pic_container (allocated in ftgrays.c).
+
+ * src/smooth/ftgrays.h include FT_CONFIG_CONFIG_H
+ * src/smooth/ftgrays.c when FT_CONFIG_OPTION_PIC is NOT defined
+ func_interface was moved from gray_convert_glyph_inner function
+ to the global scope.
+ When FT_CONFIG_OPTION_PIC is defined
+ func_interface and ft_grays_raster structs
+ will have functions to init them
+ instead of being allocated in the global scope.
+ And func_interface will be allocated on the stack of
+ gray_convert_glyph_inner.
+
+ New Files:
+ * src/smooth/ftspic.h declare struct to hold PIC globals for smooth
+ renderer and macros to access them.
+ * src/smooth/ftspic.c implement functions to allocate, destroy and
+ initialize PIC globals for smooth renderer.
+
+ * src/smooth/smooth.c add new file to build: ftspic.c.
+ * src/smooth/jamfile add new files to FT2_MULTI build: ftspic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in cff driver.
+
+ * include/freetype/internal/services/svcid.h add macros to init
+ instances of FT_Service_CIDRec.
+ * include/freetype/internal/services/svpsinfo.h add macros to init
+ instances of FT_Service_PsInfoRec.
+
+ * src/cff/cffcmap.h declare cff_cmap_encoding_class_rec
+ and cff_cmap_unicode_class_rec using macros from
+ ftobjs.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/cff/cffcmap.c when FT_CONFIG_OPTION_PIC is defined
+ the following structs:
+ cff_cmap_encoding_class_rec and cff_cmap_unicode_class_rec
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+
+ * src/cff/cffdrivr.h declare cff_driver_class using macros from
+ ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/cff/cffdrivr.c when FT_CONFIG_OPTION_PIC is defined
+ the following structs:
+ cff_service_glyph_dict, cff_service_ps_info, cff_service_ps_name
+ cff_service_get_cmap_info, cff_service_cid_info, cff_driver_class,
+ and cff_services array
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from cffpic.h in order to access them
+ from the pic_container.
+ Use macros from cffpic.h in order to access the
+ structs allocated in cffcmap.c
+
+ * src/cff/cffobjs.c Use macros from cffpic.h in order to access the
+ structs allocated in cffcmap.c
+
+ * src/cff/parser.c when FT_CONFIG_OPTION_PIC is defined
+ implement functions to create and destroy cff_field_handlers array
+ instead of being allocated in the global scope.
+ And macros will be used from cffpic.h in order to access it
+ from the pic_container.
+
+ New Files:
+ * src/cff/cffpic.h declare struct to hold PIC globals for cff
+ driver and macros to access them.
+ * src/cff/cffpic.c implement functions to allocate, destroy and
+ initialize PIC globals for cff driver.
+
+ * src/cff/cff.c add new file to build: cffpic.c.
+ * src/cff/jamfile add new files to FT2_MULTI build: cffpic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in sfnt driver.
+
+ * include/freetype/internal/services/svbdf.h add macros to init
+ instances of FT_Service_BDFRec.
+ * include/freetype/internal/services/svgldict.h add macros to init
+ instances of FT_Service_GlyphDictRec.
+ * include/freetype/internal/services/svpostnm.h add macros to init
+ instances of FT_Service_PsFontNameRec.
+ * include/freetype/internal/services/svsfnt.h add macros to init
+ instances of FT_Service_SFNT_TableRec.
+ * include/freetype/internal/services/svttcmap.h add macros to init
+ instances of FT_Service_TTCMapsRec.
+ * include/freetype/internal/sfnt.h add macros to init
+ instances of SFNT_Interface.
+
+ * src/sfnt/sfdriver.h declare sfnt_module_class using macros from
+ ftmodapi.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/sfnt/sfdriver.c when FT_CONFIG_OPTION_PIC is defined
+ the following structs:
+ sfnt_service_sfnt_table, sfnt_service_glyph_dict, sfnt_service_ps_name
+ tt_service_get_cmap_info, sfnt_service_bdf, sfnt_interface,
+ sfnt_module_class, and sfnt_services array
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from sfntpic.h in order to access them
+ from the pic_container.
+
+ * src/sfnt/ttcmap.h add macros to init
+ instances of TT_CMap_ClassRec.
+ * src/sfnt/ttcmap.c when FT_CONFIG_OPTION_PIC is defined
+ the following structs:
+ tt_cmap0_class_rec, tt_cmap2_class_rec, tt_cmap4_class_rec
+ tt_cmap6_class_rec, tt_cmap8_class_rec, tt_cmap10_class_rec,
+ tt_cmap12_class_rec, tt_cmap14_class_rec and tt_cmap_classes array
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from sfntpic.h in order to access them
+ from the pic_container.
+ The content of tt_cmap_classes is now described in the
+ new file 'ttcmapc.h'.
+
+ New Files:
+ * src/sfnt/sfntpic.h declare struct to hold PIC globals for sfnt
+ driver and macros to access them.
+ * src/sfnt/sfntpic.c implement functions to allocate, destroy and
+ initialize PIC globals for sfnt driver.
+ * src/sfnt/ttcmapc.h describing the content of
+ tt_cmap_classes allocated in ttcmap.c
+
+ * src/sfnt/sfnt.c add new file to build: sfntpic.c.
+ * src/sfnt/jamfile add new files to FT2_MULTI build: sfntpic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support in truetype driver.
+
+ * include/freetype/internal/services/svmm.h add macros to init
+ instances of FT_Service_MultiMastersRec.
+ * include/freetype/internal/services/svttglyf.h add macros to init
+ instances of FT_Service_TTGlyfRec.
+
+ * src/truetype/ttdriver.h declare tt_driver_class using macros from
+ ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
+ functions will be declared.
+ * src/truetype/ttdriver.c when FT_CONFIG_OPTION_PIC is defined
+ the following structs:
+ tt_service_gx_multi_masters, tt_service_truetype_glyf, tt_driver_class
+ and tt_services array,
+ will have functions to init or create and destroy them
+ instead of being allocated in the global scope.
+ And macros will be used from ttpic.h in order to access them
+ from the pic_container.
+ * src/truetype/ttobjs.c change trick_names array to be
+ PIC-compatible by being a two dimentional array rather than array
+ of pointers.
+
+ New Files:
+ * src/truetype/ttpic.h declare struct to hold PIC globals for truetype
+ driver and macros to access them.
+ * src/truetype/ttpic.c implement functions to allocate, destroy and
+ initialize PIC globals for truetype driver.
+
+ * src/truetype/truetype.c add new file to build: ttpic.c.
+ * src/truetype/jamfile add new files to FT2_MULTI build: ttpic.c.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Position Independent Code (PIC) support and infrastructure in base.
+
+ * include/freetype/config/ftoption.h add FT_CONFIG_OPTION_PIC
+ * include/freetype/internal/ftobjs.h Add pic_container member to
+ FT_LibraryRec.
+ Add macros to declare and init instances of FT_CMap_ClassRec.
+ Add macros to init instances of FT_Outline_Funcs and FT_Raster_Funcs.
+ Add macros to declare, allocate and initialize modules
+ (FT_Module_Class).
+ Add macros to declare, allocate and initialize renderers
+ (FT_Renderer_Class).
+ Add macro to init instances of FT_Glyph_Class.
+ Add macros to declare, allocate and initialize drivers
+ (FT_Driver_ClassRec).
+ * include/freetype/internal/ftpic.h new file to declare the
+ FT_PIC_Container struct and the functions to allocate and detroy it.
+ * include/freetype/internal/ftserv.h add macros to allocate and
+ destory arrays of FT_ServiceDescRec.
+ * include/freetype/internal/internal.h define macro to include
+ ftpic.h.
+
+ New Files:
+ * src/base/ftpic.c implement functions to allocate and destory the
+ global pic_container.
+ * src/base/basepic.h declare struct to hold PIC globals for base and
+ macros to access them.
+ * src/base/basepic.c implement functions to allocate, destroy and
+ initialize PIC globals for base.
+
+ * src/base/ftinit.c when FT_CONFIG_OPTION_PIC is defined implement
+ functions that allocate and destroy ft_default_modules according to
+ FT_CONFIG_MODULES_H in the pic_container instead of the global scope
+ and use macro from basepic.h to access it.
+ * src/base/ftobjs.c add calls to the functions that allocate and
+ destroy the global pic_container when the library is created and
+ destroyed.
+
+ * src/base/jamfile add new files to FT2_MULTI build:
+ ftpic.c and basepic.c.
+ * src/base/ftbase.c add new files to build:
+ ftpic.c and basepic.c.
+
+ * src/base/ftglyph.c when FT_CONFIG_OPTION_PIC is defined
+ ft_bitmap_glyph_class and ft_outline_glyph_class will be allocated
+ in the pic_container instead of the global scope and use macros from
+ basepic.h to access them.
+ * src/base/ftbbox.c allocate bbox_interface stract on the stack
+ instead of the global scope when FT_CONFIG_OPTION_PIC is defined.
+ * src/base/ftstroke.c access ft_outline_glyph_class allocated in
+ ftglyph.c via macros from basepic.h
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Preparing changes in cff parser later needed for PIC version.
+
+ * src/cff/cffload.c, src/cff/cffload.h, src/cff/cffobjs.c,
+ src/cff/cffparse.c, src/cff/cffparse.h: Add library pointer to
+ 'CFF_ParserRec' set by `cff_parser_init'.
+ Route library pointer from 'cff_face_init' to 'cff_subfont_load'
+ for `cff_parser_init'.
+
+ * src/cff/cffparse.c (CFF_Field_Handler): Move it to...
+ * src/cff/cffparse.h: This file, to be used by other C files.
+
+2009-04-05 Oran Agra <oran@monfort.co.il>
+
+ Minor change in ftstroke.c.
+
+ * src/base/ftstroke.c (FT_StrokerRec): Replace `memory' member with
+ `library' needed for PIC version.
+ Update all callers.
+
+2009-04-04 Werner Lemberg <wl@gnu.org>
+
+ ftnames.c -> ftsnames.c
+
+ * src/base/ftnames.c: Rename to...
+ * src/base/ftsnames.c: This.
+ * src/base/Jamfile, src/base/rules.mk, src/base/ftbase.c: Updated.
+
+2009-04-04 Werner Lemberg <wl@gnu.org>
+
+ Add support for cmap type 13.
+
+ * devel/ftoption.h, include/freetype/config/ftoption.h
+ (TT_CONFIG_CMAP_FORMAT_13): New macro.
+
+ * src/sfnt/ttcmap.c (TT_CMap13Rec, tt_cmap13_init,
+ tt_cmap13_validate, tt_cmap13_char_index, tt_cmap13_char_next,
+ tt_cmap13_get_info, tt_cmap13_char_map_def_binary,
+ tt_cmap14_class_rec): New functions and structures for cmap 13
+ support.
+ (tt_cmap_classes): Register tt_cmap13_class_rec.
+
+ * docs/CHANGES: Mention cmap 13 support.
+
+2009-04-01 Werner Lemberg <wl@gnu.org>
+
+ Ignore empty contours in CFF glyphs.
+
+ Problem reported by Albert Astals Cid <aacid@kde.org>.
+
+ * src/cff/cffgload.c (cff_builder_close_contour): Synchronize with
+ t1_builder_close_contour.
+
+2009-03-21 Werner Lemberg <wl@gnu.org>
+
+ Another redundant header inclusion.
+
+ * src/truetype/ttgxvar.c: Fix Ghostscript Coverity issue #4041.
+
+2009-03-21 Werner Lemberg <wl@gnu.org>
+
+ Remove redundant header inclusions.
+
+ This covers many Ghostscript Coverity issues.
+
+ * src/*: Do it.
+
+2009-03-21 Werner Lemberg <wl@gnu.org>
+
+ Fix Ghostscript Coverity issue #3904.
+
+ * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
+ invalid values of `runcnt'.
+
+2009-03-20 Werner Lemberg <wl@gnu.org>
+
+ Fix `make multi' run.
+
+ * src/smooth/ftsmooth.h: Include FT_INTERNAL_DEBUG_H.
+
+2009-03-20 Werner Lemberg <wl@gnu.org>
+
+ Fix Savannah bug #25923.
+
+ * src/cache/ftccmap.c (FTC_CMAP_HASH): Fix typo.
+
+2009-03-20 Werner Lemberg <wl@gnu.org>
+
+ Protect against too large glyphs.
+
+ Problem reported by Tavis Ormandy <taviso@google.com>.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Don't allow
+ `pitch' or `height' to be larger than 0xFFFF.
+
+2009-03-20 Werner Lemberg <wl@gnu.org>
+ Tavis Ormandy <taviso@google.com>
+
+ Fix validation for various cmap table formats.
+
+ * src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate,
+ tt_cmap12_validate): Check `length' correctly.
+ (tt_cmap_14_validate): Check `length' and `numMappings' correctly.
+
+2009-03-20 Werner Lemberg <wl@gnu.org>
+
+ Protect against malformed compressed data.
+
+ * src/lzw/ftzopen.c (ft_lzwstate_io): Test whether `state->prefix' is
+ zero.
+
+2009-03-20 Werner Lemberg <wl@gnu.org>
+
+ Protect against invalid SID values in CFFs.
+
+ Problem reported by Tavis Ormandy <taviso@google.com>.
+
+ * src/cff/cffload.c (cff_charset_load): Reject SID values larger
+ than 64999.
+
+2009-03-19 Vincent Richomme <richom.v@free.fr>
+
+ Update WinCE Visual C project files.
+
+ * builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/freetype.vcproj: Add missing base extension
+ files.
+
+2009-03-19 Werner Lemberg <wl@gnu.org>
+
+ Remove unused Win32 code.
+
+ * builds/wince/ftdebug.c: Remove code guarded with `!_WIN32_WCE'.
+ Since Win32 is handled separately this is no longer needed.
+
+2009-03-19 Vincent Richomme <richom.v@free.fr>
+
+ Make `gzip' module compile on WinCE.
+
+ * src/gzip/zconf.h [_WIN32_WCE]: Define NO_ERRNO_H.
+
+2009-03-19 Werner Lemberg <wl@gnu.org>
+
+ Remove unused WinCE code.
+
+ * builds/win32/ftdebug.c: Remove code guarded with `_WIN32_WCE'.
+ Since WinCE is handled separately this is no longer needed.
+
+2009-03-16 Werner Lemberg <wl@gnu.org>
+
+ docmaker: Don't ignore single-line code blocks.
+
+ * src/tools/docmaker/content.py (DocBlock::_init__): Fix change from
+ 2009-01-31.
+
+2009-03-15 Steve Langasek <steve.langasek@canonical.com>
+
+ Use __asm__ for declaring assembly instead of asm.
+
+ * builds/unix/ftconfig.in (FT_MulFix_arm): Use __asm__ instead of
+ asm on arm, fixing a build failure on armel with -pedantic.
+
+2009-03-14 Werner Lemberg <wl@gnu.org>
+
+ Fix valgrind warning.
+
+ * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_bit_aligned): Don't read
+ past the end of the frame.
+
2009-03-12 Werner Lemberg <wl@gnu.org>
* Version 2.3.9 released.
@@ -192,7 +3184,7 @@
Remove ABI-breaking field in public PS_InfoFontRec definition.
Instead, we define a new internal PS_FontExtraRec structure to
- hold the additionnal field, then place it in various internal
+ hold the additional field, then place it in various internal
positions of the corresponding FT_Face derived objects.
* include/freetype/t1tables.h (PS_FontInfoRec): Remove the
@@ -3908,8 +6900,8 @@
2006-12-08 Vladimir Volovich <vvv@vsu.ru>
- * src/tools/apinames (State): Remove final comma in structure -- xlc
- v5 under AIX 4.3 doesn't like this.
+ * src/tools/apinames.c (State): Remove final comma in structure --
+ xlc v5 under AIX 4.3 doesn't like this.
2006-12-07 David Turner <david@freetype.org>
@@ -4532,7 +7524,7 @@
`ft_validator_run' wrapping `setjmp' can cause a crash, as found by
Jens:
- http://lists.nongnu.org/archive/html/freetype-devel/2006-08/msg00004.htm.
+ http://lists.gnu.org/archive/html/freetype-devel/2006-08/msg00004.htm.
* src/otvalid/otvmod.c: Replace `ft_validator_run' by `ft_setjmp'.
It reverts the change introduced on 2005-08-20.
@@ -4729,7 +7721,7 @@
2006-06-24 Eugeniy Meshcheryakov <eugen@univ.kiev.ua>
Fix two hinting bugs as reported in
- http://lists.nongnu.org/archive/html/freetype-devel/2006-06/msg00057.html.
+ http://lists.gnu.org/archive/html/freetype-devel/2006-06/msg00057.html.
* include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add
`first_point' member.
@@ -4940,7 +7932,7 @@
----------------------------------------------------------------------------
-Copyright 2006, 2007, 2008, 2009 by
+Copyright 2006, 2007, 2008, 2009, 2010 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/3rdparty/freetype/Jamfile b/src/3rdparty/freetype/Jamfile
index e5273d80bb..d8c1bbada2 100644
--- a/src/3rdparty/freetype/Jamfile
+++ b/src/3rdparty/freetype/Jamfile
@@ -194,7 +194,7 @@ rule RefDoc
actions RefDoc
{
- python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.3.9 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
+ python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.3.12 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
}
RefDoc refdoc ;
diff --git a/src/3rdparty/freetype/README b/src/3rdparty/freetype/README
index 6e5ad46b13..282791ef08 100644
--- a/src/3rdparty/freetype/README
+++ b/src/3rdparty/freetype/README
@@ -9,8 +9,8 @@
is called `libttf'. They are *not* compatible!
- FreeType 2.3.9
- ==============
+ FreeType 2.3.12
+ ===============
Please read the docs/CHANGES file, it contains IMPORTANT
INFORMATION.
@@ -26,9 +26,9 @@
and download one of the following files.
- freetype-doc-2.3.9.tar.bz2
- freetype-doc-2.3.9.tar.gz
- ftdoc239.zip
+ freetype-doc-2.3.12.tar.bz2
+ freetype-doc-2.3.12.tar.gz
+ ftdoc2312.zip
Bugs
@@ -51,7 +51,7 @@
----------------------------------------------------------------------
-Copyright 2006, 2007, 2008, 2009 by
+Copyright 2006, 2007, 2008, 2009, 2010 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/src/3rdparty/freetype/README.CVS b/src/3rdparty/freetype/README.git
index ff1a2d0580..89f290706c 100644
--- a/src/3rdparty/freetype/README.CVS
+++ b/src/3rdparty/freetype/README.git
@@ -1,4 +1,4 @@
-The CVS archive doesn't contain pre-built configuration scripts for
+The git archive doesn't contain pre-built configuration scripts for
UNIXish platforms. To generate them say
sh autogen.sh
@@ -33,7 +33,7 @@ should work on all platforms which have GNU make (or makepp).
----------------------------------------------------------------------
-Copyright 2005, 2006, 2007, 2008 by
+Copyright 2005, 2006, 2007, 2008, 2009 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/src/3rdparty/freetype/autogen.sh b/src/3rdparty/freetype/autogen.sh
index 16c335fd5c..c28a51c132 100644
--- a/src/3rdparty/freetype/autogen.sh
+++ b/src/3rdparty/freetype/autogen.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005, 2006, 2007, 2008, 2009 by
+# Copyright 2005, 2006, 2007, 2008, 2009, 2010 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -95,10 +95,11 @@ compare_to_minimum_version ()
check_tool_version ()
{
field=$5
+ # assume the output of "[TOOL] --version" is "toolname (GNU toolname foo bar) version"
if test "$field"x = x; then
- field=4 # default to 4 for all GNU autotools
+ field=3 # default to 3 for all GNU autotools, after filtering enclosed string
fi
- version=`$1 --version | head -1 | cut -d ' ' -f $field`
+ version=`$1 --version | head -1 | sed 's/([^)]*)/()/g' | cut -d ' ' -f $field`
version_check=`compare_to_minimum_version $version $4`
if test "$version_check"x = 0x; then
echo "ERROR: Your version of the \`$2' tool is too old."
diff --git a/src/3rdparty/freetype/builds/atari/ATARI.H b/src/3rdparty/freetype/builds/atari/ATARI.H
index bb6913803c..9f78c924b8 100644
--- a/src/3rdparty/freetype/builds/atari/ATARI.H
+++ b/src/3rdparty/freetype/builds/atari/ATARI.H
@@ -1,3 +1,7 @@
+#if defined( __GXVALID_H__ )
+#pragma warn -aus /* too many unevaluated variables in gxvalid */
+#endif
+
#ifndef ATARI_H
#define ATARI_H
diff --git a/src/3rdparty/freetype/builds/atari/deflinejoiner.awk b/src/3rdparty/freetype/builds/atari/deflinejoiner.awk
new file mode 100644
index 0000000000..c872a70d86
--- /dev/null
+++ b/src/3rdparty/freetype/builds/atari/deflinejoiner.awk
@@ -0,0 +1,181 @@
+#!/usr/bin/env awk
+
+
+function shift( array, \
+ junk, elm0, l )
+{
+ elm0 = array[0]
+ for ( l = 0; l < asorti( array, junk ) - 1; l++ )
+ array[l] = array[l+1];
+ delete array[l]
+ return elm0
+}
+
+
+function init_cpp_src_line()
+{
+ logical_line = ""
+ delete break_pos
+}
+
+
+function shift_valid_bp( array, \
+ junk, elm )
+{
+ elm = -1
+
+ if ( 0 < asorti( array, junk ) )
+ do {
+ elm = shift( array )
+ } while ( 0 > elm );
+
+ return elm
+}
+
+
+function check_cpp_src_line_break_pos( \
+ i, junk )
+{
+ printf( "break_pos:" )
+ for ( i = 0; i < asorti( break_pos, junk ); i++ )
+ printf( " %d", break_pos[i] );
+ printf( "\n" )
+}
+
+
+function check_cpp_src_line()
+{
+ printf( "logical_line[%s]\n", logical_line )
+ check_cpp_src_line_break_pos()
+}
+
+
+function append_line( phys_line, \
+ filt_line, bp_len )
+{
+ filt_line = phys_line
+ sub( /\\$/, " ", filt_line )
+ logical_line = logical_line filt_line
+ bp_len = asorti( break_pos, junk )
+ break_pos[bp_len] = length( logical_line ) - 1
+}
+
+
+function print_line( \
+ c0, c1, i, junk, part_str )
+{
+ c0 = 0
+
+ while( asorti( break_pos, junk ) > 1 )
+ {
+ if ( ( c1 = shift_valid_bp( break_pos ) ) < 1 )
+ {
+ part_str = substr( logical_line, c0 + 1 )
+ printf( "%s\n", part_str )
+ return
+ }
+
+ part_str = substr( logical_line, c0 + 1, c1 - c0 + 1 )
+ gsub( / $/, "\\", part_str )
+ printf( "%s\n", part_str )
+ c0 = c1 + 1
+ }
+
+ part_str = substr( logical_line, c0 + 1 )
+ printf( "%s\n", part_str )
+}
+
+
+function shrink_spaces( pos, \
+ tail, removed_length, k )
+{
+ tail = substr( logical_line, pos )
+ sub( /^[ \t]+/, " ", tail )
+ removed_length = length( logical_line ) - pos - length( tail ) + 1
+ logical_line = substr( logical_line, 0, pos - 1 ) tail
+
+
+ for ( k = 0; k < asorti( break_pos, junk ); k++ )
+ if ( ( pos + removed_length ) <= break_pos[k] )
+ break_pos[k] = break_pos[k] - removed_length;
+ else if ( pos <= break_pos[k] )
+ break_pos[k] = -1;
+
+ return removed_length
+}
+
+
+function shrink_spaces_to_linebreak( pos, \
+ junk, part_str, removed_length, i )
+{
+ for ( i = 0; i < asorti( break_pos, junk ) && break_pos[i] < pos ; i++ )
+ ;
+
+ if ( break_pos[i] < 1 )
+ return;
+
+ part_str = substr( logical_line, pos, break_pos[i] - pos + 1 )
+ sub( /^[ \t]+/, " ", part_str )
+ removed_length = ( break_pos[i] - pos + 1 ) - length( part_str )
+
+ tail = substr( logical_line, pos + removed_length )
+ logical_line = substr( logical_line, 0, pos - 1 ) tail
+
+ for ( ; i < asorti( break_pos, junk ); i++ )
+ break_pos[i] -= removed_length;
+
+ return removed_length
+}
+
+
+function delete_linebreaks_in_2nd_token( \
+ tail, paren_depth, junk, i, j, k, l )
+{
+ if ( logical_line ~ /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+\(/ )
+ {
+ tail = logical_line
+ sub( /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+/, "", tail )
+
+ paren_depth = 0
+ l = 0
+ i = length( logical_line ) - length( tail ) + 1 # seek to the 1st op paren
+ j = i
+ do {
+ if ( substr( logical_line, j, 2 ) ~ /[ \t][ \t]/ )
+ l = shrink_spaces( j );
+ else if ( substr( logical_line, j, 1 ) == "(" )
+ paren_depth += 1;
+ else if ( substr( logical_line, j, 1 ) == ")" )
+ paren_depth -= 1;
+ j += 1
+ } while ( j < length( logical_line ) && paren_depth != 0 )
+
+ for ( k = 0; k < asorti( break_pos, junk ); k++ )
+ if ( i <= break_pos[k] && break_pos[k] < j )
+ break_pos[k] = -1;
+
+ if ( l > 0 )
+ shrink_spaces_to_linebreak( j );
+ }
+}
+
+
+BEGIN{
+ init_cpp_src_line()
+}
+{
+ append_line( $0 )
+ if ( $0 !~ /\\$/ )
+ {
+ delete_linebreaks_in_2nd_token()
+ print_line()
+ init_cpp_src_line()
+ }
+}
+END{
+ if ( 0 < length( logical_line ) )
+ {
+ delete_linebreaks_in_2nd_token()
+ print_line()
+ }
+}
diff --git a/src/3rdparty/freetype/builds/atari/gen-purec-patch.sh b/src/3rdparty/freetype/builds/atari/gen-purec-patch.sh
new file mode 100644
index 0000000000..1ec050c11f
--- /dev/null
+++ b/src/3rdparty/freetype/builds/atari/gen-purec-patch.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+TOP_DIR=.
+OBJ_DIR=.
+
+for x in "$@"
+do
+ case x"$x" in
+ x--srcdir=* | x--topdir=* )
+ TOP_DIR=`echo $x | sed 's/^--[a-z]*dir=//'`
+ ;;
+ x--builddir=* | x--objdir=* )
+ OBJ_DIR=`echo $x | sed 's/^--[a-z]*dir=//'`
+ ;;
+ esac
+done
+
+mkdir -p ${OBJ_DIR}/builds/atari/tmp/orig
+
+( cd ${TOP_DIR} && find . -name '*.[CHch]' -type f | fgrep -v builds/atari/tmp | cpio -o ) | \
+( cd ${OBJ_DIR}/builds/atari/tmp/orig && cpio -idum )
+cp ${TOP_DIR}/builds/atari/deflinejoiner.awk ${OBJ_DIR}/builds/atari/tmp
+
+pushd ${OBJ_DIR}/builds/atari/tmp
+
+ cp -pr orig purec
+ for f in `cd orig && find . -type f`
+ do
+ echo filter $f
+ env LANG=C awk -f deflinejoiner.awk < orig/$f > purec/$f
+ done
+
+ echo '#define FT2_BUILD_LIBRARY' > purec/include/ft2build.h
+ echo '#include "ATARI.H"' >> purec/include/ft2build.h
+ env LANG=C awk -f deflinejoiner.awk < orig/include/ft2build.h >> purec/include/ft2build.h
+
+ env LANG=C diff -ur orig purec > ../purec.diff
+
+popd
+rm -rf ${OBJ_DIR}/builds/atari/tmp
diff --git a/src/3rdparty/freetype/builds/compiler/bcc-dev.mk b/src/3rdparty/freetype/builds/compiler/bcc-dev.mk
index ba1a88a302..63a46ad168 100644
--- a/src/3rdparty/freetype/builds/compiler/bcc-dev.mk
+++ b/src/3rdparty/freetype/builds/compiler/bcc-dev.mk
@@ -52,7 +52,8 @@ L :=
# Target flag -- no trailing space.
#
-T := -o
+T := -o
+TE := -e
# C flags
@@ -72,7 +73,14 @@ ANSIFLAGS := -A
# Library linking
#
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
-LINK_LIBRARY = tlib /u $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%))
+LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%))
+
+
+# Borland C++ specific temporary files
+#
+CLEAN += \
+ $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \
+ $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds)
# EOF
diff --git a/src/3rdparty/freetype/builds/compiler/bcc.mk b/src/3rdparty/freetype/builds/compiler/bcc.mk
index 509cb72483..855edadf0a 100644
--- a/src/3rdparty/freetype/builds/compiler/bcc.mk
+++ b/src/3rdparty/freetype/builds/compiler/bcc.mk
@@ -52,7 +52,8 @@ L :=
# Target flag -- no trailing space.
#
-T := -o
+T := -o
+TE := -e
# C flags
@@ -72,7 +73,14 @@ ANSIFLAGS := -A
# Library linking
#
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
-LINK_LIBRARY = tlib /u $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%))
+LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%))
+
+
+# Borland C++ specific temporary files
+#
+CLEAN += \
+ $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \
+ $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds)
# EOF
diff --git a/src/3rdparty/freetype/builds/compiler/gcc.mk b/src/3rdparty/freetype/builds/compiler/gcc.mk
index e941443a02..f6b7101b38 100644
--- a/src/3rdparty/freetype/builds/compiler/gcc.mk
+++ b/src/3rdparty/freetype/builds/compiler/gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2000, 2003, 2005, 2006 by
+# Copyright 1996-2000, 2003, 2005, 2006, 2009 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -61,7 +61,7 @@ T := -o$(space)
# Use the ANSIFLAGS variable to define the compiler flags used to enfore
# ANSI compliance.
#
-CFLAGS ?= -c -g -O6 -Wall
+CFLAGS ?= -c -g -O3 -Wall
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant.
#
diff --git a/src/3rdparty/freetype/builds/exports.mk b/src/3rdparty/freetype/builds/exports.mk
index 5452b35715..52f2912d39 100644
--- a/src/3rdparty/freetype/builds/exports.mk
+++ b/src/3rdparty/freetype/builds/exports.mk
@@ -47,8 +47,8 @@ ifneq ($(EXPORTS_LIST),)
#
# Note that $(APINAMES_OPTIONS) is empty, except for Windows compilers.
#
- APINAMES_SRC := $(TOP_DIR)/src/tools/apinames.c
- APINAMES_EXE := $(OBJ_DIR)/apinames$(E_BUILD)
+ APINAMES_SRC := $(subst /,$(SEP),$(TOP_DIR)/src/tools/apinames.c)
+ APINAMES_EXE := $(subst /,$(SEP),$(OBJ_DIR)/apinames$(E_BUILD))
$(APINAMES_EXE): $(APINAMES_SRC)
$(CCexe) $(TE)$@ $<
diff --git a/src/3rdparty/freetype/builds/mac/README b/src/3rdparty/freetype/builds/mac/README
index 3bedfcac32..bd3df8ada4 100644
--- a/src/3rdparty/freetype/builds/mac/README
+++ b/src/3rdparty/freetype/builds/mac/README
@@ -99,7 +99,7 @@ environment by Metrowerks. GCC for MPW and Symantec
System 7, MacOS 8, MacOS 9. So-called "Toolbox"
API is used.
- - FreeType.ppc_classic.make.txt
+ - FreeType.ppc_carbon.make.txt
CFM binary executable format for ppc MacOS:
MacOS 9. Carbon API is used.
@@ -392,7 +392,7 @@ ATSFontGetFileSpecification() | x | x | x | x |
ATS font manager is not published in these versions.
------------------------------------------------------------
-Last update: 2007-Feb-01, by Alexei Podtelezhnikov.
+Last update: 2009-Jul-25.
Currently maintained by
suzuki toshiya, <mpsuzuki@hiroshima-u.ac.jp>
diff --git a/src/3rdparty/freetype/builds/toplevel.mk b/src/3rdparty/freetype/builds/toplevel.mk
index e6a8e932f7..6a8280173d 100644
--- a/src/3rdparty/freetype/builds/toplevel.mk
+++ b/src/3rdparty/freetype/builds/toplevel.mk
@@ -177,9 +177,9 @@ include $(TOP_DIR)/builds/modules.mk
ifneq ($(findstring distx,$(MAKECMDGOALS)x),)
FT_H := include/freetype/freetype.h
- major := $(shell sed -n 's/.*FREETYPE_MAJOR.*\([0-9]\+\)/\1/p' < $(FT_H))
- minor := $(shell sed -n 's/.*FREETYPE_MINOR.*\([0-9]\+\)/\1/p' < $(FT_H))
- patch := $(shell sed -n 's/.*FREETYPE_PATCH.*\([0-9]\+\)/\1/p' < $(FT_H))
+ major := $(shell sed -n 's/.*FREETYPE_MAJOR[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H))
+ minor := $(shell sed -n 's/.*FREETYPE_MINOR[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H))
+ patch := $(shell sed -n 's/.*FREETYPE_PATCH[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H))
version := $(major).$(minor).$(patch)
winversion := $(major)$(minor)$(patch)
@@ -191,14 +191,14 @@ dist:
rm -f freetype-$(version).tar.bz2
rm -f ft$(winversion).zip
- for d in `find . -wholename '*/CVS' -prune \
+ for d in `find . -wholename '*/.git' -prune \
-o -type f \
-o -print` ; do \
mkdir -p tmp/$$d ; \
done ;
currdir=`pwd` ; \
- for f in `find . -wholename '*/CVS' -prune \
+ for f in `find . -wholename '*/.git' -prune \
-o -name .cvsignore \
-o -type d \
-o -print` ; do \
diff --git a/src/3rdparty/freetype/builds/unix/aclocal.m4 b/src/3rdparty/freetype/builds/unix/aclocal.m4
index 36a524230e..492a669ecc 100644
--- a/src/3rdparty/freetype/builds/unix/aclocal.m4
+++ b/src/3rdparty/freetype/builds/unix/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -691,7 +691,6 @@ _LT_CONFIG_SAVE_COMMANDS([
# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
_LT_COPYING
@@ -7851,15 +7850,15 @@ m4_define([lt_dict_filter],
# Generated from ltversion.in.
-# serial 3012 ltversion.m4
+# serial 3017 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
+[macro_version='2.2.6b'
+macro_revision='1.3017'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
diff --git a/src/3rdparty/freetype/builds/unix/config.guess b/src/3rdparty/freetype/builds/unix/config.guess
index e5716eea73..c2246a4f7f 100755
--- a/src/3rdparty/freetype/builds/unix/config.guess
+++ b/src/3rdparty/freetype/builds/unix/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2009-02-03'
+timestamp='2009-12-30'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@ timestamp='2009-02-03'
# the same distribution terms that you use for the rest of that program.
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -56,8 +56,9 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -170,7 +171,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
+ | grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
@@ -324,12 +325,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
@@ -653,7 +660,7 @@ EOF
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
+ grep -q __LP64__
then
HP_ARCH="hppa2.0w"
else
@@ -804,12 +811,12 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- *:Interix*:[3456]*)
+ *:Interix*:*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
- EM64T | authenticamd | genuineintel)
+ authenticamd | genuineintel | EM64T)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
@@ -819,6 +826,9 @@ EOF
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -848,6 +858,20 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -870,6 +894,17 @@ EOF
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
@@ -879,78 +914,34 @@ EOF
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
+ mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
- #undef mips64
- #undef mips64el
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
+ CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
+ CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -959,8 +950,11 @@ EOF
*) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
@@ -983,66 +977,6 @@ EOF
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
@@ -1071,7 +1005,7 @@ EOF
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
@@ -1115,8 +1049,11 @@ EOF
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
@@ -1176,7 +1113,7 @@ EOF
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
@@ -1269,6 +1206,16 @@ EOF
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
diff --git a/src/3rdparty/freetype/builds/unix/config.sub b/src/3rdparty/freetype/builds/unix/config.sub
index d546a94b95..c2d125724c 100755
--- a/src/3rdparty/freetype/builds/unix/config.sub
+++ b/src/3rdparty/freetype/builds/unix/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2009-02-03'
+timestamp='2010-01-22'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@ timestamp='2009-02-03'
# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,10 +153,13 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
+ -apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
+ -bluegene*)
+ os=-cnk
+ ;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
@@ -272,6 +279,7 @@ case $basic_machine in
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | moxie \
| mt \
| msp430 \
| nios | nios2 \
@@ -280,6 +288,7 @@ case $basic_machine in
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
+ | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
@@ -287,13 +296,14 @@ case $basic_machine in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
+ | ubicom32 \
| v850 | v850e \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12)
+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
os=-none
@@ -336,7 +346,7 @@ case $basic_machine in
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -364,15 +374,17 @@ case $basic_machine in
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
- | romp-* | rs6000-* \
+ | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile-* | tilegx-* \
| tron-* \
+ | ubicom32-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
@@ -466,6 +478,10 @@ case $basic_machine in
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
@@ -718,6 +734,9 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@@ -1068,6 +1087,11 @@ case $basic_machine in
basic_machine=tic6x-unknown
os=-coff
;;
+ # This must be matched before tile*.
+ tilegx*)
+ basic_machine=tilegx-unknown
+ os=-linux-gnu
+ ;;
tile*)
basic_machine=tile-unknown
os=-linux-gnu
@@ -1239,6 +1263,9 @@ case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
@@ -1259,9 +1286,9 @@ case $os in
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1282,7 +1309,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1415,6 +1442,8 @@ case $os in
-dicos*)
os=-dicos
;;
+ -nacl*)
+ ;;
-none)
;;
*)
@@ -1612,7 +1641,7 @@ case $basic_machine in
-sunos*)
vendor=sun
;;
- -aix*)
+ -cnk*|-aix*)
vendor=ibm
;;
-beos*)
diff --git a/src/3rdparty/freetype/builds/unix/configure b/src/3rdparty/freetype/builds/unix/configure
index 97849a4352..0c949128f3 100755
--- a/src/3rdparty/freetype/builds/unix/configure
+++ b/src/3rdparty/freetype/builds/unix/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for FreeType 2.3.9.
+# Generated by GNU Autoconf 2.63 for FreeType 2.3.12.
#
# Report bugs to <freetype@nongnu.org>.
#
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='FreeType'
PACKAGE_TARNAME='freetype'
-PACKAGE_VERSION='2.3.9'
-PACKAGE_STRING='FreeType 2.3.9'
+PACKAGE_VERSION='2.3.12'
+PACKAGE_STRING='FreeType 2.3.12'
PACKAGE_BUGREPORT='freetype@nongnu.org'
ac_unique_file="ftconfig.in"
@@ -1461,7 +1461,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures FreeType 2.3.9 to adapt to many kinds of systems.
+\`configure' configures FreeType 2.3.12 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1526,7 +1526,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of FreeType 2.3.9:";;
+ short | recursive ) echo "Configuration of FreeType 2.3.12:";;
esac
cat <<\_ACEOF
@@ -1637,7 +1637,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-FreeType configure 2.3.9
+FreeType configure 2.3.12
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1651,7 +1651,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by FreeType $as_me 2.3.9, which was
+It was created by FreeType $as_me 2.3.12, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -2024,7 +2024,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# Don't forget to update docs/VERSION.DLL!
-version_info='9:20:3'
+version_info='10:0:4'
ft_version=`echo $version_info | tr : .`
@@ -3470,8 +3470,9 @@ $as_echo "$as_me: error: native C compiler is not working" >&2;}
elif test -x a_out.exe -o -x conftest.exe; then
EXEEXT_BUILD=".exe"
elif test -x conftest.* ; then
- EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\.//g'`
+ EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'`
fi
+ rm -f a.* b.* a_out.exe conftest.*
{ $as_echo "$as_me:$LINENO: result: $EXEEXT_BUILD" >&5
$as_echo "$EXEEXT_BUILD" >&6; }
else
@@ -3480,17 +3481,13 @@ else
fi
-if test ! -z ${EXEEXT_BUILD}; then
- EXEEXT_BUILD=."${EXEEXT_BUILD}"
-fi
-
# get compiler flags right
-if test "x$CC" = xgcc; then
+if test "x$GCC" = xyes; then
XX_CFLAGS="-Wall"
XX_ANSIFLAGS="-pedantic -ansi"
else
@@ -6051,37 +6048,54 @@ if test x$with_zlib != xno && test -n "$LIBZ"; then
fi
-# check Apple's `-isysroot' option and duplicate it to LDFLAGS if required --
-# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS
+# Some options handling SDKs/archs in CFLAGS should be copied
+# to LDFLAGS. Apple TechNote 2137 recommends to include these
+# options in CFLAGS but not in LDFLAGS.
-{ $as_echo "$as_me:$LINENO: checking whether CFLAGS includes -isysroot option" >&5
-$as_echo_n "checking whether CFLAGS includes -isysroot option... " >&6; }
-case "$CFLAGS" in
-*sysroot* )
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- { $as_echo "$as_me:$LINENO: checking whether LDFLAGS includes -isysroot option" >&5
-$as_echo_n "checking whether LDFLAGS includes -isysroot option... " >&6; }
- case "$LDFLAGS" in
- *sysroot* )
- { $as_echo "$as_me:$LINENO: result: yes" >&5
+save_config_args=$*
+set dummy ${CFLAGS}
+i=1
+while test $i -lt $#
+do
+ c=$1
+
+ case "${c}" in
+ -isysroot|-arch) # options taking 1 argument
+ a=$2
+ { $as_echo "$as_me:$LINENO: checking whether CFLAGS and LDFLAGS share ${c} ${a}" >&5
+$as_echo_n "checking whether CFLAGS and LDFLAGS share ${c} ${a}... " >&6; }
+ if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null
+ then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:$LINENO: result: no, copy to LDFLAGS" >&5
+$as_echo "no, copy to LDFLAGS" >&6; }
+ LDFLAGS="${LDFLAGS} ${c} ${a}"
+ fi
+ shift 1
;;
- *)
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
- isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'`
- { $as_echo "$as_me:$LINENO: WARNING: -isysroot ${isysroot_dir} is added to LDFLAGS" >&5
-$as_echo "$as_me: WARNING: -isysroot ${isysroot_dir} is added to LDFLAGS" >&2;}
- LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}"
+ -m32|-m64) # options taking no argument
+ { $as_echo "$as_me:$LINENO: result: whether CFLAGS and LDFLAGS share ${c}" >&5
+$as_echo "whether CFLAGS and LDFLAGS share ${c}" >&6; }
+ if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null
+ then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:$LINENO: result: no, copy to LDFLAGS" >&5
+$as_echo "no, copy to LDFLAGS" >&6; }
+ LDFLAGS="${LDFLAGS} ${c}"
+ fi
;;
+ # *)
+ # AC_MSG_RESULT([${c} is not copied to LDFLAGS])
+ # ;;
esac
- ;;
-*)
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
- ;;
-esac
+
+ shift 1
+done
+set ${save_config_args}
# Whether to use Mac OS resource-based fonts.
@@ -6853,8 +6867,8 @@ esac
-macro_version='2.2.6'
-macro_revision='1.3012'
+macro_version='2.2.6b'
+macro_revision='1.3017'
@@ -7330,13 +7344,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:7333: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:7347: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:7336: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:7350: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:7339: output\"" >&5)
+ (eval echo "\"\$as_me:7353: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -8538,7 +8552,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 8541 "configure"' > conftest.$ac_ext
+ echo '#line 8555 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -10201,11 +10215,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:10204: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:10218: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:10208: \$? = $ac_status" >&5
+ echo "$as_me:10222: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -10540,11 +10554,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:10543: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:10557: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:10547: \$? = $ac_status" >&5
+ echo "$as_me:10561: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -10645,11 +10659,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:10648: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:10662: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:10652: \$? = $ac_status" >&5
+ echo "$as_me:10666: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10700,11 +10714,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:10703: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:10717: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:10707: \$? = $ac_status" >&5
+ echo "$as_me:10721: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13500,7 +13514,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13503 "configure"
+#line 13517 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13596,7 +13610,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13599 "configure"
+#line 13613 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -14266,7 +14280,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by FreeType $as_me 2.3.9, which was
+This file was extended by FreeType $as_me 2.3.12, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14329,7 +14343,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-FreeType config.status 2.3.9
+FreeType config.status 2.3.12
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
@@ -15342,7 +15356,6 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
diff --git a/src/3rdparty/freetype/builds/unix/configure.ac b/src/3rdparty/freetype/builds/unix/configure.ac
index 26f40ddfeb..762d43dd6f 100644
--- a/src/3rdparty/freetype/builds/unix/configure.ac
+++ b/src/3rdparty/freetype/builds/unix/configure.ac
@@ -2,7 +2,7 @@
#
# Process this file with autoconf to produce a configure script.
#
-# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
+# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -11,13 +11,13 @@
# indicate that you have read the license and understand and accept it
# fully.
-AC_INIT([FreeType], [2.3.9], [freetype@nongnu.org], [freetype])
+AC_INIT([FreeType], [2.3.12], [freetype@nongnu.org], [freetype])
AC_CONFIG_SRCDIR([ftconfig.in])
# Don't forget to update docs/VERSION.DLL!
-version_info='9:20:3'
+version_info='10:0:4'
AC_SUBST([version_info])
ft_version=`echo $version_info | tr : .`
AC_SUBST([ft_version])
@@ -53,18 +53,15 @@ if test ${cross_compiling} = yes; then
elif test -x a_out.exe -o -x conftest.exe; then
EXEEXT_BUILD=".exe"
elif test -x conftest.* ; then
- EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\.//g'`
+ EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'`
fi
+ rm -f a.* b.* a_out.exe conftest.*
AC_MSG_RESULT($EXEEXT_BUILD)
else
CC_BUILD=${CC}
EXEEXT_BUILD=${EXEEXT}
fi
-
-if test ! -z ${EXEEXT_BUILD}; then
- EXEEXT_BUILD=."${EXEEXT_BUILD}"
-fi
AC_SUBST(CC_BUILD)
AC_SUBST(EXEEXT_BUILD)
@@ -72,7 +69,7 @@ AC_SUBST(EXEEXT_BUILD)
# get compiler flags right
-if test "x$CC" = xgcc; then
+if test "x$GCC" = xyes; then
XX_CFLAGS="-Wall"
XX_ANSIFLAGS="-pedantic -ansi"
else
@@ -233,30 +230,48 @@ if test x$with_zlib != xno && test -n "$LIBZ"; then
fi
-# check Apple's `-isysroot' option and duplicate it to LDFLAGS if required --
-# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS
-
-AC_MSG_CHECKING([whether CFLAGS includes -isysroot option])
-case "$CFLAGS" in
-*sysroot* )
- AC_MSG_RESULT([yes])
- AC_MSG_CHECKING([whether LDFLAGS includes -isysroot option])
- case "$LDFLAGS" in
- *sysroot* )
- AC_MSG_RESULT([yes])
+# Some options handling SDKs/archs in CFLAGS should be copied
+# to LDFLAGS. Apple TechNote 2137 recommends to include these
+# options in CFLAGS but not in LDFLAGS.
+
+save_config_args=$*
+set dummy ${CFLAGS}
+i=1
+while test $i -lt $#
+do
+ c=$1
+
+ case "${c}" in
+ -isysroot|-arch) # options taking 1 argument
+ a=$2
+ AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c} ${a}])
+ if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null
+ then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no, copy to LDFLAGS])
+ LDFLAGS="${LDFLAGS} ${c} ${a}"
+ fi
+ shift 1
;;
- *)
- AC_MSG_RESULT([no])
- isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'`
- AC_MSG_WARN(-isysroot ${isysroot_dir} is added to LDFLAGS)
- LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}"
+ -m32|-m64) # options taking no argument
+ AC_MSG_RESULT([whether CFLAGS and LDFLAGS share ${c}])
+ if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null
+ then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no, copy to LDFLAGS])
+ LDFLAGS="${LDFLAGS} ${c}"
+ fi
;;
+ # *)
+ # AC_MSG_RESULT([${c} is not copied to LDFLAGS])
+ # ;;
esac
- ;;
-*)
- AC_MSG_RESULT([no])
- ;;
-esac
+
+ shift 1
+done
+set ${save_config_args}
# Whether to use Mac OS resource-based fonts.
diff --git a/src/3rdparty/freetype/builds/unix/configure.raw b/src/3rdparty/freetype/builds/unix/configure.raw
index 38c5241cfb..ff16dfe330 100644
--- a/src/3rdparty/freetype/builds/unix/configure.raw
+++ b/src/3rdparty/freetype/builds/unix/configure.raw
@@ -2,7 +2,7 @@
#
# Process this file with autoconf to produce a configure script.
#
-# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
+# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.in])
# Don't forget to update docs/VERSION.DLL!
-version_info='9:20:3'
+version_info='10:0:4'
AC_SUBST([version_info])
ft_version=`echo $version_info | tr : .`
AC_SUBST([ft_version])
@@ -53,18 +53,15 @@ if test ${cross_compiling} = yes; then
elif test -x a_out.exe -o -x conftest.exe; then
EXEEXT_BUILD=".exe"
elif test -x conftest.* ; then
- EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\.//g'`
+ EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'`
fi
+ rm -f a.* b.* a_out.exe conftest.*
AC_MSG_RESULT($EXEEXT_BUILD)
else
CC_BUILD=${CC}
EXEEXT_BUILD=${EXEEXT}
fi
-
-if test ! -z ${EXEEXT_BUILD}; then
- EXEEXT_BUILD=."${EXEEXT_BUILD}"
-fi
AC_SUBST(CC_BUILD)
AC_SUBST(EXEEXT_BUILD)
@@ -72,7 +69,7 @@ AC_SUBST(EXEEXT_BUILD)
# get compiler flags right
-if test "x$CC" = xgcc; then
+if test "x$GCC" = xyes; then
XX_CFLAGS="-Wall"
XX_ANSIFLAGS="-pedantic -ansi"
else
@@ -233,30 +230,48 @@ if test x$with_zlib != xno && test -n "$LIBZ"; then
fi
-# check Apple's `-isysroot' option and duplicate it to LDFLAGS if required --
-# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS
-
-AC_MSG_CHECKING([whether CFLAGS includes -isysroot option])
-case "$CFLAGS" in
-*sysroot* )
- AC_MSG_RESULT([yes])
- AC_MSG_CHECKING([whether LDFLAGS includes -isysroot option])
- case "$LDFLAGS" in
- *sysroot* )
- AC_MSG_RESULT([yes])
+# Some options handling SDKs/archs in CFLAGS should be copied
+# to LDFLAGS. Apple TechNote 2137 recommends to include these
+# options in CFLAGS but not in LDFLAGS.
+
+save_config_args=$*
+set dummy ${CFLAGS}
+i=1
+while test $i -lt $#
+do
+ c=$1
+
+ case "${c}" in
+ -isysroot|-arch) # options taking 1 argument
+ a=$2
+ AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c} ${a}])
+ if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null
+ then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no, copy to LDFLAGS])
+ LDFLAGS="${LDFLAGS} ${c} ${a}"
+ fi
+ shift 1
;;
- *)
- AC_MSG_RESULT([no])
- isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'`
- AC_MSG_WARN(-isysroot ${isysroot_dir} is added to LDFLAGS)
- LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}"
+ -m32|-m64) # options taking no argument
+ AC_MSG_RESULT([whether CFLAGS and LDFLAGS share ${c}])
+ if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null
+ then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no, copy to LDFLAGS])
+ LDFLAGS="${LDFLAGS} ${c}"
+ fi
;;
+ # *)
+ # AC_MSG_RESULT([${c} is not copied to LDFLAGS])
+ # ;;
esac
- ;;
-*)
- AC_MSG_RESULT([no])
- ;;
-esac
+
+ shift 1
+done
+set ${save_config_args}
# Whether to use Mac OS resource-based fonts.
diff --git a/src/3rdparty/freetype/builds/unix/freetype-config.in b/src/3rdparty/freetype/builds/unix/freetype-config.in
index 9606d318bd..0a7a767d6e 100644
--- a/src/3rdparty/freetype/builds/unix/freetype-config.in
+++ b/src/3rdparty/freetype/builds/unix/freetype-config.in
@@ -101,11 +101,11 @@ if test "$local_prefix" = "yes" ; then
fi
if test "$echo_prefix" = "yes" ; then
- echo $prefix
+ echo ${SYSROOT}$prefix
fi
if test "$echo_exec_prefix" = "yes" ; then
- echo $exec_prefix
+ echo ${SYSROOT}$exec_prefix
fi
if test "$exec_prefix_set" = "yes" ; then
@@ -118,22 +118,22 @@ else
fi
if test "$echo_ft_version" = "yes" ; then
- major=`grep define $includedir/freetype2/freetype/freetype.h \
+ major=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \
| grep FREETYPE_MAJOR \
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'`
- minor=`grep define $includedir/freetype2/freetype/freetype.h \
+ minor=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \
| grep FREETYPE_MINOR \
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'`
- patch=`grep define $includedir/freetype2/freetype/freetype.h \
+ patch=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \
| grep FREETYPE_PATCH \
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'`
echo $major.$minor.$patch
fi
if test "$echo_cflags" = "yes" ; then
- cflags="-I$includedir/freetype2"
- if test "$includedir" != "/usr/include" ; then
- echo $cflags -I$includedir
+ cflags="-I${SYSROOT}$includedir/freetype2"
+ if test "${SYSROOT}$includedir" != "/usr/include" ; then
+ echo $cflags -I${SYSROOT}$includedir
else
echo $cflags
fi
@@ -145,8 +145,8 @@ if test "$echo_libs" = "yes" ; then
eval "rpath=\"$hardcode_libdir_flag_spec\""
fi
libs="-lfreetype @LIBZ@ @FT2_EXTRA_LIBS@"
- if test "$libdir" != "/usr/lib" && test "$libdir" != "/usr/lib64"; then
- echo -L$libdir $rpath $libs
+ if test "${SYSROOT}$libdir" != "/usr/lib" && test "${SYSROOT}$libdir" != "/usr/lib64"; then
+ echo -L${SYSROOT}$libdir $libs
else
echo $libs
fi
@@ -154,7 +154,7 @@ fi
if test "$echo_libtool" = "yes" ; then
convlib="libfreetype.la"
- echo $libdir/$convlib
+ echo ${SYSROOT}$libdir/$convlib
fi
# EOF
diff --git a/src/3rdparty/freetype/builds/unix/freetype2.m4 b/src/3rdparty/freetype/builds/unix/freetype2.m4
index d1da07d9c1..3d0ecb3554 100644
--- a/src/3rdparty/freetype/builds/unix/freetype2.m4
+++ b/src/3rdparty/freetype/builds/unix/freetype2.m4
@@ -1,7 +1,7 @@
# Configure paths for FreeType2
# Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor
#
-# Copyright 2001, 2003, 2007 by
+# Copyright 2001, 2003, 2007, 2009 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,7 @@
# generated by Autoconf, under the same distribution terms as the rest of
# that program.
#
-# serial 2
+# serial 3
# AC_CHECK_FT2([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
# Test for FreeType 2, and define FT2_CFLAGS and FT2_LIBS.
@@ -60,7 +60,9 @@ AC_DEFUN([AC_CHECK_FT2],
fi
fi
- AC_PATH_PROG([FT2_CONFIG], [freetype-config], [no])
+ if test "x$FT2_CONFIG" = x ; then
+ AC_PATH_PROG([FT2_CONFIG], [freetype-config], [no])
+ fi
min_ft_version=m4_if([$1], [], [7.0.1], [$1])
AC_MSG_CHECKING([for FreeType -- version >= $min_ft_version])
diff --git a/src/3rdparty/freetype/builds/unix/ftconfig.in b/src/3rdparty/freetype/builds/unix/ftconfig.in
index 0adfdcf64a..c5e4e46b40 100644
--- a/src/3rdparty/freetype/builds/unix/ftconfig.in
+++ b/src/3rdparty/freetype/builds/unix/ftconfig.in
@@ -298,7 +298,7 @@ FT_BEGIN_HEADER
register FT_Int32 t, t2;
- asm __volatile__ (
+ __asm__ __volatile__ (
"smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */
"mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */
"add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */
diff --git a/src/3rdparty/freetype/builds/unix/ftsystem.c b/src/3rdparty/freetype/builds/unix/ftsystem.c
index 5c38090166..95f8271ec3 100644
--- a/src/3rdparty/freetype/builds/unix/ftsystem.c
+++ b/src/3rdparty/freetype/builds/unix/ftsystem.c
@@ -69,9 +69,6 @@
#include <string.h>
#include <errno.h>
-#ifdef VXWORKS
-#include <ioLib.h>
-#endif
/*************************************************************************/
/* */
@@ -241,7 +238,7 @@
return FT_Err_Invalid_Stream_Handle;
/* open the file */
- file = open( filepathname, O_RDONLY, 0);
+ file = open( filepathname, O_RDONLY );
if ( file < 0 )
{
FT_ERROR(( "FT_Stream_Open:" ));
@@ -325,11 +322,7 @@
read_count = read( file,
-#ifndef VXWORKS
stream->base + total_read_count,
-#else
- (char *) stream->base + total_read_count,
-#endif
stream->size - total_read_count );
if ( read_count <= 0 )
diff --git a/src/3rdparty/freetype/builds/unix/install-sh b/src/3rdparty/freetype/builds/unix/install-sh
index a5897de6ea..6781b987bd 100755
--- a/src/3rdparty/freetype/builds/unix/install-sh
+++ b/src/3rdparty/freetype/builds/unix/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2006-12-25.00
+scriptversion=2009-04-28.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -515,5 +515,6 @@ done
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End:
diff --git a/src/3rdparty/freetype/builds/unix/ltmain.sh b/src/3rdparty/freetype/builds/unix/ltmain.sh
index b36c4ad366..a72f2fd78b 100755
--- a/src/3rdparty/freetype/builds/unix/ltmain.sh
+++ b/src/3rdparty/freetype/builds/unix/ltmain.sh
@@ -1,6 +1,6 @@
# Generated from ltmain.m4sh.
-# ltmain.sh (GNU libtool) 2.2.6
+# ltmain.sh (GNU libtool) 2.2.6b
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
@@ -65,7 +65,7 @@
# compiler: $LTCC
# compiler flags: $LTCFLAGS
# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.2.6
+# $progname: (GNU libtool) 2.2.6b
# automake: $automake_version
# autoconf: $autoconf_version
#
@@ -73,9 +73,9 @@
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=2.2.6
+VERSION=2.2.6b
TIMESTAMP=""
-package_revision=1.3012
+package_revision=1.3017
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -116,15 +116,15 @@ $lt_unset CDPATH
: ${CP="cp -f"}
: ${ECHO="echo"}
-: ${EGREP="/usr/bin/grep -E"}
-: ${FGREP="/usr/bin/grep -F"}
-: ${GREP="/usr/bin/grep"}
+: ${EGREP="/bin/grep -E"}
+: ${FGREP="/bin/grep -F"}
+: ${GREP="/bin/grep"}
: ${LN_S="ln -s"}
: ${MAKE="make"}
: ${MKDIR="mkdir"}
: ${MV="mv -f"}
: ${RM="rm -f"}
-: ${SED="/opt/local/bin/gsed"}
+: ${SED="/bin/sed"}
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
: ${Xsed="$SED -e 1s/^X//"}
diff --git a/src/3rdparty/freetype/builds/win32/ftdebug.c b/src/3rdparty/freetype/builds/win32/ftdebug.c
index 8f7a9ab07d..d1ca15ac95 100644
--- a/src/3rdparty/freetype/builds/win32/ftdebug.c
+++ b/src/3rdparty/freetype/builds/win32/ftdebug.c
@@ -4,7 +4,7 @@
/* */
/* Debugging and logging component for Win32 (body). */
/* */
-/* Copyright 1996-2001, 2002, 2005, 2008 by */
+/* Copyright 1996-2001, 2002, 2005, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -55,29 +55,6 @@
#include <windows.h>
-#ifdef _WIN32_WCE
-
- void
- OutputDebugStringEx( const char* str )
- {
- static WCHAR buf[8192];
-
-
- int sz = MultiByteToWideChar( CP_ACP, 0, str, -1, buf,
- sizeof ( buf ) / sizeof ( *buf ) );
- if ( !sz )
- lstrcpyW( buf, L"OutputDebugStringEx: MultiByteToWideChar failed" );
-
- OutputDebugStringW( buf );
- }
-
-#else
-
-#define OutputDebugStringEx OutputDebugStringA
-
-#endif
-
-
FT_BASE_DEF( void )
FT_Message( const char* fmt, ... )
{
@@ -89,7 +66,7 @@
vprintf( fmt, ap );
/* send the string to the debugger as well */
vsprintf( buf, fmt, ap );
- OutputDebugStringEx( buf );
+ OutputDebugStringA( buf );
va_end( ap );
}
@@ -103,7 +80,7 @@
va_start( ap, fmt );
vsprintf( buf, fmt, ap );
- OutputDebugStringEx( buf );
+ OutputDebugStringA( buf );
va_end( ap );
exit( EXIT_FAILURE );
@@ -149,19 +126,8 @@
FT_BASE_DEF( void )
ft_debug_init( void )
{
-#ifdef _WIN32_WCE
-
- /* Windows Mobile doesn't have environment API: */
- /* GetEnvironmentStrings, GetEnvironmentVariable, getenv. */
- /* */
- /* FIXME!!! How to set debug mode? */
- const char* ft2_debug = 0;
-
-#else
-
const char* ft2_debug = getenv( "FT2_DEBUG" );
-#endif
if ( ft2_debug )
{
diff --git a/src/3rdparty/freetype/builds/win32/vc2005/freetype.sln b/src/3rdparty/freetype/builds/win32/vc2005/freetype.sln
index 20492031e0..b90da27bb3 100644
--- a/src/3rdparty/freetype/builds/win32/vc2005/freetype.sln
+++ b/src/3rdparty/freetype/builds/win32/vc2005/freetype.sln
@@ -1,4 +1,4 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
+Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
EndProject
diff --git a/src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj b/src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj
index bd8634c594..3dde2b672f 100644
--- a/src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj
+++ b/src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj
@@ -16,7 +16,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -33,7 +33,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -50,7 +50,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -67,7 +67,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -84,7 +84,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -101,7 +101,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -374,6 +374,14 @@
</File>
<File RelativePath="..\..\..\src\base\ftwinfnt.c">
</File>
+ <File RelativePath="..\..\..\src\base\ftlcdfil.c">
+ </File>
+ <File RelativePath="..\..\..\src\base\ftgxval.c">
+ </File>
+ <File RelativePath="..\..\..\src\base\ftotval.c">
+ </File>
+ <File RelativePath="..\..\..\src\base\ftpatent.c">
+ </File>
<File RelativePath="..\..\..\src\pcf\pcf.c">
<FileConfiguration Name="Release|Win32">
<Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />
diff --git a/src/3rdparty/freetype/builds/win32/vc2005/index.html b/src/3rdparty/freetype/builds/win32/vc2005/index.html
index 41d5e0a0a1..7773882282 100644
--- a/src/3rdparty/freetype/builds/win32/vc2005/index.html
+++ b/src/3rdparty/freetype/builds/win32/vc2005/index.html
@@ -11,14 +11,14 @@
<p>This directory contains project files for Visual C++, named
<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
-compiles the following libraries from the FreeType 2.3.9 sources:</p>
+compiles the following libraries from the FreeType 2.3.12 sources:</p>
<ul>
<pre>
- freetype239.lib - release build; single threaded
- freetype239_D.lib - debug build; single threaded
- freetype239MT.lib - release build; multi-threaded
- freetype239MT_D.lib - debug build; multi-threaded</pre>
+ freetype2312.lib - release build; single threaded
+ freetype2312_D.lib - debug build; single threaded
+ freetype2312MT.lib - release build; multi-threaded
+ freetype2312MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
diff --git a/src/3rdparty/freetype/builds/win32/vc2008/freetype.vcproj b/src/3rdparty/freetype/builds/win32/vc2008/freetype.vcproj
index 07d950b0fc..97e44e0a27 100644
--- a/src/3rdparty/freetype/builds/win32/vc2008/freetype.vcproj
+++ b/src/3rdparty/freetype/builds/win32/vc2008/freetype.vcproj
@@ -70,7 +70,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype239.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype2312.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -145,7 +145,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype239MT.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -220,7 +220,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype239ST.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype2312ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -292,7 +292,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype239_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype2312_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -365,7 +365,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype239ST_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype2312ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -439,7 +439,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1320,6 +1320,22 @@
>
</File>
<File
+ RelativePath="..\..\..\src\base\ftlcdfil.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftgxval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftotval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftpatent.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\src\pcf\pcf.c"
>
<FileConfiguration
diff --git a/src/3rdparty/freetype/builds/win32/vc2008/index.html b/src/3rdparty/freetype/builds/win32/vc2008/index.html
index 5e349b7117..aa16c384c6 100644
--- a/src/3rdparty/freetype/builds/win32/vc2008/index.html
+++ b/src/3rdparty/freetype/builds/win32/vc2008/index.html
@@ -11,14 +11,14 @@
<p>This directory contains project files for Visual C++, named
<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
-compiles the following libraries from the FreeType 2.3.9 sources:</p>
+compiles the following libraries from the FreeType 2.3.12 sources:</p>
<ul>
<pre>
- freetype239.lib - release build; single threaded
- freetype239_D.lib - debug build; single threaded
- freetype239MT.lib - release build; multi-threaded
- freetype239MT_D.lib - debug build; multi-threaded</pre>
+ freetype2312.lib - release build; single threaded
+ freetype2312_D.lib - debug build; single threaded
+ freetype2312MT.lib - release build; multi-threaded
+ freetype2312MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
diff --git a/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp b/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp
index 556dfb6c75..6764ce1336 100644
--- a/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp
+++ b/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
@@ -78,7 +78,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
@@ -102,8 +102,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype239_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239MT_D.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype2312_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
@@ -126,8 +126,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype239.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239MT.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype2312.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
@@ -151,8 +151,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype239.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype239ST.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype2312ST.lib"
# SUBTRACT LIB32 /nologo
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
@@ -177,8 +177,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype239_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239ST_D.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312ST_D.lib"
!ENDIF
diff --git a/src/3rdparty/freetype/builds/win32/visualc/index.html b/src/3rdparty/freetype/builds/win32/visualc/index.html
index fffcf4fdec..eaf3a5c5b7 100644
--- a/src/3rdparty/freetype/builds/win32/visualc/index.html
+++ b/src/3rdparty/freetype/builds/win32/visualc/index.html
@@ -11,14 +11,14 @@
<p>This directory contains project files for Visual C++, named
<tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
-compiles the following libraries from the FreeType 2.3.9 sources:</p>
+compiles the following libraries from the FreeType 2.3.12 sources:</p>
<ul>
<pre>
- freetype239.lib - release build; single threaded
- freetype239_D.lib - debug build; single threaded
- freetype239MT.lib - release build; multi-threaded
- freetype239MT_D.lib - debug build; multi-threaded</pre>
+ freetype2312.lib - release build; single threaded
+ freetype2312_D.lib - debug build; single threaded
+ freetype2312MT.lib - release build; multi-threaded
+ freetype2312MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
diff --git a/src/3rdparty/freetype/builds/win32/visualce/freetype.dsp b/src/3rdparty/freetype/builds/win32/visualce/freetype.dsp
new file mode 100644
index 0000000000..6764ce1336
--- /dev/null
+++ b/src/3rdparty/freetype/builds/win32/visualce/freetype.dsp
@@ -0,0 +1,400 @@
+# Microsoft Developer Studio Project File - Name="freetype" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=freetype - Win32 Debug Singlethreaded
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "freetype.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Debug Singlethreaded"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "freetype - Win32 Debug Multithreaded" (based on "Win32 (x86) Static Library")
+!MESSAGE "freetype - Win32 Release Multithreaded" (based on "Win32 (x86) Static Library")
+!MESSAGE "freetype - Win32 Release Singlethreaded" (based on "Win32 (x86) Static Library")
+!MESSAGE "freetype - Win32 Debug Singlethreaded" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "freetype - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\objs\release"
+# PROP Intermediate_Dir "..\..\..\objs\release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /MD /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c
+# SUBTRACT CPP /nologo /Z<none> /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
+
+!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\objs\debug"
+# PROP Intermediate_Dir "..\..\..\objs\debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /MDd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c
+# SUBTRACT CPP /nologo /X /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
+
+!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "freetype___Win32_Debug_Multithreaded"
+# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Multithreaded"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\objs\debug_mt"
+# PROP Intermediate_Dir "..\..\..\objs\debug_mt"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c
+# SUBTRACT BASE CPP /X
+# ADD CPP /MTd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c
+# SUBTRACT CPP /nologo /X /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"lib\freetype2312_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT_D.lib"
+
+!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "freetype___Win32_Release_Multithreaded"
+# PROP BASE Intermediate_Dir "freetype___Win32_Release_Multithreaded"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\objs\release_mt"
+# PROP Intermediate_Dir "..\..\..\objs\release_mt"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /Za /W3 /GX /O2 /I "..\freetype\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c
+# ADD CPP /MT /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c
+# SUBTRACT CPP /nologo /Z<none> /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"lib\freetype2312.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT.lib"
+
+!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "freetype___Win32_Release_Singlethreaded"
+# PROP BASE Intermediate_Dir "freetype___Win32_Release_Singlethreaded"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\objs\release_st"
+# PROP Intermediate_Dir "..\..\..\objs\release_st"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c
+# SUBTRACT BASE CPP /YX
+# ADD CPP /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c
+# SUBTRACT CPP /nologo /Z<none> /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype2312ST.lib"
+# SUBTRACT LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "freetype___Win32_Debug_Singlethreaded"
+# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Singlethreaded"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\objs\debug_st"
+# PROP Intermediate_Dir "..\..\..\objs\debug_st"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /Za /W4 /Gm /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c
+# SUBTRACT BASE CPP /X /YX
+# ADD CPP /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c
+# SUBTRACT CPP /nologo /X /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312ST_D.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "freetype - Win32 Release"
+# Name "freetype - Win32 Debug"
+# Name "freetype - Win32 Debug Multithreaded"
+# Name "freetype - Win32 Release Multithreaded"
+# Name "freetype - Win32 Release Singlethreaded"
+# Name "freetype - Win32 Debug Singlethreaded"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\src\autofit\autofit.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\bdf\bdf.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\cff\cff.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftbase.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftbbox.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftbdf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftbitmap.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftfstype.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftgasp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\cache\ftcache.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\ftdebug.c
+# ADD CPP /Ze
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftglyph.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftgxval.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\gzip\ftgzip.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftinit.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\lzw\ftlzw.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftmm.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftotval.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftpfr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftstroke.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftsynth.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftsystem.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\fttype1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftwinfnt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftxf86.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\pcf\pcf.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\pfr\pfr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\psaux\psaux.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\pshinter\pshinter.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\psnames\psmodule.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\raster\raster.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\sfnt\sfnt.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\smooth\smooth.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\truetype\truetype.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\type1\type1.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\cid\type1cid.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\type42\type42.c
+# SUBTRACT CPP /Fr
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\src\winfonts\winfnt.c
+# SUBTRACT CPP /Fr
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\include\ft2build.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\include\freetype\config\ftconfig.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\include\freetype\config\ftheader.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\include\freetype\config\ftmodule.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\include\freetype\config\ftoption.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\include\freetype\config\ftstdlib.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/src/3rdparty/freetype/builds/win32/visualce/freetype.dsw b/src/3rdparty/freetype/builds/win32/visualce/freetype.dsw
new file mode 100644
index 0000000000..b1b375dbbc
--- /dev/null
+++ b/src/3rdparty/freetype/builds/win32/visualce/freetype.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "freetype"=.\freetype.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/src/3rdparty/freetype/builds/win32/visualce/index.html b/src/3rdparty/freetype/builds/win32/visualce/index.html
new file mode 100644
index 0000000000..f4ac4945c1
--- /dev/null
+++ b/src/3rdparty/freetype/builds/win32/visualce/index.html
@@ -0,0 +1,47 @@
+<html>
+<header>
+<title>
+ FreeType&nbsp;2 Project Files for Visual&nbsp;C++ and VS.NET&nbsp;2005
+ (Pocket PC)
+</title>
+
+<body>
+<h1>
+ FreeType&nbsp;2 Project Files for Visual&nbsp;C++ and VS.NET&nbsp;2005
+ (Pocket PC)
+</h1>
+
+<p>This directory contains project files for Visual C++, named
+<tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt> for
+the following targets:
+
+<ul>
+ <li>PPC/SP 2003 (Pocket PC 2003)</li>
+ <li>PPC/SP WM5 (Windows Mobile 5)</li>
+ <li>PPC/SP WM6 (Windows Mobile 6)</li>
+</ul>
+
+It compiles the following libraries from the FreeType 2.3.12 sources:</p>
+
+<ul>
+ <pre>
+ freetype2312.lib - release build; single threaded
+ freetype2312_D.lib - debug build; single threaded
+ freetype2312MT.lib - release build; multi-threaded
+ freetype2312MT_D.lib - debug build; multi-threaded</pre>
+</ul>
+
+<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
+archives are already stored this way, so no further action is required. If
+you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting
+tool to convert the line endings. For example, with <a
+href="http://www.winzip.com">WinZip</a>, you should activate the <it>TAR
+file smart CR/LF Conversion</it> option. Alternatively, you may consider
+using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating
+around, which specifically deal with this particular problem.
+
+<p>Build directories are placed in the top-level <tt>objs</tt>
+directory.</p>
+
+</body>
+</html>
diff --git a/src/3rdparty/freetype/builds/win32/win32-def.mk b/src/3rdparty/freetype/builds/win32/win32-def.mk
index a82b146bf9..e6ae31c3b2 100644
--- a/src/3rdparty/freetype/builds/win32/win32-def.mk
+++ b/src/3rdparty/freetype/builds/win32/win32-def.mk
@@ -22,6 +22,7 @@ PLATFORM := win32
# The executable file extension (for tools). NOTE: WE INCLUDE THE DOT HERE !!
#
E := .exe
+E_BUILD := .exe
# The directory where all library files are placed.
diff --git a/src/3rdparty/freetype/builds/wince/ftdebug.c b/src/3rdparty/freetype/builds/wince/ftdebug.c
index 8f7a9ab07d..272415d3d0 100644
--- a/src/3rdparty/freetype/builds/wince/ftdebug.c
+++ b/src/3rdparty/freetype/builds/wince/ftdebug.c
@@ -2,9 +2,9 @@
/* */
/* ftdebug.c */
/* */
-/* Debugging and logging component for Win32 (body). */
+/* Debugging and logging component for WinCE (body). */
/* */
-/* Copyright 1996-2001, 2002, 2005, 2008 by */
+/* Copyright 1996-2001, 2002, 2005, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -55,8 +55,6 @@
#include <windows.h>
-#ifdef _WIN32_WCE
-
void
OutputDebugStringEx( const char* str )
{
@@ -71,12 +69,6 @@
OutputDebugStringW( buf );
}
-#else
-
-#define OutputDebugStringEx OutputDebugStringA
-
-#endif
-
FT_BASE_DEF( void )
FT_Message( const char* fmt, ... )
@@ -149,19 +141,15 @@
FT_BASE_DEF( void )
ft_debug_init( void )
{
-#ifdef _WIN32_WCE
-
/* Windows Mobile doesn't have environment API: */
/* GetEnvironmentStrings, GetEnvironmentVariable, getenv. */
/* */
/* FIXME!!! How to set debug mode? */
- const char* ft2_debug = 0;
-#else
+ /* const char* ft2_debug = getenv( "FT2_DEBUG" ); */
- const char* ft2_debug = getenv( "FT2_DEBUG" );
+ const char* ft2_debug = 0;
-#endif
if ( ft2_debug )
{
diff --git a/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj b/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj
index fcb9a8d626..14d00e7ccf 100644
--- a/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj
+++ b/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj
@@ -21,7 +21,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -41,7 +41,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -61,7 +61,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -81,7 +81,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -101,7 +101,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -121,7 +121,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -141,7 +141,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -161,7 +161,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -181,7 +181,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -201,7 +201,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -221,7 +221,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -241,7 +241,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -261,7 +261,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -281,7 +281,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -301,7 +301,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -321,7 +321,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -341,7 +341,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -361,7 +361,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -381,7 +381,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -401,7 +401,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -421,7 +421,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -441,7 +441,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -461,7 +461,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -481,7 +481,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -501,7 +501,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -521,7 +521,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -541,7 +541,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -561,7 +561,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -581,7 +581,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -601,7 +601,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -621,7 +621,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -641,7 +641,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -661,7 +661,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -681,7 +681,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -701,7 +701,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -721,7 +721,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -741,7 +741,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -758,7 +758,7 @@
<Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -2131,6 +2131,14 @@
<Filter Name="FT_MODULES">
<File RelativePath="..\..\..\src\base\ftbbox.c">
</File>
+ <File RelativePath="..\..\..\src\base\ftbdf.c">
+ </File>
+ <File RelativePath="..\..\..\src\base\ftcid.c">
+ </File>
+ <File RelativePath="..\..\..\src\base\ftgxval.c">
+ </File>
+ <File RelativePath="..\..\..\src\base\ftlcdfil.c">
+ </File>
<File RelativePath="..\..\..\src\base\ftmm.c">
<FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">
<Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />
@@ -2259,6 +2267,10 @@
<Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />
</FileConfiguration>
</File>
+ <File RelativePath="..\..\..\src\base\ftotval.c">
+ </File>
+ <File RelativePath="..\..\..\src\base\ftpatent.c">
+ </File>
<File RelativePath="..\..\..\src\base\ftpfr.c">
</File>
<File RelativePath="..\..\..\src\base\ftsynth.c">
@@ -2267,6 +2279,8 @@
</File>
<File RelativePath="..\..\..\src\base\ftwinfnt.c">
</File>
+ <File RelativePath="..\..\..\src\base\ftxf86.c">
+ </File>
<File RelativePath="..\..\..\src\pcf\pcf.c">
<FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">
<Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />
diff --git a/src/3rdparty/freetype/builds/wince/vc2005-ce/index.html b/src/3rdparty/freetype/builds/wince/vc2005-ce/index.html
index 780ce41a4a..5d0e2b7d30 100644
--- a/src/3rdparty/freetype/builds/wince/vc2005-ce/index.html
+++ b/src/3rdparty/freetype/builds/wince/vc2005-ce/index.html
@@ -21,14 +21,14 @@ the following targets:
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.3.9 sources:</p>
+It compiles the following libraries from the FreeType 2.3.12 sources:</p>
<ul>
<pre>
- freetype239.lib - release build; single threaded
- freetype239_D.lib - debug build; single threaded
- freetype239MT.lib - release build; multi-threaded
- freetype239MT_D.lib - debug build; multi-threaded</pre>
+ freetype2312.lib - release build; single threaded
+ freetype2312_D.lib - debug build; single threaded
+ freetype2312MT.lib - release build; multi-threaded
+ freetype2312MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
diff --git a/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.vcproj b/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.vcproj
index 2233577f97..2529f7e518 100644
--- a/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.vcproj
+++ b/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.vcproj
@@ -88,7 +88,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -177,7 +177,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -266,7 +266,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -355,7 +355,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -444,7 +444,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -533,7 +533,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -621,7 +621,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -709,7 +709,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -797,7 +797,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -885,7 +885,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -973,7 +973,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1061,7 +1061,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1149,7 +1149,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1236,7 +1236,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1323,7 +1323,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1410,7 +1410,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1497,7 +1497,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1584,7 +1584,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1668,7 +1668,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1753,7 +1753,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1838,7 +1838,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1923,7 +1923,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2008,7 +2008,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2093,7 +2093,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2178,7 +2178,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2263,7 +2263,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2348,7 +2348,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2433,7 +2433,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2518,7 +2518,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2603,7 +2603,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2689,7 +2689,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2775,7 +2775,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2861,7 +2861,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2947,7 +2947,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3033,7 +3033,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3119,7 +3119,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3205,7 +3205,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3279,7 +3279,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -7864,6 +7864,22 @@
>
</File>
<File
+ RelativePath="..\..\..\src\base\ftbdf.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftcid.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftgxval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftlcdfil.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\src\base\ftmm.c"
>
<FileConfiguration
@@ -8291,6 +8307,14 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\..\..\src\base\ftotval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftpatent.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\src\base\ftpfr.c"
>
</File>
@@ -8307,6 +8331,10 @@
>
</File>
<File
+ RelativePath="..\..\..\src\base\ftxf86.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\src\pcf\pcf.c"
>
<FileConfiguration
diff --git a/src/3rdparty/freetype/builds/wince/vc2008-ce/index.html b/src/3rdparty/freetype/builds/wince/vc2008-ce/index.html
index 20e576f85c..781e05f11d 100644
--- a/src/3rdparty/freetype/builds/wince/vc2008-ce/index.html
+++ b/src/3rdparty/freetype/builds/wince/vc2008-ce/index.html
@@ -21,14 +21,14 @@ the following targets:
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.3.9 sources:</p>
+It compiles the following libraries from the FreeType 2.3.12 sources:</p>
<ul>
<pre>
- freetype239.lib - release build; single threaded
- freetype239_D.lib - debug build; single threaded
- freetype239MT.lib - release build; multi-threaded
- freetype239MT_D.lib - debug build; multi-threaded</pre>
+ freetype2312.lib - release build; single threaded
+ freetype2312_D.lib - debug build; single threaded
+ freetype2312MT.lib - release build; multi-threaded
+ freetype2312MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
diff --git a/src/3rdparty/freetype/configure b/src/3rdparty/freetype/configure
index b59d35d07e..2efa269679 100755
--- a/src/3rdparty/freetype/configure
+++ b/src/3rdparty/freetype/configure
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright 2002, 2003, 2004, 2005, 2006, 2008 by
+# Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -67,12 +67,25 @@ ft2_dir=`(dirname "$0") 2>/dev/null ||
abs_curr_dir=`pwd`
abs_ft2_dir=`cd "$ft2_dir" && pwd`
+# `--srcdir=' option can override abs_ft2_dir
+
+if test $# -gt 0; then
+ for x in "$@"; do
+ case x"$x" in
+ x--srcdir=*)
+ abs_ft2_dir=`echo $x | sed 's/^--srcdir=//'` ;;
+ esac
+ done
+fi
+
# build a dummy Makefile if we are not building in the source tree
if test "$abs_curr_dir" != "$abs_ft2_dir"; then
mkdir reference
- echo "Copying \`modules.cfg'"
- cp $abs_ft2_dir/modules.cfg $abs_curr_dir
+ if test ! -r $abs_curr_dir/modules.cfg; then
+ echo "Copying \`modules.cfg'"
+ cp $abs_ft2_dir/modules.cfg $abs_curr_dir
+ fi
echo "Generating \`Makefile'"
echo "TOP_DIR := $abs_ft2_dir" > Makefile
echo "OBJ_DIR := $abs_curr_dir" >> Makefile
@@ -96,7 +109,10 @@ CFG=
case $# in
0) ;;
*) for x in "$@"; do
- CFG="$CFG '$x'"
+ case x"$x" in
+ x--srcdir=* ) CFG="$CFG '$x'/builds/unix" ;;
+ *) CFG="$CFG '$x'" ;;
+ esac
done ;;
esac
CFG=$CFG $GNUMAKE setup unix
diff --git a/src/3rdparty/freetype/devel/ftoption.h b/src/3rdparty/freetype/devel/ftoption.h
index f7f7fcc169..9c6c2fe459 100644
--- a/src/3rdparty/freetype/devel/ftoption.h
+++ b/src/3rdparty/freetype/devel/ftoption.h
@@ -4,7 +4,8 @@
/* */
/* User-selectable configuration macros (specification only). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -85,9 +86,9 @@ FT_BEGIN_HEADER
/* */
/* This macro has no impact on the FreeType API, only on its */
/* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
- /* FT_Render_Glyph still generates a bitmap that is 3 times larger than */
- /* the original size; the difference will be that each triplet of */
- /* subpixels has R=G=B. */
+ /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */
+ /* the original size in case this macro isn't defined; however, each */
+ /* triplet of subpixels has R=G=B. */
/* */
/* This is done to allow FreeType clients to run unmodified, forcing */
/* them to display normal gray-level anti-aliased glyphs. */
@@ -112,7 +113,7 @@ FT_BEGIN_HEADER
/* file `ftconfig.h' either statically or through the */
/* `configure' script on supported platforms. */
/* */
-#undef FT_CONFIG_OPTION_FORCE_INT64
+#undef FT_CONFIG_OPTION_FORCE_INT64
/*************************************************************************/
@@ -184,7 +185,7 @@ FT_BEGIN_HEADER
/* Do not #undef this macro here since the build system might define */
/* it for certain configurations only. */
/* */
-/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
+/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
/*************************************************************************/
@@ -225,20 +226,20 @@ FT_BEGIN_HEADER
/* Do not #undef these macros here since the build system might define */
/* them for certain configurations only. */
/* */
-/* #define FT_EXPORT(x) extern x */
-/* #define FT_EXPORT_DEF(x) x */
+/* #define FT_EXPORT(x) extern x */
+/* #define FT_EXPORT_DEF(x) x */
/*************************************************************************/
/* */
/* Glyph Postscript Names handling */
/* */
- /* By default, FreeType 2 is compiled with the `PSNames' module. This */
+ /* By default, FreeType 2 is compiled with the `psnames' module. This */
/* module is in charge of converting a glyph name string into a */
/* Unicode value, or return a Macintosh standard glyph name for the */
/* use with the TrueType `post' table. */
/* */
- /* Undefine this macro if you do not want `PSNames' compiled in your */
+ /* Undefine this macro if you do not want `psnames' compiled in your */
/* build of FreeType. This has the following effects: */
/* */
/* - The TrueType driver will provide its own set of glyph names, */
@@ -312,10 +313,11 @@ FT_BEGIN_HEADER
/* */
/* Allow the use of FT_Incremental_Interface to load typefaces that */
/* contain no glyph data, but supply it via a callback function. */
- /* This allows FreeType to be used with the PostScript language, using */
- /* the GhostScript interpreter. */
+ /* This is required by clients supporting document formats which */
+ /* supply font data incrementally as the document is parsed, such */
+ /* as the Ghostscript interpreter for the PostScript language. */
/* */
-/* #define FT_CONFIG_OPTION_INCREMENTAL */
+#define FT_CONFIG_OPTION_INCREMENTAL
/*************************************************************************/
@@ -396,6 +398,20 @@ FT_BEGIN_HEADER
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
+ /*************************************************************************/
+ /* */
+ /* Position Independent Code */
+ /* */
+ /* If this macro is set (which is _not_ the default), FreeType2 will */
+ /* avoid creating constants that require address fixups. Instead the */
+ /* constants will be moved into a struct and additional intialization */
+ /* code will be used. */
+ /* */
+ /* Setting this macro is needed for systems that prohibit address */
+ /* fixups, such as BREW. */
+ /* */
+/* #define FT_CONFIG_OPTION_PIC */
+
/*************************************************************************/
/*************************************************************************/
@@ -439,7 +455,7 @@ FT_BEGIN_HEADER
/* does not contain any glyph name though. */
/* */
/* Accessing SFNT names is done through the functions declared in */
- /* `freetype/ftnames.h'. */
+ /* `freetype/ftsnames.h'. */
/* */
#define TT_CONFIG_OPTION_SFNT_NAMES
@@ -457,6 +473,7 @@ FT_BEGIN_HEADER
#define TT_CONFIG_CMAP_FORMAT_8
#define TT_CONFIG_CMAP_FORMAT_10
#define TT_CONFIG_CMAP_FORMAT_12
+#define TT_CONFIG_CMAP_FORMAT_13
#define TT_CONFIG_CMAP_FORMAT_14
@@ -651,7 +668,6 @@ FT_BEGIN_HEADER
/* */
#define AF_CONFIG_OPTION_CJK
-
/*************************************************************************/
/* */
/* Compile autofit module with Indic script support. */
@@ -671,11 +687,11 @@ FT_BEGIN_HEADER
* is recommended to disable the macro since it reduces the library's code
* size and activates a few memory-saving optimizations as well.
*/
-#undef FT_CONFIG_OPTION_OLD_INTERNALS
+/* #define FT_CONFIG_OPTION_OLD_INTERNALS */
/*
- * This variable is defined if either unpatented or native TrueType
+ * This macro is defined if either unpatented or native TrueType
* hinting is requested by the definitions above.
*/
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
diff --git a/src/3rdparty/freetype/docs/CHANGES b/src/3rdparty/freetype/docs/CHANGES
index 9eb68c2924..018d16c577 100644
--- a/src/3rdparty/freetype/docs/CHANGES
+++ b/src/3rdparty/freetype/docs/CHANGES
@@ -1,3 +1,82 @@
+CHANGES BETWEEN 2.3.11 and 2.3.12
+
+ I. IMPORTANT CHANGES
+
+ - For `FT_Open_Face', new parameters are available to ignore
+ preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
+ FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
+
+ II. MISCELLANEOUS
+
+ - Support for incremental font loading (controlled with the
+ FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
+
+ - Better support for vertical metrics.
+
+ - Various minor bug fixes.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.10 and 2.3.11
+
+ I. IMPORTANT BUG FIXES
+
+ - Version 2.3.10 broke PCF support.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.10 and 2.3.9
+
+ I. IMPORTANT BUG FIXES
+
+ - If all ASCII digits in a font have the same (unscaled) width,
+ the autohinter respects this and won't change it.
+
+ - TrueType fonts are now rasterized correctly if the horizontal
+ and vertical resolution differ.
+
+ - Type 1 fonts are now handled with increased precision internally
+ to avoid serious rounding issues if non-integral coordinates are
+ encountered.
+
+ - Horizontally condensed CFF fonts (using the font matrix) were
+ rendered incorrectly. This bug has been introduced after
+ release 2.3.5.
+
+
+ II. IMPORTANT CHANGES
+
+ - Support for the SFNT cmap 13 table format (as defined by the new
+ OpenType 1.6 specification) has been added.
+
+ - B/W rasterization of well-hinted TrueType fonts at small sizes
+ has been greatly improved.
+
+ - Calculation of vertical metrics in OpenType fonts has been
+ improved.
+
+
+ III. MISCELLANEOUS
+
+ - It is now possible to change the emboldening factor in the
+ `ftview' demo program with keys `e' and `E'.
+
+ - It is now possible to change the slant value in the `ftview'
+ demo program with keys `s' and `S'.
+
+ - The 5-levels grayscale mode of the `ftraster' module (which
+ FreeType doesn't use by default) was broken since version 2.3.0.
+
+ - Compilation of the `ftgrays' and `ftraster' modules was broken
+ in stand-alone mode.
+
+ - Various fixes for compilation on 64bit and 16bit architectures.
+
+
+======================================================================
+
CHANGES BETWEEN 2.3.9 and 2.3.8
I. IMPORTANT BUG FIXES
diff --git a/src/3rdparty/freetype/docs/DEBUG b/src/3rdparty/freetype/docs/DEBUG
index 1fccc21c46..3d6acd3bb0 100644
--- a/src/3rdparty/freetype/docs/DEBUG
+++ b/src/3rdparty/freetype/docs/DEBUG
@@ -92,7 +92,10 @@ its code:
The value of the FT_COMPONENT macro is an enumeration named
trace_XXXX where XXXX is one of the component names defined in the
- internal file `freetype/internal/fttrace.h'.
+ internal file `freetype/internal/fttrace.h'. If you modify FreeType
+ source and insert new trace_XXXX macro, you must register it in
+ fttrace.h. If you insert or remove many trace macros, you can check
+ the undefined or the unused trace macro by src/tools/chktrcmp.py.
Each such component is assigned a `debug level', ranging from 0
to 7, through the use of the FT2_DEBUG environment variable
@@ -186,7 +189,7 @@ behaviour of FreeType at runtime.
------------------------------------------------------------------------
-Copyright 2002, 2003, 2004, 2005 by
+Copyright 2002, 2003, 2004, 2005, 2009 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/src/3rdparty/freetype/docs/INSTALL.ANY b/src/3rdparty/freetype/docs/INSTALL.ANY
index 86e94d585f..44b785c67e 100644
--- a/src/3rdparty/freetype/docs/INSTALL.ANY
+++ b/src/3rdparty/freetype/docs/INSTALL.ANY
@@ -127,10 +127,10 @@ II. Support for flat-directory compilation
2. Compile sources
- cc -c -Ifreetype2/include ftsystem.c
- cc -c -Ifreetype2/include ftinit.c
- cc -c -Ifreetype2/include ftdebug.c
- cc -c -Ifreetype2/include ftbase.c
+ cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftsystem.c
+ cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftinit.c
+ cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftdebug.c
+ cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftbase.c
etc.
You don't need to define the FT_FLAT_COMPILATION macro (as this
@@ -138,7 +138,7 @@ II. Support for flat-directory compilation
----------------------------------------------------------------------
-Copyright 2003, 2005, 2006, 2009 by
+Copyright 2003, 2005, 2006, 2009, 2010 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/src/3rdparty/freetype/docs/LICENSE.TXT b/src/3rdparty/freetype/docs/LICENSE.TXT
index 102a03d651..abebbcc780 100644
--- a/src/3rdparty/freetype/docs/LICENSE.TXT
+++ b/src/3rdparty/freetype/docs/LICENSE.TXT
@@ -20,9 +20,12 @@ any of your projects or products.
GPL. Note that the FTL is incompatible with the GPL due to its
advertisement clause.
-The contributed PCF driver comes with a license similar to that of the X
-Window System. It is compatible to the above two licenses (see file
-src/pcf/readme).
+The contributed BDF and PCF drivers come with a license similar to that
+of the X Window System. It is compatible to the above two licenses (see
+file src/bdf/README and src/pcf/README).
+
+The gzip module uses the zlib license (see src/gzip/zlib.h) which too is
+compatible to the above two licenses.
--- end of LICENSE.TXT ---
diff --git a/src/3rdparty/freetype/docs/VERSION.DLL b/src/3rdparty/freetype/docs/VERSION.DLL
index 6b028b12f9..bb55c3dda9 100644
--- a/src/3rdparty/freetype/docs/VERSION.DLL
+++ b/src/3rdparty/freetype/docs/VERSION.DLL
@@ -53,6 +53,9 @@ systems, but not all of them:
release libtool so
-------------------------------
+ 2.3.12 10.0.4 6.4.0
+ 2.3.11 9.22.3 6.3.22
+ 2.3.10 9.21.3 6.3.21
2.3.9 9.20.3 6.3.20
2.3.8 9.19.3 6.3.19
2.3.7 9.18.3 6.3.18
@@ -122,7 +125,7 @@ other release numbers.
------------------------------------------------------------------------
-Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
+Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/src/3rdparty/freetype/docs/reference/ft2-base_interface.html b/src/3rdparty/freetype/docs/reference/ft2-base_interface.html
index 27f454b675..08f2a81b84 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-base_interface.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-base_interface.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Base Interface
@@ -78,6 +78,14 @@ Base Interface
<table align=center width="75%"><tr><td>
<h4><a name="FT_Library">FT_Library</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_LibraryRec_ *<b>FT_Library</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a FreeType library instance. Each &lsquo;library&rsquo; is completely independent from the others; it is the &lsquo;root&rsquo; of a set of objects like fonts, faces, sizes, etc.</p>
<p>It also embeds a memory manager (see <a href="ft2-system_interface.html#FT_Memory">FT_Memory</a>), as well as a scan-line converter object (see <a href="ft2-raster.html#FT_Raster">FT_Raster</a>).</p>
<p>For multi-threading applications each thread should have its own FT_Library object.</p>
@@ -94,6 +102,14 @@ Base Interface
<table align=center width="75%"><tr><td>
<h4><a name="FT_Face">FT_Face</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_FaceRec_* <b>FT_Face</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a given typographic face object. A face object models a given typeface, in a given style.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
@@ -113,6 +129,14 @@ Base Interface
<table align=center width="75%"><tr><td>
<h4><a name="FT_Size">FT_Size</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_SizeRec_* <b>FT_Size</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an object used to model a face scaled to a given character size.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
@@ -132,6 +156,14 @@ Base Interface
<table align=center width="75%"><tr><td>
<h4><a name="FT_GlyphSlot">FT_GlyphSlot</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_GlyphSlotRec_* <b>FT_GlyphSlot</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a given &lsquo;glyph slot&rsquo;. A slot is a container where it is possible to load any of the glyphs contained in its parent face.</p>
<p>In other words, each time you call <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a> or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a>, the slot's content is erased by the new glyph data, i.e., the glyph's metrics, its image (bitmap or outline), and other control information.</p>
</td></tr></table><br>
@@ -147,6 +179,14 @@ Base Interface
<table align=center width="75%"><tr><td>
<h4><a name="FT_CharMap">FT_CharMap</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_CharMapRec_* <b>FT_CharMap</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a given character map. A charmap is used to translate character codes in a given encoding into glyph indexes for its parent's face. Some font formats may provide several charmaps per font.</p>
<p>Each face object owns zero or more charmaps, but only one of them can be &lsquo;active&rsquo; and used by <a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a> or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a>.</p>
<p>The list of available charmaps in a face is available through the &lsquo;face-&gt;num_charmaps&rsquo; and &lsquo;face-&gt;charmaps&rsquo; fields of <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a>.</p>
@@ -207,8 +247,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<p>An enumeration used to specify character sets supported by charmaps. Used in the <a href="ft2-base_interface.html#FT_Select_Charmap">FT_Select_Charmap</a> API function.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
-<p>Despite the name, this enumeration lists specific character repertories (i.e., charsets), and not text encoding methods (e.g., UTF-8, UTF-16, GB2312_EUC, etc.).</p>
-<p>Because of 32-bit charcodes defined in Unicode (i.e., surrogates), all character codes must be expressed as FT_Longs.</p>
+<p>Despite the name, this enumeration lists specific character repertories (i.e., charsets), and not text encoding methods (e.g., UTF-8, UTF-16, etc.).</p>
<p>Other encodings might be defined in the future.</p>
</td></tr></table>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>values</b></em></td></tr><tr><td>
@@ -219,6 +258,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
</td></tr>
<tr valign=top><td><b>FT_ENCODING_UNICODE</b></td><td>
<p>Corresponds to the Unicode character set. This value covers all versions of the Unicode repertoire, including ASCII and Latin-1. Most fonts include a Unicode charmap, but not all of them.</p>
+<p>For example, if you want to access Unicode value U+1F028 (and the font contains it), use value 0x1F028 as the input value for <a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a>.</p>
</td></tr>
<tr valign=top><td><b>FT_ENCODING_MS_SYMBOL</b></td><td>
<p>Corresponds to the Microsoft Symbol encoding, used to encode mathematical symbols in the 32..255 character code range. For more information, see &lsquo;http://www.ceviz.net/symbol.htm&rsquo;.</p>
@@ -349,6 +389,9 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
</td></tr>
</table>
</td></tr></table>
+<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
+<p>If not disabled with <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_HINTING</a>, the values represent dimensions of the hinted glyph (in case hinting is applicable).</p>
+</td></tr></table>
</td></tr></table>
<hr width="75%">
<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
@@ -411,6 +454,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Module">FT_Module</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ModuleRec_* <b>FT_Module</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a given FreeType module object. Each module can be a font driver, a renderer, or anything else that provides services to the formers.</p>
</td></tr></table><br>
</td></tr></table>
@@ -422,6 +473,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Driver">FT_Driver</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_DriverRec_* <b>FT_Driver</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a given FreeType font driver object. Each font driver is a special module capable of creating faces from font files.</p>
</td></tr></table><br>
</td></tr></table>
@@ -433,6 +492,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Renderer">FT_Renderer</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_RendererRec_* <b>FT_Renderer</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a given FreeType renderer. A renderer is a special module in charge of converting a glyph image to a bitmap, when necessary. Each renderer supports a given glyph image format, and one or more target surface depths.</p>
</td></tr></table><br>
</td></tr></table>
@@ -553,6 +620,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Face_Internal">FT_Face_Internal</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Face_InternalRec_* <b>FT_Face_Internal</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An opaque handle to an &lsquo;FT_Face_InternalRec&rsquo; structure, used to model private data of a given <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object.</p>
<p>This structure might change between releases of FreeType&nbsp;2 and is not generally available to client applications.</p>
</td></tr></table><br>
@@ -955,6 +1030,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_HAS_FAST_GLYPHS</b>( face ) 0
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>Deprecated.</p>
</td></tr></table><br>
</td></tr></table>
@@ -1081,6 +1164,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Size_Internal">FT_Size_Internal</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Size_InternalRec_* <b>FT_Size_Internal</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An opaque handle to an &lsquo;FT_Size_InternalRec&rsquo; structure, used to model private data of a given <a href="ft2-base_interface.html#FT_Size">FT_Size</a> object.</p>
</td></tr></table><br>
</td></tr></table>
@@ -1199,6 +1290,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_SubGlyph">FT_SubGlyph</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_SubGlyphRec_* <b>FT_SubGlyph</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>The subglyph structure is an internal object used to describe subglyphs (for example, in the case of composites).</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
@@ -1214,6 +1313,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Slot_Internal">FT_Slot_Internal</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Slot_InternalRec_* <b>FT_Slot_Internal</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An opaque handle to an &lsquo;FT_Slot_InternalRec&rsquo; structure, used to model private data of a given <a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a> object.</p>
</td></tr></table><br>
</td></tr></table>
@@ -1295,7 +1402,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<p>The advance height of the unhinted glyph. Its value is expressed in 16.16 fractional pixels, unless <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_LINEAR_DESIGN</a> is set when loading the glyph. This field can be important to perform correct WYSIWYG layout. Only relevant for outline glyphs.</p>
</td></tr>
<tr valign=top><td><b>advance</b></td><td>
-<p>This is the transformed advance width for the glyph (in 26.6 fractional pixel format).</p>
+<p>This shorthand is, depending on <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_TRANSFORM</a>, the transformed advance width for the glyph (in 26.6 fractional pixel format). As specified with <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_VERTICAL_LAYOUT</a>, it uses either the &lsquo;horiAdvance&rsquo; or the &lsquo;vertAdvance&rsquo; value of &lsquo;metrics&rsquo; field.</p>
</td></tr>
<tr valign=top><td><b>format</b></td><td>
<p>This field indicates the format of the image contained in the glyph slot. Typically <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a>, <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a>, or <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a>, but others are possible.</p>
@@ -1398,6 +1505,9 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
<p>FreeType error code. 0&nbsp;means success.</p>
</td></tr></table>
+<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
+<p>In case you want to provide your own memory allocating routines, use <a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a> instead, followed by a call to <a href="ft2-module_management.html#FT_Add_Default_Modules">FT_Add_Default_Modules</a> (or a series of calls to <a href="ft2-module_management.html#FT_Add_Module">FT_Add_Module</a>).</p>
+</td></tr></table>
</td></tr></table>
<hr width="75%">
<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
@@ -1532,7 +1642,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
</table>
</td></tr></table>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
-<p>The ID and function of parameters are driver-specific.</p>
+<p>The ID and function of parameters are driver-specific. See the various FT_PARAM_TAG_XXX flags for more information.</p>
</td></tr></table>
</td></tr></table>
<hr width="75%">
@@ -2045,6 +2155,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Size_Request">FT_Size_Request</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Size_RequestRec_ *<b>FT_Size_Request</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a size request structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -2457,6 +2575,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_LOAD_TARGET_MODE</b>( x ) ( (<a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a>)( ( (x) &gt;&gt; 16 ) &amp; 15 ) )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>Return the <a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a> corresponding to a given <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a> value.</p>
</td></tr></table><br>
</td></tr></table>
@@ -2678,6 +2804,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="ft_kerning_default">ft_kerning_default</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>ft_kerning_default</b> <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a>
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This constant is deprecated. Please use <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a> instead.</p>
</td></tr></table><br>
</td></tr></table>
@@ -2689,6 +2823,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="ft_kerning_unfitted">ft_kerning_unfitted</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>ft_kerning_unfitted</b> <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a>
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This constant is deprecated. Please use <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a> instead.</p>
</td></tr></table><br>
</td></tr></table>
@@ -2700,6 +2842,14 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
<table align=center width="75%"><tr><td>
<h4><a name="ft_kerning_unscaled">ft_kerning_unscaled</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_FREETYPE_H (freetype/freetype.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>ft_kerning_unscaled</b> <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a>
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This constant is deprecated. Please use <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a> instead.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-basic_types.html b/src/3rdparty/freetype/docs/reference/ft2-basic_types.html
index 9e77145b6a..8df510ffb8 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-basic_types.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-basic_types.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Basic Data Types
@@ -64,6 +64,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Byte">FT_Byte</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">char</span> <b>FT_Byte</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A simple typedef for the <i>unsigned</i> char type.</p>
</td></tr></table><br>
</td></tr></table>
@@ -75,6 +83,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Bytes">FT_Bytes</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <a href="ft2-basic_types.html#FT_Byte">FT_Byte</a>* <b>FT_Bytes</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for constant memory areas.</p>
</td></tr></table><br>
</td></tr></table>
@@ -86,6 +102,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Char">FT_Char</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">char</span> <b>FT_Char</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A simple typedef for the <i>signed</i> char type.</p>
</td></tr></table><br>
</td></tr></table>
@@ -97,6 +121,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Int">FT_Int</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">int</span> <b>FT_Int</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for the int type.</p>
</td></tr></table><br>
</td></tr></table>
@@ -108,6 +140,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_UInt">FT_UInt</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <b>FT_UInt</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for the unsigned int type.</p>
</td></tr></table><br>
</td></tr></table>
@@ -119,6 +159,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Int16">FT_Int16</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_Int16</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for a 16bit signed integer type.</p>
</td></tr></table><br>
</td></tr></table>
@@ -130,6 +178,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_UInt16">FT_UInt16</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <b>FT_UInt16</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for a 16bit unsigned integer type.</p>
</td></tr></table><br>
</td></tr></table>
@@ -141,6 +197,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Int32">FT_Int32</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> XXX <b>FT_Int32</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for a 32bit signed integer type. The size depends on the configuration.</p>
</td></tr></table><br>
</td></tr></table>
@@ -151,6 +215,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_UInt32">FT_UInt32</a></h4>
+<table align=center width="87%"><tr><td>
+Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> XXX <b>FT_UInt32</b>;
+
+</pre></table><br>
</td></tr></table>
<hr width="75%">
<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
@@ -160,6 +232,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Short">FT_Short</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_Short</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for signed short.</p>
</td></tr></table><br>
</td></tr></table>
@@ -171,6 +251,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_UShort">FT_UShort</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <b>FT_UShort</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for unsigned short.</p>
</td></tr></table><br>
</td></tr></table>
@@ -182,6 +270,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Long">FT_Long</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_Long</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for signed long.</p>
</td></tr></table><br>
</td></tr></table>
@@ -193,6 +289,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_ULong">FT_ULong</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <b>FT_ULong</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for unsigned long.</p>
</td></tr></table><br>
</td></tr></table>
@@ -204,6 +308,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Bool">FT_Bool</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">char</span> <b>FT_Bool</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef of unsigned char, used for simple booleans. As usual, values 1 and&nbsp;0 represent true and false, respectively.</p>
</td></tr></table><br>
</td></tr></table>
@@ -215,6 +327,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Offset">FT_Offset</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> size_t <b>FT_Offset</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This is equivalent to the ANSI&nbsp;C &lsquo;size_t&rsquo; type, i.e., the largest <i>unsigned</i> integer type used to express a file size or position, or a memory block size.</p>
</td></tr></table><br>
</td></tr></table>
@@ -226,6 +346,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_PtrDist">FT_PtrDist</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> ft_ptrdiff_t <b>FT_PtrDist</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This is equivalent to the ANSI&nbsp;C &lsquo;ptrdiff_t&rsquo; type, i.e., the largest <i>signed</i> integer type used to express the distance between two pointers.</p>
</td></tr></table><br>
</td></tr></table>
@@ -237,6 +365,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_String">FT_String</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">char</span> <b>FT_String</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A simple typedef for the char type, usually used for strings.</p>
</td></tr></table><br>
</td></tr></table>
@@ -248,6 +384,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Tag">FT_Tag</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <a href="ft2-basic_types.html#FT_UInt32">FT_UInt32</a> <b>FT_Tag</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A typedef for 32-bit tags (as used in the SFNT format).</p>
</td></tr></table><br>
</td></tr></table>
@@ -259,6 +403,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Error">FT_Error</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">int</span> <b>FT_Error</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>The FreeType error code type. A value of&nbsp;0 is always interpreted as a successful operation.</p>
</td></tr></table><br>
</td></tr></table>
@@ -270,6 +422,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Fixed">FT_Fixed</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_Fixed</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This type is used to store 16.16 fixed float values, like scaling values or matrix coefficients.</p>
</td></tr></table><br>
</td></tr></table>
@@ -281,6 +441,14 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Pointer">FT_Pointer</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">void</span>* <b>FT_Pointer</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A simple typedef for a typeless pointer.</p>
</td></tr></table><br>
</td></tr></table>
@@ -292,7 +460,15 @@ Basic Data Types
<table align=center width="75%"><tr><td>
<h4><a name="FT_Pos">FT_Pos</a></h4>
<table align=center width="87%"><tr><td>
-<p>The type FT_Pos is a 32-bit integer used to store vectorial coordinates. Depending on the context, these can represent distances in integer font units, or 16.16, or 26.6 fixed float pixel coordinates.</p>
+Defined in FT_IMAGE_H (freetype/ftimage.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_Pos</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
+<p>The type FT_Pos is used to store vectorial coordinates. Depending on the context, these can represent distances in integer font units, or 16.16, or 26.6 fixed float pixel coordinates.</p>
</td></tr></table><br>
</td></tr></table>
<hr width="75%">
@@ -370,6 +546,11 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</td></tr>
</table>
</td></tr></table>
+<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
+<p>The bounding box is specified with the coordinates of the lower left and the upper right corner. In PostScript, those values are often called (llx,lly) and (urx,ury), respectively.</p>
+<p>If &lsquo;yMin&rsquo; is negative, this value gives the glyph's descender. Otherwise, the glyph doesn't descend below the baseline. Similarly, if &lsquo;ymax&rsquo; is positive, this value gives the glyph's ascender.</p>
+<p>&lsquo;xMin&rsquo; gives the horizontal distance from the glyph's origin to the left edge of the glyph's bounding box. If &lsquo;xMin&rsquo; is negative, the glyph extends to the left of the origin.</p>
+</td></tr></table>
</td></tr></table>
<hr width="75%">
<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
@@ -424,6 +605,14 @@ Defined in FT_TYPES_H (freetype/fttypes.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_FWord">FT_FWord</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_FWord</b>; /* distance in FUnits */
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A signed 16-bit integer used to store a distance in original font units.</p>
</td></tr></table><br>
</td></tr></table>
@@ -435,6 +624,14 @@ Defined in FT_TYPES_H (freetype/fttypes.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_UFWord">FT_UFWord</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <b>FT_UFWord</b>; /* <span class="keyword">unsigned</span> distance */
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An unsigned 16-bit integer used to store a distance in original font units.</p>
</td></tr></table><br>
</td></tr></table>
@@ -446,6 +643,14 @@ Defined in FT_TYPES_H (freetype/fttypes.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_F2Dot14">FT_F2Dot14</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_F2Dot14</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A signed 2.14 fixed float type used for unit vectors.</p>
</td></tr></table><br>
</td></tr></table>
@@ -492,6 +697,14 @@ Defined in FT_TYPES_H (freetype/fttypes.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_F26Dot6">FT_F26Dot6</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_F26Dot6</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A signed 26.6 fixed float type used for vectorial pixel coordinates.</p>
</td></tr></table><br>
</td></tr></table>
@@ -676,6 +889,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</td></tr>
<tr valign=top><td><b>pitch</b></td><td>
<p>The pitch's absolute value is the number of bytes taken by one bitmap row, including padding. However, the pitch is positive when the bitmap has a &lsquo;down&rsquo; flow, and negative when it has an &lsquo;up&rsquo; flow. In all cases, the pitch is an offset to add to a bitmap pointer in order to go down one row.</p>
+<p>For the B/W rasterizer, &lsquo;pitch&rsquo; is always an even number.</p>
</td></tr>
<tr valign=top><td><b>buffer</b></td><td>
<p>A typeless pointer to the bitmap buffer. This value should be aligned on 32-bit boundaries in most cases.</p>
@@ -870,6 +1084,14 @@ Defined in FT_TYPES_H (freetype/fttypes.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Generic_Finalizer">FT_Generic_Finalizer</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">void</span> (*<b>FT_Generic_Finalizer</b>)(<span class="keyword">void</span>* object);
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>Describe a function used to destroy the &lsquo;client&rsquo; data of any FreeType object. See the description of the <a href="ft2-basic_types.html#FT_Generic">FT_Generic</a> type for details of usage.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
@@ -926,6 +1148,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h).
<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
#define <b>FT_MAKE_TAG</b>( _x1, _x2, _x3, _x4 ) \
+ (<a href="ft2-basic_types.html#FT_Tag">FT_Tag</a>) \
( ( (<a href="ft2-basic_types.html#FT_ULong">FT_ULong</a>)_x1 &lt;&lt; 24 ) | \
( (<a href="ft2-basic_types.html#FT_ULong">FT_ULong</a>)_x2 &lt;&lt; 16 ) | \
( (<a href="ft2-basic_types.html#FT_ULong">FT_ULong</a>)_x3 &lt;&lt; 8 ) | \
diff --git a/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html
index e7bf5a09bd..293cd81a6f 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
BDF and PCF Files
@@ -97,6 +97,14 @@ Defined in FT_BDF_H (freetype/ftbdf.h).
<table align=center width="75%"><tr><td>
<h4><a name="BDF_Property">BDF_Property</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_BDF_H (freetype/ftbdf.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> BDF_PropertyRec_* <b>BDF_Property</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a <a href="ft2-bdf_fonts.html#BDF_PropertyRec">BDF_PropertyRec</a> structure to model a given BDF/PCF property.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html b/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html
index 5fd64d7a00..dc1df69e95 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Bitmap Handling
diff --git a/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html b/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html
index 8cf3b5a855..96815a017d 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Cache Sub-System
@@ -76,6 +76,14 @@ Cache Sub-System
<table align=center width="75%"><tr><td>
<h4><a name="FTC_Manager">FTC_Manager</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ManagerRec_* <b>FTC_Manager</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This object corresponds to one instance of the cache-subsystem. It is used to cache one or more <a href="ft2-base_interface.html#FT_Face">FT_Face</a> objects, along with corresponding <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects.</p>
<p>The manager intentionally limits the total number of opened <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects to control memory usage. See the &lsquo;max_faces&rsquo; and &lsquo;max_sizes&rsquo; parameters of <a href="ft2-cache_subsystem.html#FTC_Manager_New">FTC_Manager_New</a>.</p>
<p>The manager is also used to cache &lsquo;nodes&rsquo; of various types while limiting their total memory usage.</p>
@@ -90,6 +98,14 @@ Cache Sub-System
<table align=center width="75%"><tr><td>
<h4><a name="FTC_FaceID">FTC_FaceID</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <a href="ft2-basic_types.html#FT_Pointer">FT_Pointer</a> <b>FTC_FaceID</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An opaque pointer type that is used to identity face objects. The contents of such objects is application-dependent.</p>
<p>These pointers are typically used to point to a user-defined structure containing a font file path, and face index.</p>
</td></tr></table><br>
@@ -160,6 +176,14 @@ Defined in FT_CACHE_H (freetype/ftcache.h).
<table align=center width="75%"><tr><td>
<h4><a name="FTC_Node">FTC_Node</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_NodeRec_* <b>FTC_Node</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An opaque handle to a cache node object. Each cache node is reference-counted. A node with a count of&nbsp;0 might be flushed out of a full cache whenever a lookup request is performed.</p>
<p>If you lookup nodes, you have the ability to &lsquo;acquire&rsquo; them, i.e., to increment their reference count. This will prevent the node from being flushed out of the cache until you explicitly &lsquo;release&rsquo; it (see <a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a>).</p>
<p>See also <a href="ft2-cache_subsystem.html#FTC_SBitCache_Lookup">FTC_SBitCache_Lookup</a> and <a href="ft2-cache_subsystem.html#FTC_ImageCache_Lookup">FTC_ImageCache_Lookup</a>.</p>
@@ -394,6 +418,14 @@ Defined in FT_CACHE_H (freetype/ftcache.h).
<table align=center width="75%"><tr><td>
<h4><a name="FTC_Scaler">FTC_Scaler</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ScalerRec_* <b>FTC_Scaler</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an <a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -525,6 +557,14 @@ Defined in FT_CACHE_H (freetype/ftcache.h).
<table align=center width="75%"><tr><td>
<h4><a name="FTC_CMapCache">FTC_CMapCache</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_CMapCacheRec_* <b>FTC_CMapCache</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An opaque handle used to model a charmap cache. This cache is to hold character codes -&gt; glyph indices mappings.</p>
</td></tr></table><br>
</td></tr></table>
@@ -665,6 +705,14 @@ Defined in FT_CACHE_H (freetype/ftcache.h).
<table align=center width="75%"><tr><td>
<h4><a name="FTC_ImageType">FTC_ImageType</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ImageTypeRec_* <b>FTC_ImageType</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an <a href="ft2-cache_subsystem.html#FTC_ImageTypeRec">FTC_ImageTypeRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -676,6 +724,14 @@ Defined in FT_CACHE_H (freetype/ftcache.h).
<table align=center width="75%"><tr><td>
<h4><a name="FTC_ImageCache">FTC_ImageCache</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ImageCacheRec_* <b>FTC_ImageCache</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an glyph image cache object. They are designed to hold many distinct glyph images while not exceeding a certain memory threshold.</p>
</td></tr></table><br>
</td></tr></table>
@@ -846,6 +902,14 @@ Defined in FT_CACHE_H (freetype/ftcache.h).
<table align=center width="75%"><tr><td>
<h4><a name="FTC_SBit">FTC_SBit</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_SBitRec_* <b>FTC_SBit</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a small bitmap descriptor. See the <a href="ft2-cache_subsystem.html#FTC_SBitRec">FTC_SBitRec</a> structure for details.</p>
</td></tr></table><br>
</td></tr></table>
@@ -926,6 +990,14 @@ Defined in FT_CACHE_H (freetype/ftcache.h).
<table align=center width="75%"><tr><td>
<h4><a name="FTC_SBitCache">FTC_SBitCache</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_CACHE_H (freetype/ftcache.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_SBitCacheRec_* <b>FTC_SBitCache</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a small bitmap cache. These are special cache objects used to store small glyph bitmaps (and anti-aliased pixmaps) in a much more efficient way than the traditional glyph image cache implemented by <a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</a>.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html
index 2749e55047..37aa4b4bd9 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
CID Fonts
diff --git a/src/3rdparty/freetype/docs/reference/ft2-computations.html b/src/3rdparty/freetype/docs/reference/ft2-computations.html
index 608139011c..37db13cd28 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-computations.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-computations.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Computations
@@ -379,6 +379,14 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Angle">FT_Angle</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> <b>FT_Angle</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This type is used to model angle values in FreeType. Note that the angle is a 16.16 fixed float value expressed in degrees.</p>
</td></tr></table><br>
</td></tr></table>
@@ -390,6 +398,14 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_ANGLE_PI">FT_ANGLE_PI</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_ANGLE_PI</b> ( 180L &lt;&lt; 16 )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>The angle pi expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
</td></tr></table><br>
</td></tr></table>
@@ -401,6 +417,14 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_ANGLE_2PI">FT_ANGLE_2PI</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_ANGLE_2PI</b> ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> * 2 )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>The angle 2*pi expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
</td></tr></table><br>
</td></tr></table>
@@ -412,6 +436,14 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_ANGLE_PI2">FT_ANGLE_PI2</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_ANGLE_PI2</b> ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> / 2 )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>The angle pi/2 expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
</td></tr></table><br>
</td></tr></table>
@@ -423,6 +455,14 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_ANGLE_PI4">FT_ANGLE_PI4</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_ANGLE_PI4</b> ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> / 4 )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>The angle pi/4 expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-font_formats.html b/src/3rdparty/freetype/docs/reference/ft2-font_formats.html
index 589d749f82..677f5c2ce5 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-font_formats.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-font_formats.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Font Formats
@@ -47,6 +47,7 @@ Font Formats
<table align=center width="87%"><tr><td>
<p>The single function in this section can be used to get the font format. Note that this information is not needed normally; however, there are special cases (like in PDF devices) where it is important to differentiate, in spite of FreeType's uniform API.</p>
+<p>This function is in the X11/xf86 namespace for historical reasons and in no way depends on that windowing system.</p>
</td></tr></table><br>
<table align=center width="75%"><tr><td>
<h4><a name="FT_Get_X11_Font_Format">FT_Get_X11_Font_Format</a></h4>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html b/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html
index 2f0d2f50c2..613cb65452 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Gasp Table
diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html
index 79fc5b6d22..65335e8a4d 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Glyph Management
@@ -55,6 +55,14 @@ Glyph Management
<table align=center width="75%"><tr><td>
<h4><a name="FT_Glyph">FT_Glyph</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_GLYPH_H (freetype/ftglyph.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_GlyphRec_* <b>FT_Glyph</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>Handle to an object used to model generic glyph images. It is a pointer to the <a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a> structure and can contain a glyph bitmap or pointer.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
@@ -112,6 +120,14 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_BitmapGlyph">FT_BitmapGlyph</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_GLYPH_H (freetype/ftglyph.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_BitmapGlyphRec_* <b>FT_BitmapGlyph</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an object used to model a bitmap glyph image. This is a sub-class of <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a>, and a pointer to <a href="ft2-glyph_management.html#FT_BitmapGlyphRec">FT_BitmapGlyphRec</a>.</p>
</td></tr></table><br>
</td></tr></table>
@@ -170,6 +186,14 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_OutlineGlyph">FT_OutlineGlyph</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_GLYPH_H (freetype/ftglyph.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_OutlineGlyphRec_* <b>FT_OutlineGlyph</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an object used to model an outline glyph image. This is a sub-class of <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a>, and a pointer to <a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a>.</p>
</td></tr></table><br>
</td></tr></table>
@@ -558,7 +582,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h).
// convert to a bitmap (default render mode + destroying old)
if ( glyph-&gt;format != FT_GLYPH_FORMAT_BITMAP )
{
- error = FT_Glyph_To_Bitmap( &amp;glyph, FT_RENDER_MODE_DEFAULT,
+ error = FT_Glyph_To_Bitmap( &amp;glyph, FT_RENDER_MODE_NORMAL,
0, 1 );
if ( error ) // `glyph' unchanged
...
diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html
index f5f24e4467..9f0eb06663 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Glyph Stroker
@@ -62,6 +62,14 @@ Glyph Stroker
<table align=center width="75%"><tr><td>
<h4><a name="FT_Stroker">FT_Stroker</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_STROKER_H (freetype/ftstroke.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StrokerRec_* <b>FT_Stroker</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>Opaque handler to a path stroker object.</p>
</td></tr></table><br>
</td></tr></table>
@@ -770,7 +778,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h).
</pre></table><br>
<table align=center width="87%"><tr><td>
-<p>Call this function after <a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a> to export the all borders to your own <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a> structure.</p>
+<p>Call this function after <a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a> to export all borders to your own <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a> structure.</p>
<p>Note that this function appends the border points and contours to your outline, but does not try to resize its arrays.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html
index 499c7e76fc..b59ce8a8d5 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Glyph Variants
diff --git a/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html b/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html
index 8c3a98f30d..cd7184ce4a 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
TrueTypeGX/AAT Validation
@@ -53,6 +53,14 @@ TrueTypeGX/AAT Validation
<table align=center width="75%"><tr><td>
<h4><a name="FT_VALIDATE_GX_LENGTH">FT_VALIDATE_GX_LENGTH</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_VALIDATE_GX_LENGTH</b> (FT_VALIDATE_GX_LAST_INDEX + 1)
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>The number of tables checked in this module. Use it as a parameter for the &lsquo;table-length&rsquo; argument of function <a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a>.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-gzip.html b/src/3rdparty/freetype/docs/reference/ft2-gzip.html
index f9eca6a338..2c442e8fc7 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-gzip.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-gzip.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
GZIP Streams
diff --git a/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html b/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html
index f81f2f915a..44593c31d5 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Header File Macros
@@ -151,6 +151,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_FREETYPE_H">FT_FREETYPE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_FREETYPE_H</b> &lt;freetype/freetype.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the base FreeType&nbsp;2 API.</p>
</td></tr></table><br>
@@ -162,6 +167,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_ERRORS_H">FT_ERRORS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_ERRORS_H</b> &lt;freetype/fterrors.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the list of FreeType&nbsp;2 error codes (and messages).</p>
<p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p>
@@ -174,6 +184,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_MODULE_ERRORS_H">FT_MODULE_ERRORS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_MODULE_ERRORS_H</b> &lt;freetype/ftmoderr.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the list of FreeType&nbsp;2 module error offsets (and messages).</p>
</td></tr></table><br>
@@ -185,6 +200,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_SYSTEM_H">FT_SYSTEM_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_SYSTEM_H</b> &lt;freetype/ftsystem.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 interface to low-level operations (i.e., memory management and stream i/o).</p>
<p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p>
@@ -197,6 +217,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_IMAGE_H">FT_IMAGE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_IMAGE_H</b> &lt;freetype/ftimage.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing type definitions related to glyph images (i.e., bitmaps, outlines, scan-converter parameters).</p>
<p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p>
@@ -209,6 +234,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_TYPES_H">FT_TYPES_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_TYPES_H</b> &lt;freetype/fttypes.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the basic data types defined by FreeType&nbsp;2.</p>
<p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p>
@@ -221,6 +251,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_LIST_H">FT_LIST_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_LIST_H</b> &lt;freetype/ftlist.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the list management API of FreeType&nbsp;2.</p>
<p>(Most applications will never need to include this file.)</p>
@@ -233,6 +268,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_OUTLINE_H">FT_OUTLINE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_OUTLINE_H</b> &lt;freetype/ftoutln.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the scalable outline management API of FreeType&nbsp;2.</p>
</td></tr></table><br>
@@ -244,6 +284,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_SIZES_H">FT_SIZES_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_SIZES_H</b> &lt;freetype/ftsizes.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the API which manages multiple <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects per face.</p>
</td></tr></table><br>
@@ -255,6 +300,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_MODULE_H">FT_MODULE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_MODULE_H</b> &lt;freetype/ftmodapi.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the module management API of FreeType&nbsp;2.</p>
</td></tr></table><br>
@@ -266,6 +316,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_RENDER_H">FT_RENDER_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_RENDER_H</b> &lt;freetype/ftrender.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the renderer module management API of FreeType&nbsp;2.</p>
</td></tr></table><br>
@@ -277,6 +332,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_TYPE1_TABLES_H">FT_TYPE1_TABLES_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_TYPE1_TABLES_H</b> &lt;freetype/t1tables.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the types and API specific to the Type&nbsp;1 format.</p>
</td></tr></table><br>
@@ -288,6 +348,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_TRUETYPE_IDS_H">FT_TRUETYPE_IDS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_TRUETYPE_IDS_H</b> &lt;freetype/ttnameid.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the enumeration values which identify name strings, languages, encodings, etc. This file really contains a <i>large</i> set of constant macro definitions, taken from the TrueType and OpenType specifications.</p>
</td></tr></table><br>
@@ -299,6 +364,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_TRUETYPE_TABLES_H">FT_TRUETYPE_TABLES_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_TRUETYPE_TABLES_H</b> &lt;freetype/tttables.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the types and API specific to the TrueType (as well as OpenType) format.</p>
</td></tr></table><br>
@@ -310,6 +380,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_TRUETYPE_TAGS_H</b> &lt;freetype/tttags.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the definitions of TrueType four-byte &lsquo;tags&rsquo; which identify blocks in SFNT-based font formats (i.e., TrueType and OpenType).</p>
</td></tr></table><br>
@@ -321,6 +396,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_BDF_H">FT_BDF_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_BDF_H</b> &lt;freetype/ftbdf.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the definitions of an API which accesses BDF-specific strings from a face.</p>
</td></tr></table><br>
@@ -332,6 +412,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_CID_H">FT_CID_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_CID_H</b> &lt;freetype/ftcid.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the definitions of an API which access CID font information from a face.</p>
</td></tr></table><br>
@@ -343,6 +428,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_GZIP_H">FT_GZIP_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_GZIP_H</b> &lt;freetype/ftgzip.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the definitions of an API which supports gzip-compressed files.</p>
</td></tr></table><br>
@@ -354,6 +444,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_LZW_H">FT_LZW_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_LZW_H</b> &lt;freetype/ftlzw.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the definitions of an API which supports LZW-compressed files.</p>
</td></tr></table><br>
@@ -365,6 +460,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_WINFONTS_H">FT_WINFONTS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_WINFONTS_H</b> &lt;freetype/ftwinfnt.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the definitions of an API which supports Windows FNT files.</p>
</td></tr></table><br>
@@ -376,6 +476,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_GLYPH_H">FT_GLYPH_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_GLYPH_H</b> &lt;freetype/ftglyph.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the API of the optional glyph management component.</p>
</td></tr></table><br>
@@ -387,6 +492,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_BITMAP_H">FT_BITMAP_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_BITMAP_H</b> &lt;freetype/ftbitmap.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the API of the optional bitmap conversion component.</p>
</td></tr></table><br>
@@ -398,6 +508,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_BBOX_H">FT_BBOX_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_BBOX_H</b> &lt;freetype/ftbbox.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the API of the optional exact bounding box computation routines.</p>
</td></tr></table><br>
@@ -409,6 +524,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_CACHE_H">FT_CACHE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_CACHE_H</b> &lt;freetype/ftcache.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the API of the optional FreeType&nbsp;2 cache sub-system.</p>
</td></tr></table><br>
@@ -420,6 +540,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_CACHE_IMAGE_H</b> <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a>
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the &lsquo;glyph image&rsquo; API of the FreeType&nbsp;2 cache sub-system.</p>
<p>It is used to define a cache for <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> elements. You can also use the API defined in <a href="ft2-header_file_macros.html#FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a> if you only need to store small glyph bitmaps, as it will use less memory.</p>
@@ -433,6 +558,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_CACHE_SMALL_BITMAPS_H</b> <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a>
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the &lsquo;small bitmaps&rsquo; API of the FreeType&nbsp;2 cache sub-system.</p>
<p>It is used to define a cache for small glyph bitmaps in a relatively memory-efficient way. You can also use the API defined in <a href="ft2-header_file_macros.html#FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a> if you want to cache arbitrary glyph images, including scalable outlines.</p>
@@ -446,6 +576,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_CACHE_CHARMAP_H">FT_CACHE_CHARMAP_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_CACHE_CHARMAP_H</b> <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a>
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the &lsquo;charmap&rsquo; API of the FreeType&nbsp;2 cache sub-system.</p>
<p>This macro is deprecated. Simply include <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a> to have all charmap-based cache declarations.</p>
@@ -458,6 +593,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_MAC_H">FT_MAC_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_MAC_H</b> &lt;freetype/ftmac.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the Macintosh-specific FreeType&nbsp;2 API. The latter is used to access fonts embedded in resource forks.</p>
<p>This header file must be explicitly included by client applications compiled on the Mac (note that the base API still works though).</p>
@@ -470,6 +610,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_MULTIPLE_MASTERS_H</b> &lt;freetype/ftmm.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the optional multiple-masters management API of FreeType&nbsp;2.</p>
</td></tr></table><br>
@@ -481,6 +626,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_SFNT_NAMES_H">FT_SFNT_NAMES_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_SFNT_NAMES_H</b> &lt;freetype/ftsnames.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the optional FreeType&nbsp;2 API which accesses embedded &lsquo;name&rsquo; strings in SFNT-based font formats (i.e., TrueType and OpenType).</p>
</td></tr></table><br>
@@ -492,6 +642,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_OPENTYPE_VALIDATE_H">FT_OPENTYPE_VALIDATE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_OPENTYPE_VALIDATE_H</b> &lt;freetype/ftotval.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the optional FreeType&nbsp;2 API which validates OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF).</p>
</td></tr></table><br>
@@ -503,6 +658,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_GX_VALIDATE_H</b> &lt;freetype/ftgxval.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the optional FreeType&nbsp;2 API which validates TrueTypeGX/AAT tables (feat, mort, morx, bsln, just, kern, opbd, trak, prop).</p>
</td></tr></table><br>
@@ -514,6 +674,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_PFR_H">FT_PFR_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_PFR_H</b> &lt;freetype/ftpfr.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which accesses PFR-specific data.</p>
</td></tr></table><br>
@@ -525,6 +690,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_STROKER_H">FT_STROKER_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_STROKER_H</b> &lt;freetype/ftstroke.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which provides functions to stroke outline paths.</p>
</td></tr></table><br>
@@ -536,6 +706,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_SYNTHESIS_H">FT_SYNTHESIS_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_SYNTHESIS_H</b> &lt;freetype/ftsynth.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which performs artificial obliquing and emboldening.</p>
</td></tr></table><br>
@@ -547,6 +722,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_XFREE86_H">FT_XFREE86_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_XFREE86_H</b> &lt;freetype/ftxf86.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which provides functions specific to the XFree86 and X.Org X11 servers.</p>
</td></tr></table><br>
@@ -558,6 +738,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_TRIGONOMETRY_H">FT_TRIGONOMETRY_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_TRIGONOMETRY_H</b> &lt;freetype/fttrigon.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which performs trigonometric computations (e.g., cosines and arc tangents).</p>
</td></tr></table><br>
@@ -569,6 +754,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_LCD_FILTER_H</b> &lt;freetype/ftlcdfil.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which performs color filtering for subpixel rendering.</p>
</td></tr></table><br>
@@ -580,6 +770,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_UNPATENTED_HINTING_H">FT_UNPATENTED_HINTING_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_UNPATENTED_HINTING_H</b> &lt;freetype/ttunpat.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which performs color filtering for subpixel rendering.</p>
</td></tr></table><br>
@@ -591,6 +786,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_INCREMENTAL_H</b> &lt;freetype/ftincrem.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which performs color filtering for subpixel rendering.</p>
</td></tr></table><br>
@@ -602,6 +802,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_GASP_H">FT_GASP_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_GASP_H</b> &lt;freetype/ftgasp.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which returns entries from the TrueType GASP table.</p>
</td></tr></table><br>
@@ -613,6 +818,11 @@ Header File Macros
<table align=center width="75%"><tr><td>
<h4><a name="FT_ADVANCES_H">FT_ADVANCES_H</a></h4>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_ADVANCES_H</b> &lt;freetype/ftadvanc.h&gt;
+
+</pre></table><br>
<table align=center width="87%"><tr><td>
<p>A macro used in #include statements to name the file containing the FreeType&nbsp;2 API which returns individual and ranged glyph advances.</p>
</td></tr></table><br>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-incremental.html b/src/3rdparty/freetype/docs/reference/ft2-incremental.html
index 8fbc111faf..4fa3b10a31 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-incremental.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-incremental.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Incremental Loading
@@ -57,6 +57,14 @@ Incremental Loading
<table align=center width="75%"><tr><td>
<h4><a name="FT_Incremental">FT_Incremental</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_IncrementalRec_* <b>FT_Incremental</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>An opaque type describing a user-provided object used to implement &lsquo;incremental&rsquo; glyph loading within FreeType. This is used to support embedded fonts in certain environments (e.g., PostScript interpreters), where the glyph data isn't in the font file, or must be overridden by different values.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
@@ -81,6 +89,7 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
<a href="ft2-basic_types.html#FT_Long">FT_Long</a> bearing_x;
<a href="ft2-basic_types.html#FT_Long">FT_Long</a> bearing_y;
<a href="ft2-basic_types.html#FT_Long">FT_Long</a> advance;
+ <a href="ft2-basic_types.html#FT_Long">FT_Long</a> advance_v; /* since 2.3.12 */
} <b>FT_Incremental_MetricsRec</b>;
@@ -98,7 +107,10 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
<p>Top bearing, in font units.</p>
</td></tr>
<tr valign=top><td><b>advance</b></td><td>
-<p>Glyph advance, in font units.</p>
+<p>Horizontal component of glyph advance, in font units.</p>
+</td></tr>
+<tr valign=top><td><b>advance_v</b></td><td>
+<p>Vertical component of glyph advance, in font units.</p>
</td></tr>
</table>
</td></tr></table>
@@ -114,6 +126,14 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Incremental_Metrics">FT_Incremental_Metrics</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Incremental_MetricsRec_* <b>FT_Incremental_Metrics</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an <a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -342,6 +362,14 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Incremental_Interface">FT_Incremental_Interface</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a>* <b>FT_Incremental_Interface</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A pointer to an <a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -353,6 +381,14 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_PARAM_TAG_INCREMENTAL</b> <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>( 'i', 'n', 'c', 'r' )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A constant used as the tag of <a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a> structures to indicate an incremental loading object to be used by FreeType.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-index.html b/src/3rdparty/freetype/docs/reference/ft2-index.html
index ca4d1691d8..48dc736b19 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-index.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-index.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -34,257 +34,257 @@
<table align=center><tr><td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<table align=center border=0 cellpadding=0 cellspacing=0>
-<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LIGHT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Set">FT_Stroker_Set</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_CARDINAL</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_NONE</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_INTEGER</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_2X2</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_NONE</a></td><td><a href="ft2-header_file_macros.html#FT_LIST_H">FT_LIST_H</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_Property">BDF_Property</a></td><td><a href="ft2-base_interface.html#FT_Library">FT_Library</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyRec">BDF_PropertyRec</a></td><td><a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceDict">CID_FaceDict</a></td><td><a href="ft2-version.html#FT_Library_Version">FT_Library_Version</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_SCALE</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a></td><td><a href="ft2-list_processing.html#FT_List">FT_List</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_USE_MY_METRICS</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceInfo">CID_FaceInfo</a></td><td><a href="ft2-list_processing.html#FT_List_Add">FT_List_Add</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a></td><td><a href="ft2-list_processing.html#FT_List_Destructor">FT_List_Destructor</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XY_SCALE</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_Info">CID_Info</a></td><td><a href="ft2-list_processing.html#FT_List_Finalize">FT_List_Finalize</a></td><td><a href="ft2-base_interface.html#FT_SubGlyph">FT_SubGlyph</a></td></tr>
-<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MAJOR</a></td><td><a href="ft2-list_processing.html#FT_List_Find">FT_List_Find</a></td><td><a href="ft2-header_file_macros.html#FT_SYNTHESIS_H">FT_SYNTHESIS_H</a></td></tr>
-<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MINOR</a></td><td><a href="ft2-list_processing.html#FT_List_Insert">FT_List_Insert</a></td><td><a href="ft2-header_file_macros.html#FT_SYSTEM_H">FT_SYSTEM_H</a></td></tr>
-<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a></td><td><a href="ft2-list_processing.html#FT_List_Iterate">FT_List_Iterate</a></td><td><a href="ft2-basic_types.html#FT_Tag">FT_Tag</a></td></tr>
-<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_XXX</a></td><td><a href="ft2-list_processing.html#FT_List_Iterator">FT_List_Iterator</a></td><td><a href="ft2-computations.html#FT_Tan">FT_Tan</a></td></tr>
-<tr><td><a href="ft2-sizes_management.html#FT_Activate_Size">FT_Activate_Size</a></td><td><a href="ft2-list_processing.html#FT_List_Remove">FT_List_Remove</a></td><td><a href="ft2-header_file_macros.html#FT_TRIGONOMETRY_H">FT_TRIGONOMETRY_H</a></td></tr>
-<tr><td><a href="ft2-quick_advance.html#FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a></td><td><a href="ft2-list_processing.html#FT_List_Up">FT_List_Up</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_NONE</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_ADVANCES_H">FT_ADVANCES_H</a></td><td><a href="ft2-list_processing.html#FT_ListNode">FT_ListNode</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_PATENTED</a></td></tr>
-<tr><td><a href="ft2-module_management.html#FT_Add_Default_Modules">FT_Add_Default_Modules</a></td><td><a href="ft2-list_processing.html#FT_ListNodeRec">FT_ListNodeRec</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_UNPATENTED</a></td></tr>
-<tr><td><a href="ft2-module_management.html#FT_Add_Module">FT_Add_Module</a></td><td><a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_IDS_H">FT_TRUETYPE_IDS_H</a></td></tr>
-<tr><td><a href="ft2-system_interface.html#FT_Alloc_Func">FT_Alloc_Func</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_CROP_BITMAP</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TABLES_H">FT_TRUETYPE_TABLES_H</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_ANGLE_2PI">FT_ANGLE_2PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_DEFAULT</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_FORCE_AUTOHINT</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TrueTypeEngineType</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_ANGLE_PI2">FT_ANGLE_PI2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Free">FT_TrueTypeGX_Free</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_ANGLE_PI4">FT_ANGLE_PI4</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_TRANSFORM</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_Angle">FT_Angle</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_LINEAR_DESIGN</a></td><td><a href="ft2-header_file_macros.html#FT_TYPE1_TABLES_H">FT_TYPE1_TABLES_H</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_Angle_Diff">FT_Angle_Diff</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_MONOCHROME</a></td><td><a href="ft2-header_file_macros.html#FT_TYPES_H">FT_TYPES_H</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_Atan2">FT_Atan2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_AUTOHINT</a></td><td><a href="ft2-basic_types.html#FT_UFWord">FT_UFWord</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Attach_File">FT_Attach_File</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_BITMAP</a></td><td><a href="ft2-basic_types.html#FT_UInt">FT_UInt</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Attach_Stream">FT_Attach_Stream</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_HINTING</a></td><td><a href="ft2-basic_types.html#FT_UInt16">FT_UInt16</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_BBOX_H">FT_BBOX_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_RECURSE</a></td><td><a href="ft2-basic_types.html#FT_UInt32">FT_UInt32</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_BBox">FT_BBox</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_SCALE</a></td><td><a href="ft2-basic_types.html#FT_ULong">FT_ULong</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_BDF_H">FT_BDF_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_PEDANTIC</a></td><td><a href="ft2-header_file_macros.html#FT_UNPATENTED_HINTING_H">FT_UNPATENTED_HINTING_H</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_BITMAP_H">FT_BITMAP_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a></td><td><a href="ft2-basic_types.html#FT_UnitVector">FT_UnitVector</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Bitmap">FT_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD</a></td><td><a href="ft2-basic_types.html#FT_UShort">FT_UShort</a></td></tr>
-<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Convert">FT_Bitmap_Convert</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD_V</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_APPLE</a></td></tr>
-<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Copy">FT_Bitmap_Copy</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LIGHT</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_BASE</a></td></tr>
-<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Done">FT_Bitmap_Done</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_bsln</a></td></tr>
-<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Embolden">FT_Bitmap_Embolden</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERN</a></td></tr>
-<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_New">FT_Bitmap_New</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_NORMAL</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERNXXX</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Bitmap_Size">FT_Bitmap_Size</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_feat</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyph">FT_BitmapGlyph</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_VERTICAL_LAYOUT</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GDEF</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyphRec">FT_BitmapGlyphRec</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_XXX</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GPOS</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Bool">FT_Bool</a></td><td><a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GSUB</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Byte">FT_Byte</a></td><td><a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GX</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Bytes">FT_Bytes</a></td><td><a href="ft2-truetype_tables.html#FT_Load_Sfnt_Table">FT_Load_Sfnt_Table</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GX_LENGTH">FT_VALIDATE_GX_LENGTH</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_CHARMAP_H">FT_CACHE_CHARMAP_H</a></td><td><a href="ft2-basic_types.html#FT_Long">FT_Long</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GXXXX</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a></td><td><a href="ft2-header_file_macros.html#FT_LZW_H">FT_LZW_H</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_JSTF</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a></td><td><a href="ft2-header_file_macros.html#FT_MAC_H">FT_MAC_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_just</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a></td><td><a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_kern</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_CeilFix">FT_CeilFix</a></td><td><a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_lcar</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Char">FT_Char</a></td><td><a href="ft2-computations.html#FT_Matrix_Invert">FT_Matrix_Invert</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_MATH</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_CharMap">FT_CharMap</a></td><td><a href="ft2-computations.html#FT_Matrix_Multiply">FT_Matrix_Multiply</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_MS</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a></td><td><a href="ft2-system_interface.html#FT_Memory">FT_Memory</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_mort</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CID_H">FT_CID_H</a></td><td><a href="ft2-system_interface.html#FT_MemoryRec">FT_MemoryRec</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_morx</a></td></tr>
-<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Free">FT_ClassicKern_Free</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Axis">FT_MM_Axis</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OT</a></td></tr>
-<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Validate">FT_ClassicKern_Validate</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Var">FT_MM_Var</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OTXXX</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_CONFIG_H">FT_CONFIG_CONFIG_H</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_ERRORS_H">FT_MODULE_ERRORS_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_opbd</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_MODULES_H">FT_CONFIG_MODULES_H</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_H">FT_MODULE_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_prop</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_OPTIONS_H">FT_CONFIG_OPTIONS_H</a></td><td><a href="ft2-base_interface.html#FT_Module">FT_Module</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_trak</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_STANDARD_LIBRARY_H">FT_CONFIG_STANDARD_LIBRARY_H</a></td><td><a href="ft2-module_management.html#FT_Module_Class">FT_Module_Class</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Axis">FT_Var_Axis</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_Cos">FT_Cos</a></td><td><a href="ft2-module_management.html#FT_Module_Constructor">FT_Module_Constructor</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Named_Style">FT_Var_Named_Style</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Data">FT_Data</a></td><td><a href="ft2-module_management.html#FT_Module_Destructor">FT_Module_Destructor</a></td><td><a href="ft2-basic_types.html#FT_Vector">FT_Vector</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_DivFix">FT_DivFix</a></td><td><a href="ft2-module_management.html#FT_Module_Requester">FT_Module_Requester</a></td><td><a href="ft2-computations.html#FT_Vector_From_Polar">FT_Vector_From_Polar</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a></td><td><a href="ft2-header_file_macros.html#FT_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</a></td><td><a href="ft2-computations.html#FT_Vector_Length">FT_Vector_Length</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Done_FreeType">FT_Done_FreeType</a></td><td><a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a></td><td><a href="ft2-computations.html#FT_Vector_Polarize">FT_Vector_Polarize</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Done_Glyph">FT_Done_Glyph</a></td><td><a href="ft2-computations.html#FT_MulFix">FT_MulFix</a></td><td><a href="ft2-computations.html#FT_Vector_Rotate">FT_Vector_Rotate</a></td></tr>
-<tr><td><a href="ft2-module_management.html#FT_Done_Library">FT_Done_Library</a></td><td><a href="ft2-multiple_masters.html#FT_Multi_Master">FT_Multi_Master</a></td><td><a href="ft2-computations.html#FT_Vector_Transform">FT_Vector_Transform</a></td></tr>
-<tr><td><a href="ft2-sizes_management.html#FT_Done_Size">FT_Done_Size</a></td><td><a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a></td><td><a href="ft2-computations.html#FT_Vector_Unit">FT_Vector_Unit</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Driver">FT_Driver</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FOND">FT_New_Face_From_FOND</a></td><td><a href="ft2-header_file_macros.html#FT_WINFONTS_H">FT_WINFONTS_H</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_ENC_TAG">FT_ENC_TAG</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSRef">FT_New_Face_From_FSRef</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_Header">FT_WinFNT_Header</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_CUSTOM</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSSpec">FT_New_Face_From_FSSpec</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_HeaderRec">FT_WinFNT_HeaderRec</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_EXPERT</a></td><td><a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1250</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_LATIN_1</a></td><td><a href="ft2-base_interface.html#FT_New_Memory_Face">FT_New_Memory_Face</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1251</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_STANDARD</a></td><td><a href="ft2-sizes_management.html#FT_New_Size">FT_New_Size</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1252</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_APPLE_ROMAN</a></td><td><a href="ft2-basic_types.html#FT_Offset">FT_Offset</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1253</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_BIG5</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_DRIVER</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1254</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_GB2312</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_MEMORY</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1255</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_JOHAB</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PARAMS</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1256</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_BIG5</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PATHNAME</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1257</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_GB2312</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_STREAM</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1258</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_JOHAB</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_XXX</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1361</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SJIS</a></td><td><a href="ft2-header_file_macros.html#FT_OPENTYPE_VALIDATE_H">FT_OPENTYPE_VALIDATE_H</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP874</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SYMBOL</a></td><td><a href="ft2-base_interface.html#FT_Open_Args">FT_Open_Args</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP932</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_WANSUNG</a></td><td><a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP936</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_NONE</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Free">FT_OpenType_Free</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP949</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_OLD_LATIN_2</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Validate">FT_OpenType_Validate</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP950</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_SJIS</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_LEFT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_DEFAULT</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_UNICODE</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_RIGHT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_MAC</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_WANSUNG</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_NONE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_OEM</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_Encoding</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_POSTSCRIPT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_SYMBOL</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_ERRORS_H">FT_ERRORS_H</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_TRUETYPE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Error">FT_Error</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_Orientation</a></td><td><a href="ft2-header_file_macros.html#FT_XFREE86_H">FT_XFREE86_H</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_F26Dot6">FT_F26Dot6</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_EVEN_ODD_FILL</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache">FTC_CMapCache</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_F2Dot14">FT_F2Dot14</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_FLAGS</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_Lookup">FTC_CMapCache_Lookup</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a></td><td><a href="ft2-header_file_macros.html#FT_OUTLINE_H">FT_OUTLINE_H</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_New">FTC_CMapCache_New</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_EXTERNAL_STREAM</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_HIGH_PRECISION</a></td><td><a href="ft2-cache_subsystem.html#FTC_Face_Requester">FTC_Face_Requester</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FAST_GLYPHS</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a></td><td><a href="ft2-cache_subsystem.html#FTC_FaceID">FTC_FaceID</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_SIZES</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_INCLUDE_STUBS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_WIDTH</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_NONE</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_Lookup">FTC_ImageCache_Lookup</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_GLYPH_NAMES</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_OWNER</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_LookupScaler">FTC_ImageCache_LookupScaler</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HINTER</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_REVERSE_FILL</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_New">FTC_ImageCache_New</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HORIZONTAL</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SINGLE_PASS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageType">FTC_ImageType</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_KERNING</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SMART_DROPOUTS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageTypeRec">FTC_ImageTypeRec</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_MULTIPLE_MASTERS</a></td><td><a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager">FTC_Manager</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SCALABLE</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Check">FT_Outline_Check</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Done">FTC_Manager_Done</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SFNT</a></td><td><a href="ft2-outline_processing.html#FT_Outline_ConicToFunc">FT_Outline_ConicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupFace">FTC_Manager_LookupFace</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Copy">FT_Outline_Copy</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupSize">FTC_Manager_LookupSize</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_VERTICAL</a></td><td><a href="ft2-outline_processing.html#FT_Outline_CubicToFunc">FT_Outline_CubicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_New">FTC_Manager_New</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Decompose">FT_Outline_Decompose</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_RemoveFaceID">FTC_Manager_RemoveFaceID</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Face">FT_Face</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Done">FT_Outline_Done</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Reset">FTC_Manager_Reset</a></td></tr>
-<tr><td><a href="ft2-version.html#FT_Face_CheckTrueTypePatents">FT_Face_CheckTrueTypePatents</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Embolden">FT_Outline_Embolden</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node">FTC_Node</a></td></tr>
-<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharsOfVariant">FT_Face_GetCharsOfVariant</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Funcs">FT_Outline_Funcs</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a></td></tr>
-<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIndex">FT_Face_GetCharVariantIndex</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBit">FTC_SBit</a></td></tr>
-<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIsDefault">FT_Face_GetCharVariantIsDefault</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Bitmap">FT_Outline_Get_Bitmap</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache">FTC_SBitCache</a></td></tr>
-<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantSelectors">FT_Face_GetVariantSelectors</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_CBox">FT_Outline_Get_CBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_Lookup">FTC_SBitCache_Lookup</a></td></tr>
-<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantsOfChar">FT_Face_GetVariantsOfChar</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Orientation">FT_Outline_Get_Orientation</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_LookupScaler">FTC_SBitCache_LookupScaler</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Face_Internal">FT_Face_Internal</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetInsideBorder">FT_Outline_GetInsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_New">FTC_SBitCache_New</a></td></tr>
-<tr><td><a href="ft2-version.html#FT_Face_SetUnpatentedHinting">FT_Face_SetUnpatentedHinting</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetOutsideBorder">FT_Outline_GetOutsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitRec">FTC_SBitRec</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a></td><td><a href="ft2-outline_processing.html#FT_Outline_LineToFunc">FT_Outline_LineToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Scaler">FTC_Scaler</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a></td><td><a href="ft2-outline_processing.html#FT_Outline_MoveToFunc">FT_Outline_MoveToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_FloorFix">FT_FloorFix</a></td><td><a href="ft2-outline_processing.html#FT_Outline_New">FT_Outline_New</a></td><td><a href="ft2-base_interface.html#ft_encoding_xxx">ft_encoding_xxx</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Render">FT_Outline_Render</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_gridfit</a></td></tr>
-<tr><td><a href="ft2-system_interface.html#FT_Free_Func">FT_Free_Func</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Reverse">FT_Outline_Reverse</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_pixels</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_BITMAP_EMBEDDING_ONLY</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Transform">FT_Outline_Transform</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_subpixels</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_EDITABLE_EMBEDDING</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Translate">FT_Outline_Translate</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_truncate</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_INSTALLABLE_EMBEDDING</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_unscaled</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_NO_SUBSETTING</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_xxx</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING</a></td><td><a href="ft2-incremental.html#FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_bitmap</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING</a></td><td><a href="ft2-truetype_tables.html#FT_PARAM_TAG_UNPATENTED_HINTING">FT_PARAM_TAG_UNPATENTED_HINTING</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_composite</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_XXX</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">FT_Palette_Mode</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_none</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_FWord">FT_FWord</a></td><td><a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_outline</a></td></tr>
-<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRAY</a></td><td><a href="ft2-header_file_macros.html#FT_PFR_H">FT_PFR_H</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_plotter</a></td></tr>
-<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRIDFIT</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_xxx</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_GASP_H">FT_GASP_H</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY2</a></td><td><a href="ft2-base_interface.html#ft_kerning_default">ft_kerning_default</a></td></tr>
-<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_NO_TABLE</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY4</a></td><td><a href="ft2-base_interface.html#ft_kerning_unfitted">ft_kerning_unfitted</a></td></tr>
-<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_GRIDFIT</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD</a></td><td><a href="ft2-base_interface.html#ft_kerning_unscaled">ft_kerning_unscaled</a></td></tr>
-<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_SMOOTHING</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD_V</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_driver</a></td></tr>
-<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_XXX</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_memory</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Generic">FT_Generic</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_NONE</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_params</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Generic_Finalizer">FT_Generic_Finalizer</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_Pixel_Mode</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_pathname</a></td></tr>
-<tr><td><a href="ft2-quick_advance.html#FT_Get_Advance">FT_Get_Advance</a></td><td><a href="ft2-basic_types.html#FT_Pointer">FT_Pointer</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_stream</a></td></tr>
-<tr><td><a href="ft2-quick_advance.html#FT_Get_Advances">FT_Get_Advances</a></td><td><a href="ft2-basic_types.html#FT_Pos">FT_Pos</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_even_odd_fill</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Charset_ID">FT_Get_BDF_Charset_ID</a></td><td><a href="ft2-bdf_fonts.html#FT_PropertyType">FT_PropertyType</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_flags</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Property">FT_Get_BDF_Property</a></td><td><a href="ft2-basic_types.html#FT_PtrDist">FT_PtrDist</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_high_precision</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_AA</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_ignore_dropouts</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Charmap_Index">FT_Get_Charmap_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_CLIP</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_none</a></td></tr>
-<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_From_Glyph_Index">FT_Get_CID_From_Glyph_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DEFAULT</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_owner</a></td></tr>
-<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_Is_Internally_CID_Keyed">FT_Get_CID_Is_Internally_CID_Keyed</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DIRECT</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_reverse_fill</a></td></tr>
-<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_Registry_Ordering_Supplement">FT_Get_CID_Registry_Ordering_Supplement</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_XXX</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_single_pass</a></td></tr>
-<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Format">FT_Get_CMap_Format</a></td><td><a href="ft2-raster.html#FT_Raster">FT_Raster</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgb</a></td></tr>
-<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Language_ID">FT_Get_CMap_Language_ID</a></td><td><a href="ft2-raster.html#FT_Raster_BitSet_Func">FT_Raster_BitSet_Func</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgba</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_First_Char">FT_Get_First_Char</a></td><td><a href="ft2-raster.html#FT_Raster_BitTest_Func">FT_Raster_BitTest_Func</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_grays</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_FSType_Flags">FT_Get_FSType_Flags</a></td><td><a href="ft2-raster.html#FT_Raster_DoneFunc">FT_Raster_DoneFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_mono</a></td></tr>
-<tr><td><a href="ft2-gasp_table.html#FT_Get_Gasp">FT_Get_Gasp</a></td><td><a href="ft2-raster.html#FT_Raster_Funcs">FT_Raster_Funcs</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_none</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Get_Glyph">FT_Get_Glyph</a></td><td><a href="ft2-raster.html#FT_Raster_NewFunc">FT_Raster_NewFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal2</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a></td><td><a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal4</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Kerning">FT_Get_Kerning</a></td><td><a href="ft2-raster.html#FT_Raster_RenderFunc">FT_Raster_RenderFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_xxx</a></td></tr>
-<tr><td><a href="ft2-multiple_masters.html#FT_Get_MM_Var">FT_Get_MM_Var</a></td><td><a href="ft2-raster.html#FT_Raster_ResetFunc">FT_Raster_ResetFunc</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_mono</a></td></tr>
-<tr><td><a href="ft2-module_management.html#FT_Get_Module">FT_Get_Module</a></td><td><a href="ft2-raster.html#FT_Raster_SetModeFunc">FT_Raster_SetModeFunc</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_normal</a></td></tr>
-<tr><td><a href="ft2-multiple_masters.html#FT_Get_Multi_Master">FT_Get_Multi_Master</a></td><td><a href="ft2-header_file_macros.html#FT_RENDER_H">FT_RENDER_H</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_xxx</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Name_Index">FT_Get_Name_Index</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a></td><td><a href="ft2-type1_tables.html#PS_FontInfo">PS_FontInfo</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Next_Char">FT_Get_Next_Char</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a></td><td><a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a></td></tr>
-<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Advance">FT_Get_PFR_Advance</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LIGHT</a></td><td><a href="ft2-type1_tables.html#PS_Private">PS_Private</a></td></tr>
-<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Kerning">FT_Get_PFR_Kerning</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_MONO</a></td><td><a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a></td></tr>
-<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Metrics">FT_Get_PFR_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_NORMAL</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_Blend_Flags</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Postscript_Name">FT_Get_Postscript_Name</a></td><td><a href="ft2-system_interface.html#FT_Realloc_Func">FT_Realloc_Func</a></td><td><a href="ft2-type1_tables.html#T1_FontInfo">T1_FontInfo</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Info">FT_Get_PS_Font_Info</a></td><td><a href="ft2-module_management.html#FT_Remove_Module">FT_Remove_Module</a></td><td><a href="ft2-type1_tables.html#T1_Private">T1_Private</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Private">FT_Get_PS_Font_Private</a></td><td><a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_CUSTOM</a></td></tr>
-<tr><td><a href="ft2-module_management.html#FT_Get_Renderer">FT_Get_Renderer</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_EXPERT</a></td></tr>
-<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a></td><td><a href="ft2-base_interface.html#FT_Renderer">FT_Renderer</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_LATIN_1</a></td></tr>
-<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a></td><td><a href="ft2-module_management.html#FT_Renderer_Class">FT_Renderer_Class</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_STANDARD</a></td></tr>
-<tr><td><a href="ft2-truetype_tables.html#FT_Get_Sfnt_Table">FT_Get_Sfnt_Table</a></td><td><a href="ft2-base_interface.html#FT_Request_Size">FT_Request_Size</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_SubGlyph_Info">FT_Get_SubGlyph_Info</a></td><td><a href="ft2-computations.html#FT_RoundFix">FT_RoundFix</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_DEFAULT</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Get_Track_Kerning">FT_Get_Track_Kerning</a></td><td><a href="ft2-base_interface.html#FT_Select_Charmap">FT_Select_Charmap</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_ISO_10646</a></td></tr>
-<tr><td><a href="ft2-truetype_engine.html#FT_Get_TrueType_Engine_Type">FT_Get_TrueType_Engine_Type</a></td><td><a href="ft2-base_interface.html#FT_Select_Size">FT_Select_Size</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_1_1</a></td></tr>
-<tr><td><a href="ft2-winfnt_fonts.html#FT_Get_WinFNT_Header">FT_Get_WinFNT_Header</a></td><td><a href="ft2-base_interface.html#FT_Set_Char_Size">FT_Set_Char_Size</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_2_0</a></td></tr>
-<tr><td><a href="ft2-font_formats.html#FT_Get_X11_Font_Format">FT_Get_X11_Font_Format</a></td><td><a href="ft2-base_interface.html#FT_Set_Charmap">FT_Set_Charmap</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_32</a></td></tr>
-<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_ATS_Name">FT_GetFile_From_Mac_ATS_Name</a></td><td><a href="ft2-module_management.html#FT_Set_Debug_Hook">FT_Set_Debug_Hook</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_VARIANT_SELECTOR</a></td></tr>
-<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_Name">FT_GetFile_From_Mac_Name</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Blend_Coordinates">FT_Set_MM_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-mac_specific.html#FT_GetFilePath_From_Mac_ATS_Name">FT_GetFilePath_From_Mac_ATS_Name</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_Header">TT_Header</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_GRIDFIT</a></td><td><a href="ft2-base_interface.html#FT_Set_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td><a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_PIXELS</a></td><td><a href="ft2-module_management.html#FT_Set_Renderer">FT_Set_Renderer</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_10646</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_SUBPIXELS</a></td><td><a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_7BIT_ASCII</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_TRUNCATE</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_8859_1</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_UNSCALED</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a></td><td><a href="ft2-header_file_macros.html#FT_SFNT_NAMES_H">FT_SFNT_NAMES_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Table_Info">FT_Sfnt_Table_Info</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARMENIAN</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_NONE</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Tag">FT_Sfnt_Tag</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BENGALI</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a></td><td><a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BURMESE</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_PLOTTER</a></td><td><a href="ft2-basic_types.html#FT_Short">FT_Short</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_DEVANAGARI</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_BBOX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEEZ</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_CELL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEORGIAN</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_Glyph_BBox_Mode</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_NOMINAL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GREEK</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_REAL_DIM</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GUJARATI</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_SCALES</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GURMUKHI</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Get_CBox">FT_Glyph_Get_CBox</a></td><td><a href="ft2-header_file_macros.html#FT_SIZES_H">FT_SIZES_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_HEBREW</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_JAPANESE</a></td></tr>
-<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</a></td><td><a href="ft2-base_interface.html#FT_Size">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KANNADA</a></td></tr>
-<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_StrokeBorder">FT_Glyph_StrokeBorder</a></td><td><a href="ft2-base_interface.html#FT_Size_Internal">FT_Size_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KHMER</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_Size_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KOREAN</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Transform">FT_Glyph_Transform</a></td><td><a href="ft2-base_interface.html#FT_Size_Request">FT_Size_Request</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_LAOTIAN</a></td></tr>
-<tr><td><a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALAYALAM</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-base_interface.html#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALDIVIAN</a></td></tr>
-<tr><td><a href="ft2-bitmap_handling.html#FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MONGOLIAN</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td><a href="ft2-base_interface.html#FT_Slot_Internal">FT_Slot_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ORIYA</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></td><td><a href="ft2-raster.html#FT_Span">FT_Span</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_GZIP_H">FT_GZIP_H</a></td><td><a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RSYMBOL</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_LEFT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RUSSIAN</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SIMPLIFIED_CHINESE</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td><a href="ft2-header_file_macros.html#FT_STROKER_H">FT_STROKER_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINDHI</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_BUTT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINHALESE</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SLAVIC</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_MULTIPLE_MASTERS">FT_HAS_MULTIPLE_MASTERS</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_SQUARE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TAMIL</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_BEVEL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TELUGU</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#FT_Has_PS_Glyph_Names">FT_Has_PS_Glyph_Names</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_THAI</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TIBETAN</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_IMAGE_TAG">FT_IMAGE_TAG</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_BOLD</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TRADITIONAL_CHINESE</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_ITALIC</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_UNINTERP</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental">FT_Incremental</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_VIETNAMESE</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-system_interface.html#FT_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</a></td><td><a href="ft2-system_interface.html#FT_Stream_CloseFunc">FT_Stream_CloseFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</a></td><td><a href="ft2-system_interface.html#FT_Stream_IoFunc">FT_Stream_IoFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_BIG_5</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_GB2312</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_JOHAB</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SJIS</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_Metrics">FT_Incremental_Metrics</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SYMBOL_CS</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UCS_4</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UNICODE_CS</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_WANSUNG</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_CubicTo">FT_Stroker_CubicTo</a></td><td><a href="ft2-truetype_tables.html#TT_OS2">TT_OS2</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Done">FT_Stroker_Done</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ADOBE</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_IS_SFNT">FT_IS_SFNT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_IS_TRICKY">FT_IS_TRICKY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetCounts">FT_Stroker_GetCounts</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_Stroker_LineCap</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MICROSOFT</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_XXX</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineTo">FT_Stroker_LineTo</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr>
-<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_New">FT_Stroker_New</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ParseOutline">FT_Stroker_ParseOutline</a></td><td></td></tr>
-<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a></td><td></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LIGHT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ParseOutline">FT_Stroker_ParseOutline</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_CARDINAL</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_NONE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_INTEGER</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Set">FT_Stroker_Set</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_NONE</a></td><td><a href="ft2-header_file_macros.html#FT_LIST_H">FT_LIST_H</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_Property">BDF_Property</a></td><td><a href="ft2-base_interface.html#FT_Library">FT_Library</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_2X2</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyRec">BDF_PropertyRec</a></td><td><a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceDict">CID_FaceDict</a></td><td><a href="ft2-version.html#FT_Library_Version">FT_Library_Version</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a></td><td><a href="ft2-list_processing.html#FT_List">FT_List</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceInfo">CID_FaceInfo</a></td><td><a href="ft2-list_processing.html#FT_List_Add">FT_List_Add</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_SCALE</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a></td><td><a href="ft2-list_processing.html#FT_List_Destructor">FT_List_Destructor</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_USE_MY_METRICS</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_Info">CID_Info</a></td><td><a href="ft2-list_processing.html#FT_List_Finalize">FT_List_Finalize</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td></tr>
+<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MAJOR</a></td><td><a href="ft2-list_processing.html#FT_List_Find">FT_List_Find</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XY_SCALE</a></td></tr>
+<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MINOR</a></td><td><a href="ft2-list_processing.html#FT_List_Insert">FT_List_Insert</a></td><td><a href="ft2-base_interface.html#FT_SubGlyph">FT_SubGlyph</a></td></tr>
+<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a></td><td><a href="ft2-list_processing.html#FT_List_Iterate">FT_List_Iterate</a></td><td><a href="ft2-header_file_macros.html#FT_SYNTHESIS_H">FT_SYNTHESIS_H</a></td></tr>
+<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_XXX</a></td><td><a href="ft2-list_processing.html#FT_List_Iterator">FT_List_Iterator</a></td><td><a href="ft2-header_file_macros.html#FT_SYSTEM_H">FT_SYSTEM_H</a></td></tr>
+<tr><td><a href="ft2-sizes_management.html#FT_Activate_Size">FT_Activate_Size</a></td><td><a href="ft2-list_processing.html#FT_List_Remove">FT_List_Remove</a></td><td><a href="ft2-basic_types.html#FT_Tag">FT_Tag</a></td></tr>
+<tr><td><a href="ft2-quick_advance.html#FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a></td><td><a href="ft2-list_processing.html#FT_List_Up">FT_List_Up</a></td><td><a href="ft2-computations.html#FT_Tan">FT_Tan</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_ADVANCES_H">FT_ADVANCES_H</a></td><td><a href="ft2-list_processing.html#FT_ListNode">FT_ListNode</a></td><td><a href="ft2-header_file_macros.html#FT_TRIGONOMETRY_H">FT_TRIGONOMETRY_H</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Add_Default_Modules">FT_Add_Default_Modules</a></td><td><a href="ft2-list_processing.html#FT_ListNodeRec">FT_ListNodeRec</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_NONE</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Add_Module">FT_Add_Module</a></td><td><a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_PATENTED</a></td></tr>
+<tr><td><a href="ft2-system_interface.html#FT_Alloc_Func">FT_Alloc_Func</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_CROP_BITMAP</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_UNPATENTED</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_ANGLE_2PI">FT_ANGLE_2PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_DEFAULT</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_IDS_H">FT_TRUETYPE_IDS_H</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_FORCE_AUTOHINT</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TABLES_H">FT_TRUETYPE_TABLES_H</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_ANGLE_PI2">FT_ANGLE_PI2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_ANGLE_PI4">FT_ANGLE_PI4</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_TRANSFORM</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TrueTypeEngineType</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_Angle">FT_Angle</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_LINEAR_DESIGN</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Free">FT_TrueTypeGX_Free</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_Angle_Diff">FT_Angle_Diff</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_MONOCHROME</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_Atan2">FT_Atan2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_AUTOHINT</a></td><td><a href="ft2-header_file_macros.html#FT_TYPE1_TABLES_H">FT_TYPE1_TABLES_H</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Attach_File">FT_Attach_File</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_BITMAP</a></td><td><a href="ft2-header_file_macros.html#FT_TYPES_H">FT_TYPES_H</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Attach_Stream">FT_Attach_Stream</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_HINTING</a></td><td><a href="ft2-basic_types.html#FT_UFWord">FT_UFWord</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_BBOX_H">FT_BBOX_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_RECURSE</a></td><td><a href="ft2-basic_types.html#FT_UInt">FT_UInt</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_BBox">FT_BBox</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_SCALE</a></td><td><a href="ft2-basic_types.html#FT_UInt16">FT_UInt16</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_BDF_H">FT_BDF_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_PEDANTIC</a></td><td><a href="ft2-basic_types.html#FT_UInt32">FT_UInt32</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_BITMAP_H">FT_BITMAP_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a></td><td><a href="ft2-basic_types.html#FT_ULong">FT_ULong</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Bitmap">FT_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD</a></td><td><a href="ft2-header_file_macros.html#FT_UNPATENTED_HINTING_H">FT_UNPATENTED_HINTING_H</a></td></tr>
+<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Convert">FT_Bitmap_Convert</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD_V</a></td><td><a href="ft2-basic_types.html#FT_UnitVector">FT_UnitVector</a></td></tr>
+<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Copy">FT_Bitmap_Copy</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LIGHT</a></td><td><a href="ft2-basic_types.html#FT_UShort">FT_UShort</a></td></tr>
+<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Done">FT_Bitmap_Done</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_APPLE</a></td></tr>
+<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Embolden">FT_Bitmap_Embolden</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_BASE</a></td></tr>
+<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_New">FT_Bitmap_New</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_NORMAL</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_bsln</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Bitmap_Size">FT_Bitmap_Size</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERN</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyph">FT_BitmapGlyph</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_VERTICAL_LAYOUT</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERNXXX</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyphRec">FT_BitmapGlyphRec</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_XXX</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_feat</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Bool">FT_Bool</a></td><td><a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GDEF</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Byte">FT_Byte</a></td><td><a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GPOS</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Bytes">FT_Bytes</a></td><td><a href="ft2-truetype_tables.html#FT_Load_Sfnt_Table">FT_Load_Sfnt_Table</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GSUB</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_CHARMAP_H">FT_CACHE_CHARMAP_H</a></td><td><a href="ft2-basic_types.html#FT_Long">FT_Long</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GX</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a></td><td><a href="ft2-header_file_macros.html#FT_LZW_H">FT_LZW_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GX_LENGTH">FT_VALIDATE_GX_LENGTH</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a></td><td><a href="ft2-header_file_macros.html#FT_MAC_H">FT_MAC_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GXXXX</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a></td><td><a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_JSTF</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_CeilFix">FT_CeilFix</a></td><td><a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_just</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Char">FT_Char</a></td><td><a href="ft2-computations.html#FT_Matrix_Invert">FT_Matrix_Invert</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_kern</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_CharMap">FT_CharMap</a></td><td><a href="ft2-computations.html#FT_Matrix_Multiply">FT_Matrix_Multiply</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_lcar</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a></td><td><a href="ft2-system_interface.html#FT_Memory">FT_Memory</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_MATH</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CID_H">FT_CID_H</a></td><td><a href="ft2-system_interface.html#FT_MemoryRec">FT_MemoryRec</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_MS</a></td></tr>
+<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Free">FT_ClassicKern_Free</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Axis">FT_MM_Axis</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_mort</a></td></tr>
+<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Validate">FT_ClassicKern_Validate</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Var">FT_MM_Var</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_morx</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_CONFIG_H">FT_CONFIG_CONFIG_H</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_ERRORS_H">FT_MODULE_ERRORS_H</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OT</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_MODULES_H">FT_CONFIG_MODULES_H</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_H">FT_MODULE_H</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OTXXX</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_OPTIONS_H">FT_CONFIG_OPTIONS_H</a></td><td><a href="ft2-base_interface.html#FT_Module">FT_Module</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_opbd</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_STANDARD_LIBRARY_H">FT_CONFIG_STANDARD_LIBRARY_H</a></td><td><a href="ft2-module_management.html#FT_Module_Class">FT_Module_Class</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_prop</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_Cos">FT_Cos</a></td><td><a href="ft2-module_management.html#FT_Module_Constructor">FT_Module_Constructor</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_trak</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Data">FT_Data</a></td><td><a href="ft2-module_management.html#FT_Module_Destructor">FT_Module_Destructor</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Axis">FT_Var_Axis</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_DivFix">FT_DivFix</a></td><td><a href="ft2-module_management.html#FT_Module_Requester">FT_Module_Requester</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Named_Style">FT_Var_Named_Style</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a></td><td><a href="ft2-header_file_macros.html#FT_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</a></td><td><a href="ft2-basic_types.html#FT_Vector">FT_Vector</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Done_FreeType">FT_Done_FreeType</a></td><td><a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a></td><td><a href="ft2-computations.html#FT_Vector_From_Polar">FT_Vector_From_Polar</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Done_Glyph">FT_Done_Glyph</a></td><td><a href="ft2-computations.html#FT_MulFix">FT_MulFix</a></td><td><a href="ft2-computations.html#FT_Vector_Length">FT_Vector_Length</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Done_Library">FT_Done_Library</a></td><td><a href="ft2-multiple_masters.html#FT_Multi_Master">FT_Multi_Master</a></td><td><a href="ft2-computations.html#FT_Vector_Polarize">FT_Vector_Polarize</a></td></tr>
+<tr><td><a href="ft2-sizes_management.html#FT_Done_Size">FT_Done_Size</a></td><td><a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a></td><td><a href="ft2-computations.html#FT_Vector_Rotate">FT_Vector_Rotate</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Driver">FT_Driver</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FOND">FT_New_Face_From_FOND</a></td><td><a href="ft2-computations.html#FT_Vector_Transform">FT_Vector_Transform</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_ENC_TAG">FT_ENC_TAG</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSRef">FT_New_Face_From_FSRef</a></td><td><a href="ft2-computations.html#FT_Vector_Unit">FT_Vector_Unit</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_CUSTOM</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSSpec">FT_New_Face_From_FSSpec</a></td><td><a href="ft2-header_file_macros.html#FT_WINFONTS_H">FT_WINFONTS_H</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_EXPERT</a></td><td><a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_Header">FT_WinFNT_Header</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_LATIN_1</a></td><td><a href="ft2-base_interface.html#FT_New_Memory_Face">FT_New_Memory_Face</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_HeaderRec">FT_WinFNT_HeaderRec</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_STANDARD</a></td><td><a href="ft2-sizes_management.html#FT_New_Size">FT_New_Size</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1250</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_APPLE_ROMAN</a></td><td><a href="ft2-basic_types.html#FT_Offset">FT_Offset</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1251</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_BIG5</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_DRIVER</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1252</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_GB2312</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_MEMORY</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1253</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_JOHAB</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PARAMS</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1254</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_BIG5</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PATHNAME</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1255</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_GB2312</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_STREAM</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1256</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_JOHAB</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_XXX</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1257</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SJIS</a></td><td><a href="ft2-header_file_macros.html#FT_OPENTYPE_VALIDATE_H">FT_OPENTYPE_VALIDATE_H</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1258</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SYMBOL</a></td><td><a href="ft2-base_interface.html#FT_Open_Args">FT_Open_Args</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1361</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_WANSUNG</a></td><td><a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP874</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_NONE</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Free">FT_OpenType_Free</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP932</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_OLD_LATIN_2</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Validate">FT_OpenType_Validate</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP936</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_SJIS</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_LEFT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP949</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_UNICODE</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_RIGHT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP950</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_WANSUNG</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_NONE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_DEFAULT</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_Encoding</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_POSTSCRIPT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_MAC</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_ERRORS_H">FT_ERRORS_H</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_TRUETYPE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_OEM</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Error">FT_Error</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_Orientation</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_SYMBOL</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_F26Dot6">FT_F26Dot6</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_EVEN_ODD_FILL</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_XXX</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_F2Dot14">FT_F2Dot14</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_FLAGS</a></td><td><a href="ft2-header_file_macros.html#FT_XFREE86_H">FT_XFREE86_H</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a></td><td><a href="ft2-header_file_macros.html#FT_OUTLINE_H">FT_OUTLINE_H</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache">FTC_CMapCache</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_EXTERNAL_STREAM</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_HIGH_PRECISION</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_Lookup">FTC_CMapCache_Lookup</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FAST_GLYPHS</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_New">FTC_CMapCache_New</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_SIZES</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_INCLUDE_STUBS</a></td><td><a href="ft2-cache_subsystem.html#FTC_Face_Requester">FTC_Face_Requester</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_WIDTH</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_NONE</a></td><td><a href="ft2-cache_subsystem.html#FTC_FaceID">FTC_FaceID</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_GLYPH_NAMES</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_OWNER</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HINTER</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_REVERSE_FILL</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_Lookup">FTC_ImageCache_Lookup</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HORIZONTAL</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SINGLE_PASS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_LookupScaler">FTC_ImageCache_LookupScaler</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_KERNING</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SMART_DROPOUTS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_New">FTC_ImageCache_New</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_MULTIPLE_MASTERS</a></td><td><a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageType">FTC_ImageType</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SCALABLE</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Check">FT_Outline_Check</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageTypeRec">FTC_ImageTypeRec</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SFNT</a></td><td><a href="ft2-outline_processing.html#FT_Outline_ConicToFunc">FT_Outline_ConicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager">FTC_Manager</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Copy">FT_Outline_Copy</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Done">FTC_Manager_Done</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_VERTICAL</a></td><td><a href="ft2-outline_processing.html#FT_Outline_CubicToFunc">FT_Outline_CubicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupFace">FTC_Manager_LookupFace</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Decompose">FT_Outline_Decompose</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupSize">FTC_Manager_LookupSize</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Face">FT_Face</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Done">FT_Outline_Done</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_New">FTC_Manager_New</a></td></tr>
+<tr><td><a href="ft2-version.html#FT_Face_CheckTrueTypePatents">FT_Face_CheckTrueTypePatents</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Embolden">FT_Outline_Embolden</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_RemoveFaceID">FTC_Manager_RemoveFaceID</a></td></tr>
+<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharsOfVariant">FT_Face_GetCharsOfVariant</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Funcs">FT_Outline_Funcs</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Reset">FTC_Manager_Reset</a></td></tr>
+<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIndex">FT_Face_GetCharVariantIndex</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node">FTC_Node</a></td></tr>
+<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIsDefault">FT_Face_GetCharVariantIsDefault</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Bitmap">FT_Outline_Get_Bitmap</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a></td></tr>
+<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantSelectors">FT_Face_GetVariantSelectors</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_CBox">FT_Outline_Get_CBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBit">FTC_SBit</a></td></tr>
+<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantsOfChar">FT_Face_GetVariantsOfChar</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Orientation">FT_Outline_Get_Orientation</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache">FTC_SBitCache</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Face_Internal">FT_Face_Internal</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetInsideBorder">FT_Outline_GetInsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_Lookup">FTC_SBitCache_Lookup</a></td></tr>
+<tr><td><a href="ft2-version.html#FT_Face_SetUnpatentedHinting">FT_Face_SetUnpatentedHinting</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetOutsideBorder">FT_Outline_GetOutsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_LookupScaler">FTC_SBitCache_LookupScaler</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a></td><td><a href="ft2-outline_processing.html#FT_Outline_LineToFunc">FT_Outline_LineToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_New">FTC_SBitCache_New</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a></td><td><a href="ft2-outline_processing.html#FT_Outline_MoveToFunc">FT_Outline_MoveToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitRec">FTC_SBitRec</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_FloorFix">FT_FloorFix</a></td><td><a href="ft2-outline_processing.html#FT_Outline_New">FT_Outline_New</a></td><td><a href="ft2-cache_subsystem.html#FTC_Scaler">FTC_Scaler</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Render">FT_Outline_Render</a></td><td><a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</a></td></tr>
+<tr><td><a href="ft2-system_interface.html#FT_Free_Func">FT_Free_Func</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Reverse">FT_Outline_Reverse</a></td><td><a href="ft2-base_interface.html#ft_encoding_xxx">ft_encoding_xxx</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_BITMAP_EMBEDDING_ONLY</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Transform">FT_Outline_Transform</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_gridfit</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_EDITABLE_EMBEDDING</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Translate">FT_Outline_Translate</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_pixels</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_INSTALLABLE_EMBEDDING</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_subpixels</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_NO_SUBSETTING</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_truncate</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING</a></td><td><a href="ft2-sfnt_names.html#FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY">FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_unscaled</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING</a></td><td><a href="ft2-sfnt_names.html#FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY">FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_xxx</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_XXX</a></td><td><a href="ft2-incremental.html#FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_bitmap</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_FWord">FT_FWord</a></td><td><a href="ft2-truetype_tables.html#FT_PARAM_TAG_UNPATENTED_HINTING">FT_PARAM_TAG_UNPATENTED_HINTING</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_composite</a></td></tr>
+<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRAY</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">FT_Palette_Mode</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_none</a></td></tr>
+<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRIDFIT</a></td><td><a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_outline</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_GASP_H">FT_GASP_H</a></td><td><a href="ft2-header_file_macros.html#FT_PFR_H">FT_PFR_H</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_plotter</a></td></tr>
+<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_NO_TABLE</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_xxx</a></td></tr>
+<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_GRIDFIT</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY2</a></td><td><a href="ft2-base_interface.html#ft_kerning_default">ft_kerning_default</a></td></tr>
+<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_SMOOTHING</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY4</a></td><td><a href="ft2-base_interface.html#ft_kerning_unfitted">ft_kerning_unfitted</a></td></tr>
+<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_XXX</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD</a></td><td><a href="ft2-base_interface.html#ft_kerning_unscaled">ft_kerning_unscaled</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Generic">FT_Generic</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD_V</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_driver</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Generic_Finalizer">FT_Generic_Finalizer</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_memory</a></td></tr>
+<tr><td><a href="ft2-quick_advance.html#FT_Get_Advance">FT_Get_Advance</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_NONE</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_params</a></td></tr>
+<tr><td><a href="ft2-quick_advance.html#FT_Get_Advances">FT_Get_Advances</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_Pixel_Mode</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_pathname</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Charset_ID">FT_Get_BDF_Charset_ID</a></td><td><a href="ft2-basic_types.html#FT_Pointer">FT_Pointer</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_stream</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Property">FT_Get_BDF_Property</a></td><td><a href="ft2-basic_types.html#FT_Pos">FT_Pos</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_even_odd_fill</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a></td><td><a href="ft2-bdf_fonts.html#FT_PropertyType">FT_PropertyType</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_flags</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Charmap_Index">FT_Get_Charmap_Index</a></td><td><a href="ft2-basic_types.html#FT_PtrDist">FT_PtrDist</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_high_precision</a></td></tr>
+<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_From_Glyph_Index">FT_Get_CID_From_Glyph_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_AA</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_ignore_dropouts</a></td></tr>
+<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_Is_Internally_CID_Keyed">FT_Get_CID_Is_Internally_CID_Keyed</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_CLIP</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_none</a></td></tr>
+<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_Registry_Ordering_Supplement">FT_Get_CID_Registry_Ordering_Supplement</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DEFAULT</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_owner</a></td></tr>
+<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Format">FT_Get_CMap_Format</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DIRECT</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_reverse_fill</a></td></tr>
+<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Language_ID">FT_Get_CMap_Language_ID</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_XXX</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_single_pass</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_First_Char">FT_Get_First_Char</a></td><td><a href="ft2-raster.html#FT_Raster">FT_Raster</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgb</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_FSType_Flags">FT_Get_FSType_Flags</a></td><td><a href="ft2-raster.html#FT_Raster_BitSet_Func">FT_Raster_BitSet_Func</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgba</a></td></tr>
+<tr><td><a href="ft2-gasp_table.html#FT_Get_Gasp">FT_Get_Gasp</a></td><td><a href="ft2-raster.html#FT_Raster_BitTest_Func">FT_Raster_BitTest_Func</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_grays</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Get_Glyph">FT_Get_Glyph</a></td><td><a href="ft2-raster.html#FT_Raster_DoneFunc">FT_Raster_DoneFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_mono</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a></td><td><a href="ft2-raster.html#FT_Raster_Funcs">FT_Raster_Funcs</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_none</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Kerning">FT_Get_Kerning</a></td><td><a href="ft2-raster.html#FT_Raster_NewFunc">FT_Raster_NewFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal2</a></td></tr>
+<tr><td><a href="ft2-multiple_masters.html#FT_Get_MM_Var">FT_Get_MM_Var</a></td><td><a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal4</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Get_Module">FT_Get_Module</a></td><td><a href="ft2-raster.html#FT_Raster_RenderFunc">FT_Raster_RenderFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_xxx</a></td></tr>
+<tr><td><a href="ft2-multiple_masters.html#FT_Get_Multi_Master">FT_Get_Multi_Master</a></td><td><a href="ft2-raster.html#FT_Raster_ResetFunc">FT_Raster_ResetFunc</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_mono</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Name_Index">FT_Get_Name_Index</a></td><td><a href="ft2-raster.html#FT_Raster_SetModeFunc">FT_Raster_SetModeFunc</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_normal</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Next_Char">FT_Get_Next_Char</a></td><td><a href="ft2-header_file_macros.html#FT_RENDER_H">FT_RENDER_H</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_xxx</a></td></tr>
+<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Advance">FT_Get_PFR_Advance</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a></td><td><a href="ft2-type1_tables.html#PS_FontInfo">PS_FontInfo</a></td></tr>
+<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Kerning">FT_Get_PFR_Kerning</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a></td><td><a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a></td></tr>
+<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Metrics">FT_Get_PFR_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LIGHT</a></td><td><a href="ft2-type1_tables.html#PS_Private">PS_Private</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Postscript_Name">FT_Get_Postscript_Name</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_MONO</a></td><td><a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Info">FT_Get_PS_Font_Info</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_NORMAL</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_Blend_Flags</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Private">FT_Get_PS_Font_Private</a></td><td><a href="ft2-system_interface.html#FT_Realloc_Func">FT_Realloc_Func</a></td><td><a href="ft2-type1_tables.html#T1_FontInfo">T1_FontInfo</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Get_Renderer">FT_Get_Renderer</a></td><td><a href="ft2-module_management.html#FT_Remove_Module">FT_Remove_Module</a></td><td><a href="ft2-type1_tables.html#T1_Private">T1_Private</a></td></tr>
+<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a></td><td><a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_CUSTOM</a></td></tr>
+<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_EXPERT</a></td></tr>
+<tr><td><a href="ft2-truetype_tables.html#FT_Get_Sfnt_Table">FT_Get_Sfnt_Table</a></td><td><a href="ft2-base_interface.html#FT_Renderer">FT_Renderer</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_LATIN_1</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_SubGlyph_Info">FT_Get_SubGlyph_Info</a></td><td><a href="ft2-module_management.html#FT_Renderer_Class">FT_Renderer_Class</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_STANDARD</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Get_Track_Kerning">FT_Get_Track_Kerning</a></td><td><a href="ft2-base_interface.html#FT_Request_Size">FT_Request_Size</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_XXX</a></td></tr>
+<tr><td><a href="ft2-truetype_engine.html#FT_Get_TrueType_Engine_Type">FT_Get_TrueType_Engine_Type</a></td><td><a href="ft2-computations.html#FT_RoundFix">FT_RoundFix</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_DEFAULT</a></td></tr>
+<tr><td><a href="ft2-winfnt_fonts.html#FT_Get_WinFNT_Header">FT_Get_WinFNT_Header</a></td><td><a href="ft2-base_interface.html#FT_Select_Charmap">FT_Select_Charmap</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_ISO_10646</a></td></tr>
+<tr><td><a href="ft2-font_formats.html#FT_Get_X11_Font_Format">FT_Get_X11_Font_Format</a></td><td><a href="ft2-base_interface.html#FT_Select_Size">FT_Select_Size</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_1_1</a></td></tr>
+<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_ATS_Name">FT_GetFile_From_Mac_ATS_Name</a></td><td><a href="ft2-base_interface.html#FT_Set_Char_Size">FT_Set_Char_Size</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_2_0</a></td></tr>
+<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_Name">FT_GetFile_From_Mac_Name</a></td><td><a href="ft2-base_interface.html#FT_Set_Charmap">FT_Set_Charmap</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_32</a></td></tr>
+<tr><td><a href="ft2-mac_specific.html#FT_GetFilePath_From_Mac_ATS_Name">FT_GetFilePath_From_Mac_ATS_Name</a></td><td><a href="ft2-module_management.html#FT_Set_Debug_Hook">FT_Set_Debug_Hook</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_VARIANT_SELECTOR</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_GRIDFIT</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Blend_Coordinates">FT_Set_MM_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_XXX</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_PIXELS</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_Header">TT_Header</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_SUBPIXELS</a></td><td><a href="ft2-base_interface.html#FT_Set_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td><a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_TRUNCATE</a></td><td><a href="ft2-module_management.html#FT_Set_Renderer">FT_Set_Renderer</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_10646</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_UNSCALED</a></td><td><a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_7BIT_ASCII</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_8859_1</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_XXX</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_NONE</a></td><td><a href="ft2-header_file_macros.html#FT_SFNT_NAMES_H">FT_SFNT_NAMES_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Table_Info">FT_Sfnt_Table_Info</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARMENIAN</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_PLOTTER</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Tag">FT_Sfnt_Tag</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BENGALI</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</a></td><td><a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BURMESE</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a></td><td><a href="ft2-basic_types.html#FT_Short">FT_Short</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_DEVANAGARI</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_Glyph_BBox_Mode</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_BBOX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEEZ</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_CELL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEORGIAN</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_NOMINAL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GREEK</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Get_CBox">FT_Glyph_Get_CBox</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_REAL_DIM</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GUJARATI</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_SCALES</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GURMUKHI</a></td></tr>
+<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</a></td><td><a href="ft2-header_file_macros.html#FT_SIZES_H">FT_SIZES_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_HEBREW</a></td></tr>
+<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_StrokeBorder">FT_Glyph_StrokeBorder</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_JAPANESE</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_Size">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KANNADA</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Transform">FT_Glyph_Transform</a></td><td><a href="ft2-base_interface.html#FT_Size_Internal">FT_Size_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KHMER</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a></td><td><a href="ft2-base_interface.html#FT_Size_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KOREAN</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-base_interface.html#FT_Size_Request">FT_Size_Request</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_LAOTIAN</a></td></tr>
+<tr><td><a href="ft2-bitmap_handling.html#FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALAYALAM</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td><a href="ft2-base_interface.html#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALDIVIAN</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></td><td><a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MONGOLIAN</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_GZIP_H">FT_GZIP_H</a></td><td><a href="ft2-base_interface.html#FT_Slot_Internal">FT_Slot_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ORIYA</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td><a href="ft2-raster.html#FT_Span">FT_Span</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td><a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RSYMBOL</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_LEFT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RUSSIAN</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SIMPLIFIED_CHINESE</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td><a href="ft2-header_file_macros.html#FT_STROKER_H">FT_STROKER_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINDHI</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_MULTIPLE_MASTERS">FT_HAS_MULTIPLE_MASTERS</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_BUTT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINHALESE</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SLAVIC</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#FT_Has_PS_Glyph_Names">FT_Has_PS_Glyph_Names</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_SQUARE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TAMIL</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_BEVEL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TELUGU</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_IMAGE_TAG">FT_IMAGE_TAG</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_THAI</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TIBETAN</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental">FT_Incremental</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_BOLD</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TRADITIONAL_CHINESE</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_ITALIC</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_UNINTERP</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_VIETNAMESE</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</a></td><td><a href="ft2-system_interface.html#FT_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_XXX</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</a></td><td><a href="ft2-system_interface.html#FT_Stream_CloseFunc">FT_Stream_CloseFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</a></td><td><a href="ft2-system_interface.html#FT_Stream_IoFunc">FT_Stream_IoFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_BIG_5</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_GB2312</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_Metrics">FT_Incremental_Metrics</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_JOHAB</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SJIS</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SYMBOL_CS</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UCS_4</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UNICODE_CS</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_WANSUNG</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_CubicTo">FT_Stroker_CubicTo</a></td><td><a href="ft2-truetype_tables.html#TT_OS2">TT_OS2</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Done">FT_Stroker_Done</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_IS_SFNT">FT_IS_SFNT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ADOBE</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_IS_TRICKY">FT_IS_TRICKY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetCounts">FT_Stroker_GetCounts</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_Stroker_LineCap</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MICROSOFT</a></td></tr>
+<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_XXX</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineTo">FT_Stroker_LineTo</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr>
+<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_New">FT_Stroker_New</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a></td></tr>
</table>
<hr>
<table><tr><td width="100%"></td>
<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><font size=-2>generated on Thu Mar 12 10:57:36 2009</font></center></body>
+<center><font size=-2>generated on Sat Feb 13 08:32:30 2010</font></center></body>
</html>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html b/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html
index 9ae6a5f992..04da06ffd8 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
LCD Filtering
diff --git a/src/3rdparty/freetype/docs/reference/ft2-list_processing.html b/src/3rdparty/freetype/docs/reference/ft2-list_processing.html
index bf0df50d0e..47552340fa 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-list_processing.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-list_processing.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
List Processing
@@ -55,6 +55,14 @@ List Processing
<table align=center width="75%"><tr><td>
<h4><a name="FT_List">FT_List</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ListRec_* <b>FT_List</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a list record (see <a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a>).</p>
</td></tr></table><br>
</td></tr></table>
@@ -66,6 +74,14 @@ List Processing
<table align=center width="75%"><tr><td>
<h4><a name="FT_ListNode">FT_ListNode</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPES_H (freetype/fttypes.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ListNodeRec_* <b>FT_ListNode</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>Many elements and objects in FreeType are listed through an <a href="ft2-list_processing.html#FT_List">FT_List</a> record (see <a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a>). As its name suggests, an FT_ListNode is a handle to a single list element.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-lzw.html b/src/3rdparty/freetype/docs/reference/ft2-lzw.html
index 5ef0a5f7ab..fbd0f35953 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-lzw.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-lzw.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
LZW Streams
diff --git a/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html b/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html
index 3528c72db7..ff64964daa 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Mac Specific Interface
diff --git a/src/3rdparty/freetype/docs/reference/ft2-module_management.html b/src/3rdparty/freetype/docs/reference/ft2-module_management.html
index e621f27745..a571c87df8 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-module_management.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-module_management.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Module Management
@@ -340,6 +340,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h).
</pre></table><br>
<table align=center width="87%"><tr><td>
<p>This function is used to create a new FreeType library instance from a given memory object. It is thus possible to use libraries with distinct memory allocators within the same program.</p>
+<p>Normally, you would call this function (followed by a call to <a href="ft2-module_management.html#FT_Add_Default_Modules">FT_Add_Default_Modules</a> or a series of calls to <a href="ft2-module_management.html#FT_Add_Module">FT_Add_Module</a>) instead of <a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a> to initialize the FreeType library.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
<p></p>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html b/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html
index a977f87f79..ac2251536a 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Multiple Masters
diff --git a/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html b/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html
index e2289ef093..06c7db3753 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
OpenType Validation
diff --git a/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html b/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html
index d0b670ed96..c0c0bc8ea7 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Outline Processing
@@ -79,6 +79,11 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
} <b>FT_Outline</b>;
+ /* Following limits must be consistent with */
+ /* <b>FT_Outline</b>.{n_contours,n_points} */
+#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX
+#define FT_OUTLINE_POINTS_MAX SHRT_MAX
+
</pre></table><br>
<table align=center width="87%"><tr><td>
<p>This structure is used to describe an outline to the scan-line converter.</p>
@@ -96,8 +101,11 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
<p>A pointer to an array of &lsquo;n_points&rsquo; <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a> elements, giving the outline's point coordinates.</p>
</td></tr>
<tr valign=top><td><b>tags</b></td><td>
-<p>A pointer to an array of &lsquo;n_points&rsquo; chars, giving each outline point's type. If bit&nbsp;0 is unset, the point is &lsquo;off&rsquo; the curve, i.e., a Bézier control point, while it is &lsquo;on&rsquo; when set.</p>
+<p>A pointer to an array of &lsquo;n_points&rsquo; chars, giving each outline point's type.</p>
+<p>If bit&nbsp;0 is unset, the point is &lsquo;off&rsquo; the curve, i.e., a Bézier control point, while it is &lsquo;on&rsquo; if set.</p>
<p>Bit&nbsp;1 is meaningful for &lsquo;off&rsquo; points only. If set, it indicates a third-order Bézier arc control point; and a second-order control point if unset.</p>
+<p>If bit&nbsp;2 is set, bits 5-7 contain the drop-out mode (as defined in the OpenType specification; the value is the same as the argument to the SCANMODE instruction).</p>
+<p>Bits 3 and&nbsp;4 are reserved for internal purposes.</p>
</td></tr>
<tr valign=top><td><b>contours</b></td><td>
<p>An array of &lsquo;n_contours&rsquo; shorts, giving the end point of each contour within the outline. For example, the first contour is defined by the points &lsquo;0&rsquo; to &lsquo;contours[0]&rsquo;, the second one is defined by the points &lsquo;contours[0]+1&rsquo; to &lsquo;contours[1]&rsquo;, etc.</p>
@@ -107,6 +115,9 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</td></tr>
</table>
</td></tr></table>
+<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
+<p>The B/W rasterizer only checks bit&nbsp;2 in the &lsquo;tags&rsquo; array for the first point of each contour. The drop-out mode as given with <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a>, <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SMART_DROPOUTS</a>, and <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_INCLUDE_STUBS</a> in &lsquo;flags&rsquo; is then overridden.</p>
+</td></tr></table>
</td></tr></table>
<hr width="75%">
<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
@@ -146,7 +157,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</td></tr>
<tr valign=top><td colspan=0><b>FT_OUTLINE_EVEN_ODD_FILL</b></td></tr>
<tr valign=top><td></td><td>
-<p>By default, outlines are filled using the non-zero winding rule. If set to 1, the outline will be filled using the even-odd fill rule (only works with the smooth raster).</p>
+<p>By default, outlines are filled using the non-zero winding rule. If set to 1, the outline will be filled using the even-odd fill rule (only works with the smooth rasterizer).</p>
</td></tr>
<tr valign=top><td colspan=0><b>FT_OUTLINE_REVERSE_FILL</b></td></tr>
<tr valign=top><td></td><td>
@@ -154,15 +165,15 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</td></tr>
<tr valign=top><td colspan=0><b>FT_OUTLINE_IGNORE_DROPOUTS</b></td></tr>
<tr valign=top><td></td><td>
-<p>By default, the scan converter will try to detect drop-outs in an outline and correct the glyph bitmap to ensure consistent shape continuity. If set, this flag hints the scan-line converter to ignore such cases.</p>
+<p>By default, the scan converter will try to detect drop-outs in an outline and correct the glyph bitmap to ensure consistent shape continuity. If set, this flag hints the scan-line converter to ignore such cases. See below for more information.</p>
</td></tr>
<tr valign=top><td colspan=0><b>FT_OUTLINE_SMART_DROPOUTS</b></td></tr>
<tr valign=top><td></td><td>
-<p>Select smart dropout control. If unset, use simple dropout control. Ignored if <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a> is set.</p>
+<p>Select smart dropout control. If unset, use simple dropout control. Ignored if <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a> is set. See below for more information.</p>
</td></tr>
<tr valign=top><td colspan=0><b>FT_OUTLINE_INCLUDE_STUBS</b></td></tr>
<tr valign=top><td></td><td>
-<p>If set, turn pixels on for &lsquo;stubs&rsquo;, otherwise exclude them. Ignored if <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a> is set.</p>
+<p>If set, turn pixels on for &lsquo;stubs&rsquo;, otherwise exclude them. Ignored if <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a> is set. See below for more information.</p>
</td></tr>
<tr valign=top><td colspan=0><b>FT_OUTLINE_HIGH_PRECISION</b></td></tr>
<tr valign=top><td></td><td>
@@ -174,6 +185,8 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</table>
</td></tr></table>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
+<p>The flags <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a>, <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SMART_DROPOUTS</a>, and <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_INCLUDE_STUBS</a> are ignored by the smooth rasterizer.</p>
+<p>There exists a second mechanism to pass the drop-out mode to the B/W rasterizer; see the &lsquo;tags&rsquo; field in <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a>.</p>
<p>Please refer to the description of the &lsquo;SCANTYPE&rsquo; instruction in the OpenType specification (in file &lsquo;ttinst1.doc&rsquo;) how simple drop-outs, smart drop-outs, and stubs are defined.</p>
</td></tr></table>
</td></tr></table>
@@ -706,7 +719,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</pre></table><br>
<table align=center width="87%"><tr><td>
-<p>A function pointer type use to describe the signature of a &lsquo;conic to&rsquo; function during outline walking/decomposition.</p>
+<p>A function pointer type used to describe the signature of a &lsquo;conic to&rsquo; function during outline walking or decomposition.</p>
<p>A &lsquo;conic to&rsquo; is emitted to indicate a second-order Bézier arc in the outline.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
@@ -749,7 +762,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</pre></table><br>
<table align=center width="87%"><tr><td>
-<p>A function pointer type used to describe the signature of a &lsquo;cubic to&rsquo; function during outline walking/decomposition.</p>
+<p>A function pointer type used to describe the signature of a &lsquo;cubic to&rsquo; function during outline walking or decomposition.</p>
<p>A &lsquo;cubic to&rsquo; is emitted to indicate a third-order Bézier arc.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
@@ -799,7 +812,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
</pre></table><br>
<table align=center width="87%"><tr><td>
-<p>A structure to hold various function pointers used during outline decomposition in order to emit segments, conic, and cubic Béziers, as well as &lsquo;move to&rsquo; and &lsquo;close to&rsquo; operations.</p>
+<p>A structure to hold various function pointers used during outline decomposition in order to emit segments, conic, and cubic Béziers.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>fields</b></em></td></tr><tr><td>
<p></p>
@@ -830,7 +843,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
x' = (x &lt;&lt; shift) - delta
y' = (x &lt;&lt; shift) - delta
</pre>
-<p>Set the value of &lsquo;shift&rsquo; and &lsquo;delta&rsquo; to&nbsp;0 to get the original point coordinates.</p>
+<p>Set the values of &lsquo;shift&rsquo; and &lsquo;delta&rsquo; to&nbsp;0 to get the original point coordinates.</p>
</td></tr></table>
</td></tr></table>
<hr width="75%">
@@ -852,7 +865,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h).
</pre></table><br>
<table align=center width="87%"><tr><td>
-<p>Walk over an outline's structure to decompose it into individual segments and Bézier arcs. This function is also able to emit &lsquo;move to&rsquo; and &lsquo;close to&rsquo; operations to indicate the start and end of new contours in the outline.</p>
+<p>Walk over an outline's structure to decompose it into individual segments and Bézier arcs. This function also emits &lsquo;move to&rsquo; operations to indicate the start of new contours in the outline.</p>
</td></tr></table><br>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
<p></p>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html
index 8edf34ea96..2b5e146e0b 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
PFR Fonts
diff --git a/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html b/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html
index c832d437cf..9a509484b7 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Quick retrieval of advance values
@@ -52,6 +52,14 @@ Quick retrieval of advance values
<table align=center width="75%"><tr><td>
<h4><a name="FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_ADVANCES_H (freetype/ftadvanc.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_ADVANCE_FLAG_FAST_ONLY</b> 0x20000000UL
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A bit-flag to be OR-ed with the &lsquo;flags&rsquo; parameter of the <a href="ft2-quick_advance.html#FT_Get_Advance">FT_Get_Advance</a> and <a href="ft2-quick_advance.html#FT_Get_Advances">FT_Get_Advances</a> functions.</p>
<p>If set, it indicates that you want these functions to fail if the corresponding hinting mode or font driver doesn't allow for very quick advance computation.</p>
<p>Typically, glyphs which are either unscaled, unhinted, bitmapped, or light-hinted can have their advance width computed very quickly.</p>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-raster.html b/src/3rdparty/freetype/docs/reference/ft2-raster.html
index 9840eb4492..ee0e38bb3e 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-raster.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-raster.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Scanline Converter
@@ -55,6 +55,14 @@ Scanline Converter
<table align=center width="75%"><tr><td>
<h4><a name="FT_Raster">FT_Raster</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_IMAGE_H (freetype/ftimage.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_RasterRec_* <b>FT_Raster</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle (pointer) to a raster object. Each object can be used independently to convert an outline into a bitmap or pixmap.</p>
</td></tr></table><br>
</td></tr></table>
@@ -294,7 +302,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
<span class="keyword">const</span> <span class="keyword">void</span>* source;
<span class="keyword">int</span> flags;
<a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a> gray_spans;
- <a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a> black_spans;
+ <a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a> black_spans; /* doesn't work! */
<a href="ft2-raster.html#FT_Raster_BitTest_Func">FT_Raster_BitTest_Func</a> bit_test; /* doesn't work! */
<a href="ft2-raster.html#FT_Raster_BitSet_Func">FT_Raster_BitSet_Func</a> bit_set; /* doesn't work! */
<span class="keyword">void</span>* user;
@@ -322,7 +330,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h).
<p>The gray span drawing callback.</p>
</td></tr>
<tr valign=top><td><b>black_spans</b></td><td>
-<p>The black span drawing callback.</p>
+<p>The black span drawing callback. UNIMPLEMENTED!</p>
</td></tr>
<tr valign=top><td><b>bit_test</b></td><td>
<p>The bit test callback. UNIMPLEMENTED!</p>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html b/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html
index 94cddd8786..ff859bdccd 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,14 +35,18 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
SFNT Names
</h1></center>
<h2>Synopsis</h2>
<table align=center cellspacing=5 cellpadding=0 border=0>
-<tr><td></td><td><a href="#FT_SfntName">FT_SfntName</a></td><td></td><td><a href="#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a></td><td></td><td><a href="#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a></td></tr>
+<tr><td></td><td><a href="#FT_SfntName">FT_SfntName</a></td></tr>
+<tr><td></td><td><a href="#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a></td></tr>
+<tr><td></td><td><a href="#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a></td></tr>
+<tr><td></td><td><a href="#FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY">FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY</a></td></tr>
+<tr><td></td><td><a href="#FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY">FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY</a></td></tr>
</table><br><br>
<table align=center width="87%"><tr><td>
@@ -177,7 +181,7 @@ Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).
<p>FreeType error code. 0&nbsp;means success.</p>
</td></tr></table>
<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
-<p>The &lsquo;string&rsquo; array returned in the &lsquo;aname&rsquo; structure is not null-terminated.</p>
+<p>The &lsquo;string&rsquo; array returned in the &lsquo;aname&rsquo; structure is not null-terminated. The application should deallocate it if it is no longer in use.</p>
<p>Use <a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a> to get the total number of available &lsquo;name&rsquo; table entries, then do a loop until you get the right platform, encoding, and name ID.</p>
</td></tr></table>
</td></tr></table>
@@ -186,5 +190,43 @@ Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).
<td width="100%"></td>
<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
+<table align=center width="75%"><tr><td>
+<h4><a name="FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY">FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY</a></h4>
+<table align=center width="87%"><tr><td>
+Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY</b> <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>( 'i', 'g', 'p', 'f' )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
+<p>A constant used as the tag of <a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a> structures to make FT_Open_Face() ignore preferred family subfamily names in &lsquo;name&rsquo; table since OpenType version 1.4. For backwards compatibility with legacy systems which has 4-face-per-family restriction.</p>
+</td></tr></table><br>
+</td></tr></table>
+<hr width="75%">
+<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
+<td width="100%"></td>
+<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
+
+<table align=center width="75%"><tr><td>
+<h4><a name="FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY">FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY</a></h4>
+<table align=center width="87%"><tr><td>
+Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY</b> <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>( 'i', 'g', 'p', 's' )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
+<p>A constant used as the tag of <a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a> structures to make FT_Open_Face() ignore preferred subfamily names in &lsquo;name&rsquo; table since OpenType version 1.4. For backwards compatibility with legacy systems which has 4-face-per-family restriction.</p>
+</td></tr></table><br>
+</td></tr></table>
+<hr width="75%">
+<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
+<td width="100%"></td>
+<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
+
</body>
</html>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html b/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html
index 324e584c50..1c48be997f 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Size Management
diff --git a/src/3rdparty/freetype/docs/reference/ft2-system_interface.html b/src/3rdparty/freetype/docs/reference/ft2-system_interface.html
index 809e2a7705..ed50f8ad5d 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-system_interface.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-system_interface.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
System Interface
@@ -54,6 +54,14 @@ System Interface
<table align=center width="75%"><tr><td>
<h4><a name="FT_Memory">FT_Memory</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_SYSTEM_H (freetype/ftsystem.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_MemoryRec_* <b>FT_Memory</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a given memory manager object, defined with an <a href="ft2-system_interface.html#FT_MemoryRec">FT_MemoryRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -220,6 +228,14 @@ Defined in FT_SYSTEM_H (freetype/ftsystem.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_Stream">FT_Stream</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_SYSTEM_H (freetype/ftsystem.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StreamRec_* <b>FT_Stream</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an input stream.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-toc.html b/src/3rdparty/freetype/docs/reference/ft2-toc.html
index cb51bdbea9..a2330f6380 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-toc.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-toc.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -34,7 +34,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>Table of Contents</h1></center>
<br><table align=center width="75%"><tr><td><h2>General Remarks</h2><ul class="empty"><li>
@@ -211,5 +211,5 @@
<td width="100%"></td>
</tr></table>
-<center><font size=-2>generated on Thu Mar 12 10:57:36 2009</font></center></body>
+<center><font size=-2>generated on Sat Feb 13 08:32:30 2010</font></center></body>
</html>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html b/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html
index 007e8331a5..45369ea882 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
The TrueType Engine
diff --git a/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html b/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html
index 6d83a1a505..c2bdb192b5 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
TrueType Tables
@@ -1197,6 +1197,14 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_PARAM_TAG_UNPATENTED_HINTING">FT_PARAM_TAG_UNPATENTED_HINTING</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_UNPATENTED_HINTING_H (freetype/ttunpat.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+#define <b>FT_PARAM_TAG_UNPATENTED_HINTING</b> <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>( 'u', 'n', 'p', 'a' )
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A constant used as the tag of an <a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a> structure to indicate that unpatented methods only should be used by the TrueType bytecode interpreter for a typeface opened by <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html b/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html
index 8eaa3f9a10..44ca9772d0 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Type 1 Tables
@@ -86,6 +86,14 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
<table align=center width="75%"><tr><td>
<h4><a name="PS_FontInfo">PS_FontInfo</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> PS_FontInfoRec_* <b>PS_FontInfo</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -97,6 +105,14 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
<table align=center width="75%"><tr><td>
<h4><a name="T1_FontInfo">T1_FontInfo</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a> <b>T1_FontInfo</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This type is equivalent to <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a>. It is deprecated but kept to maintain source compatibility between various versions of FreeType.</p>
</td></tr></table><br>
</td></tr></table>
@@ -165,6 +181,14 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
<table align=center width="75%"><tr><td>
<h4><a name="PS_Private">PS_Private</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> PS_PrivateRec_* <b>PS_Private</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -176,6 +200,14 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
<table align=center width="75%"><tr><td>
<h4><a name="T1_Private">T1_Private</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a> <b>T1_Private</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This type is equivalent to <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a>. It is deprecated but kept to maintain source compatibility between various versions of FreeType.</p>
</td></tr></table><br>
</td></tr></table>
@@ -266,6 +298,14 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
<table align=center width="75%"><tr><td>
<h4><a name="CID_FaceDict">CID_FaceDict</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> CID_FaceDictRec_* <b>CID_FaceDict</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a <a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -323,6 +363,14 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
<table align=center width="75%"><tr><td>
<h4><a name="CID_FaceInfo">CID_FaceInfo</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> CID_FaceInfoRec_* <b>CID_FaceInfo</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to a <a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
@@ -334,6 +382,14 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
<table align=center width="75%"><tr><td>
<h4><a name="CID_Info">CID_Info</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a> <b>CID_Info</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>This type is equivalent to <a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a>. It is deprecated but kept to maintain source compatibility between various versions of FreeType.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html b/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html
index d3b48b1286..98ab2f9e1a 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
User allocation
diff --git a/src/3rdparty/freetype/docs/reference/ft2-version.html b/src/3rdparty/freetype/docs/reference/ft2-version.html
index 2c7d9c1ef7..9949b8f0b3 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-version.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-version.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
FreeType Version
@@ -58,7 +58,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MAJOR</a> 2
#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MINOR</a> 3
-#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a> 9
+#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a> 12
</pre></table><br>
<table align=center width="87%"><tr><td>
diff --git a/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html
index 7c850d7691..82ada84323 100644
--- a/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html
+++ b/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html
@@ -3,7 +3,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.3.9 API Reference</title>
+<title>FreeType-2.3.12 API Reference</title>
<style type="text/css">
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
color: #000000;
@@ -35,7 +35,7 @@
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
<td width="100%"></td>
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
-<center><h1>FreeType-2.3.9 API Reference</h1></center>
+<center><h1>FreeType-2.3.12 API Reference</h1></center>
<center><h1>
Window FNT Files
@@ -215,6 +215,14 @@ Defined in FT_WINFONTS_H (freetype/ftwinfnt.h).
<table align=center width="75%"><tr><td>
<h4><a name="FT_WinFNT_Header">FT_WinFNT_Header</a></h4>
<table align=center width="87%"><tr><td>
+Defined in FT_WINFONTS_H (freetype/ftwinfnt.h).
+</td></tr></table><br>
+<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
+
+ <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_WinFNT_HeaderRec_* <b>FT_WinFNT_Header</b>;
+
+</pre></table><br>
+<table align=center width="87%"><tr><td>
<p>A handle to an <a href="ft2-winfnt_fonts.html#FT_WinFNT_HeaderRec">FT_WinFNT_HeaderRec</a> structure.</p>
</td></tr></table><br>
</td></tr></table>
diff --git a/src/3rdparty/freetype/docs/release b/src/3rdparty/freetype/docs/release
index e93f430df8..5e2d51f880 100644
--- a/src/3rdparty/freetype/docs/release
+++ b/src/3rdparty/freetype/docs/release
@@ -15,10 +15,14 @@ How to prepare a new release
. docs/VERSION.DLL: Document changed `version_info'.
-. ChangeLog: Announce new release (both in freetype2 and ft2demos
- modules).
+. ChangeLog: Announce new release (both in the freetype2 and
+ freetype2-demos modules).
-. Copy the CVS archive to another directory and run
+. Clone the git archive to another directory with
+
+ git clone -l -s . ../freetype2.test
+
+ or something like this and run
make distclean; make devel; make
make distclean; make devel; make multi
@@ -29,16 +33,26 @@ How to prepare a new release
make distclean; ./configure; make
make distclean; ./configure CC=g++; make
- to test compilation with both gcc and g++.
+ in the cloned repository to test compilation with both gcc and g++.
+
+. Test C++ compilation for freetype2-demos too (using `git clone' as
+ above).
+
+. Run src/tools/chktrcmp.py and check that there are no undefined
+ trace_XXXX macros.
-. Test C++ compilation for ft2demos too.
+. Tag the git repositories (freetype2, freetype2-demos) with
-. Tag the CVS (freetype2, ft2demos).
+ git tag VER-<version> -m "" -u <committer>
+
+ and push the tags with
+
+ git push --tags
TODO: Tag the home page CVS on savannah.nongnu.org.
-. Say `make dist' in both the freetype2 and ft2demos modules to
- generate the .tar.gz, .tar.bz2, and .zip files.
+. Say `make dist' in both the freetype2 and freetype2-demos modules
+ to generate the .tar.gz, .tar.bz2, and .zip files.
. Create the doc bundles (freetype-doc-<version>.tar.gz,
freetype-doc-<version>.tar.bz2, ftdoc<version>.zip). This is
@@ -56,7 +70,7 @@ How to prepare a new release
#!/bin/sh
- VERSION=2.3.7
+ VERSION=2.3.11
SAVANNAH_USER=wl
SOURCEFORGE_USER=wlemb
@@ -66,22 +80,19 @@ How to prepare a new release
version=`echo $VERSION | sed "s/\\.//g"`
- UNIX_PACKAGES="freetype ft2demos freetype-doc"
- WINDOWS_PACKAGES="ft ftdmo ftdoc"
- UNIX_ZIP="tar.gz tar.bz2"
- WINDOWS_ZIP="zip"
+ FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
+ freetype-$VERSION.tar.bz2 \
+ ft$version.zip"
+ FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
+ ft2demos-$VERSION.tar.bz2 \
+ ftdmo$version.zip"
+ FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
+ freetype-doc-$VERSION.tar.bz2 \
+ ftdoc$version.zip"
- PACKAGE_LIST=
- for i in $UNIX_PACKAGES; do
- for j in $UNIX_ZIP; do
- PACKAGE_LIST="$PACKAGE_LIST $i-$VERSION.$j"
- done
- done
- for i in $WINDOWS_PACKAGES; do
- for j in $WINDOWS_ZIP; do
- PACKAGE_LIST="$PACKAGE_LIST $i$version.$j"
- done
- done
+ PACKAGE_LIST="$FREETYPE_PACKAGES \
+ $FT2DEMOS_PACKAGES \
+ $FTDOC_PACKAGES"
set -e
unset passphrase
@@ -107,16 +118,34 @@ How to prepare a new release
echo $passphrase | $GPG --passphrase-fd 0 -ba -o $f.sig $f
done
- SIGNATURE_LIST=
- for i in $PACKAGE_LIST; do
- SIGNATURE_LIST="$SIGNATURE_LIST $i.sig"
+ FREETYPE_SIGNATURES=
+ for i in $FREETYPE_PACKAGES; do
+ FREETYPE_SIGNATURES="$FREETYPE_SIGNATURES $i.sig"
+ done
+
+ FT2DEMOS_SIGNATURES=
+ for i in $FT2DEMOS_PACKAGES; do
+ FT2DEMOS_SIGNATURES="$FT2DEMOS_SIGNATURES $i.sig"
done
+ FTDOC_SIGNATURES=
+ for i in $FTDOC_PACKAGES; do
+ FTDOC_SIGNATURES="$FTDOC_SIGNATURES $i.sig"
+ done
+
+ SIGNATURE_LIST="$FREETYPE_SIGNATURES \
+ $FT2DEMOS_SIGNATURES \
+ $FTDOC_SIGNATURES"
+
scp $PACKAGE_LIST $SIGNATURE_LIST \
$SAVANNAH_USER@dl.sv.nongnu.org:/releases/freetype/
- rsync -avP -e ssh $PACKAGE_LIST $SIGNATURE_LIST \
- $SOURCEFORGE_USER@frs.sf.net:uploads/
+ rsync -avP -e ssh $FREETYPE_PACKAGES $FREETYPE_SIGNATURES \
+ $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
+ rsync -avP -e ssh $FT2DEMOS_PACKAGES $FT2DEMOS_SIGNATURES \
+ $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype-demos/$VERSION/
+ rsync -avP -e ssh $FTDOC_PACKAGES $FTDOC_SIGNATURES \
+ $SOURCEFORGE_USER,freetype@frs.sf.net:/home/frs/project/f/fr/freetype/freetype-docs/$VERSION/
# EOF
@@ -153,7 +182,7 @@ How to prepare a new release
----------------------------------------------------------------------
-Copyright 2003, 2005, 2006, 2007 by
+Copyright 2003, 2005, 2006, 2007, 2009 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/src/3rdparty/freetype/include/freetype/config/ftconfig.h b/src/3rdparty/freetype/include/freetype/config/ftconfig.h
index 3c0b8b1641..43d587e02b 100644
--- a/src/3rdparty/freetype/include/freetype/config/ftconfig.h
+++ b/src/3rdparty/freetype/include/freetype/config/ftconfig.h
@@ -4,7 +4,7 @@
/* */
/* ANSI-specific configuration file (specification only). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -35,7 +35,6 @@
/* */
/*************************************************************************/
-
#ifndef __FTCONFIG_H__
#define __FTCONFIG_H__
@@ -306,9 +305,38 @@ FT_BEGIN_HEADER
/* Provide assembler fragments for performance-critical functions. */
/* These must be defined `static __inline__' with GCC. */
+#if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */
+#define FT_MULFIX_ASSEMBLER FT_MulFix_arm
+
+ /* documentation is in freetype.h */
+
+ static __inline FT_Int32
+ FT_MulFix_arm( FT_Int32 a,
+ FT_Int32 b )
+ {
+ register FT_Int32 t, t2;
+
+
+ __asm
+ {
+ smull t2, t, b, a /* (lo=t2,hi=t) = a*b */
+ mov a, t, asr #31 /* a = (hi >> 31) */
+ add a, a, #0x8000 /* a += 0x8000 */
+ adds t2, t2, a /* t2 += a */
+ adc t, t, #0 /* t += carry */
+ mov a, t2, lsr #16 /* a = t2 >> 16 */
+ orr a, a, t, lsl #16 /* a |= t << 16 */
+ }
+ return a;
+ }
+
+#endif /* __CC_ARM || __ARMCC__ */
+
+
#ifdef __GNUC__
-#if defined( __arm__ ) && !defined( __thumb__ )
+#if defined( __arm__ ) && !defined( __thumb__ ) && \
+ !( defined( __CC_ARM ) || defined( __ARMCC__ ) )
#define FT_MULFIX_ASSEMBLER FT_MulFix_arm
/* documentation is in freetype.h */
@@ -333,7 +361,7 @@ FT_BEGIN_HEADER
return a;
}
-#endif /* __arm__ && !__thumb__ */
+#endif /* __arm__ && !__thumb__ && !( __CC_ARM || __ARMCC__ ) */
#if defined( i386 )
#define FT_MULFIX_ASSEMBLER FT_MulFix_i386
diff --git a/src/3rdparty/freetype/include/freetype/config/ftoption.h b/src/3rdparty/freetype/include/freetype/config/ftoption.h
index 597a2bb014..2047436002 100644
--- a/src/3rdparty/freetype/include/freetype/config/ftoption.h
+++ b/src/3rdparty/freetype/include/freetype/config/ftoption.h
@@ -4,7 +4,8 @@
/* */
/* User-selectable configuration macros (specification only). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -85,9 +86,9 @@ FT_BEGIN_HEADER
/* */
/* This macro has no impact on the FreeType API, only on its */
/* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
- /* FT_Render_Glyph still generates a bitmap that is 3 times larger than */
- /* the original size; the difference will be that each triplet of */
- /* subpixels has R=G=B. */
+ /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */
+ /* the original size in case this macro isn't defined; however, each */
+ /* triplet of subpixels has R=G=B. */
/* */
/* This is done to allow FreeType clients to run unmodified, forcing */
/* them to display normal gray-level anti-aliased glyphs. */
@@ -312,10 +313,11 @@ FT_BEGIN_HEADER
/* */
/* Allow the use of FT_Incremental_Interface to load typefaces that */
/* contain no glyph data, but supply it via a callback function. */
- /* This allows FreeType to be used with the PostScript language, using */
- /* the GhostScript interpreter. */
+ /* This is required by clients supporting document formats which */
+ /* supply font data incrementally as the document is parsed, such */
+ /* as the Ghostscript interpreter for the PostScript language. */
/* */
-/* #define FT_CONFIG_OPTION_INCREMENTAL */
+#define FT_CONFIG_OPTION_INCREMENTAL
/*************************************************************************/
@@ -396,6 +398,20 @@ FT_BEGIN_HEADER
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
+ /*************************************************************************/
+ /* */
+ /* Position Independent Code */
+ /* */
+ /* If this macro is set (which is _not_ the default), FreeType2 will */
+ /* avoid creating constants that require address fixups. Instead the */
+ /* constants will be moved into a struct and additional intialization */
+ /* code will be used. */
+ /* */
+ /* Setting this macro is needed for systems that prohibit address */
+ /* fixups, such as BREW. */
+ /* */
+/* #define FT_CONFIG_OPTION_PIC */
+
/*************************************************************************/
/*************************************************************************/
@@ -439,7 +455,7 @@ FT_BEGIN_HEADER
/* does not contain any glyph name though. */
/* */
/* Accessing SFNT names is done through the functions declared in */
- /* `freetype/ftnames.h'. */
+ /* `freetype/ftsnames.h'. */
/* */
#define TT_CONFIG_OPTION_SFNT_NAMES
@@ -457,6 +473,7 @@ FT_BEGIN_HEADER
#define TT_CONFIG_CMAP_FORMAT_8
#define TT_CONFIG_CMAP_FORMAT_10
#define TT_CONFIG_CMAP_FORMAT_12
+#define TT_CONFIG_CMAP_FORMAT_13
#define TT_CONFIG_CMAP_FORMAT_14
diff --git a/src/3rdparty/freetype/include/freetype/config/ftstdlib.h b/src/3rdparty/freetype/include/freetype/config/ftstdlib.h
index ce5557aef3..30ec14e74e 100644
--- a/src/3rdparty/freetype/include/freetype/config/ftstdlib.h
+++ b/src/3rdparty/freetype/include/freetype/config/ftstdlib.h
@@ -61,6 +61,7 @@
#define FT_CHAR_BIT CHAR_BIT
#define FT_INT_MAX INT_MAX
+#define FT_INT_MIN INT_MIN
#define FT_UINT_MAX UINT_MAX
#define FT_ULONG_MAX ULONG_MAX
diff --git a/src/3rdparty/freetype/include/freetype/freetype.h b/src/3rdparty/freetype/include/freetype/freetype.h
index 364388b5d6..942a740f00 100644
--- a/src/3rdparty/freetype/include/freetype/freetype.h
+++ b/src/3rdparty/freetype/include/freetype/freetype.h
@@ -4,7 +4,8 @@
/* */
/* FreeType high-level API and common types (specification only). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -231,6 +232,10 @@ FT_BEGIN_HEADER
/* vertAdvance :: */
/* Advance height for vertical layout. */
/* */
+ /* <Note> */
+ /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */
+ /* dimensions of the hinted glyph (in case hinting is applicable). */
+ /* */
typedef struct FT_Glyph_Metrics_
{
FT_Pos width;
@@ -519,10 +524,7 @@ FT_BEGIN_HEADER
/* <Note> */
/* Despite the name, this enumeration lists specific character */
/* repertories (i.e., charsets), and not text encoding methods (e.g., */
- /* UTF-8, UTF-16, GB2312_EUC, etc.). */
- /* */
- /* Because of 32-bit charcodes defined in Unicode (i.e., surrogates), */
- /* all character codes must be expressed as FT_Longs. */
+ /* UTF-8, UTF-16, etc.). */
/* */
/* Other encodings might be defined in the future. */
/* */
@@ -536,6 +538,10 @@ FT_BEGIN_HEADER
/* Latin-1. Most fonts include a Unicode charmap, but not all */
/* of them. */
/* */
+ /* For example, if you want to access Unicode value U+1F028 (and */
+ /* the font contains it), use value 0x1F028 as the input value for */
+ /* @FT_Get_Char_Index. */
+ /* */
/* FT_ENCODING_MS_SYMBOL :: */
/* Corresponds to the Microsoft Symbol encoding, used to encode */
/* mathematical symbols in the 32..255 character code range. For */
@@ -1476,8 +1482,13 @@ FT_BEGIN_HEADER
/* important to perform correct WYSIWYG layout. */
/* Only relevant for outline glyphs. */
/* */
- /* advance :: This is the transformed advance width for the */
- /* glyph (in 26.6 fractional pixel format). */
+ /* advance :: This shorthand is, depending on */
+ /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */
+ /* advance width for the glyph (in 26.6 */
+ /* fractional pixel format). As specified with */
+ /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */
+ /* `horiAdvance' or the `vertAdvance' value of */
+ /* `metrics' field. */
/* */
/* format :: This field indicates the format of the image */
/* contained in the glyph slot. Typically */
@@ -1651,6 +1662,11 @@ FT_BEGIN_HEADER
/* <Return> */
/* FreeType error code. 0~means success. */
/* */
+ /* <Note> */
+ /* In case you want to provide your own memory allocating routines, */
+ /* use @FT_New_Library instead, followed by a call to */
+ /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */
+ /* */
FT_EXPORT( FT_Error )
FT_Init_FreeType( FT_Library *alibrary );
@@ -1737,7 +1753,8 @@ FT_BEGIN_HEADER
/* data :: A pointer to the parameter data. */
/* */
/* <Note> */
- /* The ID and function of parameters are driver-specific. */
+ /* The ID and function of parameters are driver-specific. See the */
+ /* various FT_PARAM_TAG_XXX flags for more information. */
/* */
typedef struct FT_Parameter_
{
@@ -3757,7 +3774,7 @@ FT_BEGIN_HEADER
*/
#define FREETYPE_MAJOR 2
#define FREETYPE_MINOR 3
-#define FREETYPE_PATCH 9
+#define FREETYPE_PATCH 12
/*************************************************************************/
diff --git a/src/3rdparty/freetype/include/freetype/ftbbox.h b/src/3rdparty/freetype/include/freetype/ftbbox.h
index 5cfb9ff052..01fe3fb0d1 100644
--- a/src/3rdparty/freetype/include/freetype/ftbbox.h
+++ b/src/3rdparty/freetype/include/freetype/ftbbox.h
@@ -61,7 +61,7 @@ FT_BEGIN_HEADER
/* Compute the exact bounding box of an outline. This is slower */
/* than computing the control box. However, it uses an advanced */
/* algorithm which returns _very_ quickly when the two boxes */
- /* coincide. Otherwise, the outline Bezier arcs are traversed to */
+ /* coincide. Otherwise, the outline Bézier arcs are traversed to */
/* extract their extrema. */
/* */
/* <Input> */
diff --git a/src/3rdparty/freetype/include/freetype/ftglyph.h b/src/3rdparty/freetype/include/freetype/ftglyph.h
index c3c57336c1..0b8f0c0444 100644
--- a/src/3rdparty/freetype/include/freetype/ftglyph.h
+++ b/src/3rdparty/freetype/include/freetype/ftglyph.h
@@ -355,10 +355,10 @@ FT_BEGIN_HEADER
/* */
/* <Description> */
/* Return a glyph's `control box'. The control box encloses all the */
- /* outline's points, including Bezier control points. Though it */
+ /* outline's points, including Bézier control points. Though it */
/* coincides with the exact bounding box for most glyphs, it can be */
/* slightly larger in some situations (like when rotating an outline */
- /* which contains Bezier outside arcs). */
+ /* which contains Bézier outside arcs). */
/* */
/* Computing the control box is very fast, while getting the bounding */
/* box can take much more time as it needs to walk over all segments */
@@ -468,7 +468,7 @@ FT_BEGIN_HEADER
/* // convert to a bitmap (default render mode + destroying old) */
/* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */
/* { */
- /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, */
+ /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */
/* 0, 1 ); */
/* if ( error ) // `glyph' unchanged */
/* ... */
diff --git a/src/3rdparty/freetype/include/freetype/ftimage.h b/src/3rdparty/freetype/include/freetype/ftimage.h
index 25a9b1b7ee..0272e92d2b 100644
--- a/src/3rdparty/freetype/include/freetype/ftimage.h
+++ b/src/3rdparty/freetype/include/freetype/ftimage.h
@@ -5,7 +5,8 @@
/* FreeType glyph image formats and default raster interface */
/* (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -51,10 +52,9 @@ FT_BEGIN_HEADER
/* FT_Pos */
/* */
/* <Description> */
- /* The type FT_Pos is a 32-bit integer used to store vectorial */
- /* coordinates. Depending on the context, these can represent */
- /* distances in integer font units, or 16.16, or 26.6 fixed float */
- /* pixel coordinates. */
+ /* The type FT_Pos is used to store vectorial coordinates. Depending */
+ /* on the context, these can represent distances in integer font */
+ /* units, or 16.16, or 26.6 fixed float pixel coordinates. */
/* */
typedef signed long FT_Pos;
@@ -99,6 +99,20 @@ FT_BEGIN_HEADER
/* */
/* yMax :: The vertical maximum (top-most). */
/* */
+ /* <Note> */
+ /* The bounding box is specified with the coordinates of the lower */
+ /* left and the upper right corner. In PostScript, those values are */
+ /* often called (llx,lly) and (urx,ury), respectively. */
+ /* */
+ /* If `yMin' is negative, this value gives the glyph's descender. */
+ /* Otherwise, the glyph doesn't descend below the baseline. */
+ /* Similarly, if `ymax' is positive, this value gives the glyph's */
+ /* ascender. */
+ /* */
+ /* `xMin' gives the horizontal distance from the glyph's origin to */
+ /* the left edge of the glyph's bounding box. If `xMin' is negative, */
+ /* the glyph extends to the left of the origin. */
+ /* */
typedef struct FT_BBox_
{
FT_Pos xMin, yMin;
@@ -254,6 +268,9 @@ FT_BEGIN_HEADER
/* flow. In all cases, the pitch is an offset to add */
/* to a bitmap pointer in order to go down one row. */
/* */
+ /* For the B/W rasterizer, `pitch' is always an even */
+ /* number. */
+ /* */
/* buffer :: A typeless pointer to the bitmap buffer. This */
/* value should be aligned on 32-bit boundaries in */
/* most cases. */
@@ -318,14 +335,23 @@ FT_BEGIN_HEADER
/* elements, giving the outline's point coordinates. */
/* */
/* tags :: A pointer to an array of `n_points' chars, giving */
- /* each outline point's type. If bit~0 is unset, the */
- /* point is `off' the curve, i.e., a Bezier control */
- /* point, while it is `on' when set. */
+ /* each outline point's type. */
+ /* */
+ /* If bit~0 is unset, the point is `off' the curve, */
+ /* i.e., a Bézier control point, while it is `on' if */
+ /* set. */
/* */
/* Bit~1 is meaningful for `off' points only. If set, */
- /* it indicates a third-order Bezier arc control point; */
+ /* it indicates a third-order Bézier arc control point; */
/* and a second-order control point if unset. */
/* */
+ /* If bit~2 is set, bits 5-7 contain the drop-out mode */
+ /* (as defined in the OpenType specification; the value */
+ /* is the same as the argument to the SCANMODE */
+ /* instruction). */
+ /* */
+ /* Bits 3 and~4 are reserved for internal purposes. */
+ /* */
/* contours :: An array of `n_contours' shorts, giving the end */
/* point of each contour within the outline. For */
/* example, the first contour is defined by the points */
@@ -336,6 +362,12 @@ FT_BEGIN_HEADER
/* and give hints to the scan-converter and hinter on */
/* how to convert/grid-fit it. See @FT_OUTLINE_FLAGS. */
/* */
+ /* <Note> */
+ /* The B/W rasterizer only checks bit~2 in the `tags' array for the */
+ /* first point of each contour. The drop-out mode as given with */
+ /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */
+ /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */
+ /* */
typedef struct FT_Outline_
{
short n_contours; /* number of contours in glyph */
@@ -349,6 +381,11 @@ FT_BEGIN_HEADER
} FT_Outline;
+ /* Following limits must be consistent with */
+ /* FT_Outline.{n_contours,n_points} */
+#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX
+#define FT_OUTLINE_POINTS_MAX SHRT_MAX
+
/*************************************************************************/
/* */
@@ -371,7 +408,7 @@ FT_BEGIN_HEADER
/* FT_OUTLINE_EVEN_ODD_FILL :: */
/* By default, outlines are filled using the non-zero winding rule. */
/* If set to 1, the outline will be filled using the even-odd fill */
- /* rule (only works with the smooth raster). */
+ /* rule (only works with the smooth rasterizer). */
/* */
/* FT_OUTLINE_REVERSE_FILL :: */
/* By default, outside contours of an outline are oriented in */
@@ -384,15 +421,17 @@ FT_BEGIN_HEADER
/* By default, the scan converter will try to detect drop-outs in */
/* an outline and correct the glyph bitmap to ensure consistent */
/* shape continuity. If set, this flag hints the scan-line */
- /* converter to ignore such cases. */
+ /* converter to ignore such cases. See below for more information. */
/* */
/* FT_OUTLINE_SMART_DROPOUTS :: */
/* Select smart dropout control. If unset, use simple dropout */
- /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. */
+ /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */
+ /* below for more information. */
/* */
/* FT_OUTLINE_INCLUDE_STUBS :: */
/* If set, turn pixels on for `stubs', otherwise exclude them. */
- /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. */
+ /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */
+ /* more information. */
/* */
/* FT_OUTLINE_HIGH_PRECISION :: */
/* This flag indicates that the scan-line converter should try to */
@@ -409,6 +448,13 @@ FT_BEGIN_HEADER
/* scan-converter. */
/* */
/* <Note> */
+ /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */
+ /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */
+ /* rasterizer. */
+ /* */
+ /* There exists a second mechanism to pass the drop-out mode to the */
+ /* B/W rasterizer; see the `tags' field in @FT_Outline. */
+ /* */
/* Please refer to the description of the `SCANTYPE' instruction in */
/* the OpenType specification (in file `ttinst1.doc') how simple */
/* drop-outs, smart drop-outs, and stubs are defined. */
@@ -455,15 +501,17 @@ FT_BEGIN_HEADER
#define FT_CURVE_TAG( flag ) ( flag & 3 )
-#define FT_CURVE_TAG_ON 1
-#define FT_CURVE_TAG_CONIC 0
-#define FT_CURVE_TAG_CUBIC 2
+#define FT_CURVE_TAG_ON 1
+#define FT_CURVE_TAG_CONIC 0
+#define FT_CURVE_TAG_CUBIC 2
+
+#define FT_CURVE_TAG_HAS_SCANMODE 4
-#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */
-#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */
+#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */
+#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */
-#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \
- FT_CURVE_TAG_TOUCH_Y )
+#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \
+ FT_CURVE_TAG_TOUCH_Y )
#define FT_Curve_Tag_On FT_CURVE_TAG_ON
#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC
@@ -532,10 +580,10 @@ FT_BEGIN_HEADER
/* FT_Outline_ConicToFunc */
/* */
/* <Description> */
- /* A function pointer type use to describe the signature of a `conic */
- /* to' function during outline walking/decomposition. */
+ /* A function pointer type used to describe the signature of a `conic */
+ /* to' function during outline walking or decomposition. */
/* */
- /* A `conic to' is emitted to indicate a second-order Bezier arc in */
+ /* A `conic to' is emitted to indicate a second-order Bézier arc in */
/* the outline. */
/* */
/* <Input> */
@@ -565,14 +613,14 @@ FT_BEGIN_HEADER
/* */
/* <Description> */
/* A function pointer type used to describe the signature of a `cubic */
- /* to' function during outline walking/decomposition. */
+ /* to' function during outline walking or decomposition. */
/* */
- /* A `cubic to' is emitted to indicate a third-order Bezier arc. */
+ /* A `cubic to' is emitted to indicate a third-order Bézier arc. */
/* */
/* <Input> */
- /* control1 :: A pointer to the first Bezier control point. */
+ /* control1 :: A pointer to the first Bézier control point. */
/* */
- /* control2 :: A pointer to the second Bezier control point. */
+ /* control2 :: A pointer to the second Bézier control point. */
/* */
/* to :: A pointer to the target end point. */
/* */
@@ -598,17 +646,16 @@ FT_BEGIN_HEADER
/* */
/* <Description> */
/* A structure to hold various function pointers used during outline */
- /* decomposition in order to emit segments, conic, and cubic Beziers, */
- /* as well as `move to' and `close to' operations. */
+ /* decomposition in order to emit segments, conic, and cubic Béziers. */
/* */
/* <Fields> */
/* move_to :: The `move to' emitter. */
/* */
/* line_to :: The segment emitter. */
/* */
- /* conic_to :: The second-order Bezier arc emitter. */
+ /* conic_to :: The second-order Bézier arc emitter. */
/* */
- /* cubic_to :: The third-order Bezier arc emitter. */
+ /* cubic_to :: The third-order Bézier arc emitter. */
/* */
/* shift :: The shift that is applied to coordinates before they */
/* are sent to the emitter. */
@@ -626,7 +673,7 @@ FT_BEGIN_HEADER
/* y' = (x << shift) - delta */
/* } */
/* */
- /* Set the value of `shift' and `delta' to~0 to get the original */
+ /* Set the values of `shift' and `delta' to~0 to get the original */
/* point coordinates. */
/* */
typedef struct FT_Outline_Funcs_
@@ -705,7 +752,7 @@ FT_BEGIN_HEADER
/* */
/* FT_GLYPH_FORMAT_OUTLINE :: */
/* The glyph image is a vectorial outline made of line segments */
- /* and Bezier arcs; it can be described as an @FT_Outline; you */
+ /* and Bézier arcs; it can be described as an @FT_Outline; you */
/* generally want to access the `outline' field of the */
/* @FT_GlyphSlotRec structure to read it. */
/* */
@@ -1011,7 +1058,7 @@ FT_BEGIN_HEADER
/* */
/* gray_spans :: The gray span drawing callback. */
/* */
- /* black_spans :: The black span drawing callback. */
+ /* black_spans :: The black span drawing callback. UNIMPLEMENTED! */
/* */
/* bit_test :: The bit test callback. UNIMPLEMENTED! */
/* */
@@ -1048,7 +1095,7 @@ FT_BEGIN_HEADER
const void* source;
int flags;
FT_SpanFunc gray_spans;
- FT_SpanFunc black_spans;
+ FT_SpanFunc black_spans; /* doesn't work! */
FT_Raster_BitTest_Func bit_test; /* doesn't work! */
FT_Raster_BitSet_Func bit_set; /* doesn't work! */
void* user;
diff --git a/src/3rdparty/freetype/include/freetype/ftincrem.h b/src/3rdparty/freetype/include/freetype/ftincrem.h
index 96abedea7b..aaf689ff16 100644
--- a/src/3rdparty/freetype/include/freetype/ftincrem.h
+++ b/src/3rdparty/freetype/include/freetype/ftincrem.h
@@ -4,7 +4,7 @@
/* */
/* FreeType incremental loading (specification). */
/* */
-/* Copyright 2002, 2003, 2006, 2007, 2008 by */
+/* Copyright 2002, 2003, 2006, 2007, 2008, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -101,7 +101,10 @@ FT_BEGIN_HEADER
* Top bearing, in font units.
*
* advance ::
- * Glyph advance, in font units.
+ * Horizontal component of glyph advance, in font units.
+ *
+ * advance_v ::
+ * Vertical component of glyph advance, in font units.
*
* @note:
* These correspond to horizontal or vertical metrics depending on the
@@ -114,6 +117,7 @@ FT_BEGIN_HEADER
FT_Long bearing_x;
FT_Long bearing_y;
FT_Long advance;
+ FT_Long advance_v; /* since 2.3.12 */
} FT_Incremental_MetricsRec;
diff --git a/src/3rdparty/freetype/include/freetype/ftmodapi.h b/src/3rdparty/freetype/include/freetype/ftmodapi.h
index b051d34a88..3c9b876dfe 100644
--- a/src/3rdparty/freetype/include/freetype/ftmodapi.h
+++ b/src/3rdparty/freetype/include/freetype/ftmodapi.h
@@ -4,7 +4,7 @@
/* */
/* FreeType modules public interface (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2006, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -259,6 +259,10 @@ FT_BEGIN_HEADER
/* from a given memory object. It is thus possible to use libraries */
/* with distinct memory allocators within the same program. */
/* */
+ /* Normally, you would call this function (followed by a call to */
+ /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */
+ /* instead of @FT_Init_FreeType to initialize the FreeType library. */
+ /* */
/* <Input> */
/* memory :: A handle to the original memory object. */
/* */
diff --git a/src/3rdparty/freetype/include/freetype/ftoutln.h b/src/3rdparty/freetype/include/freetype/ftoutln.h
index ea60d43e8e..2829a05ca3 100644
--- a/src/3rdparty/freetype/include/freetype/ftoutln.h
+++ b/src/3rdparty/freetype/include/freetype/ftoutln.h
@@ -5,7 +5,7 @@
/* Support for the FT_Outline type used to store glyph shapes of */
/* most scalable font formats (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 by */
+/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -85,9 +85,8 @@ FT_BEGIN_HEADER
/* */
/* <Description> */
/* Walk over an outline's structure to decompose it into individual */
- /* segments and Bezier arcs. This function is also able to emit */
- /* `move to' and `close to' operations to indicate the start and end */
- /* of new contours in the outline. */
+ /* segments and Bézier arcs. This function also emits `move to' */
+ /* operations to indicate the start of new contours in the outline. */
/* */
/* <Input> */
/* outline :: A pointer to the source target. */
@@ -212,10 +211,10 @@ FT_BEGIN_HEADER
/* */
/* <Description> */
/* Return an outline's `control box'. The control box encloses all */
- /* the outline's points, including Bezier control points. Though it */
+ /* the outline's points, including Bézier control points. Though it */
/* coincides with the exact bounding box for most glyphs, it can be */
/* slightly larger in some situations (like when rotating an outline */
- /* which contains Bezier outside arcs). */
+ /* which contains Bézier outside arcs). */
/* */
/* Computing the control box is very fast, while getting the bounding */
/* box can take much more time as it needs to walk over all segments */
diff --git a/src/3rdparty/freetype/include/freetype/ftsnames.h b/src/3rdparty/freetype/include/freetype/ftsnames.h
index 477e1e3ce8..485e4e162e 100644
--- a/src/3rdparty/freetype/include/freetype/ftsnames.h
+++ b/src/3rdparty/freetype/include/freetype/ftsnames.h
@@ -7,7 +7,7 @@
/* */
/* This is _not_ used to retrieve glyph names! */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2006 by */
+/* Copyright 1996-2001, 2002, 2003, 2006, 2009, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -147,7 +147,8 @@ FT_BEGIN_HEADER
/* */
/* <Note> */
/* The `string' array returned in the `aname' structure is not */
- /* null-terminated. */
+ /* null-terminated. The application should deallocate it if it is no */
+ /* longer in use. */
/* */
/* Use @FT_Get_Sfnt_Name_Count to get the total number of available */
/* `name' table entries, then do a loop until you get the right */
@@ -159,6 +160,35 @@ FT_BEGIN_HEADER
FT_SfntName *aname );
+ /***************************************************************************
+ *
+ * @constant:
+ * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY
+ *
+ * @description:
+ * A constant used as the tag of @FT_Parameter structures to make
+ * FT_Open_Face() ignore preferred family subfamily names in `name'
+ * table since OpenType version 1.4. For backwards compatibility with
+ * legacy systems which has 4-face-per-family restriction.
+ *
+ */
+#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' )
+
+
+ /***************************************************************************
+ *
+ * @constant:
+ * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY
+ *
+ * @description:
+ * A constant used as the tag of @FT_Parameter structures to make
+ * FT_Open_Face() ignore preferred subfamily names in `name' table since
+ * OpenType version 1.4. For backwards compatibility with legacy
+ * systems which has 4-face-per-family restriction.
+ *
+ */
+#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' )
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/ftstroke.h b/src/3rdparty/freetype/include/freetype/ftstroke.h
index 0c10122a88..3afb87df88 100644
--- a/src/3rdparty/freetype/include/freetype/ftstroke.h
+++ b/src/3rdparty/freetype/include/freetype/ftstroke.h
@@ -407,7 +407,7 @@ FT_BEGIN_HEADER
* FT_Stroker_ConicTo
*
* @description:
- * `Draw' a single quadratic Bezier in the stroker's current sub-path,
+ * `Draw' a single quadratic Bézier in the stroker's current sub-path,
* from the last position.
*
* @input:
@@ -415,7 +415,7 @@ FT_BEGIN_HEADER
* The target stroker handle.
*
* control ::
- * A pointer to a Bezier control point.
+ * A pointer to a Bézier control point.
*
* to ::
* A pointer to the destination point.
@@ -439,7 +439,7 @@ FT_BEGIN_HEADER
* FT_Stroker_CubicTo
*
* @description:
- * `Draw' a single cubic Bezier in the stroker's current sub-path,
+ * `Draw' a single cubic Bézier in the stroker's current sub-path,
* from the last position.
*
* @input:
@@ -447,10 +447,10 @@ FT_BEGIN_HEADER
* The target stroker handle.
*
* control1 ::
- * A pointer to the first Bezier control point.
+ * A pointer to the first Bézier control point.
*
* control2 ::
- * A pointer to second Bezier control point.
+ * A pointer to second Bézier control point.
*
* to ::
* A pointer to the destination point.
@@ -598,7 +598,7 @@ FT_BEGIN_HEADER
*
* @description:
* Call this function after @FT_Stroker_GetBorderCounts to
- * export the all borders to your own @FT_Outline structure.
+ * export all borders to your own @FT_Outline structure.
*
* Note that this function appends the border points and
* contours to your outline, but does not try to resize its
diff --git a/src/3rdparty/freetype/include/freetype/fttypes.h b/src/3rdparty/freetype/include/freetype/fttypes.h
index 54f08e3e5a..a57ffa69bd 100644
--- a/src/3rdparty/freetype/include/freetype/fttypes.h
+++ b/src/3rdparty/freetype/include/freetype/fttypes.h
@@ -167,7 +167,7 @@ FT_BEGIN_HEADER
/* FT_Tag */
/* */
/* <Description> */
- /* A typedef for 32-bit tags (as used in the SFNT format). */
+ /* A typedef for 32-bit tags (as used in the SFNT format). */
/* */
typedef FT_UInt32 FT_Tag;
@@ -474,6 +474,7 @@ FT_BEGIN_HEADER
/* this macro. */
/* */
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
+ (FT_Tag) \
( ( (FT_ULong)_x1 << 24 ) | \
( (FT_ULong)_x2 << 16 ) | \
( (FT_ULong)_x3 << 8 ) | \
diff --git a/src/3rdparty/freetype/include/freetype/ftwinfnt.h b/src/3rdparty/freetype/include/freetype/ftwinfnt.h
index 9a4cf58939..ea33353536 100644
--- a/src/3rdparty/freetype/include/freetype/ftwinfnt.h
+++ b/src/3rdparty/freetype/include/freetype/ftwinfnt.h
@@ -77,7 +77,7 @@ FT_BEGIN_HEADER
* Mac Roman encoding.
*
* FT_WinFNT_ID_OEM ::
- * From Michael Poettgen <michael@poettgen.de>:
+ * From Michael Pöttgen <michael@poettgen.de>:
*
* The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
* is used for the charset of vector fonts, like `modern.fon',
diff --git a/src/3rdparty/freetype/include/freetype/ftxf86.h b/src/3rdparty/freetype/include/freetype/ftxf86.h
index ae9ff076fa..8c68afdcc5 100644
--- a/src/3rdparty/freetype/include/freetype/ftxf86.h
+++ b/src/3rdparty/freetype/include/freetype/ftxf86.h
@@ -49,6 +49,9 @@ FT_BEGIN_HEADER
/* however, there are special cases (like in PDF devices) where it is */
/* important to differentiate, in spite of FreeType's uniform API. */
/* */
+ /* This function is in the X11/xf86 namespace for historical reasons */
+ /* and in no way depends on that windowing system. */
+ /* */
/*************************************************************************/
diff --git a/src/3rdparty/freetype/include/freetype/internal/autohint.h b/src/3rdparty/freetype/include/freetype/internal/autohint.h
index ee004022f9..7e3a08a051 100644
--- a/src/3rdparty/freetype/include/freetype/internal/autohint.h
+++ b/src/3rdparty/freetype/include/freetype/internal/autohint.h
@@ -196,6 +196,32 @@ FT_BEGIN_HEADER
} FT_AutoHinter_ServiceRec, *FT_AutoHinter_Service;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_AUTOHINTER_SERVICE(class_, reset_face_, get_global_hints_, \
+ done_global_hints_, load_glyph_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_AutoHinter_ServiceRec class_ = \
+ { \
+ reset_face_, get_global_hints_, done_global_hints_, load_glyph_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_AUTOHINTER_SERVICE(class_, reset_face_, get_global_hints_, \
+ done_global_hints_, load_glyph_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_AutoHinter_ServiceRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->reset_face = reset_face_; \
+ clazz->get_global_hints = get_global_hints_; \
+ clazz->done_global_hints = done_global_hints_; \
+ clazz->load_glyph = load_glyph_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/3rdparty/freetype/include/freetype/internal/ftcalc.h b/src/3rdparty/freetype/include/freetype/internal/ftcalc.h
index 58def34cab..f8b4324777 100644
--- a/src/3rdparty/freetype/include/freetype/internal/ftcalc.h
+++ b/src/3rdparty/freetype/include/freetype/internal/ftcalc.h
@@ -4,7 +4,7 @@
/* */
/* Arithmetic computations (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -165,6 +165,7 @@ FT_BEGIN_HEADER
#define INT_TO_FIXED( x ) ( (FT_Long)(x) << 16 )
#define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) << 2 )
#define FLOAT_TO_FIXED( x ) ( (FT_Long)( x * 65536.0 ) )
+#define FIXED_TO_INT( x ) ( FT_RoundFix( x ) >> 16 )
#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \
: ( -( ( 32 - (x) ) & -64 ) ) )
diff --git a/src/3rdparty/freetype/include/freetype/internal/ftdriver.h b/src/3rdparty/freetype/include/freetype/internal/ftdriver.h
index 854abad085..1d06997bd1 100644
--- a/src/3rdparty/freetype/include/freetype/internal/ftdriver.h
+++ b/src/3rdparty/freetype/include/freetype/internal/ftdriver.h
@@ -240,6 +240,179 @@ FT_BEGIN_HEADER
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DECLARE_DRIVER */
+ /* */
+ /* <Description> */
+ /* Used to create a forward declaration of a */
+ /* FT_Driver_ClassRec stract instance. */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_DRIVER */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Driver_ClassRec struct. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated stracture is returned.*/
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* fcinit.c (ft_create_default_module_classes) already contains */
+ /* a mechanism to call these functions for the default modules */
+ /* described in ftmodule.h */
+ /* */
+ /* Notice that the created Create and Destroy functions call */
+ /* pic_init and pic_free function to allow you to manually allocate */
+ /* and initialize any additional global data, like module specific */
+ /* interface, and put them in the global pic container defined in */
+ /* ftpic.h. if you don't need them just implement the functions as */
+ /* empty to resolve the link error. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) \
+ a_, b_,
+#else
+ #define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_)
+#endif
+
+#define FT_DECLARE_DRIVER(class_) \
+ FT_CALLBACK_TABLE \
+ const FT_Driver_ClassRec class_;
+
+#define FT_DEFINE_DRIVER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ face_object_size_, size_object_size_, \
+ slot_object_size_, init_face_, done_face_, \
+ init_size_, done_size_, init_slot_, done_slot_, \
+ old_set_char_sizes_, old_set_pixel_sizes_, \
+ load_glyph_, get_kerning_, attach_file_, \
+ get_advances_, request_size_, select_size_ ) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Driver_ClassRec class_ = \
+ { \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,interface_, \
+ init_,done_,get_interface_) \
+ \
+ face_object_size_, \
+ size_object_size_, \
+ slot_object_size_, \
+ \
+ init_face_, \
+ done_face_, \
+ \
+ init_size_, \
+ done_size_, \
+ \
+ init_slot_, \
+ done_slot_, \
+ \
+ FT_DEFINE_DRIVERS_OLD_INTERNALS(old_set_char_sizes_, old_set_pixel_sizes_) \
+ \
+ load_glyph_, \
+ \
+ get_kerning_, \
+ attach_file_, \
+ get_advances_, \
+ \
+ request_size_, \
+ select_size_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) \
+ clazz->set_char_sizes = a_; \
+ clazz->set_pixel_sizes = b_;
+#else
+ #define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_)
+#endif
+
+#define FT_DECLARE_DRIVER(class_) FT_DECLARE_MODULE(class_)
+
+#define FT_DEFINE_DRIVER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ face_object_size_, size_object_size_, \
+ slot_object_size_, init_face_, done_face_, \
+ init_size_, done_size_, init_slot_, done_slot_, \
+ old_set_char_sizes_, old_set_pixel_sizes_, \
+ load_glyph_, get_kerning_, attach_file_, \
+ get_advances_, request_size_, select_size_ ) \
+ void class_##_pic_free( FT_Library library ); \
+ FT_Error class_##_pic_init( FT_Library library ); \
+ \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ FT_Driver_Class dclazz = (FT_Driver_Class)clazz; \
+ class_##_pic_free( library ); \
+ if ( dclazz ) \
+ FT_FREE( dclazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ) \
+ { \
+ FT_Driver_Class clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz) ) ) \
+ return error; \
+ \
+ error = class_##_pic_init( library ); \
+ if(error) \
+ { \
+ FT_FREE( clazz ); \
+ return error; \
+ } \
+ \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,interface_, \
+ init_,done_,get_interface_) \
+ \
+ clazz->face_object_size = face_object_size_; \
+ clazz->size_object_size = size_object_size_; \
+ clazz->slot_object_size = slot_object_size_; \
+ \
+ clazz->init_face = init_face_; \
+ clazz->done_face = done_face_; \
+ \
+ clazz->init_size = init_size_; \
+ clazz->done_size = done_size_; \
+ \
+ clazz->init_slot = init_slot_; \
+ clazz->done_slot = done_slot_; \
+ \
+ FT_DEFINE_DRIVERS_OLD_INTERNALS(old_set_char_sizes_, old_set_pixel_sizes_) \
+ \
+ clazz->load_glyph = load_glyph_; \
+ \
+ clazz->get_kerning = get_kerning_; \
+ clazz->attach_file = attach_file_; \
+ clazz->get_advances = get_advances_; \
+ \
+ clazz->request_size = request_size_; \
+ clazz->select_size = select_size_; \
+ \
+ *output_class = (FT_Module_Class*)clazz; \
+ return FT_Err_Ok; \
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h b/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h
index 548481ac80..ce4dc6c9cc 100644
--- a/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h
+++ b/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h
@@ -121,15 +121,15 @@ FT_BEGIN_HEADER
FT_UInt n_contours );
-#define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \
- ( (_count) == 0 || (int)((_loader)->base.outline.n_points + \
- (_loader)->current.outline.n_points + \
- (_count)) <= (int)(_loader)->max_points )
-
-#define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \
- ( (_count) == 0 || (int)((_loader)->base.outline.n_contours + \
- (_loader)->current.outline.n_contours + \
- (_count)) <= (int)(_loader)->max_contours )
+#define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \
+ ( (_count) == 0 || ((_loader)->base.outline.n_points + \
+ (_loader)->current.outline.n_points + \
+ (unsigned long)(_count)) <= (_loader)->max_points )
+
+#define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \
+ ( (_count) == 0 || ((_loader)->base.outline.n_contours + \
+ (_loader)->current.outline.n_contours + \
+ (unsigned long)(_count)) <= (_loader)->max_contours )
#define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points,_contours ) \
( ( FT_GLYPHLOADER_CHECK_P( _loader, _points ) && \
diff --git a/src/3rdparty/freetype/include/freetype/internal/ftobjs.h b/src/3rdparty/freetype/include/freetype/internal/ftobjs.h
index 1f22343a59..574cf58296 100644
--- a/src/3rdparty/freetype/include/freetype/internal/ftobjs.h
+++ b/src/3rdparty/freetype/include/freetype/internal/ftobjs.h
@@ -35,6 +35,7 @@
#include FT_INTERNAL_DRIVER_H
#include FT_INTERNAL_AUTOHINT_H
#include FT_INTERNAL_SERVICE_H
+#include FT_INTERNAL_PIC_H
#ifdef FT_CONFIG_OPTION_INCREMENTAL
#include FT_INCREMENTAL_H
@@ -205,6 +206,45 @@ FT_BEGIN_HEADER
} FT_CMap_ClassRec;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DECLARE_CMAP_CLASS(class_) \
+ FT_CALLBACK_TABLE const FT_CMap_ClassRec class_;
+
+#define FT_DEFINE_CMAP_CLASS(class_, size_, init_, done_, char_index_, \
+ char_next_, char_var_index_, char_var_default_, variant_list_, \
+ charvariant_list_, variantchar_list_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_CMap_ClassRec class_ = \
+ { \
+ size_, init_, done_, char_index_, char_next_, char_var_index_, \
+ char_var_default_, variant_list_, charvariant_list_, variantchar_list_ \
+ };
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DECLARE_CMAP_CLASS(class_) \
+ void FT_Init_Class_##class_( FT_Library library, FT_CMap_ClassRec* clazz);
+
+#define FT_DEFINE_CMAP_CLASS(class_, size_, init_, done_, char_index_, \
+ char_next_, char_var_index_, char_var_default_, variant_list_, \
+ charvariant_list_, variantchar_list_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_CMap_ClassRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->size = size_; \
+ clazz->init = init_; \
+ clazz->done = done_; \
+ clazz->char_index = char_index_; \
+ clazz->char_next = char_next_; \
+ clazz->char_var_index = char_var_index_; \
+ clazz->char_var_default = char_var_default_; \
+ clazz->variant_list = variant_list_; \
+ clazz->charvariant_list = charvariant_list_; \
+ clazz->variantchar_list = variantchar_list_; \
+ }
+#endif /* FT_CONFIG_OPTION_PIC */
/* create a new charmap and add it to charmap->face */
FT_BASE( FT_Error )
@@ -765,6 +805,10 @@ FT_BEGIN_HEADER
/* */
/* debug_hooks :: XXX */
/* */
+ /* pic_container :: Contains global structs and tables, instead */
+ /* of defining them globallly. */
+ /* */
+
typedef struct FT_LibraryRec_
{
FT_Memory memory; /* library's memory manager */
@@ -795,6 +839,10 @@ FT_BEGIN_HEADER
FT_Bitmap_LcdFilterFunc lcd_filter_func; /* filtering callback */
#endif
+#ifdef FT_CONFIG_OPTION_PIC
+ FT_PIC_Container pic_container;
+#endif
+
} FT_LibraryRec;
@@ -866,6 +914,484 @@ FT_BEGIN_HEADER
FT_EXPORT_VAR( FT_Raster_Funcs ) ft_default_raster;
#endif
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** ****/
+ /**** PIC-Support Macros for ftimage.h ****/
+ /**** ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_OUTLINE_FUNCS */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Outline_Funcs struct. */
+ /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */
+ /* called with a pre-allocated stracture to be filled. */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_OUTLINE_FUNCS(class_, move_to_, line_to_, conic_to_, \
+ cubic_to_, shift_, delta_) \
+ static const FT_Outline_Funcs class_ = \
+ { \
+ move_to_, line_to_, conic_to_, cubic_to_, shift_, delta_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_OUTLINE_FUNCS(class_, move_to_, line_to_, conic_to_, \
+ cubic_to_, shift_, delta_) \
+ static FT_Error \
+ Init_Class_##class_( FT_Outline_Funcs* clazz ) \
+ { \
+ clazz->move_to = move_to_; \
+ clazz->line_to = line_to_; \
+ clazz->conic_to = conic_to_; \
+ clazz->cubic_to = cubic_to_; \
+ clazz->shift = shift_; \
+ clazz->delta = delta_; \
+ return FT_Err_Ok; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_RASTER_FUNCS */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Raster_Funcs struct. */
+ /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */
+ /* called with a pre-allocated stracture to be filled. */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_RASTER_FUNCS(class_, glyph_format_, raster_new_, \
+ raster_reset_, raster_set_mode_, \
+ raster_render_, raster_done_) \
+ const FT_Raster_Funcs class_ = \
+ { \
+ glyph_format_, raster_new_, raster_reset_, \
+ raster_set_mode_, raster_render_, raster_done_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_RASTER_FUNCS(class_, glyph_format_, raster_new_, \
+ raster_reset_, raster_set_mode_, raster_render_, raster_done_) \
+ void \
+ FT_Init_Class_##class_( FT_Raster_Funcs* clazz ) \
+ { \
+ clazz->glyph_format = glyph_format_; \
+ clazz->raster_new = raster_new_; \
+ clazz->raster_reset = raster_reset_; \
+ clazz->raster_set_mode = raster_set_mode_; \
+ clazz->raster_render = raster_render_; \
+ clazz->raster_done = raster_done_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** ****/
+ /**** PIC-Support Macros for ftrender.h ****/
+ /**** ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_GLYPH */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Glyph_Class struct. */
+ /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */
+ /* called with a pre-allocated stracture to be filled. */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_GLYPH(class_, size_, format_, init_, done_, copy_, \
+ transform_, bbox_, prepare_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Glyph_Class class_ = \
+ { \
+ size_, format_, init_, done_, copy_, transform_, bbox_, prepare_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_GLYPH(class_, size_, format_, init_, done_, copy_, \
+ transform_, bbox_, prepare_) \
+ void \
+ FT_Init_Class_##class_( FT_Glyph_Class* clazz ) \
+ { \
+ clazz->glyph_size = size_; \
+ clazz->glyph_format = format_; \
+ clazz->glyph_init = init_; \
+ clazz->glyph_done = done_; \
+ clazz->glyph_copy = copy_; \
+ clazz->glyph_transform = transform_; \
+ clazz->glyph_bbox = bbox_; \
+ clazz->glyph_prepare = prepare_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DECLARE_RENDERER */
+ /* */
+ /* <Description> */
+ /* Used to create a forward declaration of a */
+ /* FT_Renderer_Class stract instance. */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_RENDERER */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Renderer_Class struct. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated stracture is returned.*/
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* fcinit.c (ft_create_default_module_classes) already contains */
+ /* a mechanism to call these functions for the default modules */
+ /* described in ftmodule.h */
+ /* */
+ /* Notice that the created Create and Destroy functions call */
+ /* pic_init and pic_free function to allow you to manually allocate */
+ /* and initialize any additional global data, like module specific */
+ /* interface, and put them in the global pic container defined in */
+ /* ftpic.h. if you don't need them just implement the functions as */
+ /* empty to resolve the link error. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DECLARE_RENDERER(class_) \
+ FT_EXPORT_VAR( const FT_Renderer_Class ) class_;
+
+#define FT_DEFINE_RENDERER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ glyph_format_, render_glyph_, transform_glyph_, \
+ get_glyph_cbox_, set_mode_, raster_class_ ) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Renderer_Class class_ = \
+ { \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_, \
+ interface_,init_,done_,get_interface_) \
+ glyph_format_, \
+ \
+ render_glyph_, \
+ transform_glyph_, \
+ get_glyph_cbox_, \
+ set_mode_, \
+ \
+ raster_class_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DECLARE_RENDERER(class_) FT_DECLARE_MODULE(class_)
+
+#define FT_DEFINE_RENDERER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ glyph_format_, render_glyph_, transform_glyph_, \
+ get_glyph_cbox_, set_mode_, raster_class_ ) \
+ void class_##_pic_free( FT_Library library ); \
+ FT_Error class_##_pic_init( FT_Library library ); \
+ \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz ) \
+ { \
+ FT_Renderer_Class* rclazz = (FT_Renderer_Class*)clazz; \
+ FT_Memory memory = library->memory; \
+ class_##_pic_free( library ); \
+ if ( rclazz ) \
+ FT_FREE( rclazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ) \
+ { \
+ FT_Renderer_Class* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz) ) ) \
+ return error; \
+ \
+ error = class_##_pic_init( library ); \
+ if(error) \
+ { \
+ FT_FREE( clazz ); \
+ return error; \
+ } \
+ \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_, \
+ interface_,init_,done_,get_interface_) \
+ \
+ clazz->glyph_format = glyph_format_; \
+ \
+ clazz->render_glyph = render_glyph_; \
+ clazz->transform_glyph = transform_glyph_; \
+ clazz->get_glyph_cbox = get_glyph_cbox_; \
+ clazz->set_mode = set_mode_; \
+ \
+ clazz->raster_class = raster_class_; \
+ \
+ *output_class = (FT_Module_Class*)clazz; \
+ return FT_Err_Ok; \
+ }
+
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** ****/
+ /**** PIC-Support Macros for ftmodapi.h ****/
+ /**** ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /*************************************************************************/
+ /* */
+ /* <FuncType> */
+ /* FT_Module_Creator */
+ /* */
+ /* <Description> */
+ /* A function used to create (allocate) a new module class object. */
+ /* The object's members are initialized, but the module itself is */
+ /* not. */
+ /* */
+ /* <Input> */
+ /* memory :: A handle to the memory manager. */
+ /* output_class :: Initialized with the newly allocated class. */
+ /* */
+ typedef FT_Error
+ (*FT_Module_Creator)( FT_Memory memory,
+ FT_Module_Class** output_class );
+
+ /*************************************************************************/
+ /* */
+ /* <FuncType> */
+ /* FT_Module_Destroyer */
+ /* */
+ /* <Description> */
+ /* A function used to destroy (deallocate) a module class object. */
+ /* */
+ /* <Input> */
+ /* memory :: A handle to the memory manager. */
+ /* clazz :: Module class to destroy. */
+ /* */
+ typedef void
+ (*FT_Module_Destroyer)( FT_Memory memory,
+ FT_Module_Class* clazz );
+
+#endif
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DECLARE_MODULE */
+ /* */
+ /* <Description> */
+ /* Used to create a forward declaration of a */
+ /* FT_Module_Class stract instance. */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_MODULE */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Module_Class struct. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated stracture is returned.*/
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* fcinit.c (ft_create_default_module_classes) already contains */
+ /* a mechanism to call these functions for the default modules */
+ /* described in ftmodule.h */
+ /* */
+ /* Notice that the created Create and Destroy functions call */
+ /* pic_init and pic_free function to allow you to manually allocate */
+ /* and initialize any additional global data, like module specific */
+ /* interface, and put them in the global pic container defined in */
+ /* ftpic.h. if you don't need them just implement the functions as */
+ /* empty to resolve the link error. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_ROOT_MODULE */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Module_Class struct inside */
+ /* another stract that contains it or in a function that initializes */
+ /* that containing stract */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DECLARE_MODULE(class_) \
+ FT_CALLBACK_TABLE \
+ const FT_Module_Class class_; \
+
+#define FT_DEFINE_ROOT_MODULE(flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ { \
+ flags_, \
+ size_, \
+ \
+ name_, \
+ version_, \
+ requires_, \
+ \
+ interface_, \
+ \
+ init_, \
+ done_, \
+ get_interface_, \
+ },
+
+#define FT_DEFINE_MODULE(class_, flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Module_Class class_ = \
+ { \
+ flags_, \
+ size_, \
+ \
+ name_, \
+ version_, \
+ requires_, \
+ \
+ interface_, \
+ \
+ init_, \
+ done_, \
+ get_interface_, \
+ };
+
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DECLARE_MODULE(class_) \
+ FT_Error FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ); \
+ void FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz );
+
+#define FT_DEFINE_ROOT_MODULE(flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ clazz->root.module_flags = flags_; \
+ clazz->root.module_size = size_; \
+ clazz->root.module_name = name_; \
+ clazz->root.module_version = version_; \
+ clazz->root.module_requires = requires_; \
+ \
+ clazz->root.module_interface = interface_; \
+ \
+ clazz->root.module_init = init_; \
+ clazz->root.module_done = done_; \
+ clazz->root.get_interface = get_interface_;
+
+#define FT_DEFINE_MODULE(class_, flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ void class_##_pic_free( FT_Library library ); \
+ FT_Error class_##_pic_init( FT_Library library ); \
+ \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ class_##_pic_free( library ); \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ) \
+ { \
+ FT_Memory memory = library->memory; \
+ FT_Module_Class* clazz; \
+ FT_Error error; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz) ) ) \
+ return error; \
+ error = class_##_pic_init( library ); \
+ if(error) \
+ { \
+ FT_FREE( clazz ); \
+ return error; \
+ } \
+ \
+ clazz->module_flags = flags_; \
+ clazz->module_size = size_; \
+ clazz->module_name = name_; \
+ clazz->module_version = version_; \
+ clazz->module_requires = requires_; \
+ \
+ clazz->module_interface = interface_; \
+ \
+ clazz->module_init = init_; \
+ clazz->module_done = done_; \
+ clazz->get_interface = get_interface_; \
+ \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
FT_END_HEADER
diff --git a/src/3rdparty/freetype/include/freetype/internal/ftpic.h b/src/3rdparty/freetype/include/freetype/internal/ftpic.h
new file mode 100644
index 0000000000..1b31957d70
--- /dev/null
+++ b/src/3rdparty/freetype/include/freetype/internal/ftpic.h
@@ -0,0 +1,67 @@
+/***************************************************************************/
+/* */
+/* ftpic.h */
+/* */
+/* The FreeType position independent code services (declaration). */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+ /*************************************************************************/
+ /* */
+ /* Modules that ordinarily have const global data that need address */
+ /* can instead define pointers here. */
+ /* */
+ /*************************************************************************/
+
+
+#ifndef __FTPIC_H__
+#define __FTPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ typedef struct FT_PIC_Container_
+ {
+ /* pic containers for base */
+ void* base;
+ /* pic containers for modules */
+ void* autofit;
+ void* cff;
+ void* pshinter;
+ void* psnames;
+ void* raster;
+ void* sfnt;
+ void* smooth;
+ void* truetype;
+ } FT_PIC_Container;
+
+ /* Initialize the various function tables, structs, etc. stored in the container. */
+ FT_BASE( FT_Error )
+ ft_pic_container_init( FT_Library library );
+
+
+ /* Destroy the contents of the container. */
+ FT_BASE( void )
+ ft_pic_container_destroy( FT_Library library );
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __FTPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/include/freetype/internal/ftserv.h b/src/3rdparty/freetype/include/freetype/internal/ftserv.h
index 2db3e8790d..569b9f7e0e 100644
--- a/src/3rdparty/freetype/include/freetype/internal/ftserv.h
+++ b/src/3rdparty/freetype/include/freetype/internal/ftserv.h
@@ -163,6 +163,298 @@ FT_BEGIN_HEADER
typedef const FT_ServiceDescRec* FT_ServiceDesc;
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_SERVICEDESCREC1 .. FT_DEFINE_SERVICEDESCREC6 */
+ /* */
+ /* <Description> */
+ /* Used to initialize an array of FT_ServiceDescRec structs. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated array is returned. */
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* */
+ /* These functions should be manyally called from the pic_init and */
+ /* pic_free functions of your module (see FT_DEFINE_MODULE) */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the array will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {serv_id_4, serv_data_4}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4, serv_id_5, serv_data_5) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {serv_id_4, serv_data_4}, \
+ {serv_id_5, serv_data_5}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4, serv_id_5, serv_data_5, \
+ serv_id_6, serv_data_6) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {serv_id_4, serv_data_4}, \
+ {serv_id_5, serv_data_5}, \
+ {serv_id_6, serv_data_6}, \
+ {NULL, NULL} \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*2 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = NULL; \
+ clazz[1].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*3 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = NULL; \
+ clazz[2].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*4 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = NULL; \
+ clazz[3].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*5 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = serv_id_4; \
+ clazz[3].serv_data = serv_data_4; \
+ clazz[4].serv_id = NULL; \
+ clazz[4].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, serv_id_4, \
+ serv_data_4, serv_id_5, serv_data_5) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*6 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = serv_id_4; \
+ clazz[3].serv_data = serv_data_4; \
+ clazz[4].serv_id = serv_id_5; \
+ clazz[4].serv_data = serv_data_5; \
+ clazz[5].serv_id = NULL; \
+ clazz[5].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4, serv_id_5, serv_data_5, \
+ serv_id_6, serv_data_6) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*7 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = serv_id_4; \
+ clazz[3].serv_data = serv_data_4; \
+ clazz[4].serv_id = serv_id_5; \
+ clazz[4].serv_data = serv_data_5; \
+ clazz[5].serv_id = serv_id_6; \
+ clazz[5].serv_data = serv_data_6; \
+ clazz[6].serv_id = NULL; \
+ clazz[6].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+#endif /* FT_CONFIG_OPTION_PIC */
/*
* Parse a list of FT_ServiceDescRec descriptors and look for
diff --git a/src/3rdparty/freetype/include/freetype/internal/fttrace.h b/src/3rdparty/freetype/include/freetype/internal/fttrace.h
index 4d38a4628a..e9b383a588 100644
--- a/src/3rdparty/freetype/include/freetype/internal/fttrace.h
+++ b/src/3rdparty/freetype/include/freetype/internal/fttrace.h
@@ -31,16 +31,19 @@ FT_TRACE_DEF( init ) /* initialization (ftinit.c) */
FT_TRACE_DEF( objs ) /* base objects (ftobjs.c) */
FT_TRACE_DEF( outline ) /* outline management (ftoutln.c) */
FT_TRACE_DEF( glyph ) /* glyph management (ftglyph.c) */
+FT_TRACE_DEF( gloader ) /* glyph loader (ftgloadr.c) */
FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */
FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */
FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */
FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */
+FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */
/* Cache sub-system */
FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */
/* SFNT driver components */
+FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */
FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */
FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */
FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */
@@ -48,6 +51,7 @@ FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */
FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */
FT_TRACE_DEF( ttpost ) /* PS table processing (ttpost.c) */
FT_TRACE_DEF( ttsbit ) /* TrueType sbit handling (ttsbit.c) */
+FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */
/* TrueType driver components */
FT_TRACE_DEF( ttdriver ) /* TT font driver (ttdriver.c) */
@@ -58,6 +62,7 @@ FT_TRACE_DEF( ttpload ) /* TT data/program loader (ttpload.c) */
FT_TRACE_DEF( ttgxvar ) /* TrueType GX var handler (ttgxvar.c) */
/* Type 1 driver components */
+FT_TRACE_DEF( t1afm )
FT_TRACE_DEF( t1driver )
FT_TRACE_DEF( t1gload )
FT_TRACE_DEF( t1hint )
diff --git a/src/3rdparty/freetype/include/freetype/internal/internal.h b/src/3rdparty/freetype/include/freetype/internal/internal.h
index 27d5dc585d..f500a651c2 100644
--- a/src/3rdparty/freetype/include/freetype/internal/internal.h
+++ b/src/3rdparty/freetype/include/freetype/internal/internal.h
@@ -25,6 +25,7 @@
#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h>
+#define FT_INTERNAL_PIC_H <freetype/internal/ftpic.h>
#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h>
#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h>
#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h>
diff --git a/src/3rdparty/freetype/include/freetype/internal/psaux.h b/src/3rdparty/freetype/include/freetype/internal/psaux.h
index 7fb4c9916d..a96e0dfa86 100644
--- a/src/3rdparty/freetype/include/freetype/internal/psaux.h
+++ b/src/3rdparty/freetype/include/freetype/internal/psaux.h
@@ -360,7 +360,7 @@ FT_BEGIN_HEADER
FT_Error
(*to_bytes)( PS_Parser parser,
FT_Byte* bytes,
- FT_Long max_bytes,
+ FT_Offset max_bytes,
FT_Long* pnum_bytes,
FT_Bool delimiters );
@@ -533,8 +533,6 @@ FT_BEGIN_HEADER
/* */
/* max_contours :: Maximal number of contours in builder outline. */
/* */
- /* last :: The last point position. */
- /* */
/* pos_x :: The horizontal translation (if composite glyph). */
/* */
/* pos_y :: The vertical translation (if composite glyph). */
@@ -567,8 +565,6 @@ FT_BEGIN_HEADER
FT_Outline* base;
FT_Outline* current;
- FT_Vector last;
-
FT_Pos pos_x;
FT_Pos pos_y;
@@ -579,7 +575,6 @@ FT_BEGIN_HEADER
T1_ParseState parse_state;
FT_Bool load_points;
FT_Bool no_recurse;
- FT_Bool shift;
FT_Bool metrics_only;
@@ -694,9 +689,11 @@ FT_BEGIN_HEADER
T1_Decoder_Callback parse_callback;
T1_Decoder_FuncsRec funcs;
- FT_Int* buildchar;
+ FT_Long* buildchar;
FT_UInt len_buildchar;
+ FT_Bool seac;
+
} T1_DecoderRec;
@@ -758,7 +755,7 @@ FT_BEGIN_HEADER
FT_Int
(*get_index)( const char* name,
- FT_UInt len,
+ FT_Offset len,
void* user_data );
void* user_data;
diff --git a/src/3rdparty/freetype/include/freetype/internal/pshints.h b/src/3rdparty/freetype/include/freetype/internal/pshints.h
index 48452c0cf3..0c357651be 100644
--- a/src/3rdparty/freetype/include/freetype/internal/pshints.h
+++ b/src/3rdparty/freetype/include/freetype/internal/pshints.h
@@ -6,7 +6,7 @@
/* recorders (specification only). These are used to support native */
/* T1/T2 hints in the `type1', `cid', and `cff' font drivers. */
/* */
-/* Copyright 2001, 2002, 2003, 2005, 2006, 2007 by */
+/* Copyright 2001, 2002, 2003, 2005, 2006, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -157,7 +157,8 @@ FT_BEGIN_HEADER
* 0 for horizontal stems (hstem), 1 for vertical ones (vstem).
*
* coords ::
- * Array of 2 integers, used as (position,length) stem descriptor.
+ * Array of 2 coordinates in 16.16 format, used as (position,length)
+ * stem descriptor.
*
* @note:
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
@@ -175,9 +176,9 @@ FT_BEGIN_HEADER
*
*/
typedef void
- (*T1_Hints_SetStemFunc)( T1_Hints hints,
- FT_UInt dimension,
- FT_Long* coords );
+ (*T1_Hints_SetStemFunc)( T1_Hints hints,
+ FT_UInt dimension,
+ FT_Fixed* coords );
/*************************************************************************
@@ -197,8 +198,8 @@ FT_BEGIN_HEADER
* 0 for horizontal stems, 1 for vertical ones.
*
* coords ::
- * An array of 6 integers, holding 3 (position,length) pairs for the
- * counter-controlled stems.
+ * An array of 6 values in 16.16 format, holding 3 (position,length)
+ * pairs for the counter-controlled stems.
*
* @note:
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
@@ -209,9 +210,9 @@ FT_BEGIN_HEADER
*
*/
typedef void
- (*T1_Hints_SetStem3Func)( T1_Hints hints,
- FT_UInt dimension,
- FT_Long* coords );
+ (*T1_Hints_SetStem3Func)( T1_Hints hints,
+ FT_UInt dimension,
+ FT_Fixed* coords );
/*************************************************************************
@@ -446,7 +447,7 @@ FT_BEGIN_HEADER
* The number of stems.
*
* coords ::
- * An array of `count' (position,length) pairs.
+ * An array of `count' (position,length) pairs in 16.16 format.
*
* @note:
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
@@ -678,6 +679,30 @@ FT_BEGIN_HEADER
typedef PSHinter_Interface* PSHinter_Service;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_, \
+ get_t1_funcs_, get_t2_funcs_) \
+ static const PSHinter_Interface class_ = \
+ { \
+ get_globals_funcs_, get_t1_funcs_, get_t2_funcs_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_, \
+ get_t1_funcs_, get_t2_funcs_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ PSHinter_Interface* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_globals_funcs = get_globals_funcs_; \
+ clazz->get_t1_funcs = get_t1_funcs_; \
+ clazz->get_t2_funcs = get_t2_funcs_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h b/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h
index 0f7fc6115d..9264239146 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h
@@ -45,6 +45,26 @@ FT_BEGIN_HEADER
FT_BDF_GetPropertyFunc get_property;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_BDFRec(class_, get_charset_id_, get_property_) \
+ static const FT_Service_BDFRec class_ = \
+ { \
+ get_charset_id_, get_property_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_BDFRec(class_, get_charset_id_, get_property_) \
+ void \
+ FT_Init_Class_##class_( FT_Service_BDFRec* clazz ) \
+ { \
+ clazz->get_charset_id = get_charset_id_; \
+ clazz->get_property = get_property_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svcid.h b/src/3rdparty/freetype/include/freetype/internal/services/svcid.h
index 2e391f2888..9b874b5e72 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svcid.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svcid.h
@@ -46,6 +46,31 @@ FT_BEGIN_HEADER
FT_CID_GetCIDFromGlyphIndexFunc get_cid_from_glyph_index;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_CIDREC(class_, get_ros_, \
+ get_is_cid_, get_cid_from_glyph_index_ ) \
+ static const FT_Service_CIDRec class_ = \
+ { \
+ get_ros_, get_is_cid_, get_cid_from_glyph_index_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_CIDREC(class_, get_ros_, \
+ get_is_cid_, get_cid_from_glyph_index_ ) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_CIDRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_ros = get_ros_; \
+ clazz->get_is_cid = get_is_cid_; \
+ clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h b/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h
index e5e56b253c..d66a41d5ae 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h
@@ -51,6 +51,28 @@ FT_BEGIN_HEADER
FT_GlyphDict_NameIndexFunc name_index; /* optional */
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_GLYPHDICTREC(class_, get_name_, name_index_) \
+ static const FT_Service_GlyphDictRec class_ = \
+ { \
+ get_name_, name_index_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_GLYPHDICTREC(class_, get_name_, name_index_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_GlyphDictRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_name = get_name_; \
+ clazz->name_index = name_index_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svmm.h b/src/3rdparty/freetype/include/freetype/internal/services/svmm.h
index 8a99ec4b1a..66e1da22f1 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svmm.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svmm.h
@@ -68,6 +68,31 @@ FT_BEGIN_HEADER
FT_Set_Var_Design_Func set_var_design;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \
+ set_mm_blend_, get_mm_var_, set_var_design_) \
+ static const FT_Service_MultiMastersRec class_ = \
+ { \
+ get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \
+ set_mm_blend_, get_mm_var_, set_var_design_) \
+ void \
+ FT_Init_Class_##class_( FT_Service_MultiMastersRec* clazz ) \
+ { \
+ clazz->get_mm = get_mm_; \
+ clazz->set_mm_design = set_mm_design_; \
+ clazz->set_mm_blend = set_mm_blend_; \
+ clazz->get_mm_var = get_mm_var_; \
+ clazz->set_var_design = set_var_design_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h b/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h
index 282da68d13..106c54f853 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h
@@ -46,6 +46,27 @@ FT_BEGIN_HEADER
FT_PsName_GetFunc get_ps_font_name;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_PSFONTNAMEREC(class_, get_ps_font_name_) \
+ static const FT_Service_PsFontNameRec class_ = \
+ { \
+ get_ps_font_name_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_PSFONTNAMEREC(class_, get_ps_font_name_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_PsFontNameRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_ps_font_name = get_ps_font_name_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h b/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h
index c4e25ed635..961030cc39 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h
@@ -98,7 +98,7 @@ FT_BEGIN_HEADER
(*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes,
FT_UInt32 unicode );
- typedef FT_ULong
+ typedef FT_UInt32
(*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes,
FT_UInt32 *unicode );
@@ -117,6 +117,41 @@ FT_BEGIN_HEADER
const unsigned short* adobe_expert_encoding;
};
+
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
+ unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
+ adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
+ static const FT_Service_PsCMapsRec class_ = \
+ { \
+ unicode_value_, unicodes_init_, \
+ unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
+ adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
+ unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
+ adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_PsCMapsRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->unicode_value = unicode_value_; \
+ clazz->unicodes_init = unicodes_init_; \
+ clazz->unicodes_char_index = unicodes_char_index_; \
+ clazz->unicodes_char_next = unicodes_char_next_; \
+ clazz->macintosh_name = macintosh_name_; \
+ clazz->adobe_std_strings = adobe_std_strings_; \
+ clazz->adobe_std_encoding = adobe_std_encoding_; \
+ clazz->adobe_expert_encoding = adobe_expert_encoding_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h b/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h
index 124c6f9f9f..91ba91e5dc 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h
@@ -53,6 +53,33 @@ FT_BEGIN_HEADER
PS_GetFontPrivateFunc ps_get_font_private;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_PSINFOREC(class_, get_font_info_, \
+ ps_get_font_extra_, has_glyph_names_, get_font_private_) \
+ static const FT_Service_PsInfoRec class_ = \
+ { \
+ get_font_info_, ps_get_font_extra_, has_glyph_names_, \
+ get_font_private_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_PSINFOREC(class_, get_font_info_, \
+ ps_get_font_extra_, has_glyph_names_, get_font_private_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_PsInfoRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->ps_get_font_info = get_font_info_; \
+ clazz->ps_get_font_extra = ps_get_font_extra_; \
+ clazz->ps_has_glyph_names = has_glyph_names_; \
+ clazz->ps_get_font_private = get_font_private_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h b/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h
index b4a85d97ec..30bb1620fe 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h
@@ -58,6 +58,7 @@ FT_BEGIN_HEADER
(*FT_SFNT_TableInfoFunc)( FT_Face face,
FT_UInt idx,
FT_ULong *tag,
+ FT_ULong *offset,
FT_ULong *length );
@@ -68,6 +69,27 @@ FT_BEGIN_HEADER
FT_SFNT_TableInfoFunc table_info;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \
+ static const FT_Service_SFNT_TableRec class_ = \
+ { \
+ load_, get_, info_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \
+ void \
+ FT_Init_Class_##class_( FT_Service_SFNT_TableRec* clazz ) \
+ { \
+ clazz->load_table = load_; \
+ clazz->get_table = get_; \
+ clazz->table_info = info_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h b/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h
index 553ecb074e..8af00351d9 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h
@@ -1,6 +1,6 @@
/***************************************************************************/
/* */
-/* svsttcmap.h */
+/* svttcmap.h */
/* */
/* The FreeType TrueType/sfnt cmap extra information service. */
/* */
@@ -74,6 +74,27 @@ FT_BEGIN_HEADER
TT_CMap_Info_GetFunc get_cmap_info;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
+ static const FT_Service_TTCMapsRec class_ = \
+ { \
+ get_cmap_info_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_TTCMapsRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_cmap_info = get_cmap_info_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h b/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h
index e57d484b7e..ab2dc9a9fe 100644
--- a/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h
+++ b/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h
@@ -37,6 +37,25 @@ FT_BEGIN_HEADER
TT_Glyf_GetLocationFunc get_location;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_TTGLYFREC(class_, get_location_ ) \
+ static const FT_Service_TTGlyfRec class_ = \
+ { \
+ get_location_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_TTGLYFREC(class_, get_location_ ) \
+ void \
+ FT_Init_Class_##class_( FT_Service_TTGlyfRec* clazz ) \
+ { \
+ clazz->get_location = get_location_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/3rdparty/freetype/include/freetype/internal/sfnt.h b/src/3rdparty/freetype/include/freetype/internal/sfnt.h
index 7e8f6847c9..6326debd00 100644
--- a/src/3rdparty/freetype/include/freetype/internal/sfnt.h
+++ b/src/3rdparty/freetype/include/freetype/internal/sfnt.h
@@ -753,6 +753,141 @@ FT_BEGIN_HEADER
/* transitional */
typedef SFNT_Interface* SFNT_Service;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#define FT_DEFINE_DRIVERS_OLD_INTERNAL(a) \
+ a,
+#else
+ #define FT_DEFINE_DRIVERS_OLD_INTERNAL(a)
+#endif
+#define FT_INTERNAL(a) \
+ a,
+
+#define FT_DEFINE_SFNT_INTERFACE(class_, \
+ goto_table_, init_face_, load_face_, done_face_, get_interface_, \
+ load_any_, load_sfnt_header_, load_directory_, load_head_, \
+ load_hhea_, load_cmap_, load_maxp_, load_os2_, load_post_, \
+ load_name_, free_name_, load_hdmx_stub_, free_hdmx_stub_, \
+ load_kern_, load_gasp_, load_pclt_, load_bhed_, \
+ set_sbit_strike_stub_, load_sbits_stub_, find_sbit_image_, \
+ load_sbit_metrics_, load_sbit_image_, free_sbits_stub_, \
+ get_psname_, free_psnames_, load_charmap_stub_, free_charmap_stub_, \
+ get_kerning_, load_font_dir_, load_hmtx_, load_eblc_, free_eblc_, \
+ set_sbit_strike_, load_strike_metrics_, get_metrics_ ) \
+ static const SFNT_Interface class_ = \
+ { \
+ FT_INTERNAL(goto_table_) \
+ FT_INTERNAL(init_face_) \
+ FT_INTERNAL(load_face_) \
+ FT_INTERNAL(done_face_) \
+ FT_INTERNAL(get_interface_) \
+ FT_INTERNAL(load_any_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sfnt_header_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_directory_) \
+ FT_INTERNAL(load_head_) \
+ FT_INTERNAL(load_hhea_) \
+ FT_INTERNAL(load_cmap_) \
+ FT_INTERNAL(load_maxp_) \
+ FT_INTERNAL(load_os2_) \
+ FT_INTERNAL(load_post_) \
+ FT_INTERNAL(load_name_) \
+ FT_INTERNAL(free_name_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_hdmx_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(free_hdmx_stub_) \
+ FT_INTERNAL(load_kern_) \
+ FT_INTERNAL(load_gasp_) \
+ FT_INTERNAL(load_pclt_) \
+ FT_INTERNAL(load_bhed_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(set_sbit_strike_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbits_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(find_sbit_image_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbit_metrics_) \
+ FT_INTERNAL(load_sbit_image_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(free_sbits_stub_) \
+ FT_INTERNAL(get_psname_) \
+ FT_INTERNAL(free_psnames_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_charmap_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(free_charmap_stub_) \
+ FT_INTERNAL(get_kerning_) \
+ FT_INTERNAL(load_font_dir_) \
+ FT_INTERNAL(load_hmtx_) \
+ FT_INTERNAL(load_eblc_) \
+ FT_INTERNAL(free_eblc_) \
+ FT_INTERNAL(set_sbit_strike_) \
+ FT_INTERNAL(load_strike_metrics_) \
+ FT_INTERNAL(get_metrics_) \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#define FT_DEFINE_DRIVERS_OLD_INTERNAL(a, a_) \
+ clazz->a = a_;
+#else
+ #define FT_DEFINE_DRIVERS_OLD_INTERNAL(a, a_)
+#endif
+#define FT_INTERNAL(a, a_) \
+ clazz->a = a_;
+
+#define FT_DEFINE_SFNT_INTERFACE(class_, \
+ goto_table_, init_face_, load_face_, done_face_, get_interface_, \
+ load_any_, load_sfnt_header_, load_directory_, load_head_, \
+ load_hhea_, load_cmap_, load_maxp_, load_os2_, load_post_, \
+ load_name_, free_name_, load_hdmx_stub_, free_hdmx_stub_, \
+ load_kern_, load_gasp_, load_pclt_, load_bhed_, \
+ set_sbit_strike_stub_, load_sbits_stub_, find_sbit_image_, \
+ load_sbit_metrics_, load_sbit_image_, free_sbits_stub_, \
+ get_psname_, free_psnames_, load_charmap_stub_, free_charmap_stub_, \
+ get_kerning_, load_font_dir_, load_hmtx_, load_eblc_, free_eblc_, \
+ set_sbit_strike_, load_strike_metrics_, get_metrics_ ) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, SFNT_Interface* clazz ) \
+ { \
+ FT_UNUSED(library); \
+ FT_INTERNAL(goto_table,goto_table_) \
+ FT_INTERNAL(init_face,init_face_) \
+ FT_INTERNAL(load_face,load_face_) \
+ FT_INTERNAL(done_face,done_face_) \
+ FT_INTERNAL(get_interface,get_interface_) \
+ FT_INTERNAL(load_any,load_any_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sfnt_header,load_sfnt_header_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_directory,load_directory_) \
+ FT_INTERNAL(load_head,load_head_) \
+ FT_INTERNAL(load_hhea,load_hhea_) \
+ FT_INTERNAL(load_cmap,load_cmap_) \
+ FT_INTERNAL(load_maxp,load_maxp_) \
+ FT_INTERNAL(load_os2,load_os2_) \
+ FT_INTERNAL(load_post,load_post_) \
+ FT_INTERNAL(load_name,load_name_) \
+ FT_INTERNAL(free_name,free_name_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_hdmx_stub,load_hdmx_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(free_hdmx_stub,free_hdmx_stub_) \
+ FT_INTERNAL(load_kern,load_kern_) \
+ FT_INTERNAL(load_gasp,load_gasp_) \
+ FT_INTERNAL(load_pclt,load_pclt_) \
+ FT_INTERNAL(load_bhed,load_bhed_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(set_sbit_strike_stub,set_sbit_strike_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbits_stub,load_sbits_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(find_sbit_image,find_sbit_image_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbit_metrics,load_sbit_metrics_) \
+ FT_INTERNAL(load_sbit_image,load_sbit_image_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(free_sbits_stub,free_sbits_stub_) \
+ FT_INTERNAL(get_psname,get_psname_) \
+ FT_INTERNAL(free_psnames,free_psnames_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(load_charmap_stub,load_charmap_stub_) \
+ FT_DEFINE_DRIVERS_OLD_INTERNAL(free_charmap_stub,free_charmap_stub_) \
+ FT_INTERNAL(get_kerning,get_kerning_) \
+ FT_INTERNAL(load_font_dir,load_font_dir_) \
+ FT_INTERNAL(load_hmtx,load_hmtx_) \
+ FT_INTERNAL(load_eblc,load_eblc_) \
+ FT_INTERNAL(free_eblc,free_eblc_) \
+ FT_INTERNAL(set_sbit_strike,set_sbit_strike_) \
+ FT_INTERNAL(load_strike_metrics,load_strike_metrics_) \
+ FT_INTERNAL(get_metrics,get_metrics_) \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/3rdparty/freetype/include/freetype/internal/t1types.h b/src/3rdparty/freetype/include/freetype/internal/t1types.h
index ff021b0fef..5f730637b5 100644
--- a/src/3rdparty/freetype/include/freetype/internal/t1types.h
+++ b/src/3rdparty/freetype/include/freetype/internal/t1types.h
@@ -58,7 +58,9 @@ FT_BEGIN_HEADER
/* */
/* code_first :: The lowest valid character code in the encoding. */
/* */
- /* code_last :: The highest valid character code in the encoding. */
+ /* code_last :: The highest valid character code in the encoding */
+ /* + 1. When equal to code_first there are no valid */
+ /* character codes. */
/* */
/* char_index :: An array of corresponding glyph indices. */
/* */
@@ -230,7 +232,7 @@ FT_BEGIN_HEADER
/* undocumented, optional: has the same meaning as len_buildchar */
/* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */
FT_UInt len_buildchar;
- FT_Int* buildchar;
+ FT_Long* buildchar;
/* since version 2.1 - interface to PostScript hinter */
const void* pshinter;
diff --git a/src/3rdparty/freetype/include/freetype/internal/tttypes.h b/src/3rdparty/freetype/include/freetype/internal/tttypes.h
index 85fc27f74e..acbb863b0f 100644
--- a/src/3rdparty/freetype/include/freetype/internal/tttypes.h
+++ b/src/3rdparty/freetype/include/freetype/internal/tttypes.h
@@ -902,7 +902,7 @@ FT_BEGIN_HEADER
FT_Byte* table;
FT_Byte* table_end;
FT_Byte* strings;
- FT_UInt32 strings_size;
+ FT_ULong strings_size;
FT_UInt num_strikes;
FT_Bool loaded;
@@ -1401,7 +1401,7 @@ FT_BEGIN_HEADER
FT_Byte* vert_metrics;
FT_ULong vert_metrics_size;
- FT_UInt num_locations;
+ FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */
FT_Byte* glyph_locations;
FT_Byte* hdmx_table;
diff --git a/src/3rdparty/freetype/src/autofit/Jamfile b/src/3rdparty/freetype/src/autofit/Jamfile
index acee8bf2cb..2714765b5b 100644
--- a/src/3rdparty/freetype/src/autofit/Jamfile
+++ b/src/3rdparty/freetype/src/autofit/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/autofit Jamfile
#
-# Copyright 2003, 2004, 2005, 2006, 2007 by
+# Copyright 2003, 2004, 2005, 2006, 2007, 2009 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -14,14 +14,14 @@ SubDir FT2_TOP src autofit ;
{
local _sources ;
- # define FT2_AUTOFIT2 do enable to experimental latin hinter replacement
+ # define FT2_AUTOFIT2 to enable experimental latin hinter replacement
if $(FT2_AUTOFIT2)
{
DEFINES += FT_OPTION_AUTOFIT2 ;
}
if $(FT2_MULTI)
{
- _sources = afangles afglobal afhints aflatin afcjk afindic afloader afmodule afdummy afwarp ;
+ _sources = afangles afglobal afhints aflatin afcjk afindic afloader afmodule afdummy afwarp afpic ;
if $(FT2_AUTOFIT2)
{
diff --git a/src/3rdparty/freetype/src/autofit/afcjk.c b/src/3rdparty/freetype/src/autofit/afcjk.c
index de3ce11d54..bab0c42bad 100644
--- a/src/3rdparty/freetype/src/autofit/afcjk.c
+++ b/src/3rdparty/freetype/src/autofit/afcjk.c
@@ -4,7 +4,7 @@
/* */
/* Auto-fitter hinting routines for CJK script (body). */
/* */
-/* Copyright 2006, 2007, 2008 by */
+/* Copyright 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -58,9 +58,12 @@
if ( FT_Select_Charmap( face, FT_ENCODING_UNICODE ) )
face->charmap = NULL;
-
- /* latin's version would suffice */
- af_latin_metrics_init_widths( metrics, face, 0x7530 );
+ else
+ {
+ /* latin's version would suffice */
+ af_latin_metrics_init_widths( metrics, face, 0x7530 );
+ af_latin_metrics_check_digits( metrics, face );
+ }
FT_Set_Charmap( face, oldmap );
@@ -1017,7 +1020,7 @@
AF_AxisHints axis = &hints->axis[dim];
AF_Edge edges = axis->edges;
AF_Edge edge_limit = edges + axis->num_edges;
- FT_Int n_edges;
+ FT_PtrDist n_edges;
AF_Edge edge;
AF_Edge anchor = 0;
FT_Pos delta = 0;
@@ -1441,35 +1444,33 @@
static const AF_Script_UniRangeRec af_cjk_uniranges[] =
{
#if 0
- { 0x0100UL, 0xFFFFUL }, /* why this? */
+ AF_UNIRANGE_REC( 0x0100UL, 0xFFFFUL ), /* why this? */
#endif
- { 0x2E80UL, 0x2EFFUL }, /* CJK Radicals Supplement */
- { 0x2F00UL, 0x2FDFUL }, /* Kangxi Radicals */
- { 0x3000UL, 0x303FUL }, /* CJK Symbols and Punctuation */
- { 0x3040UL, 0x309FUL }, /* Hiragana */
- { 0x30A0UL, 0x30FFUL }, /* Katakana */
- { 0x3100UL, 0x312FUL }, /* Bopomofo */
- { 0x3130UL, 0x318FUL }, /* Hangul Compatibility Jamo */
- { 0x31A0UL, 0x31BFUL }, /* Bopomofo Extended */
- { 0x31C0UL, 0x31EFUL }, /* CJK Strokes */
- { 0x31F0UL, 0x31FFUL }, /* Katakana Phonetic Extensions */
- { 0x3200UL, 0x32FFUL }, /* Enclosed CJK Letters and Months */
- { 0x3300UL, 0x33FFUL }, /* CJK Compatibility */
- { 0x3400UL, 0x4DBFUL }, /* CJK Unified Ideographs Extension A */
- { 0x4DC0UL, 0x4DFFUL }, /* Yijing Hexagram Symbols */
- { 0x4E00UL, 0x9FFFUL }, /* CJK Unified Ideographs */
- { 0xF900UL, 0xFAFFUL }, /* CJK Compatibility Ideographs */
- { 0xFE30UL, 0xFE4FUL }, /* CJK Compatibility Forms */
- { 0xFF00UL, 0xFFEFUL }, /* Halfwidth and Fullwidth Forms */
- { 0x20000UL, 0x2A6DFUL }, /* CJK Unified Ideographs Extension B */
- { 0x2F800UL, 0x2FA1FUL }, /* CJK Compatibility Ideographs Supplement */
- { 0UL, 0UL }
+ AF_UNIRANGE_REC( 0x2E80UL, 0x2EFFUL ), /* CJK Radicals Supplement */
+ AF_UNIRANGE_REC( 0x2F00UL, 0x2FDFUL ), /* Kangxi Radicals */
+ AF_UNIRANGE_REC( 0x3000UL, 0x303FUL ), /* CJK Symbols and Punctuation */
+ AF_UNIRANGE_REC( 0x3040UL, 0x309FUL ), /* Hiragana */
+ AF_UNIRANGE_REC( 0x30A0UL, 0x30FFUL ), /* Katakana */
+ AF_UNIRANGE_REC( 0x3100UL, 0x312FUL ), /* Bopomofo */
+ AF_UNIRANGE_REC( 0x3130UL, 0x318FUL ), /* Hangul Compatibility Jamo */
+ AF_UNIRANGE_REC( 0x31A0UL, 0x31BFUL ), /* Bopomofo Extended */
+ AF_UNIRANGE_REC( 0x31C0UL, 0x31EFUL ), /* CJK Strokes */
+ AF_UNIRANGE_REC( 0x31F0UL, 0x31FFUL ), /* Katakana Phonetic Extensions */
+ AF_UNIRANGE_REC( 0x3200UL, 0x32FFUL ), /* Enclosed CJK Letters and Months */
+ AF_UNIRANGE_REC( 0x3300UL, 0x33FFUL ), /* CJK Compatibility */
+ AF_UNIRANGE_REC( 0x3400UL, 0x4DBFUL ), /* CJK Unified Ideographs Extension A */
+ AF_UNIRANGE_REC( 0x4DC0UL, 0x4DFFUL ), /* Yijing Hexagram Symbols */
+ AF_UNIRANGE_REC( 0x4E00UL, 0x9FFFUL ), /* CJK Unified Ideographs */
+ AF_UNIRANGE_REC( 0xF900UL, 0xFAFFUL ), /* CJK Compatibility Ideographs */
+ AF_UNIRANGE_REC( 0xFE30UL, 0xFE4FUL ), /* CJK Compatibility Forms */
+ AF_UNIRANGE_REC( 0xFF00UL, 0xFFEFUL ), /* Halfwidth and Fullwidth Forms */
+ AF_UNIRANGE_REC( 0x20000UL, 0x2A6DFUL ), /* CJK Unified Ideographs Extension B */
+ AF_UNIRANGE_REC( 0x2F800UL, 0x2FA1FUL ), /* CJK Compatibility Ideographs Supplement */
+ AF_UNIRANGE_REC( 0UL, 0UL )
};
- FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
- af_cjk_script_class =
- {
+ AF_DEFINE_SCRIPT_CLASS(af_cjk_script_class,
AF_SCRIPT_CJK,
af_cjk_uniranges,
@@ -1481,19 +1482,17 @@
(AF_Script_InitHintsFunc) af_cjk_hints_init,
(AF_Script_ApplyHintsFunc) af_cjk_hints_apply
- };
+ )
#else /* !AF_CONFIG_OPTION_CJK */
static const AF_Script_UniRangeRec af_cjk_uniranges[] =
{
- { 0, 0 }
+ AF_UNIRANGE_REC( 0UL, 0UL )
};
- FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
- af_cjk_script_class =
- {
+ AF_DEFINE_SCRIPT_CLASS(af_cjk_script_class,
AF_SCRIPT_CJK,
af_cjk_uniranges,
@@ -1505,7 +1504,7 @@
(AF_Script_InitHintsFunc) NULL,
(AF_Script_ApplyHintsFunc) NULL
- };
+ )
#endif /* !AF_CONFIG_OPTION_CJK */
diff --git a/src/3rdparty/freetype/src/autofit/afcjk.h b/src/3rdparty/freetype/src/autofit/afcjk.h
index 9f77fda143..0b20d4ae35 100644
--- a/src/3rdparty/freetype/src/autofit/afcjk.h
+++ b/src/3rdparty/freetype/src/autofit/afcjk.h
@@ -27,8 +27,7 @@ FT_BEGIN_HEADER
/* the CJK-specific script class */
- FT_CALLBACK_TABLE const AF_ScriptClassRec
- af_cjk_script_class;
+ AF_DECLARE_SCRIPT_CLASS(af_cjk_script_class)
FT_LOCAL( FT_Error )
diff --git a/src/3rdparty/freetype/src/autofit/afdummy.c b/src/3rdparty/freetype/src/autofit/afdummy.c
index ed96e96410..42b2fcb216 100644
--- a/src/3rdparty/freetype/src/autofit/afdummy.c
+++ b/src/3rdparty/freetype/src/autofit/afdummy.c
@@ -42,9 +42,7 @@
}
- FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
- af_dummy_script_class =
- {
+ AF_DEFINE_SCRIPT_CLASS(af_dummy_script_class,
AF_SCRIPT_NONE,
NULL,
@@ -56,7 +54,7 @@
(AF_Script_InitHintsFunc) af_dummy_hints_init,
(AF_Script_ApplyHintsFunc) af_dummy_hints_apply
- };
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/autofit/afdummy.h b/src/3rdparty/freetype/src/autofit/afdummy.h
index 2a5faf8f85..b69ef437fe 100644
--- a/src/3rdparty/freetype/src/autofit/afdummy.h
+++ b/src/3rdparty/freetype/src/autofit/afdummy.h
@@ -29,8 +29,7 @@ FT_BEGIN_HEADER
* be performed. This is the default for non-latin glyphs!
*/
- FT_CALLBACK_TABLE const AF_ScriptClassRec
- af_dummy_script_class;
+ AF_DECLARE_SCRIPT_CLASS(af_dummy_script_class)
/* */
diff --git a/src/3rdparty/freetype/src/autofit/afglobal.c b/src/3rdparty/freetype/src/autofit/afglobal.c
index bfb9091bfd..ac293619d3 100644
--- a/src/3rdparty/freetype/src/autofit/afglobal.c
+++ b/src/3rdparty/freetype/src/autofit/afglobal.c
@@ -4,7 +4,7 @@
/* */
/* Auto-fitter routines to compute global hinting values (body). */
/* */
-/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -21,6 +21,7 @@
#include "aflatin.h"
#include "afcjk.h"
#include "afindic.h"
+#include "afpic.h"
#include "aferrors.h"
@@ -28,6 +29,11 @@
#include "aflatin2.h"
#endif
+#ifndef FT_CONFIG_OPTION_PIC
+
+/* when updating this table, don't forget to update
+ AF_SCRIPT_CLASSES_COUNT and autofit_module_class_pic_init */
+
/* populate this list when you add new scripts */
static AF_ScriptClass const af_script_classes[] =
{
@@ -41,10 +47,14 @@
NULL /* do not remove */
};
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* index of default script in `af_script_classes' */
#define AF_SCRIPT_LIST_DEFAULT 2
- /* indicates an uncovered glyph */
-#define AF_SCRIPT_LIST_NONE 255
+ /* a bit mask indicating an uncovered glyph */
+#define AF_SCRIPT_LIST_NONE 0x7F
+ /* if this flag is set, we have an ASCII digit */
+#define AF_DIGIT 0x80
/*
@@ -55,7 +65,7 @@
typedef struct AF_FaceGlobalsRec_
{
FT_Face face;
- FT_UInt glyph_count; /* same as face->num_glyphs */
+ FT_Long glyph_count; /* same as face->num_glyphs */
FT_Byte* glyph_scripts;
AF_ScriptMetrics metrics[AF_SCRIPT_MAX];
@@ -72,7 +82,7 @@
FT_Face face = globals->face;
FT_CharMap old_charmap = face->charmap;
FT_Byte* gscripts = globals->glyph_scripts;
- FT_UInt ss;
+ FT_UInt ss, i;
/* the value 255 means `uncovered glyph' */
@@ -92,9 +102,9 @@
}
/* scan each script in a Unicode charmap */
- for ( ss = 0; af_script_classes[ss]; ss++ )
+ for ( ss = 0; AF_SCRIPT_CLASSES_GET[ss]; ss++ )
{
- AF_ScriptClass clazz = af_script_classes[ss];
+ AF_ScriptClass clazz = AF_SCRIPT_CLASSES_GET[ss];
AF_Script_UniRange range;
@@ -114,7 +124,7 @@
gindex = FT_Get_Char_Index( face, charcode );
if ( gindex != 0 &&
- gindex < globals->glyph_count &&
+ gindex < (FT_ULong)globals->glyph_count &&
gscripts[gindex] == AF_SCRIPT_LIST_NONE )
{
gscripts[gindex] = (FT_Byte)ss;
@@ -127,7 +137,7 @@
if ( gindex == 0 || charcode > range->last )
break;
- if ( gindex < globals->glyph_count &&
+ if ( gindex < (FT_ULong)globals->glyph_count &&
gscripts[gindex] == AF_SCRIPT_LIST_NONE )
{
gscripts[gindex] = (FT_Byte)ss;
@@ -136,13 +146,23 @@
}
}
+ /* mark ASCII digits */
+ for ( i = 0x30; i <= 0x39; i++ )
+ {
+ FT_UInt gindex = FT_Get_Char_Index( face, i );
+
+
+ if ( gindex != 0 && gindex < (FT_ULong)globals->glyph_count )
+ gscripts[gindex] |= AF_DIGIT;
+ }
+
Exit:
/*
* By default, all uncovered glyphs are set to the latin script.
* XXX: Shouldn't we disable hinting or do something similar?
*/
{
- FT_UInt nn;
+ FT_Long nn;
for ( nn = 0; nn < globals->glyph_count; nn++ )
@@ -201,7 +221,7 @@
{
if ( globals->metrics[nn] )
{
- AF_ScriptClass clazz = af_script_classes[nn];
+ AF_ScriptClass clazz = AF_SCRIPT_CLASSES_GET[nn];
FT_ASSERT( globals->metrics[nn]->clazz == clazz );
@@ -232,12 +252,12 @@
FT_UInt gidx;
AF_ScriptClass clazz;
FT_UInt script = options & 15;
- const FT_UInt script_max = sizeof ( af_script_classes ) /
- sizeof ( af_script_classes[0] );
+ const FT_Offset script_max = sizeof ( AF_SCRIPT_CLASSES_GET ) /
+ sizeof ( AF_SCRIPT_CLASSES_GET[0] );
FT_Error error = AF_Err_Ok;
- if ( gindex >= globals->glyph_count )
+ if ( gindex >= (FT_ULong)globals->glyph_count )
{
error = AF_Err_Invalid_Argument;
goto Exit;
@@ -245,9 +265,9 @@
gidx = script;
if ( gidx == 0 || gidx + 1 >= script_max )
- gidx = globals->glyph_scripts[gindex];
+ gidx = globals->glyph_scripts[gindex] & AF_SCRIPT_LIST_NONE;
- clazz = af_script_classes[gidx];
+ clazz = AF_SCRIPT_CLASSES_GET[gidx];
if ( script == 0 )
script = clazz->script;
@@ -286,4 +306,15 @@
}
+ FT_LOCAL_DEF( FT_Bool )
+ af_face_globals_is_digit( AF_FaceGlobals globals,
+ FT_UInt gindex )
+ {
+ if ( gindex < (FT_ULong)globals->glyph_count )
+ return (FT_Bool)( globals->glyph_scripts[gindex] & AF_DIGIT );
+
+ return (FT_Bool)0;
+ }
+
+
/* END */
diff --git a/src/3rdparty/freetype/src/autofit/afglobal.h b/src/3rdparty/freetype/src/autofit/afglobal.h
index cf52c08756..2a68e19607 100644
--- a/src/3rdparty/freetype/src/autofit/afglobal.h
+++ b/src/3rdparty/freetype/src/autofit/afglobal.h
@@ -5,7 +5,7 @@
/* Auto-fitter routines to compute global hinting values */
/* (specification). */
/* */
-/* Copyright 2003, 2004, 2005, 2007 by */
+/* Copyright 2003, 2004, 2005, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -56,7 +56,11 @@ FT_BEGIN_HEADER
FT_LOCAL( void )
af_face_globals_free( AF_FaceGlobals globals );
- /* */
+ FT_LOCAL_DEF( FT_Bool )
+ af_face_globals_is_digit( AF_FaceGlobals globals,
+ FT_UInt gindex );
+
+ /* */
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/autofit/afhints.c b/src/3rdparty/freetype/src/autofit/afhints.c
index 8ab1761488..fe38fba995 100644
--- a/src/3rdparty/freetype/src/autofit/afhints.c
+++ b/src/3rdparty/freetype/src/autofit/afhints.c
@@ -34,7 +34,7 @@
{
FT_Int old_max = axis->max_segments;
FT_Int new_max = old_max;
- FT_Int big_max = FT_INT_MAX / sizeof ( *segment );
+ FT_Int big_max = (FT_Int)( FT_INT_MAX / sizeof ( *segment ) );
if ( old_max >= big_max )
@@ -77,7 +77,7 @@
{
FT_Int old_max = axis->max_edges;
FT_Int new_max = old_max;
- FT_Int big_max = FT_INT_MAX / sizeof ( *edge );
+ FT_Int big_max = (FT_Int)( FT_INT_MAX / sizeof ( *edge ) );
if ( old_max >= big_max )
@@ -645,6 +645,7 @@
FT_Int contour_index = 0;
+ FT_UNUSED( first );
for ( point = points; point < point_limit; point++, vec++, tag++ )
{
point->fx = (FT_Short)vec->x;
@@ -940,8 +941,8 @@
}
{
- FT_UInt min, max, mid;
- FT_Pos fpos;
+ FT_PtrDist min, max, mid;
+ FT_Pos fpos;
/* find enclosing edges */
@@ -952,7 +953,7 @@
/* for small edge counts, a linear search is better */
if ( max <= 8 )
{
- FT_UInt nn;
+ FT_PtrDist nn;
for ( nn = 0; nn < max; nn++ )
if ( edges[nn].fpos >= u )
diff --git a/src/3rdparty/freetype/src/autofit/afindic.c b/src/3rdparty/freetype/src/autofit/afindic.c
index 3d27f521b6..1d9e9eafba 100644
--- a/src/3rdparty/freetype/src/autofit/afindic.c
+++ b/src/3rdparty/freetype/src/autofit/afindic.c
@@ -81,16 +81,14 @@
static const AF_Script_UniRangeRec af_indic_uniranges[] =
{
#if 0
- { 0x0100, 0xFFFF }, /* why this? */
+ AF_UNIRANGE_REC( 0x0100UL, 0xFFFFUL ), /* why this? */
#endif
- { 0x0900, 0x0DFF}, /* Indic Range */
- { 0, 0 }
+ AF_UNIRANGE_REC( 0x0900UL, 0x0DFFUL), /* Indic Range */
+ AF_UNIRANGE_REC( 0UL, 0UL)
};
- FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
- af_indic_script_class =
- {
+ AF_DEFINE_SCRIPT_CLASS(af_indic_script_class,
AF_SCRIPT_INDIC,
af_indic_uniranges,
@@ -102,7 +100,7 @@
(AF_Script_InitHintsFunc) af_indic_hints_init,
(AF_Script_ApplyHintsFunc) af_indic_hints_apply
- };
+ )
#else /* !AF_CONFIG_OPTION_INDIC */
@@ -112,9 +110,7 @@
};
- FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
- af_indic_script_class =
- {
+ AF_DEFINE_SCRIPT_CLASS(af_indic_script_class,
AF_SCRIPT_INDIC,
af_indic_uniranges,
@@ -126,7 +122,7 @@
(AF_Script_InitHintsFunc) NULL,
(AF_Script_ApplyHintsFunc) NULL
- };
+ )
#endif /* !AF_CONFIG_OPTION_INDIC */
diff --git a/src/3rdparty/freetype/src/autofit/afindic.h b/src/3rdparty/freetype/src/autofit/afindic.h
index b242b26144..662a982200 100644
--- a/src/3rdparty/freetype/src/autofit/afindic.h
+++ b/src/3rdparty/freetype/src/autofit/afindic.h
@@ -27,8 +27,7 @@ FT_BEGIN_HEADER
/* the Indic-specific script class */
- FT_CALLBACK_TABLE const AF_ScriptClassRec
- af_indic_script_class;
+ AF_DECLARE_SCRIPT_CLASS(af_indic_script_class)
/* */
diff --git a/src/3rdparty/freetype/src/autofit/aflatin.c b/src/3rdparty/freetype/src/autofit/aflatin.c
index ba59e5b38c..e6882d5e7b 100644
--- a/src/3rdparty/freetype/src/autofit/aflatin.c
+++ b/src/3rdparty/freetype/src/autofit/aflatin.c
@@ -4,7 +4,7 @@
/* */
/* Auto-fitter hinting routines for latin script (body). */
/* */
-/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -16,6 +16,9 @@
/***************************************************************************/
+#include <ft2build.h>
+#include FT_ADVANCES_H
+
#include "aflatin.h"
#include "aferrors.h"
@@ -146,7 +149,8 @@
#define AF_LATIN_MAX_TEST_CHARACTERS 12
- static const char* const af_latin_blue_chars[AF_LATIN_MAX_BLUES] =
+ static const char af_latin_blue_chars[AF_LATIN_MAX_BLUES]
+ [AF_LATIN_MAX_TEST_CHARACTERS + 1] =
{
"THEZOCQS",
"HEZLOCUS",
@@ -195,7 +199,8 @@
for ( ; p < limit && *p; p++ )
{
FT_UInt glyph_index;
- FT_Int best_point, best_y, best_first, best_last;
+ FT_Pos best_y; /* same as points.y */
+ FT_Int best_point, best_first, best_last;
FT_Vector* points;
FT_Bool round = 0;
@@ -328,7 +333,7 @@
* we couldn't find a single glyph to compute this blue zone,
* we will simply ignore it then
*/
- AF_LOG(( "empty!\n" ));
+ AF_LOG(( "empty\n" ));
continue;
}
@@ -379,7 +384,7 @@
blue->flags |= AF_LATIN_BLUE_TOP;
/*
- * The following flags is used later to adjust the y and x scales
+ * The following flag is used later to adjust the y and x scales
* in order to optimize the pixel grid alignment of the top of small
* letters.
*/
@@ -393,6 +398,52 @@
}
+ FT_LOCAL_DEF( void )
+ af_latin_metrics_check_digits( AF_LatinMetrics metrics,
+ FT_Face face )
+ {
+ FT_UInt i;
+ FT_Bool started = 0, same_width = 1;
+ FT_Fixed advance, old_advance = 0;
+
+
+ /* check whether all ASCII digits have the same advance width; */
+ /* digit `0' is 0x30 in all supported charmaps */
+ for ( i = 0x30; i <= 0x39; i++ )
+ {
+ FT_UInt glyph_index;
+
+
+ glyph_index = FT_Get_Char_Index( face, i );
+ if ( glyph_index == 0 )
+ continue;
+
+ if ( FT_Get_Advance( face, glyph_index,
+ FT_LOAD_NO_SCALE |
+ FT_LOAD_NO_HINTING |
+ FT_LOAD_IGNORE_TRANSFORM,
+ &advance ) )
+ continue;
+
+ if ( started )
+ {
+ if ( advance != old_advance )
+ {
+ same_width = 0;
+ break;
+ }
+ }
+ else
+ {
+ old_advance = advance;
+ started = 1;
+ }
+ }
+
+ metrics->root.digits_have_same_width = same_width;
+ }
+
+
FT_LOCAL_DEF( FT_Error )
af_latin_metrics_init( AF_LatinMetrics metrics,
FT_Face face )
@@ -426,6 +477,7 @@
/* For now, compute the standard width and height from the `o'. */
af_latin_metrics_init_widths( metrics, face, 'o' );
af_latin_metrics_init_blues( metrics, face );
+ af_latin_metrics_check_digits( metrics, face );
}
FT_Set_Charmap( face, oldmap );
@@ -1567,7 +1619,7 @@
/* not hinted, appear a lot bolder or thinner than the */
/* vertical stems. */
- FT_Int delta;
+ FT_Pos delta;
dist = ( dist + 22 ) & ~63;
@@ -1651,7 +1703,7 @@
AF_AxisHints axis = &hints->axis[dim];
AF_Edge edges = axis->edges;
AF_Edge edge_limit = edges + axis->num_edges;
- FT_Int n_edges;
+ FT_PtrDist n_edges;
AF_Edge edge;
AF_Edge anchor = 0;
FT_Int has_serifs = 0;
@@ -2127,39 +2179,37 @@
static const AF_Script_UniRangeRec af_latin_uniranges[] =
{
- { 0x0020 , 0x007F }, /* Basic Latin (no control chars) */
- { 0x00A0 , 0x00FF }, /* Latin-1 Supplement (no control chars) */
- { 0x0100 , 0x017F }, /* Latin Extended-A */
- { 0x0180 , 0x024F }, /* Latin Extended-B */
- { 0x0250 , 0x02AF }, /* IPA Extensions */
- { 0x02B0 , 0x02FF }, /* Spacing Modifier Letters */
- { 0x0300 , 0x036F }, /* Combining Diacritical Marks */
- { 0x0370 , 0x03FF }, /* Greek and Coptic */
- { 0x0400 , 0x04FF }, /* Cyrillic */
- { 0x0500 , 0x052F }, /* Cyrillic Supplement */
- { 0x1D00 , 0x1D7F }, /* Phonetic Extensions */
- { 0x1D80 , 0x1DBF }, /* Phonetic Extensions Supplement */
- { 0x1DC0 , 0x1DFF }, /* Combining Diacritical Marks Supplement */
- { 0x1E00 , 0x1EFF }, /* Latin Extended Additional */
- { 0x1F00 , 0x1FFF }, /* Greek Extended */
- { 0x2000 , 0x206F }, /* General Punctuation */
- { 0x2070 , 0x209F }, /* Superscripts and Subscripts */
- { 0x20A0 , 0x20CF }, /* Currency Symbols */
- { 0x2150 , 0x218F }, /* Number Forms */
- { 0x2460 , 0x24FF }, /* Enclosed Alphanumerics */
- { 0x2C60 , 0x2C7F }, /* Latin Extended-C */
- { 0x2DE0 , 0x2DFF }, /* Cyrillic Extended-A */
- { 0xA640U , 0xA69FU }, /* Cyrillic Extended-B */
- { 0xA720U , 0xA7FFU }, /* Latin Extended-D */
- { 0xFB00U , 0xFB06U }, /* Alphab. Present. Forms (Latin Ligs) */
- { 0x1D400UL, 0x1D7FFUL }, /* Mathematical Alphanumeric Symbols */
- { 0 , 0 }
+ AF_UNIRANGE_REC( 0x0020UL, 0x007FUL ), /* Basic Latin (no control chars) */
+ AF_UNIRANGE_REC( 0x00A0UL, 0x00FFUL ), /* Latin-1 Supplement (no control chars) */
+ AF_UNIRANGE_REC( 0x0100UL, 0x017FUL ), /* Latin Extended-A */
+ AF_UNIRANGE_REC( 0x0180UL, 0x024FUL ), /* Latin Extended-B */
+ AF_UNIRANGE_REC( 0x0250UL, 0x02AFUL ), /* IPA Extensions */
+ AF_UNIRANGE_REC( 0x02B0UL, 0x02FFUL ), /* Spacing Modifier Letters */
+ AF_UNIRANGE_REC( 0x0300UL, 0x036FUL ), /* Combining Diacritical Marks */
+ AF_UNIRANGE_REC( 0x0370UL, 0x03FFUL ), /* Greek and Coptic */
+ AF_UNIRANGE_REC( 0x0400UL, 0x04FFUL ), /* Cyrillic */
+ AF_UNIRANGE_REC( 0x0500UL, 0x052FUL ), /* Cyrillic Supplement */
+ AF_UNIRANGE_REC( 0x1D00UL, 0x1D7FUL ), /* Phonetic Extensions */
+ AF_UNIRANGE_REC( 0x1D80UL, 0x1DBFUL ), /* Phonetic Extensions Supplement */
+ AF_UNIRANGE_REC( 0x1DC0UL, 0x1DFFUL ), /* Combining Diacritical Marks Supplement */
+ AF_UNIRANGE_REC( 0x1E00UL, 0x1EFFUL ), /* Latin Extended Additional */
+ AF_UNIRANGE_REC( 0x1F00UL, 0x1FFFUL ), /* Greek Extended */
+ AF_UNIRANGE_REC( 0x2000UL, 0x206FUL ), /* General Punctuation */
+ AF_UNIRANGE_REC( 0x2070UL, 0x209FUL ), /* Superscripts and Subscripts */
+ AF_UNIRANGE_REC( 0x20A0UL, 0x20CFUL ), /* Currency Symbols */
+ AF_UNIRANGE_REC( 0x2150UL, 0x218FUL ), /* Number Forms */
+ AF_UNIRANGE_REC( 0x2460UL, 0x24FFUL ), /* Enclosed Alphanumerics */
+ AF_UNIRANGE_REC( 0x2C60UL, 0x2C7FUL ), /* Latin Extended-C */
+ AF_UNIRANGE_REC( 0x2DE0UL, 0x2DFFUL ), /* Cyrillic Extended-A */
+ AF_UNIRANGE_REC( 0xA640UL, 0xA69FUL ), /* Cyrillic Extended-B */
+ AF_UNIRANGE_REC( 0xA720UL, 0xA7FFUL ), /* Latin Extended-D */
+ AF_UNIRANGE_REC( 0xFB00UL, 0xFB06UL ), /* Alphab. Present. Forms (Latin Ligs) */
+ AF_UNIRANGE_REC( 0x1D400UL, 0x1D7FFUL ), /* Mathematical Alphanumeric Symbols */
+ AF_UNIRANGE_REC( 0UL, 0UL )
};
- FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
- af_latin_script_class =
- {
+ AF_DEFINE_SCRIPT_CLASS(af_latin_script_class,
AF_SCRIPT_LATIN,
af_latin_uniranges,
@@ -2171,7 +2221,7 @@
(AF_Script_InitHintsFunc) af_latin_hints_init,
(AF_Script_ApplyHintsFunc) af_latin_hints_apply
- };
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/autofit/aflatin.h b/src/3rdparty/freetype/src/autofit/aflatin.h
index 3251d3783f..660b10c83f 100644
--- a/src/3rdparty/freetype/src/autofit/aflatin.h
+++ b/src/3rdparty/freetype/src/autofit/aflatin.h
@@ -4,7 +4,7 @@
/* */
/* Auto-fitter hinting routines for latin script (specification). */
/* */
-/* Copyright 2003, 2004, 2005, 2006, 2007 by */
+/* Copyright 2003, 2004, 2005, 2006, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -27,8 +27,7 @@ FT_BEGIN_HEADER
/* the latin-specific script class */
- FT_CALLBACK_TABLE const AF_ScriptClassRec
- af_latin_script_class;
+ AF_DECLARE_SCRIPT_CLASS(af_latin_script_class)
/* constants are given with units_per_em == 2048 in mind */
@@ -138,6 +137,10 @@ FT_BEGIN_HEADER
FT_Face face,
FT_ULong charcode );
+ FT_LOCAL( void )
+ af_latin_metrics_check_digits( AF_LatinMetrics metrics,
+ FT_Face face );
+
/*************************************************************************/
/*************************************************************************/
diff --git a/src/3rdparty/freetype/src/autofit/aflatin2.c b/src/3rdparty/freetype/src/autofit/aflatin2.c
index 14327b172b..5cbeb296b5 100644
--- a/src/3rdparty/freetype/src/autofit/aflatin2.c
+++ b/src/3rdparty/freetype/src/autofit/aflatin2.c
@@ -4,7 +4,7 @@
/* */
/* Auto-fitter hinting routines for latin script (body). */
/* */
-/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -16,6 +16,8 @@
/***************************************************************************/
+#include FT_ADVANCES_H
+
#include "aflatin.h"
#include "aflatin2.h"
#include "aferrors.h"
@@ -154,7 +156,7 @@
#define AF_LATIN_MAX_TEST_CHARACTERS 12
- static const char* const af_latin2_blue_chars[AF_LATIN_MAX_BLUES] =
+ static const char af_latin2_blue_chars[AF_LATIN_MAX_BLUES][AF_LATIN_MAX_TEST_CHARACTERS+1] =
{
"THEZOCQS",
"HEZLOCUS",
@@ -336,7 +338,7 @@
* we couldn't find a single glyph to compute this blue zone,
* we will simply ignore it then
*/
- AF_LOG(( "empty!\n" ));
+ AF_LOG(( "empty\n" ));
continue;
}
@@ -401,6 +403,52 @@
}
+ FT_LOCAL_DEF( void )
+ af_latin2_metrics_check_digits( AF_LatinMetrics metrics,
+ FT_Face face )
+ {
+ FT_UInt i;
+ FT_Bool started = 0, same_width = 1;
+ FT_Fixed advance, old_advance = 0;
+
+
+ /* check whether all ASCII digits have the same advance width; */
+ /* digit `0' is 0x30 in all supported charmaps */
+ for ( i = 0x30; i <= 0x39; i++ )
+ {
+ FT_UInt glyph_index;
+
+
+ glyph_index = FT_Get_Char_Index( face, i );
+ if ( glyph_index == 0 )
+ continue;
+
+ if ( FT_Get_Advance( face, glyph_index,
+ FT_LOAD_NO_SCALE |
+ FT_LOAD_NO_HINTING |
+ FT_LOAD_IGNORE_TRANSFORM,
+ &advance ) )
+ continue;
+
+ if ( started )
+ {
+ if ( advance != old_advance )
+ {
+ same_width = 0;
+ break;
+ }
+ }
+ else
+ {
+ old_advance = advance;
+ started = 1;
+ }
+ }
+
+ metrics->root.digits_have_same_width = same_width;
+ }
+
+
FT_LOCAL_DEF( FT_Error )
af_latin2_metrics_init( AF_LatinMetrics metrics,
FT_Face face )
@@ -434,6 +482,7 @@
/* For now, compute the standard width and height from the `o'. */
af_latin2_metrics_init_widths( metrics, face, 'o' );
af_latin2_metrics_init_blues( metrics, face );
+ af_latin2_metrics_check_digits( metrics, face );
}
FT_Set_Charmap( face, oldmap );
@@ -1739,7 +1788,6 @@
AF_AxisHints axis = &hints->axis[dim];
AF_Edge edges = axis->edges;
AF_Edge edge_limit = edges + axis->num_edges;
- FT_Int n_edges;
AF_Edge edge;
AF_Edge anchor = 0;
FT_Int has_serifs = 0;
@@ -2050,54 +2098,60 @@
/* We don't handle horizontal edges since we can't easily assure that */
/* the third (lowest) stem aligns with the base line; it might end up */
/* one pixel higher or lower. */
+
#if 0
- n_edges = edge_limit - edges;
- if ( dim == AF_DIMENSION_HORZ && ( n_edges == 6 || n_edges == 12 ) )
{
- AF_Edge edge1, edge2, edge3;
- FT_Pos dist1, dist2, span, delta;
+ FT_Int n_edges = edge_limit - edges;
- if ( n_edges == 6 )
- {
- edge1 = edges;
- edge2 = edges + 2;
- edge3 = edges + 4;
- }
- else
+ if ( dim == AF_DIMENSION_HORZ && ( n_edges == 6 || n_edges == 12 ) )
{
- edge1 = edges + 1;
- edge2 = edges + 5;
- edge3 = edges + 9;
- }
+ AF_Edge edge1, edge2, edge3;
+ FT_Pos dist1, dist2, span, delta;
- dist1 = edge2->opos - edge1->opos;
- dist2 = edge3->opos - edge2->opos;
- span = dist1 - dist2;
- if ( span < 0 )
- span = -span;
+ if ( n_edges == 6 )
+ {
+ edge1 = edges;
+ edge2 = edges + 2;
+ edge3 = edges + 4;
+ }
+ else
+ {
+ edge1 = edges + 1;
+ edge2 = edges + 5;
+ edge3 = edges + 9;
+ }
- if ( span < 8 )
- {
- delta = edge3->pos - ( 2 * edge2->pos - edge1->pos );
- edge3->pos -= delta;
- if ( edge3->link )
- edge3->link->pos -= delta;
+ dist1 = edge2->opos - edge1->opos;
+ dist2 = edge3->opos - edge2->opos;
+
+ span = dist1 - dist2;
+ if ( span < 0 )
+ span = -span;
- /* move the serifs along with the stem */
- if ( n_edges == 12 )
+ if ( span < 8 )
{
- ( edges + 8 )->pos -= delta;
- ( edges + 11 )->pos -= delta;
- }
+ delta = edge3->pos - ( 2 * edge2->pos - edge1->pos );
+ edge3->pos -= delta;
+ if ( edge3->link )
+ edge3->link->pos -= delta;
- edge3->flags |= AF_EDGE_DONE;
- if ( edge3->link )
- edge3->link->flags |= AF_EDGE_DONE;
+ /* move the serifs along with the stem */
+ if ( n_edges == 12 )
+ {
+ ( edges + 8 )->pos -= delta;
+ ( edges + 11 )->pos -= delta;
+ }
+
+ edge3->flags |= AF_EDGE_DONE;
+ if ( edge3->link )
+ edge3->link->flags |= AF_EDGE_DONE;
+ }
}
}
#endif
+
if ( has_serifs || !anchor )
{
/*
@@ -2266,15 +2320,13 @@
static const AF_Script_UniRangeRec af_latin2_uniranges[] =
{
- { 32, 127 }, /* XXX: TODO: Add new Unicode ranges here! */
- { 160, 255 },
- { 0, 0 }
+ AF_UNIRANGE_REC( 32UL, 127UL ), /* XXX: TODO: Add new Unicode ranges here! */
+ AF_UNIRANGE_REC( 160UL, 255UL ),
+ AF_UNIRANGE_REC( 0UL, 0UL )
};
- FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec
- af_latin2_script_class =
- {
+ AF_DEFINE_SCRIPT_CLASS(af_latin2_script_class,
AF_SCRIPT_LATIN2,
af_latin2_uniranges,
@@ -2286,7 +2338,7 @@
(AF_Script_InitHintsFunc) af_latin2_hints_init,
(AF_Script_ApplyHintsFunc) af_latin2_hints_apply
- };
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/autofit/aflatin2.h b/src/3rdparty/freetype/src/autofit/aflatin2.h
index 34eda05822..925c6214db 100644
--- a/src/3rdparty/freetype/src/autofit/aflatin2.h
+++ b/src/3rdparty/freetype/src/autofit/aflatin2.h
@@ -27,8 +27,7 @@ FT_BEGIN_HEADER
/* the latin-specific script class */
- FT_CALLBACK_TABLE const AF_ScriptClassRec
- af_latin2_script_class;
+ AF_DECLARE_SCRIPT_CLASS(af_latin2_script_class)
/* */
diff --git a/src/3rdparty/freetype/src/autofit/afloader.c b/src/3rdparty/freetype/src/autofit/afloader.c
index 4e48c2fe97..6dd9f2a314 100644
--- a/src/3rdparty/freetype/src/autofit/afloader.c
+++ b/src/3rdparty/freetype/src/autofit/afloader.c
@@ -4,7 +4,7 @@
/* */
/* Auto-fitter glyph loading routines (body). */
/* */
-/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -19,7 +19,6 @@
#include "afloader.h"
#include "afhints.h"
#include "afglobal.h"
-#include "aflatin.h"
#include "aferrors.h"
@@ -184,9 +183,9 @@
if ( axis->num_edges > 1 && AF_HINTS_DO_ADVANCE( hints ) )
{
- old_rsb = loader->pp2.x - edge2->opos;
- old_lsb = edge1->opos;
- new_lsb = edge1->pos;
+ old_rsb = loader->pp2.x - edge2->opos;
+ old_lsb = edge1->opos;
+ new_lsb = edge1->pos;
/* remember unhinted values to later account */
/* for rounding errors */
@@ -217,8 +216,9 @@
}
else
{
- FT_Pos pp1x = loader->pp1.x;
- FT_Pos pp2x = loader->pp2.x;
+ FT_Pos pp1x = loader->pp1.x;
+ FT_Pos pp2x = loader->pp2.x;
+
loader->pp1.x = FT_PIX_ROUND( pp1x );
loader->pp2.x = FT_PIX_ROUND( pp2x );
@@ -229,8 +229,9 @@
}
else
{
- FT_Pos pp1x = loader->pp1.x;
- FT_Pos pp2x = loader->pp2.x;
+ FT_Pos pp1x = loader->pp1.x;
+ FT_Pos pp2x = loader->pp2.x;
+
loader->pp1.x = FT_PIX_ROUND( pp1x + hints->xmin_delta );
loader->pp2.x = FT_PIX_ROUND( pp2x + hints->xmax_delta );
@@ -413,7 +414,8 @@
slot->metrics.vertBearingY = FT_PIX_FLOOR( bbox.yMax + vvector.y );
/* for mono-width fonts (like Andale, Courier, etc.) we need */
- /* to keep the original rounded advance width */
+ /* to keep the original rounded advance width; ditto for */
+ /* digits if all have the same advance width */
#if 0
if ( !FT_IS_FIXED_WIDTH( slot->face ) )
slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
@@ -421,13 +423,9 @@
slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance,
x_scale );
#else
- if ( !FT_IS_FIXED_WIDTH( slot->face ) )
- {
- /* non-spacing glyphs must stay as-is */
- if ( slot->metrics.horiAdvance )
- slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
- }
- else
+ if ( FT_IS_FIXED_WIDTH( slot->face ) ||
+ ( af_face_globals_is_digit( loader->globals, glyph_index ) &&
+ metrics->digits_have_same_width ) )
{
slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance,
metrics->scaler.x_scale );
@@ -437,6 +435,12 @@
slot->lsb_delta = 0;
slot->rsb_delta = 0;
}
+ else
+ {
+ /* non-spacing glyphs must stay as-is */
+ if ( slot->metrics.horiAdvance )
+ slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
+ }
#endif
slot->metrics.vertAdvance = FT_MulFix( slot->metrics.vertAdvance,
diff --git a/src/3rdparty/freetype/src/autofit/afmodule.c b/src/3rdparty/freetype/src/autofit/afmodule.c
index cd5e1cc218..ec2d707c9f 100644
--- a/src/3rdparty/freetype/src/autofit/afmodule.c
+++ b/src/3rdparty/freetype/src/autofit/afmodule.c
@@ -18,6 +18,7 @@
#include "afmodule.h"
#include "afloader.h"
+#include "afpic.h"
#ifdef AF_DEBUG
int _af_debug;
@@ -66,19 +67,15 @@
}
- FT_CALLBACK_TABLE_DEF
- const FT_AutoHinter_ServiceRec af_autofitter_service =
- {
+ FT_DEFINE_AUTOHINTER_SERVICE(af_autofitter_service,
NULL,
NULL,
NULL,
(FT_AutoHinter_GlyphLoadFunc)af_autofitter_load_glyph
- };
+ )
+ FT_DEFINE_MODULE(autofit_module_class,
- FT_CALLBACK_TABLE_DEF
- const FT_Module_Class autofit_module_class =
- {
FT_MODULE_HINTER,
sizeof ( FT_AutofitterRec ),
@@ -86,12 +83,12 @@
0x10000L, /* version 1.0 of the autofitter */
0x20000L, /* requires FreeType 2.0 or above */
- (const void*)&af_autofitter_service,
+ (const void*)&AF_AF_AUTOFITTER_SERVICE_GET,
(FT_Module_Constructor)af_autofitter_init,
(FT_Module_Destructor) af_autofitter_done,
(FT_Module_Requester) NULL
- };
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/autofit/afmodule.h b/src/3rdparty/freetype/src/autofit/afmodule.h
index 36268a0890..d9792399b6 100644
--- a/src/3rdparty/freetype/src/autofit/afmodule.h
+++ b/src/3rdparty/freetype/src/autofit/afmodule.h
@@ -20,13 +20,13 @@
#define __AFMODULE_H__
#include <ft2build.h>
+#include FT_INTERNAL_OBJECTS_H
#include FT_MODULE_H
FT_BEGIN_HEADER
- FT_CALLBACK_TABLE
- const FT_Module_Class autofit_module_class;
+FT_DECLARE_MODULE(autofit_module_class)
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/autofit/afpic.c b/src/3rdparty/freetype/src/autofit/afpic.c
new file mode 100644
index 0000000000..76822c301a
--- /dev/null
+++ b/src/3rdparty/freetype/src/autofit/afpic.c
@@ -0,0 +1,92 @@
+/***************************************************************************/
+/* */
+/* afpic.c */
+/* */
+/* The FreeType position independent code services for autofit module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "afpic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from afmodule.c */
+ void FT_Init_Class_af_autofitter_service( FT_Library, FT_AutoHinter_ServiceRec*);
+
+ /* forward declaration of PIC init functions from script classes */
+#include "aflatin.h"
+#include "aflatin2.h"
+#include "afcjk.h"
+#include "afdummy.h"
+#include "afindic.h"
+
+ void
+ autofit_module_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->autofit )
+ {
+ FT_FREE( pic_container->autofit );
+ pic_container->autofit = NULL;
+ }
+ }
+
+ FT_Error
+ autofit_module_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_UInt ss;
+ FT_Error error = FT_Err_Ok;
+ AFModulePIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->autofit = container;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ for ( ss = 0 ; ss < AF_SCRIPT_CLASSES_REC_COUNT ; ss++ )
+ {
+ container->af_script_classes[ss] = &container->af_script_classes_rec[ss];
+ }
+ container->af_script_classes[AF_SCRIPT_CLASSES_COUNT-1] = NULL;
+
+ /* add call to initialization function when you add new scripts */
+ ss = 0;
+ FT_Init_Class_af_dummy_script_class(&container->af_script_classes_rec[ss++]);
+#ifdef FT_OPTION_AUTOFIT2
+ FT_Init_Class_af_latin2_script_class(&container->af_script_classes_rec[ss++]);
+#endif
+ FT_Init_Class_af_latin_script_class(&container->af_script_classes_rec[ss++]);
+ FT_Init_Class_af_cjk_script_class(&container->af_script_classes_rec[ss++]);
+ FT_Init_Class_af_indic_script_class(&container->af_script_classes_rec[ss++]);
+
+ FT_Init_Class_af_autofitter_service(library, &container->af_autofitter_service);
+
+/*Exit:*/
+ if(error)
+ autofit_module_class_pic_free(library);
+ return error;
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/autofit/afpic.h b/src/3rdparty/freetype/src/autofit/afpic.h
new file mode 100644
index 0000000000..80e62d39a9
--- /dev/null
+++ b/src/3rdparty/freetype/src/autofit/afpic.h
@@ -0,0 +1,64 @@
+/***************************************************************************/
+/* */
+/* afpic.h */
+/* */
+/* The FreeType position independent code services for autofit module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __AFPIC_H__
+#define __AFPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define AF_SCRIPT_CLASSES_GET af_script_classes
+#define AF_AF_AUTOFITTER_SERVICE_GET af_autofitter_service
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#include "aftypes.h"
+
+/* increase these when you add new scripts, and update autofit_module_class_pic_init */
+#ifdef FT_OPTION_AUTOFIT2
+ #define AF_SCRIPT_CLASSES_COUNT 6
+#else
+ #define AF_SCRIPT_CLASSES_COUNT 5
+#endif
+#define AF_SCRIPT_CLASSES_REC_COUNT (AF_SCRIPT_CLASSES_COUNT-1)
+
+ typedef struct AFModulePIC_
+ {
+ AF_ScriptClass af_script_classes[AF_SCRIPT_CLASSES_COUNT];
+ AF_ScriptClassRec af_script_classes_rec[AF_SCRIPT_CLASSES_REC_COUNT];
+ FT_AutoHinter_ServiceRec af_autofitter_service;
+ } AFModulePIC;
+
+#define GET_PIC(lib) ((AFModulePIC*)((lib)->pic_container.autofit))
+#define AF_SCRIPT_CLASSES_GET (GET_PIC(FT_FACE_LIBRARY(globals->face))->af_script_classes)
+#define AF_AF_AUTOFITTER_SERVICE_GET (GET_PIC(library)->af_autofitter_service)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __AFPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/autofit/aftypes.h b/src/3rdparty/freetype/src/autofit/aftypes.h
index 626a38865e..5574f0c302 100644
--- a/src/3rdparty/freetype/src/autofit/aftypes.h
+++ b/src/3rdparty/freetype/src/autofit/aftypes.h
@@ -285,6 +285,7 @@ extern void* _af_debug_hints;
{
AF_ScriptClass clazz;
AF_ScalerRec scaler;
+ FT_Bool digits_have_same_width;
} AF_ScriptMetricsRec, *AF_ScriptMetrics;
@@ -321,6 +322,8 @@ extern void* _af_debug_hints;
} AF_Script_UniRangeRec;
+#define AF_UNIRANGE_REC( a, b ) { (FT_UInt32)(a), (FT_UInt32)(b) }
+
typedef const AF_Script_UniRangeRec *AF_Script_UniRange;
@@ -329,7 +332,7 @@ extern void* _af_debug_hints;
AF_Script script;
AF_Script_UniRange script_uni_ranges; /* last must be { 0, 0 } */
- FT_UInt script_metrics_size;
+ FT_Offset script_metrics_size;
AF_Script_InitMetricsFunc script_metrics_init;
AF_Script_ScaleMetricsFunc script_metrics_scale;
AF_Script_DoneMetricsFunc script_metrics_done;
@@ -339,6 +342,56 @@ extern void* _af_debug_hints;
} AF_ScriptClassRec;
+/* Declare and define vtables for classes */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define AF_DECLARE_SCRIPT_CLASS(script_class) \
+ FT_CALLBACK_TABLE const AF_ScriptClassRec \
+ script_class;
+
+#define AF_DEFINE_SCRIPT_CLASS(script_class, script_, ranges, m_size, \
+ m_init, m_scale, m_done, h_init, h_apply) \
+ FT_CALLBACK_TABLE_DEF const AF_ScriptClassRec \
+ script_class = \
+ { \
+ script_, \
+ ranges, \
+ \
+ m_size, \
+ \
+ m_init, \
+ m_scale, \
+ m_done, \
+ \
+ h_init, \
+ h_apply \
+ };
+
+#else
+
+#define AF_DECLARE_SCRIPT_CLASS(script_class) \
+ FT_LOCAL(void) \
+ FT_Init_Class_##script_class(AF_ScriptClassRec* ac);
+
+#define AF_DEFINE_SCRIPT_CLASS(script_class, script_, ranges, m_size, \
+ m_init, m_scale, m_done, h_init, h_apply) \
+ FT_LOCAL_DEF(void) \
+ FT_Init_Class_##script_class(AF_ScriptClassRec* ac) \
+ { \
+ ac->script = script_; \
+ ac->script_uni_ranges = ranges; \
+ \
+ ac->script_metrics_size = m_size; \
+ \
+ ac->script_metrics_init = m_init; \
+ ac->script_metrics_scale = m_scale; \
+ ac->script_metrics_done = m_done; \
+ \
+ ac->script_hints_init = h_init; \
+ ac->script_hints_apply = h_apply; \
+ }
+#endif
+
/* */
diff --git a/src/3rdparty/freetype/src/autofit/autofit.c b/src/3rdparty/freetype/src/autofit/autofit.c
index 2fe66a990e..83b613e79b 100644
--- a/src/3rdparty/freetype/src/autofit/autofit.c
+++ b/src/3rdparty/freetype/src/autofit/autofit.c
@@ -18,6 +18,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "afpic.c"
#include "afangles.c"
#include "afglobal.c"
#include "afhints.c"
diff --git a/src/3rdparty/freetype/src/base/Jamfile b/src/3rdparty/freetype/src/base/Jamfile
index aba60fbe0c..832e8b8424 100644
--- a/src/3rdparty/freetype/src/base/Jamfile
+++ b/src/3rdparty/freetype/src/base/Jamfile
@@ -18,8 +18,9 @@ SubDir FT2_TOP $(FT2_SRC_DIR) base ;
if $(FT2_MULTI)
{
_sources = ftadvanc ftcalc ftdbgmem ftgloadr
- ftnames ftobjs ftoutln ftrfork
+ ftobjs ftoutln ftrfork ftsnames
ftstream fttrigon ftutil
+ basepic ftpic
;
}
else
diff --git a/src/3rdparty/freetype/src/base/basepic.c b/src/3rdparty/freetype/src/base/basepic.c
new file mode 100644
index 0000000000..c0bccb6959
--- /dev/null
+++ b/src/3rdparty/freetype/src/base/basepic.c
@@ -0,0 +1,83 @@
+/***************************************************************************/
+/* */
+/* basepic.c */
+/* */
+/* The FreeType position independent code services for base. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "basepic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from ftglyph.c */
+ void FT_Init_Class_ft_outline_glyph_class(FT_Glyph_Class*);
+ void FT_Init_Class_ft_bitmap_glyph_class(FT_Glyph_Class*);
+
+ /* forward declaration of PIC init functions from ftinit.c */
+ FT_Error ft_create_default_module_classes(FT_Library);
+ void ft_destroy_default_module_classes(FT_Library);
+
+ void
+ ft_base_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->base )
+ {
+ /* Destroy default module classes (in case FT_Add_Default_Modules was used) */
+ ft_destroy_default_module_classes( library );
+
+ FT_FREE( pic_container->base );
+ pic_container->base = NULL;
+ }
+ }
+
+
+ FT_Error
+ ft_base_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ BasePIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->base = container;
+
+ /* initialize default modules list and pointers */
+ error = ft_create_default_module_classes( library );
+ if ( error )
+ goto Exit;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ FT_Init_Class_ft_outline_glyph_class(&container->ft_outline_glyph_class);
+ FT_Init_Class_ft_bitmap_glyph_class(&container->ft_bitmap_glyph_class);
+
+Exit:
+ if(error)
+ ft_base_pic_free(library);
+ return error;
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/base/basepic.h b/src/3rdparty/freetype/src/base/basepic.h
new file mode 100644
index 0000000000..bb17745769
--- /dev/null
+++ b/src/3rdparty/freetype/src/base/basepic.h
@@ -0,0 +1,62 @@
+/***************************************************************************/
+/* */
+/* basepic.h */
+/* */
+/* The FreeType position independent code services for base. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __BASEPIC_H__
+#define __BASEPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+#define FT_OUTLINE_GLYPH_CLASS_GET &ft_outline_glyph_class
+#define FT_BITMAP_GLYPH_CLASS_GET &ft_bitmap_glyph_class
+#define FT_DEFAULT_MODULES_GET ft_default_modules
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#include FT_GLYPH_H
+
+ typedef struct BasePIC_
+ {
+ FT_Module_Class** default_module_classes;
+ FT_Glyph_Class ft_outline_glyph_class;
+ FT_Glyph_Class ft_bitmap_glyph_class;
+ } BasePIC;
+
+#define GET_PIC(lib) ((BasePIC*)((lib)->pic_container.base))
+#define FT_OUTLINE_GLYPH_CLASS_GET (&GET_PIC(library)->ft_outline_glyph_class)
+#define FT_BITMAP_GLYPH_CLASS_GET (&GET_PIC(library)->ft_bitmap_glyph_class)
+#define FT_DEFAULT_MODULES_GET (GET_PIC(library)->default_module_classes)
+
+ void
+ ft_base_pic_free( FT_Library library );
+
+ FT_Error
+ ft_base_pic_init( FT_Library library );
+
+#endif /* FT_CONFIG_OPTION_PIC */
+ /* */
+
+FT_END_HEADER
+
+#endif /* __BASEPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/base/ftadvanc.c b/src/3rdparty/freetype/src/base/ftadvanc.c
index 504f9d2309..8ab7fcb927 100644
--- a/src/3rdparty/freetype/src/base/ftadvanc.c
+++ b/src/3rdparty/freetype/src/base/ftadvanc.c
@@ -140,7 +140,7 @@
if ( flags & FT_ADVANCE_FLAG_FAST_ONLY )
return FT_Err_Unimplemented_Feature;
- flags |= FT_LOAD_ADVANCE_ONLY;
+ flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY;
for ( nn = 0; nn < count; nn++ )
{
error = FT_Load_Glyph( face, start + nn, flags );
diff --git a/src/3rdparty/freetype/src/base/ftbase.c b/src/3rdparty/freetype/src/base/ftbase.c
index d1fe6e6088..6a27ea95a6 100644
--- a/src/3rdparty/freetype/src/base/ftbase.c
+++ b/src/3rdparty/freetype/src/base/ftbase.c
@@ -4,7 +4,7 @@
/* */
/* Single object library component (body only). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -20,14 +20,16 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
+#include "ftpic.c"
+#include "basepic.c"
#include "ftadvanc.c"
#include "ftcalc.c"
#include "ftdbgmem.c"
#include "ftgloadr.c"
-#include "ftnames.c"
#include "ftobjs.c"
#include "ftoutln.c"
#include "ftrfork.c"
+#include "ftsnames.c"
#include "ftstream.c"
#include "fttrigon.c"
#include "ftutil.c"
diff --git a/src/3rdparty/freetype/src/base/ftbase.h b/src/3rdparty/freetype/src/base/ftbase.h
index 9cae85da9e..1dc49f3bdf 100644
--- a/src/3rdparty/freetype/src/base/ftbase.h
+++ b/src/3rdparty/freetype/src/base/ftbase.h
@@ -4,7 +4,7 @@
/* */
/* The FreeType private functions used in base module (specification). */
/* */
-/* Copyright 2008 by */
+/* Copyright 2008, 2010 by */
/* David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -29,7 +29,7 @@ FT_BEGIN_HEADER
/* Assume the stream is sfnt-wrapped PS Type1 or sfnt-wrapped CID-keyed */
/* font, and try to load a face specified by the face_index. */
- FT_LOCAL_DEF( FT_Error )
+ FT_LOCAL( FT_Error )
open_face_PS_from_sfnt_stream( FT_Library library,
FT_Stream stream,
FT_Long face_index,
@@ -40,7 +40,7 @@ FT_BEGIN_HEADER
/* Create a new FT_Face given a buffer and a driver name. */
/* From ftmac.c. */
- FT_LOCAL_DEF( FT_Error )
+ FT_LOCAL( FT_Error )
open_face_from_buffer( FT_Library library,
FT_Byte* base,
FT_ULong size,
diff --git a/src/3rdparty/freetype/src/base/ftbbox.c b/src/3rdparty/freetype/src/base/ftbbox.c
index 532ab13579..4b8e9112fe 100644
--- a/src/3rdparty/freetype/src/base/ftbbox.c
+++ b/src/3rdparty/freetype/src/base/ftbbox.c
@@ -4,7 +4,7 @@
/* */
/* FreeType bbox computation (body). */
/* */
-/* Copyright 1996-2001, 2002, 2004, 2006 by */
+/* Copyright 1996-2001, 2002, 2004, 2006, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used */
@@ -29,6 +29,7 @@
#include FT_IMAGE_H
#include FT_OUTLINE_H
#include FT_INTERNAL_CALC_H
+#include FT_INTERNAL_OBJECTS_H
typedef struct TBBox_Rec_
@@ -139,7 +140,7 @@
/* */
/* <Description> */
/* This function is used as a `conic_to' emitter during */
- /* FT_Raster_Decompose(). It checks a conic Bezier curve with the */
+ /* FT_Outline_Decompose(). It checks a conic Bezier curve with the */
/* current bounding box, and computes its extrema if necessary to */
/* update it. */
/* */
@@ -506,7 +507,7 @@
/* */
/* <Description> */
/* This function is used as a `cubic_to' emitter during */
- /* FT_Raster_Decompose(). It checks a cubic Bezier curve with the */
+ /* FT_Outline_Decompose(). It checks a cubic Bezier curve with the */
/* current bounding box, and computes its extrema if necessary to */
/* update it. */
/* */
@@ -559,6 +560,13 @@
return 0;
}
+FT_DEFINE_OUTLINE_FUNCS(bbox_interface,
+ (FT_Outline_MoveTo_Func) BBox_Move_To,
+ (FT_Outline_LineTo_Func) BBox_Move_To,
+ (FT_Outline_ConicTo_Func)BBox_Conic_To,
+ (FT_Outline_CubicTo_Func)BBox_Cubic_To,
+ 0, 0
+ )
/* documentation is in ftbbox.h */
@@ -628,18 +636,13 @@
/* the two boxes are different, now walk over the outline to */
/* get the Bezier arc extrema. */
- static const FT_Outline_Funcs bbox_interface =
- {
- (FT_Outline_MoveTo_Func) BBox_Move_To,
- (FT_Outline_LineTo_Func) BBox_Move_To,
- (FT_Outline_ConicTo_Func)BBox_Conic_To,
- (FT_Outline_CubicTo_Func)BBox_Cubic_To,
- 0, 0
- };
-
FT_Error error;
TBBox_Rec user;
+#ifdef FT_CONFIG_OPTION_PIC
+ FT_Outline_Funcs bbox_interface;
+ Init_Class_bbox_interface(&bbox_interface);
+#endif
user.bbox = bbox;
diff --git a/src/3rdparty/freetype/src/base/ftbitmap.c b/src/3rdparty/freetype/src/base/ftbitmap.c
index 8810cfadf3..46fcce6136 100644
--- a/src/3rdparty/freetype/src/base/ftbitmap.c
+++ b/src/3rdparty/freetype/src/base/ftbitmap.c
@@ -228,8 +228,12 @@
if ( !bitmap || !bitmap->buffer )
return FT_Err_Invalid_Argument;
- xstr = FT_PIX_ROUND( xStrength ) >> 6;
- ystr = FT_PIX_ROUND( yStrength ) >> 6;
+ if ( ( ( FT_PIX_ROUND( xStrength ) >> 6 ) > FT_INT_MAX ) ||
+ ( ( FT_PIX_ROUND( yStrength ) >> 6 ) > FT_INT_MAX ) )
+ return FT_Err_Invalid_Argument;
+
+ xstr = (FT_Int)FT_PIX_ROUND( xStrength ) >> 6;
+ ystr = (FT_Int)FT_PIX_ROUND( yStrength ) >> 6;
if ( xstr == 0 && ystr == 0 )
return FT_Err_Ok;
diff --git a/src/3rdparty/freetype/src/base/ftcalc.c b/src/3rdparty/freetype/src/base/ftcalc.c
index 04295a6931..3892fabfe9 100644
--- a/src/3rdparty/freetype/src/base/ftcalc.c
+++ b/src/3rdparty/freetype/src/base/ftcalc.c
@@ -110,12 +110,12 @@
FT_EXPORT_DEF( FT_Int32 )
FT_Sqrt32( FT_Int32 x )
{
- FT_ULong val, root, newroot, mask;
+ FT_UInt32 val, root, newroot, mask;
root = 0;
- mask = 0x40000000L;
- val = (FT_ULong)x;
+ mask = (FT_UInt32)0x40000000UL;
+ val = (FT_UInt32)x;
do
{
@@ -362,6 +362,7 @@
long s;
+ /* XXX: this function does not allow 64-bit arguments */
if ( a == 0 || b == c )
return a;
@@ -377,12 +378,12 @@
FT_Int64 temp, temp2;
- ft_multo64( a, b, &temp );
+ ft_multo64( (FT_Int32)a, (FT_Int32)b, &temp );
temp2.hi = 0;
temp2.lo = (FT_UInt32)(c >> 1);
FT_Add64( &temp, &temp2, &temp );
- a = ft_div64by32( temp.hi, temp.lo, c );
+ a = ft_div64by32( temp.hi, temp.lo, (FT_Int32)c );
}
else
a = 0x7FFFFFFFL;
@@ -416,8 +417,8 @@
FT_Int64 temp;
- ft_multo64( a, b, &temp );
- a = ft_div64by32( temp.hi, temp.lo, c );
+ ft_multo64( (FT_Int32)a, (FT_Int32)b, &temp );
+ a = ft_div64by32( temp.hi, temp.lo, (FT_Int32)c );
}
else
a = 0x7FFFFFFFL;
@@ -539,13 +540,14 @@
FT_UInt32 q;
- s = a; a = FT_ABS( a );
- s ^= b; b = FT_ABS( b );
+ /* XXX: this function does not allow 64-bit arguments */
+ s = (FT_Int32)a; a = FT_ABS( a );
+ s ^= (FT_Int32)b; b = FT_ABS( b );
if ( b == 0 )
{
/* check for division by 0 */
- q = 0x7FFFFFFFL;
+ q = (FT_UInt32)0x7FFFFFFFL;
}
else if ( ( a >> 16 ) == 0 )
{
@@ -562,7 +564,7 @@
temp2.hi = 0;
temp2.lo = (FT_UInt32)( b >> 1 );
FT_Add64( &temp, &temp2, &temp );
- q = ft_div64by32( temp.hi, temp.lo, b );
+ q = ft_div64by32( temp.hi, temp.lo, (FT_Int32)b );
}
return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q );
@@ -840,7 +842,7 @@
FT_Pos out_x,
FT_Pos out_y )
{
- FT_Int result;
+ FT_Long result; /* avoid overflow on 16-bit system */
/* deal with the trivial cases quickly */
@@ -889,8 +891,9 @@
FT_Int64 z1, z2;
- ft_multo64( in_x, out_y, &z1 );
- ft_multo64( in_y, out_x, &z2 );
+ /* XXX: this function does not allow 64-bit arguments */
+ ft_multo64( (FT_Int32)in_x, (FT_Int32)out_y, &z1 );
+ ft_multo64( (FT_Int32)in_y, (FT_Int32)out_x, &z2 );
if ( z1.hi > z2.hi )
result = +1;
@@ -906,7 +909,8 @@
#endif
}
- return result;
+ /* XXX: only the sign of return value, +1/0/-1 must be used */
+ return (FT_Int)result;
}
diff --git a/src/3rdparty/freetype/src/base/ftdbgmem.c b/src/3rdparty/freetype/src/base/ftdbgmem.c
index 8b2a3304f0..160269d192 100644
--- a/src/3rdparty/freetype/src/base/ftdbgmem.c
+++ b/src/3rdparty/freetype/src/base/ftdbgmem.c
@@ -421,7 +421,7 @@
"FreeType: %ld bytes of memory leaked in %ld blocks\n",
leaks, leak_count );
- printf( "FreeType: No memory leaks detected!\n" );
+ printf( "FreeType: no memory leaks detected\n" );
}
}
@@ -989,7 +989,7 @@
#else /* !FT_DEBUG_MEMORY */
/* ANSI C doesn't like empty source files */
- static const FT_Byte _debug_mem_dummy = 0;
+ typedef int _debug_mem_dummy;
#endif /* !FT_DEBUG_MEMORY */
diff --git a/src/3rdparty/freetype/src/base/ftgloadr.c b/src/3rdparty/freetype/src/base/ftgloadr.c
index ab52621ea6..ac0010ddd8 100644
--- a/src/3rdparty/freetype/src/base/ftgloadr.c
+++ b/src/3rdparty/freetype/src/base/ftgloadr.c
@@ -218,6 +218,9 @@
{
new_max = FT_PAD_CEIL( new_max, 8 );
+ if ( new_max > FT_OUTLINE_POINTS_MAX )
+ return FT_Err_Array_Too_Large;
+
if ( FT_RENEW_ARRAY( base->points, old_max, new_max ) ||
FT_RENEW_ARRAY( base->tags, old_max, new_max ) )
goto Exit;
@@ -246,6 +249,10 @@
if ( new_max > old_max )
{
new_max = FT_PAD_CEIL( new_max, 4 );
+
+ if ( new_max > FT_OUTLINE_CONTOURS_MAX )
+ return FT_Err_Array_Too_Large;
+
if ( FT_RENEW_ARRAY( base->contours, old_max, new_max ) )
goto Exit;
diff --git a/src/3rdparty/freetype/src/base/ftglyph.c b/src/3rdparty/freetype/src/base/ftglyph.c
index 4130cb1102..3505d6dde9 100644
--- a/src/3rdparty/freetype/src/base/ftglyph.c
+++ b/src/3rdparty/freetype/src/base/ftglyph.c
@@ -34,6 +34,7 @@
#include FT_BITMAP_H
#include FT_INTERNAL_OBJECTS_H
+#include "basepic.h"
/*************************************************************************/
/* */
@@ -129,9 +130,7 @@
}
- FT_CALLBACK_TABLE_DEF
- const FT_Glyph_Class ft_bitmap_glyph_class =
- {
+ FT_DEFINE_GLYPH(ft_bitmap_glyph_class,
sizeof ( FT_BitmapGlyphRec ),
FT_GLYPH_FORMAT_BITMAP,
@@ -141,7 +140,7 @@
0, /* FT_Glyph_TransformFunc */
ft_bitmap_glyph_bbox,
0 /* FT_Glyph_PrepareFunc */
- };
+ )
/*************************************************************************/
@@ -255,9 +254,7 @@
}
- FT_CALLBACK_TABLE_DEF
- const FT_Glyph_Class ft_outline_glyph_class =
- {
+ FT_DEFINE_GLYPH( ft_outline_glyph_class,
sizeof ( FT_OutlineGlyphRec ),
FT_GLYPH_FORMAT_OUTLINE,
@@ -267,7 +264,7 @@
ft_outline_glyph_transform,
ft_outline_glyph_bbox,
ft_outline_glyph_prepare
- };
+ )
/*************************************************************************/
@@ -373,11 +370,11 @@
/* if it is a bitmap, that's easy :-) */
if ( slot->format == FT_GLYPH_FORMAT_BITMAP )
- clazz = &ft_bitmap_glyph_class;
+ clazz = FT_BITMAP_GLYPH_CLASS_GET;
- /* it it is an outline too */
+ /* if it is an outline */
else if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
- clazz = &ft_outline_glyph_class;
+ clazz = FT_OUTLINE_GLYPH_CLASS_GET;
else
{
@@ -518,6 +515,10 @@
const FT_Glyph_Class* clazz;
+#ifdef FT_CONFIG_OPTION_PIC
+ FT_Library library = FT_GLYPH( glyph )->library;
+#endif
+
/* check argument */
if ( !the_glyph )
@@ -533,7 +534,7 @@
clazz = glyph->clazz;
/* when called with a bitmap glyph, do nothing and return successfully */
- if ( clazz == &ft_bitmap_glyph_class )
+ if ( clazz == FT_BITMAP_GLYPH_CLASS_GET )
goto Exit;
if ( !clazz || !clazz->glyph_prepare )
@@ -546,7 +547,7 @@
dummy.format = clazz->glyph_format;
/* create result bitmap glyph */
- error = ft_new_glyph( glyph->library, &ft_bitmap_glyph_class,
+ error = ft_new_glyph( glyph->library, FT_BITMAP_GLYPH_CLASS_GET,
(FT_Glyph*)(void*)&bitmap );
if ( error )
goto Exit;
diff --git a/src/3rdparty/freetype/src/base/ftinit.c b/src/3rdparty/freetype/src/base/ftinit.c
index dac30b0d86..f94f25a83c 100644
--- a/src/3rdparty/freetype/src/base/ftinit.c
+++ b/src/3rdparty/freetype/src/base/ftinit.c
@@ -4,7 +4,7 @@
/* */
/* FreeType initialization layer (body). */
/* */
-/* Copyright 1996-2001, 2002, 2005, 2007 by */
+/* Copyright 1996-2001, 2002, 2005, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -42,6 +42,7 @@
#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_DEBUG_H
#include FT_MODULE_H
+#include "basepic.h"
/*************************************************************************/
@@ -53,6 +54,8 @@
#undef FT_COMPONENT
#define FT_COMPONENT trace_init
+#ifndef FT_CONFIG_OPTION_PIC
+
#undef FT_USE_MODULE
#ifdef __cplusplus
#define FT_USE_MODULE( type, x ) extern "C" const type x;
@@ -74,6 +77,99 @@
0
};
+#else /* FT_CONFIG_OPTION_PIC */
+
+#ifdef __cplusplus
+#define FT_EXTERNC extern "C"
+#else
+#define FT_EXTERNC extern
+#endif
+
+ /* declare the module's class creation/destruction functions */
+#undef FT_USE_MODULE
+#define FT_USE_MODULE( type, x ) \
+ FT_EXTERNC FT_Error FT_Create_Class_##x( FT_Library library, FT_Module_Class** output_class ); \
+ FT_EXTERNC void FT_Destroy_Class_##x( FT_Library library, FT_Module_Class* clazz );
+
+#include FT_CONFIG_MODULES_H
+
+
+ /* count all module classes */
+#undef FT_USE_MODULE
+#define FT_USE_MODULE( type, x ) MODULE_CLASS_##x,
+
+ enum {
+#include FT_CONFIG_MODULES_H
+ FT_NUM_MODULE_CLASSES
+ };
+
+ /* destroy all module classes */
+#undef FT_USE_MODULE
+#define FT_USE_MODULE( type, x ) \
+ if ( classes[i] ) { FT_Destroy_Class_##x(library, classes[i]); } \
+ i++; \
+
+ FT_BASE_DEF( void )
+ ft_destroy_default_module_classes( FT_Library library )
+ {
+ FT_Module_Class** classes;
+ FT_Memory memory;
+ FT_UInt i;
+ BasePIC* pic_container = (BasePIC*)library->pic_container.base;
+
+ if ( !pic_container->default_module_classes )
+ return;
+
+ memory = library->memory;
+ classes = pic_container->default_module_classes;
+ i = 0;
+
+#include FT_CONFIG_MODULES_H
+
+ FT_FREE( classes );
+ pic_container->default_module_classes = 0;
+ }
+
+ /* initialize all module classes and the pointer table */
+#undef FT_USE_MODULE
+#define FT_USE_MODULE( type, x ) \
+ error = FT_Create_Class_##x(library, &clazz); \
+ if (error) goto Exit; \
+ classes[i++] = clazz;
+
+ FT_BASE_DEF( FT_Error )
+ ft_create_default_module_classes( FT_Library library )
+ {
+ FT_Error error;
+ FT_Memory memory;
+ FT_Module_Class** classes;
+ FT_Module_Class* clazz;
+ FT_UInt i;
+ BasePIC* pic_container = (BasePIC*)library->pic_container.base;
+
+ memory = library->memory;
+ pic_container->default_module_classes = 0;
+
+ if ( FT_ALLOC(classes, sizeof(FT_Module_Class*) * (FT_NUM_MODULE_CLASSES + 1) ) )
+ return error;
+ /* initialize all pointers to 0, especially the last one */
+ for (i = 0; i < FT_NUM_MODULE_CLASSES; i++)
+ classes[i] = 0;
+ classes[FT_NUM_MODULE_CLASSES] = 0;
+
+ i = 0;
+
+#include FT_CONFIG_MODULES_H
+
+Exit:
+ if (error) ft_destroy_default_module_classes( library );
+ else pic_container->default_module_classes = classes;
+
+ return error;
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
/* documentation is in ftmodapi.h */
@@ -86,16 +182,15 @@
/* test for valid `library' delayed to FT_Add_Module() */
- cur = ft_default_modules;
+ cur = FT_DEFAULT_MODULES_GET;
while ( *cur )
{
error = FT_Add_Module( library, *cur );
/* notify errors, but don't stop */
if ( error )
- {
- FT_ERROR(( "FT_Add_Default_Module: Cannot install `%s', error = 0x%x\n",
- (*cur)->module_name, error ));
- }
+ FT_TRACE0(( "FT_Add_Default_Module:"
+ " Cannot install `%s', error = 0x%x\n",
+ (*cur)->module_name, error ));
cur++;
}
}
@@ -127,13 +222,7 @@
if ( error )
FT_Done_Memory( memory );
else
- {
- (*alibrary)->version_major = FREETYPE_MAJOR;
- (*alibrary)->version_minor = FREETYPE_MINOR;
- (*alibrary)->version_patch = FREETYPE_PATCH;
-
FT_Add_Default_Modules( *alibrary );
- }
return error;
}
diff --git a/src/3rdparty/freetype/src/base/ftobjs.c b/src/3rdparty/freetype/src/base/ftobjs.c
index 086237a79d..46bcd3bb8b 100644
--- a/src/3rdparty/freetype/src/base/ftobjs.c
+++ b/src/3rdparty/freetype/src/base/ftobjs.c
@@ -4,7 +4,8 @@
/* */
/* The FreeType private base classes (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -37,7 +38,9 @@
#include FT_SERVICE_KERNING_H
#include FT_SERVICE_TRUETYPE_ENGINE_H
+#ifdef FT_CONFIG_OPTION_MAC_FONTS
#include "ftbase.h"
+#endif
#define GRID_FIT_METRICS
@@ -348,7 +351,7 @@
/* free bitmap buffer if needed */
ft_glyphslot_free_bitmap( slot );
- /* slot->internal might be 0 in out-of-memory situations */
+ /* slot->internal might be NULL in out-of-memory situations */
if ( slot->internal )
{
/* free glyph loader */
@@ -592,27 +595,29 @@
* Determine whether we need to auto-hint or not.
* The general rules are:
*
- * - Do only auto-hinting if we have a hinter module,
- * a scalable font format dealing with outlines,
- * and no transforms except simple slants.
+ * - Do only auto-hinting if we have a hinter module, a scalable font
+ * format dealing with outlines, and no transforms except simple
+ * slants and/or rotations by integer multiples of 90 degrees.
*
- * - Then, autohint if FT_LOAD_FORCE_AUTOHINT is set
- * or if we don't have a native font hinter.
+ * - Then, auto-hint if FT_LOAD_FORCE_AUTOHINT is set or if we don't
+ * have a native font hinter.
*
* - Otherwise, auto-hint for LIGHT hinting mode.
*
- * - Exception: The font is `tricky' and requires
- * the native hinter to load properly.
+ * - Exception: The font is `tricky' and requires the native hinter to
+ * load properly.
*/
- if ( hinter &&
- !( load_flags & FT_LOAD_NO_HINTING ) &&
- !( load_flags & FT_LOAD_NO_AUTOHINT ) &&
- FT_DRIVER_IS_SCALABLE( driver ) &&
- FT_DRIVER_USES_OUTLINES( driver ) &&
- !FT_IS_TRICKY( face ) &&
- face->internal->transform_matrix.yy > 0 &&
- face->internal->transform_matrix.yx == 0 )
+ if ( hinter &&
+ !( load_flags & FT_LOAD_NO_HINTING ) &&
+ !( load_flags & FT_LOAD_NO_AUTOHINT ) &&
+ FT_DRIVER_IS_SCALABLE( driver ) &&
+ FT_DRIVER_USES_OUTLINES( driver ) &&
+ !FT_IS_TRICKY( face ) &&
+ ( ( face->internal->transform_matrix.yx == 0 &&
+ face->internal->transform_matrix.xx != 0 ) ||
+ ( face->internal->transform_matrix.xx == 0 &&
+ face->internal->transform_matrix.yx != 0 ) ) )
{
if ( ( load_flags & FT_LOAD_FORCE_AUTOHINT ) ||
!FT_DRIVER_HAS_HINTER( driver ) )
@@ -706,8 +711,8 @@
}
/* compute the linear advance in 16.16 pixels */
- if ( ( load_flags & FT_LOAD_LINEAR_DESIGN ) == 0 &&
- ( FT_IS_SCALABLE( face ) ) )
+ if ( ( load_flags & FT_LOAD_LINEAR_DESIGN ) == 0 &&
+ ( FT_IS_SCALABLE( face ) ) )
{
FT_Size_Metrics* metrics = &face->size->metrics;
@@ -737,11 +742,30 @@
renderer, slot,
&internal->transform_matrix,
&internal->transform_delta );
+ else if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
+ {
+ /* apply `standard' transformation if no renderer is available */
+ if ( &internal->transform_matrix )
+ FT_Outline_Transform( &slot->outline,
+ &internal->transform_matrix );
+
+ if ( &internal->transform_delta )
+ FT_Outline_Translate( &slot->outline,
+ internal->transform_delta.x,
+ internal->transform_delta.y );
+ }
+
/* transform advance */
FT_Vector_Transform( &slot->advance, &internal->transform_matrix );
}
}
+ FT_TRACE5(( " x advance: %d\n" , slot->advance.x ));
+ FT_TRACE5(( " y advance: %d\n" , slot->advance.y ));
+
+ FT_TRACE5(( " linear x advance: %d\n" , slot->linearHoriAdvance ));
+ FT_TRACE5(( " linear y advance: %d\n" , slot->linearVertAdvance ));
+
/* do we need to render the image now? */
if ( !error &&
slot->format != FT_GLYPH_FORMAT_BITMAP &&
@@ -1111,7 +1135,7 @@
if ( error )
{
destroy_charmaps( face, memory );
- if ( clazz->done_face && face )
+ if ( clazz->done_face )
clazz->done_face( face );
FT_FREE( internal );
FT_FREE( face );
@@ -2402,12 +2426,24 @@
ft_synthesize_vertical_metrics( FT_Glyph_Metrics* metrics,
FT_Pos advance )
{
+ FT_Pos height = metrics->height;
+
+
+ /* compensate for glyph with bbox above/below the baseline */
+ if ( metrics->horiBearingY < 0 )
+ {
+ if ( height < metrics->horiBearingY )
+ height = metrics->horiBearingY;
+ }
+ else if ( metrics->horiBearingY > 0 )
+ height -= metrics->horiBearingY;
+
/* the factor 1.2 is a heuristical value */
if ( !advance )
- advance = metrics->height * 12 / 10;
+ advance = height * 12 / 10;
- metrics->vertBearingX = -( metrics->width / 2 );
- metrics->vertBearingY = ( advance - metrics->height ) / 2;
+ metrics->vertBearingX = metrics->horiBearingX - metrics->horiAdvance / 2;
+ metrics->vertBearingY = ( advance - height ) / 2;
metrics->vertAdvance = advance;
}
@@ -3052,7 +3088,12 @@
FT_CMap cmap = FT_CMAP( face->charmap );
- result = cmap->clazz->char_index( cmap, charcode );
+ if ( charcode > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "FT_Get_Char_Index: too large charcode" ));
+ FT_TRACE1(( " 0x%x is truncated\n", charcode ));
+ }
+ result = cmap->clazz->char_index( cmap, (FT_UInt32)charcode );
}
return result;
}
@@ -3132,8 +3173,20 @@
FT_CMap vcmap = FT_CMAP( charmap );
- result = vcmap->clazz->char_var_index( vcmap, ucmap, charcode,
- variantSelector );
+ if ( charcode > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "FT_Get_Char_Index: too large charcode" ));
+ FT_TRACE1(( " 0x%x is truncated\n", charcode ));
+ }
+ if ( variantSelector > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "FT_Get_Char_Index: too large variantSelector" ));
+ FT_TRACE1(( " 0x%x is truncated\n", variantSelector ));
+ }
+
+ result = vcmap->clazz->char_var_index( vcmap, ucmap,
+ (FT_UInt32)charcode,
+ (FT_UInt32)variantSelector );
}
}
@@ -3161,8 +3214,20 @@
FT_CMap vcmap = FT_CMAP( charmap );
- result = vcmap->clazz->char_var_default( vcmap, charcode,
- variantSelector );
+ if ( charcode > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "FT_Get_Char_Index: too large charcode" ));
+ FT_TRACE1(( " 0x%x is truncated\n", charcode ));
+ }
+ if ( variantSelector > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "FT_Get_Char_Index: too large variantSelector" ));
+ FT_TRACE1(( " 0x%x is truncated\n", variantSelector ));
+ }
+
+ result = vcmap->clazz->char_var_default( vcmap,
+ (FT_UInt32)charcode,
+ (FT_UInt32)variantSelector );
}
}
@@ -3217,7 +3282,14 @@
FT_Memory memory = FT_FACE_MEMORY( face );
- result = vcmap->clazz->charvariant_list( vcmap, memory, charcode );
+ if ( charcode > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "FT_Get_Char_Index: too large charcode" ));
+ FT_TRACE1(( " 0x%x is truncated\n", charcode ));
+ }
+
+ result = vcmap->clazz->charvariant_list( vcmap, memory,
+ (FT_UInt32)charcode );
}
}
return result;
@@ -3244,8 +3316,14 @@
FT_Memory memory = FT_FACE_MEMORY( face );
+ if ( variantSelector > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "FT_Get_Char_Index: too large variantSelector" ));
+ FT_TRACE1(( " 0x%x is truncated\n", variantSelector ));
+ }
+
result = vcmap->clazz->variantchar_list( vcmap, memory,
- variantSelector );
+ (FT_UInt32)variantSelector );
}
}
@@ -3295,7 +3373,7 @@
((FT_Byte*)buffer)[0] = 0;
if ( face &&
- glyph_index <= (FT_UInt)face->num_glyphs &&
+ (FT_Long)glyph_index <= face->num_glyphs &&
FT_HAS_GLYPH_NAMES( face ) )
{
FT_Service_GlyphDict service;
@@ -3395,6 +3473,7 @@
FT_ULong *length )
{
FT_Service_SFNT_Table service;
+ FT_ULong offset;
if ( !face || !FT_IS_SFNT( face ) )
@@ -3404,7 +3483,7 @@
if ( service == NULL )
return FT_Err_Unimplemented_Feature;
- return service->table_info( face, table_index, tag, length );
+ return service->table_info( face, table_index, tag, &offset, length );
}
@@ -3729,7 +3808,7 @@
while ( renderer )
{
error = renderer->render( renderer, slot, render_mode, NULL );
- if ( !error ||
+ if ( !error ||
FT_ERROR_BASE( error ) != FT_Err_Cannot_Render_Glyph )
break;
@@ -4127,6 +4206,13 @@
library->memory = memory;
+#ifdef FT_CONFIG_OPTION_PIC
+ /* initialize position independent code containers */
+ error = ft_pic_container_init( library );
+ if ( error )
+ goto Fail;
+#endif
+
/* allocate the render pool */
library->raster_pool_size = FT_RENDER_POOL_SIZE;
#if FT_RENDER_POOL_SIZE > 0
@@ -4134,12 +4220,19 @@
goto Fail;
#endif
+ library->version_major = FREETYPE_MAJOR;
+ library->version_minor = FREETYPE_MINOR;
+ library->version_patch = FREETYPE_PATCH;
+
/* That's ok now */
*alibrary = library;
return FT_Err_Ok;
Fail:
+#ifdef FT_CONFIG_OPTION_PIC
+ ft_pic_container_destroy( library );
+#endif
FT_FREE( library );
return error;
}
@@ -4220,7 +4313,7 @@
{
FT_Done_Face( FT_FACE( faces->head->data ) );
if ( faces->head )
- FT_ERROR(( "FT_Done_Library: failed to free some faces\n" ));
+ FT_TRACE0(( "FT_Done_Library: failed to free some faces\n" ));
}
}
}
@@ -4256,6 +4349,11 @@
FT_FREE( library->raster_pool );
library->raster_pool_size = 0;
+#ifdef FT_CONFIG_OPTION_PIC
+ /* Destroy pic container contents */
+ ft_pic_container_destroy( library );
+#endif
+
FT_FREE( library );
return FT_Err_Ok;
}
diff --git a/src/3rdparty/freetype/src/base/ftoutln.c b/src/3rdparty/freetype/src/base/ftoutln.c
index 49ef82e27d..b69df84c04 100644
--- a/src/3rdparty/freetype/src/base/ftoutln.c
+++ b/src/3rdparty/freetype/src/base/ftoutln.c
@@ -4,7 +4,7 @@
/* */
/* FreeType outline management (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -304,9 +304,9 @@
*anoutline = null_outline;
- if ( FT_NEW_ARRAY( anoutline->points, numPoints * 2L ) ||
- FT_NEW_ARRAY( anoutline->tags, numPoints ) ||
- FT_NEW_ARRAY( anoutline->contours, numContours ) )
+ if ( FT_NEW_ARRAY( anoutline->points, numPoints ) ||
+ FT_NEW_ARRAY( anoutline->tags, numPoints ) ||
+ FT_NEW_ARRAY( anoutline->contours, numContours ) )
goto Fail;
anoutline->n_points = (FT_UShort)numPoints;
diff --git a/src/3rdparty/freetype/src/base/ftpatent.c b/src/3rdparty/freetype/src/base/ftpatent.c
index 9f129d8f0d..501cab52ca 100644
--- a/src/3rdparty/freetype/src/base/ftpatent.c
+++ b/src/3rdparty/freetype/src/base/ftpatent.c
@@ -5,7 +5,7 @@
/* FreeType API for checking patented TrueType bytecode instructions */
/* (body). */
/* */
-/* Copyright 2007, 2008 by David Turner. */
+/* Copyright 2007, 2008, 2010 by David Turner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
@@ -103,6 +103,7 @@
}
Exit:
+ FT_UNUSED( error );
FT_FRAME_EXIT();
return result;
}
@@ -113,7 +114,7 @@
FT_ULong tag )
{
FT_Stream stream = face->stream;
- FT_Error error;
+ FT_Error error = FT_Err_Ok;
FT_Service_SFNT_Table service;
FT_Bool result = FALSE;
@@ -122,15 +123,19 @@
if ( service )
{
- FT_ULong offset, size;
+ FT_UInt i = 0;
+ FT_ULong tag_i = 0, offset_i = 0, length_i = 0;
- error = service->table_info( face, tag, &offset, &size );
- if ( error ||
- FT_STREAM_SEEK( offset ) )
+ for ( i = 0; !error && tag_i != tag ; i++ )
+ error = service->table_info( face, i,
+ &tag_i, &offset_i, &length_i );
+
+ if ( error ||
+ FT_STREAM_SEEK( offset_i ) )
goto Exit;
- result = _tt_check_patents_in_range( stream, size );
+ result = _tt_check_patents_in_range( stream, length_i );
}
Exit:
diff --git a/src/3rdparty/freetype/src/base/ftpic.c b/src/3rdparty/freetype/src/base/ftpic.c
new file mode 100644
index 0000000000..d5271a9726
--- /dev/null
+++ b/src/3rdparty/freetype/src/base/ftpic.c
@@ -0,0 +1,54 @@
+/***************************************************************************/
+/* */
+/* ftpic.c */
+/* */
+/* The FreeType position independent code services (body). */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "basepic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* documentation is in ftpic.h */
+
+ FT_BASE_DEF( FT_Error )
+ ft_pic_container_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+
+ FT_MEM_SET( pic_container, 0, sizeof(*pic_container) );
+
+ error = ft_base_pic_init( library );
+ if(error)
+ return error;
+
+ return FT_Err_Ok;
+ }
+
+
+ /* Destroy the contents of the container. */
+ FT_BASE_DEF( void )
+ ft_pic_container_destroy( FT_Library library )
+ {
+ ft_base_pic_free( library );
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/base/ftrfork.c b/src/3rdparty/freetype/src/base/ftrfork.c
index d59a07611c..133c2de057 100644
--- a/src/3rdparty/freetype/src/base/ftrfork.c
+++ b/src/3rdparty/freetype/src/base/ftrfork.c
@@ -752,9 +752,9 @@
const char *insertion )
{
char* new_name;
- char* tmp;
+ const char* tmp;
const char* slash;
- unsigned new_length;
+ size_t new_length;
FT_Error error = FT_Err_Ok;
FT_UNUSED( error );
diff --git a/src/3rdparty/freetype/src/base/ftnames.c b/src/3rdparty/freetype/src/base/ftsnames.c
index 7fde5c40bf..3447888ca2 100644
--- a/src/3rdparty/freetype/src/base/ftnames.c
+++ b/src/3rdparty/freetype/src/base/ftsnames.c
@@ -1,13 +1,13 @@
/***************************************************************************/
/* */
-/* ftnames.c */
+/* ftsnames.c */
/* */
/* Simple interface to access SFNT name tables (which are used */
/* to hold font names, copyright info, notices, etc.) (body). */
/* */
/* This is _not_ used to retrieve glyph names! */
/* */
-/* Copyright 1996-2001, 2002 by */
+/* Copyright 1996-2001, 2002, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -28,16 +28,16 @@
#ifdef TT_CONFIG_OPTION_SFNT_NAMES
- /* documentation is in ftnames.h */
+ /* documentation is in ftsnames.h */
FT_EXPORT_DEF( FT_UInt )
FT_Get_Sfnt_Name_Count( FT_Face face )
{
- return (face && FT_IS_SFNT( face )) ? ((TT_Face)face)->num_names : 0;
+ return ( face && FT_IS_SFNT( face ) ) ? ((TT_Face)face)->num_names : 0;
}
- /* documentation is in ftnames.h */
+ /* documentation is in ftsnames.h */
FT_EXPORT_DEF( FT_Error )
FT_Get_Sfnt_Name( FT_Face face,
diff --git a/src/3rdparty/freetype/src/base/ftstream.c b/src/3rdparty/freetype/src/base/ftstream.c
index 901b6835ba..b638599dbc 100644
--- a/src/3rdparty/freetype/src/base/ftstream.c
+++ b/src/3rdparty/freetype/src/base/ftstream.c
@@ -4,7 +4,7 @@
/* */
/* I/O stream support (body). */
/* */
-/* Copyright 2000-2001, 2002, 2004, 2005, 2006, 2008 by */
+/* Copyright 2000-2001, 2002, 2004, 2005, 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -60,13 +60,12 @@
FT_Error error = FT_Err_Ok;
- stream->pos = pos;
-
if ( stream->read )
{
if ( stream->read( stream, pos, 0, 0 ) )
{
- FT_ERROR(( "FT_Stream_Seek: invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_Seek:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
pos, stream->size ));
error = FT_Err_Invalid_Stream_Operation;
@@ -75,12 +74,16 @@
/* note that seeking to the first position after the file is valid */
else if ( pos > stream->size )
{
- FT_ERROR(( "FT_Stream_Seek: invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_Seek:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
pos, stream->size ));
error = FT_Err_Invalid_Stream_Operation;
}
+ if ( !error )
+ stream->pos = pos;
+
return error;
}
@@ -124,7 +127,8 @@
if ( pos >= stream->size )
{
- FT_ERROR(( "FT_Stream_ReadAt: invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_ReadAt:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
pos, stream->size ));
return FT_Err_Invalid_Stream_Operation;
@@ -145,8 +149,8 @@
if ( read_bytes < count )
{
- FT_ERROR(( "FT_Stream_ReadAt:" ));
- FT_ERROR(( " invalid read; expected %lu bytes, got %lu\n",
+ FT_ERROR(( "FT_Stream_ReadAt:"
+ " invalid read; expected %lu bytes, got %lu\n",
count, read_bytes ));
error = FT_Err_Invalid_Stream_Operation;
@@ -256,8 +260,8 @@
stream->base, count );
if ( read_bytes < count )
{
- FT_ERROR(( "FT_Stream_EnterFrame:" ));
- FT_ERROR(( " invalid read; expected %lu bytes, got %lu\n",
+ FT_ERROR(( "FT_Stream_EnterFrame:"
+ " invalid read; expected %lu bytes, got %lu\n",
count, read_bytes ));
FT_FREE( stream->base );
@@ -273,8 +277,8 @@
if ( stream->pos >= stream->size ||
stream->pos + count > stream->size )
{
- FT_ERROR(( "FT_Stream_EnterFrame:" ));
- FT_ERROR(( " invalid i/o; pos = 0x%lx, count = %lu, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_EnterFrame:"
+ " invalid i/o; pos = 0x%lx, count = %lu, size = 0x%lx\n",
stream->pos, count, stream->size ));
error = FT_Err_Invalid_Stream_Operation;
@@ -459,7 +463,8 @@
Fail:
*error = FT_Err_Invalid_Stream_Operation;
- FT_ERROR(( "FT_Stream_ReadChar: invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_ReadChar:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size ));
return 0;
@@ -505,8 +510,8 @@
Fail:
*error = FT_Err_Invalid_Stream_Operation;
- FT_ERROR(( "FT_Stream_ReadShort:" ));
- FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_ReadShort:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size ));
return 0;
@@ -552,8 +557,8 @@
Fail:
*error = FT_Err_Invalid_Stream_Operation;
- FT_ERROR(( "FT_Stream_ReadShortLE:" ));
- FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_ReadShortLE:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size ));
return 0;
@@ -599,8 +604,8 @@
Fail:
*error = FT_Err_Invalid_Stream_Operation;
- FT_ERROR(( "FT_Stream_ReadOffset:" ));
- FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ FT_ERROR(( "FT_Stream_ReadOffset:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size ));
return 0;
@@ -645,9 +650,10 @@
return result;
Fail:
- FT_ERROR(( "FT_Stream_ReadLong: invalid i/o; pos = 0x%lx, size = 0x%lx\n",
- stream->pos, stream->size ));
*error = FT_Err_Invalid_Stream_Operation;
+ FT_ERROR(( "FT_Stream_ReadLong:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ stream->pos, stream->size ));
return 0;
}
@@ -691,10 +697,10 @@
return result;
Fail:
- FT_ERROR(( "FT_Stream_ReadLongLE:" ));
- FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
- stream->pos, stream->size ));
*error = FT_Err_Invalid_Stream_Operation;
+ FT_ERROR(( "FT_Stream_ReadLongLE:"
+ " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
+ stream->pos, stream->size ));
return 0;
}
diff --git a/src/3rdparty/freetype/src/base/ftstroke.c b/src/3rdparty/freetype/src/base/ftstroke.c
index 3f5421fa57..75bcbded6a 100644
--- a/src/3rdparty/freetype/src/base/ftstroke.c
+++ b/src/3rdparty/freetype/src/base/ftstroke.c
@@ -4,7 +4,7 @@
/* */
/* FreeType path stroker (body). */
/* */
-/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
+/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -706,7 +706,7 @@
FT_Bool valid;
FT_StrokeBorderRec borders[2];
- FT_Memory memory;
+ FT_Library library;
} FT_StrokerRec;
@@ -729,7 +729,7 @@
if ( !FT_NEW( stroker ) )
{
- stroker->memory = memory;
+ stroker->library = library;
ft_stroke_border_init( &stroker->borders[0], memory );
ft_stroke_border_init( &stroker->borders[1], memory );
@@ -777,13 +777,13 @@
{
if ( stroker )
{
- FT_Memory memory = stroker->memory;
+ FT_Memory memory = stroker->library->memory;
ft_stroke_border_done( &stroker->borders[0] );
ft_stroke_border_done( &stroker->borders[1] );
- stroker->memory = NULL;
+ stroker->library = NULL;
FT_FREE( stroker );
}
}
@@ -859,6 +859,31 @@
error = ft_stroke_border_lineto( border, &delta, FALSE );
}
+ else if ( stroker->line_cap == FT_STROKER_LINECAP_BUTT )
+ {
+ /* add a butt ending */
+ FT_Vector delta;
+ FT_Angle rotate = FT_SIDE_TO_ROTATE( side );
+ FT_Fixed radius = stroker->radius;
+ FT_StrokeBorder border = stroker->borders + side;
+
+
+ FT_Vector_From_Polar( &delta, radius, angle + rotate );
+
+ delta.x += stroker->center.x;
+ delta.y += stroker->center.y;
+
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
+ if ( error )
+ goto Exit;
+
+ FT_Vector_From_Polar( &delta, radius, angle - rotate );
+
+ delta.x += stroker->center.x;
+ delta.y += stroker->center.y;
+
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
+ }
Exit:
return error;
@@ -954,7 +979,8 @@
thcos = FT_Cos( theta );
sigma = FT_MulFix( stroker->miter_limit, thcos );
- if ( sigma >= 0x10000L )
+ /* FT_Sin(x) = 0 for x <= 57 */
+ if ( sigma >= 0x10000L || ft_pos_abs( theta ) <= 57 )
miter = FALSE;
if ( miter ) /* this is a miter (broken angle) */
@@ -1335,7 +1361,7 @@
phi1 = (angle_mid + angle_in ) / 2;
phi2 = (angle_mid + angle_out ) / 2;
length1 = FT_DivFix( stroker->radius, FT_Cos( theta1 ) );
- length2 = FT_DivFix( stroker->radius, FT_Cos(theta2) );
+ length2 = FT_DivFix( stroker->radius, FT_Cos( theta2 ) );
for ( side = 0; side <= 1; side++ )
{
@@ -1710,13 +1736,10 @@
}
else
{
- /* if both first and last points are conic, */
- /* start at their middle and record its position */
- /* for closure */
+ /* if both first and last points are conic, */
+ /* start at their middle */
v_start.x = ( v_start.x + v_last.x ) / 2;
v_start.y = ( v_start.y + v_last.y ) / 2;
-
- v_last = v_start;
}
point--;
tags--;
@@ -1844,8 +1867,13 @@
return FT_Err_Invalid_Outline;
}
-
+/* declare an extern to access ft_outline_glyph_class global allocated
+ in ftglyph.c, and use the FT_OUTLINE_GLYPH_CLASS_GET macro to access
+ it when FT_CONFIG_OPTION_PIC is defined */
+#ifndef FT_CONFIG_OPTION_PIC
extern const FT_Glyph_Class ft_outline_glyph_class;
+#endif
+#include "basepic.h"
/* documentation is in ftstroke.h */
@@ -1857,13 +1885,14 @@
{
FT_Error error = FT_Err_Invalid_Argument;
FT_Glyph glyph = NULL;
-
+ FT_Library library = stroker->library;
+ FT_UNUSED(library);
if ( pglyph == NULL )
goto Exit;
glyph = *pglyph;
- if ( glyph == NULL || glyph->clazz != &ft_outline_glyph_class )
+ if ( glyph == NULL || glyph->clazz != FT_OUTLINE_GLYPH_CLASS_GET )
goto Exit;
{
@@ -1930,13 +1959,14 @@
{
FT_Error error = FT_Err_Invalid_Argument;
FT_Glyph glyph = NULL;
-
+ FT_Library library = stroker->library;
+ FT_UNUSED(library);
if ( pglyph == NULL )
goto Exit;
glyph = *pglyph;
- if ( glyph == NULL || glyph->clazz != &ft_outline_glyph_class )
+ if ( glyph == NULL || glyph->clazz != FT_OUTLINE_GLYPH_CLASS_GET )
goto Exit;
{
diff --git a/src/3rdparty/freetype/src/base/ftsynth.c b/src/3rdparty/freetype/src/base/ftsynth.c
index 443d272602..ba3c633e28 100644
--- a/src/3rdparty/freetype/src/base/ftsynth.c
+++ b/src/3rdparty/freetype/src/base/ftsynth.c
@@ -4,7 +4,7 @@
/* */
/* FreeType synthesizing code for emboldening and slanting (body). */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006 by */
+/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,12 +18,22 @@
#include <ft2build.h>
#include FT_SYNTHESIS_H
+#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_OBJECTS_H
#include FT_OUTLINE_H
#include FT_BITMAP_H
/*************************************************************************/
+ /* */
+ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */
+ /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */
+ /* messages during execution. */
+ /* */
+#undef FT_COMPONENT
+#define FT_COMPONENT trace_synth
+
+ /*************************************************************************/
/*************************************************************************/
/**** ****/
/**** EXPERIMENTAL OBLIQUING SUPPORT ****/
@@ -90,8 +100,8 @@
if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
{
- error = FT_Outline_Embolden( &slot->outline, xstr );
/* ignore error */
+ (void)FT_Outline_Embolden( &slot->outline, xstr );
/* this is more than enough for most glyphs; if you need accurate */
/* values, you have to call FT_Outline_Get_CBox */
@@ -106,6 +116,18 @@
xstr = 1 << 6;
ystr &= ~63;
+ /*
+ * XXX: overflow check for 16-bit system, for compatibility
+ * with FT_GlyphSlot_Embolden() since freetype-2.1.10.
+ * unfortunately, this function return no informations
+ * about the cause of error.
+ */
+ if ( ( ystr >> 6 ) > FT_INT_MAX || ( ystr >> 6 ) < FT_INT_MIN )
+ {
+ FT_TRACE1(( "FT_GlyphSlot_Embolden:" ));
+ FT_TRACE1(( "too strong embolding parameter ystr=%d\n", ystr ));
+ return;
+ }
error = FT_GlyphSlot_Own_Bitmap( slot );
if ( error )
return;
@@ -129,8 +151,9 @@
slot->metrics.vertBearingY += ystr;
slot->metrics.vertAdvance += ystr;
+ /* XXX: 16-bit overflow case must be excluded before here */
if ( slot->format == FT_GLYPH_FORMAT_BITMAP )
- slot->bitmap_top += ystr >> 6;
+ slot->bitmap_top += (FT_Int)( ystr >> 6 );
}
diff --git a/src/3rdparty/freetype/src/base/ftsystem.c b/src/3rdparty/freetype/src/base/ftsystem.c
index f64908fd22..4d06d6db5c 100644
--- a/src/3rdparty/freetype/src/base/ftsystem.c
+++ b/src/3rdparty/freetype/src/base/ftsystem.c
@@ -4,7 +4,7 @@
/* */
/* ANSI-specific FreeType low-level system interface (body). */
/* */
-/* Copyright 1996-2001, 2002, 2006, 2008 by */
+/* Copyright 1996-2001, 2002, 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -205,7 +205,8 @@
file = STREAM_FILE( stream );
- ft_fseek( file, offset, SEEK_SET );
+ if ( stream->pos != offset )
+ ft_fseek( file, offset, SEEK_SET );
return (unsigned long)ft_fread( buffer, 1, count, file );
}
@@ -226,8 +227,8 @@
file = ft_fopen( filepathname, "rb" );
if ( !file )
{
- FT_ERROR(( "FT_Stream_Open:" ));
- FT_ERROR(( " could not open `%s'\n", filepathname ));
+ FT_ERROR(( "FT_Stream_Open:"
+ " could not open `%s'\n", filepathname ));
return FT_Err_Cannot_Open_Resource;
}
diff --git a/src/3rdparty/freetype/src/base/fttrigon.c b/src/3rdparty/freetype/src/base/fttrigon.c
index 9f513946b8..fdf433ab86 100644
--- a/src/3rdparty/freetype/src/base/fttrigon.c
+++ b/src/3rdparty/freetype/src/base/fttrigon.c
@@ -72,10 +72,10 @@
val = ( val >= 0 ) ? val : -val;
v1 = (FT_UInt32)val >> 16;
- v2 = (FT_UInt32)val & 0xFFFFL;
+ v2 = (FT_UInt32)(val & 0xFFFFL);
- k1 = FT_TRIG_SCALE >> 16; /* constant */
- k2 = FT_TRIG_SCALE & 0xFFFFL; /* constant */
+ k1 = (FT_UInt32)FT_TRIG_SCALE >> 16; /* constant */
+ k2 = (FT_UInt32)(FT_TRIG_SCALE & 0xFFFFL); /* constant */
hi = k1 * v1;
lo1 = k1 * v2 + k2 * v1; /* can't overflow */
@@ -86,7 +86,7 @@
hi += lo1 >> 16;
if ( lo1 < lo3 )
- hi += 0x10000UL;
+ hi += (FT_UInt32)0x10000UL;
val = (FT_Fixed)hi;
@@ -433,7 +433,7 @@
if ( shift > 0 )
{
- FT_Int32 half = 1L << ( shift - 1 );
+ FT_Int32 half = (FT_Int32)1L << ( shift - 1 );
vec->x = ( v.x + half + FT_SIGN_LONG( v.x ) ) >> shift;
diff --git a/src/3rdparty/freetype/src/base/rules.mk b/src/3rdparty/freetype/src/base/rules.mk
index 66260e6777..10f578abc8 100644
--- a/src/3rdparty/freetype/src/base/rules.mk
+++ b/src/3rdparty/freetype/src/base/rules.mk
@@ -37,10 +37,10 @@ BASE_SRC := $(BASE_DIR)/ftadvanc.c \
$(BASE_DIR)/ftcalc.c \
$(BASE_DIR)/ftdbgmem.c \
$(BASE_DIR)/ftgloadr.c \
- $(BASE_DIR)/ftnames.c \
$(BASE_DIR)/ftobjs.c \
$(BASE_DIR)/ftoutln.c \
$(BASE_DIR)/ftrfork.c \
+ $(BASE_DIR)/ftsnames.c \
$(BASE_DIR)/ftstream.c \
$(BASE_DIR)/fttrigon.c \
$(BASE_DIR)/ftutil.c
diff --git a/src/3rdparty/freetype/src/bdf/bdf.h b/src/3rdparty/freetype/src/bdf/bdf.h
index 1b64426aad..561b4158a5 100644
--- a/src/3rdparty/freetype/src/bdf/bdf.h
+++ b/src/3rdparty/freetype/src/bdf/bdf.h
@@ -114,8 +114,8 @@ FT_BEGIN_HEADER
union
{
char* atom;
- long int32;
- unsigned long card32;
+ long l;
+ unsigned long ul;
} value; /* Value of the property. */
@@ -160,7 +160,7 @@ FT_BEGIN_HEADER
typedef struct _hashnode_
{
const char* key;
- void* data;
+ size_t data;
} _hashnode, *hashnode;
diff --git a/src/3rdparty/freetype/src/bdf/bdfdrivr.c b/src/3rdparty/freetype/src/bdf/bdfdrivr.c
index 0b736b5ceb..631ec460e7 100644
--- a/src/3rdparty/freetype/src/bdf/bdfdrivr.c
+++ b/src/3rdparty/freetype/src/bdf/bdfdrivr.c
@@ -53,7 +53,7 @@ THE SOFTWARE.
typedef struct BDF_CMapRec_
{
FT_CMapRec cmap;
- FT_UInt num_encodings;
+ FT_ULong num_encodings; /* ftobjs.h: FT_CMap->clazz->size */
BDF_encoding_el* encodings;
} BDF_CMapRec, *BDF_CMap;
@@ -92,8 +92,8 @@ THE SOFTWARE.
{
BDF_CMap cmap = (BDF_CMap)bdfcmap;
BDF_encoding_el* encodings = cmap->encodings;
- FT_UInt min, max, mid;
- FT_UInt result = 0;
+ FT_ULong min, max, mid; /* num_encodings */
+ FT_UShort result = 0; /* encodings->glyph */
min = 0;
@@ -101,7 +101,7 @@ THE SOFTWARE.
while ( min < max )
{
- FT_UInt32 code;
+ FT_ULong code;
mid = ( min + max ) >> 1;
@@ -131,9 +131,9 @@ THE SOFTWARE.
{
BDF_CMap cmap = (BDF_CMap)bdfcmap;
BDF_encoding_el* encodings = cmap->encodings;
- FT_UInt min, max, mid;
- FT_UInt32 charcode = *acharcode + 1;
- FT_UInt result = 0;
+ FT_ULong min, max, mid; /* num_encodings */
+ FT_UShort result = 0; /* encodings->glyph */
+ FT_ULong charcode = *acharcode + 1;
min = 0;
@@ -141,7 +141,7 @@ THE SOFTWARE.
while ( min < max )
{
- FT_UInt32 code;
+ FT_ULong code; /* same as BDF_encoding_el.enc */
mid = ( min + max ) >> 1;
@@ -169,7 +169,14 @@ THE SOFTWARE.
}
Exit:
- *acharcode = charcode;
+ if ( charcode > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "bdf_cmap_char_next: charcode 0x%x > 32bit API" ));
+ *acharcode = 0;
+ /* XXX: result should be changed to indicate an overflow error */
+ }
+ else
+ *acharcode = (FT_UInt32)charcode;
return result;
}
@@ -196,9 +203,8 @@ THE SOFTWARE.
bdf_font_t* font = bdf->bdffont;
bdf_property_t* prop;
- int nn, len;
- char* strings[4] = { NULL, NULL, NULL, NULL };
- int lengths[4];
+ char* strings[4] = { NULL, NULL, NULL, NULL };
+ size_t nn, len, lengths[4];
face->style_flags = 0;
@@ -284,7 +290,7 @@ THE SOFTWARE.
/* add_style_name and setwidth_name */
if ( nn == 0 || nn == 3 )
{
- int mm;
+ size_t mm;
for ( mm = 0; mm < len; mm++ )
@@ -426,7 +432,7 @@ THE SOFTWARE.
prop = bdf_get_font_property( font, "AVERAGE_WIDTH" );
if ( prop )
- bsize->width = (FT_Short)( ( prop->value.int32 + 5 ) / 10 );
+ bsize->width = (FT_Short)( ( prop->value.l + 5 ) / 10 );
else
bsize->width = (FT_Short)( bsize->height * 2/3 );
@@ -434,21 +440,21 @@ THE SOFTWARE.
if ( prop )
/* convert from 722.7 decipoints to 72 points per inch */
bsize->size =
- (FT_Pos)( ( prop->value.int32 * 64 * 7200 + 36135L ) / 72270L );
+ (FT_Pos)( ( prop->value.l * 64 * 7200 + 36135L ) / 72270L );
else
bsize->size = bsize->width << 6;
prop = bdf_get_font_property( font, "PIXEL_SIZE" );
if ( prop )
- bsize->y_ppem = (FT_Short)prop->value.int32 << 6;
+ bsize->y_ppem = (FT_Short)prop->value.l << 6;
prop = bdf_get_font_property( font, "RESOLUTION_X" );
if ( prop )
- resolution_x = (FT_Short)prop->value.int32;
+ resolution_x = (FT_Short)prop->value.l;
prop = bdf_get_font_property( font, "RESOLUTION_Y" );
if ( prop )
- resolution_y = (FT_Short)prop->value.int32;
+ resolution_y = (FT_Short)prop->value.l;
if ( bsize->y_ppem == 0 )
{
@@ -479,7 +485,12 @@ THE SOFTWARE.
(face->en_table[n]).glyph = (FT_Short)n;
if ( cur[n].encoding == font->default_char )
- face->default_glyph = n;
+ {
+ if ( n < FT_UINT_MAX )
+ face->default_glyph = (FT_UInt)n;
+ else
+ FT_TRACE1(( "idx %d is too large for this system\n", n ));
+ }
}
}
@@ -671,7 +682,10 @@ THE SOFTWARE.
bitmap->rows = glyph.bbx.height;
bitmap->width = glyph.bbx.width;
- bitmap->pitch = glyph.bpr;
+ if ( glyph.bpr > INT_MAX )
+ FT_TRACE1(( "BDF_Glyph_Load: too large pitch %d is truncated\n",
+ glyph.bpr ));
+ bitmap->pitch = (int)glyph.bpr; /* same as FT_Bitmap.pitch */
/* note: we don't allocate a new array to hold the bitmap; */
/* we can simply point to it */
@@ -743,13 +757,23 @@ THE SOFTWARE.
break;
case BDF_INTEGER:
+ if ( prop->value.l > 0x7FFFFFFFL || prop->value.l < ( -1 - 0x7FFFFFFFL ) )
+ {
+ FT_TRACE1(( "bdf_get_bdf_property: " ));
+ FT_TRACE1(( "too large integer 0x%x is truncated\n" ));
+ }
aproperty->type = BDF_PROPERTY_TYPE_INTEGER;
- aproperty->u.integer = prop->value.int32;
+ aproperty->u.integer = (FT_Int32)prop->value.l;
break;
case BDF_CARDINAL:
+ if ( prop->value.ul > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "bdf_get_bdf_property: " ));
+ FT_TRACE1(( "too large cardinal 0x%x is truncated\n" ));
+ }
aproperty->type = BDF_PROPERTY_TYPE_CARDINAL;
- aproperty->u.cardinal = prop->value.card32;
+ aproperty->u.cardinal = (FT_UInt32)prop->value.ul;
break;
default:
diff --git a/src/3rdparty/freetype/src/bdf/bdfdrivr.h b/src/3rdparty/freetype/src/bdf/bdfdrivr.h
index 86f40ee4af..db7093bb45 100644
--- a/src/3rdparty/freetype/src/bdf/bdfdrivr.h
+++ b/src/3rdparty/freetype/src/bdf/bdfdrivr.h
@@ -36,6 +36,10 @@ THE SOFTWARE.
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
typedef struct BDF_encoding_el_
{
diff --git a/src/3rdparty/freetype/src/bdf/bdflib.c b/src/3rdparty/freetype/src/bdf/bdflib.c
index 5435b20e69..5fa5868c71 100644
--- a/src/3rdparty/freetype/src/bdf/bdflib.c
+++ b/src/3rdparty/freetype/src/bdf/bdflib.c
@@ -281,7 +281,7 @@
static FT_Error
hash_insert( char* key,
- void* data,
+ size_t data,
hashtable* ht,
FT_Memory memory )
{
@@ -415,18 +415,18 @@
static FT_Error
- _bdf_list_ensure( _bdf_list_t* list,
- int num_items )
+ _bdf_list_ensure( _bdf_list_t* list,
+ unsigned long num_items ) /* same as _bdf_list_t.used */
{
FT_Error error = BDF_Err_Ok;
- if ( num_items > (int)list->size )
+ if ( num_items > list->size )
{
- int oldsize = list->size;
- int newsize = oldsize + ( oldsize >> 1 ) + 4;
- int bigsize = FT_INT_MAX / sizeof ( char* );
- FT_Memory memory = list->memory;
+ unsigned long oldsize = list->size; /* same as _bdf_list_t.size */
+ unsigned long newsize = oldsize + ( oldsize >> 1 ) + 4;
+ unsigned long bigsize = (unsigned long)( FT_INT_MAX / sizeof ( char* ) );
+ FT_Memory memory = list->memory;
if ( oldsize == bigsize )
@@ -614,8 +614,8 @@
{
_bdf_line_func_t cb;
unsigned long lineno, buf_size;
- int refill, bytes, hold, to_skip;
- int start, end, cursor, avail;
+ int refill, hold, to_skip;
+ ptrdiff_t bytes, start, end, cursor, avail;
char* buf = 0;
FT_Memory memory = stream->memory;
FT_Error error = BDF_Err_Ok;
@@ -648,8 +648,8 @@
{
if ( refill )
{
- bytes = (int)FT_Stream_TryRead( stream, (FT_Byte*)buf + cursor,
- (FT_ULong)(buf_size - cursor) );
+ bytes = (ptrdiff_t)FT_Stream_TryRead( stream, (FT_Byte*)buf + cursor,
+ (FT_ULong)(buf_size - cursor) );
avail = cursor + bytes;
cursor = 0;
refill = 0;
@@ -971,7 +971,7 @@
int format,
bdf_font_t* font )
{
- unsigned long n;
+ size_t n;
bdf_property_t* p;
FT_Memory memory = font->memory;
FT_Error error = BDF_Err_Ok;
@@ -991,7 +991,9 @@
p = font->user_props + font->nuser_props;
FT_ZERO( p );
- n = (unsigned long)( ft_strlen( name ) + 1 );
+ n = ft_strlen( name ) + 1;
+ if ( n > FT_ULONG_MAX )
+ return BDF_Err_Invalid_Argument;
if ( FT_NEW_ARRAY( p->name, n ) )
goto Exit;
@@ -1003,7 +1005,7 @@
n = _num_bdf_properties + font->nuser_props;
- error = hash_insert( p->name, (void *)n, &(font->proptbl), memory );
+ error = hash_insert( p->name, n, &(font->proptbl), memory );
if ( error )
goto Exit;
@@ -1018,8 +1020,8 @@
bdf_get_property( char* name,
bdf_font_t* font )
{
- hashnode hn;
- unsigned long propid;
+ hashnode hn;
+ size_t propid;
if ( name == 0 || *name == 0 )
@@ -1028,7 +1030,7 @@
if ( ( hn = hash_lookup( name, &(font->proptbl) ) ) == 0 )
return 0;
- propid = (unsigned long)hn->data;
+ propid = hn->data;
if ( propid >= _num_bdf_properties )
return font->user_props + ( propid - _num_bdf_properties );
@@ -1131,11 +1133,11 @@
_bdf_set_default_spacing( bdf_font_t* font,
bdf_options_t* opts )
{
- unsigned long len;
- char name[256];
- _bdf_list_t list;
- FT_Memory memory;
- FT_Error error = BDF_Err_Ok;
+ size_t len;
+ char name[256];
+ _bdf_list_t list;
+ FT_Memory memory;
+ FT_Error error = BDF_Err_Ok;
if ( font == 0 || font->name == 0 || font->name[0] == 0 )
@@ -1150,7 +1152,7 @@
font->spacing = opts->font_spacing;
- len = (unsigned long)( ft_strlen( font->name ) + 1 );
+ len = ft_strlen( font->name ) + 1;
/* Limit ourselves to 256 characters in the font name. */
if ( len >= 256 )
{
@@ -1261,7 +1263,7 @@
char* name,
char* value )
{
- unsigned long propid;
+ size_t propid;
hashnode hn;
bdf_property_t *prop, *fp;
FT_Memory memory = font->memory;
@@ -1273,7 +1275,7 @@
{
/* The property already exists in the font, so simply replace */
/* the value of the property with the current value. */
- fp = font->props + (unsigned long)hn->data;
+ fp = font->props + hn->data;
switch ( fp->format )
{
@@ -1289,11 +1291,11 @@
break;
case BDF_INTEGER:
- fp->value.int32 = _bdf_atol( value, 0, 10 );
+ fp->value.l = _bdf_atol( value, 0, 10 );
break;
case BDF_CARDINAL:
- fp->value.card32 = _bdf_atoul( value, 0, 10 );
+ fp->value.ul = _bdf_atoul( value, 0, 10 );
break;
default:
@@ -1335,7 +1337,7 @@
font->props_size++;
}
- propid = (unsigned long)hn->data;
+ propid = hn->data;
if ( propid >= _num_bdf_properties )
prop = font->user_props + ( propid - _num_bdf_properties );
else
@@ -1359,11 +1361,11 @@
break;
case BDF_INTEGER:
- fp->value.int32 = _bdf_atol( value, 0, 10 );
+ fp->value.l = _bdf_atol( value, 0, 10 );
break;
case BDF_CARDINAL:
- fp->value.card32 = _bdf_atoul( value, 0, 10 );
+ fp->value.ul = _bdf_atoul( value, 0, 10 );
break;
}
@@ -1372,7 +1374,7 @@
if ( ft_memcmp( name, "COMMENT", 7 ) != 0 ) {
/* Add the property to the font property table. */
error = hash_insert( fp->name,
- (void *)font->props_used,
+ font->props_used,
(hashtable *)font->internal,
memory );
if ( error )
@@ -1387,11 +1389,11 @@
/* present, and the SPACING property should override the default */
/* spacing. */
if ( ft_memcmp( name, "DEFAULT_CHAR", 12 ) == 0 )
- font->default_char = fp->value.int32;
+ font->default_char = fp->value.l;
else if ( ft_memcmp( name, "FONT_ASCENT", 11 ) == 0 )
- font->font_ascent = fp->value.int32;
+ font->font_ascent = fp->value.l;
else if ( ft_memcmp( name, "FONT_DESCENT", 12 ) == 0 )
- font->font_descent = fp->value.int32;
+ font->font_descent = fp->value.l;
else if ( ft_memcmp( name, "SPACING", 7 ) == 0 )
{
if ( !fp->value.atom )
@@ -2044,7 +2046,7 @@
p->memory = 0;
{ /* setup */
- unsigned long i;
+ size_t i;
bdf_property_t* prop;
@@ -2054,7 +2056,7 @@
for ( i = 0, prop = (bdf_property_t*)_bdf_properties;
i < _num_bdf_properties; i++, prop++ )
{
- error = hash_insert( prop->name, (void *)i,
+ error = hash_insert( prop->name, i,
&(font->proptbl), memory );
if ( error )
goto Exit;
@@ -2472,7 +2474,7 @@
hn = hash_lookup( name, (hashtable *)font->internal );
- return hn ? ( font->props + (unsigned long)hn->data ) : 0;
+ return hn ? ( font->props + hn->data ) : 0;
}
diff --git a/src/3rdparty/freetype/src/cache/ftcbasic.c b/src/3rdparty/freetype/src/cache/ftcbasic.c
index a568b975bb..ebc8871ccc 100644
--- a/src/3rdparty/freetype/src/cache/ftcbasic.c
+++ b/src/3rdparty/freetype/src/cache/ftcbasic.c
@@ -4,7 +4,7 @@
/* */
/* The FreeType basic cache interface (body). */
/* */
-/* Copyright 2003, 2004, 2005, 2006, 2007 by */
+/* Copyright 2003, 2004, 2005, 2006, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -17,15 +17,17 @@
#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
#include FT_CACHE_H
#include "ftcglyph.h"
#include "ftcimage.h"
#include "ftcsbits.h"
-#include FT_INTERNAL_MEMORY_H
#include "ftccback.h"
#include "ftcerror.h"
+#define FT_COMPONENT trace_cache
+
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
@@ -140,8 +142,18 @@
error = FTC_Manager_LookupFace( manager, family->attrs.scaler.face_id,
&face );
+
+ if ( error || !face )
+ return result;
+
+ if ( (FT_ULong)face->num_glyphs > FT_UINT_MAX || 0 > face->num_glyphs )
+ {
+ FT_TRACE1(( "ftc_basic_family_get_count: too large number of glyphs " ));
+ FT_TRACE1(( "in this face, truncated\n", face->num_glyphs ));
+ }
+
if ( !error )
- result = face->num_glyphs;
+ result = (FT_UInt)face->num_glyphs;
return result;
}
@@ -304,7 +316,7 @@
FTC_Node *anode )
{
FTC_BasicQueryRec query;
- FTC_INode node = 0; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
FT_Error error;
FT_UInt32 hash;
@@ -320,13 +332,13 @@
if ( anode )
*anode = NULL;
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#if defined( FT_CONFIG_OPTION_OLD_INTERNALS ) && ( FT_INT_MAX > 0xFFFFU )
/*
* This one is a major hack used to detect whether we are passed a
* regular FTC_ImageType handle, or a legacy FTC_OldImageDesc one.
*/
- if ( type->width >= 0x10000 )
+ if ( (FT_ULong)type->width >= 0x10000L )
{
FTC_OldImageDesc desc = (FTC_OldImageDesc)type;
@@ -341,10 +353,16 @@
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
{
+ if ( (FT_ULong)(type->flags - FT_INT_MIN) > FT_UINT_MAX )
+ {
+ FT_TRACE1(( "FTC_ImageCache_Lookup: higher bits in load_flags" ));
+ FT_TRACE1(( "0x%x are dropped\n", (type->flags & ~((FT_ULong)FT_UINT_MAX)) ));
+ }
+
query.attrs.scaler.face_id = type->face_id;
query.attrs.scaler.width = type->width;
query.attrs.scaler.height = type->height;
- query.attrs.load_flags = type->flags;
+ query.attrs.load_flags = (FT_UInt)type->flags;
}
query.attrs.scaler.pixel = 1;
@@ -365,7 +383,7 @@
error = FTC_GCache_Lookup( FTC_GCACHE( cache ),
hash, gindex,
FTC_GQUERY( &query ),
- (FTC_Node*) &node );
+ &node );
#endif
if ( !error )
{
@@ -373,8 +391,8 @@
if ( anode )
{
- *anode = FTC_NODE( node );
- FTC_NODE( node )->ref_count++;
+ *anode = node;
+ node->ref_count++;
}
}
@@ -394,7 +412,7 @@
FTC_Node *anode )
{
FTC_BasicQueryRec query;
- FTC_INode node = 0; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
FT_Error error;
FT_UInt32 hash;
@@ -410,8 +428,15 @@
if ( anode )
*anode = NULL;
+ /* FT_Load_Glyph(), FT_Load_Char() take FT_UInt flags */
+ if ( load_flags > FT_UINT_MAX )
+ {
+ FT_TRACE1(( "FTC_ImageCache_LookupScaler: higher bits in load_flags" ));
+ FT_TRACE1(( "0x%x are dropped\n", (load_flags & ~((FT_ULong)FT_UINT_MAX)) ));
+ }
+
query.attrs.scaler = scaler[0];
- query.attrs.load_flags = load_flags;
+ query.attrs.load_flags = (FT_UInt)load_flags;
hash = FTC_BASIC_ATTR_HASH( &query.attrs ) + gindex;
@@ -428,8 +453,8 @@
if ( anode )
{
- *anode = FTC_NODE( node );
- FTC_NODE( node )->ref_count++;
+ *anode = node;
+ node->ref_count++;
}
}
@@ -630,7 +655,7 @@
{
FT_Error error;
FTC_BasicQueryRec query;
- FTC_SNode node = 0; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
FT_UInt32 hash;
@@ -643,12 +668,12 @@
*ansbit = NULL;
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#if defined( FT_CONFIG_OPTION_OLD_INTERNALS ) && ( FT_INT_MAX > 0xFFFFU )
/* This one is a major hack used to detect whether we are passed a
* regular FTC_ImageType handle, or a legacy FTC_OldImageDesc one.
*/
- if ( type->width >= 0x10000 )
+ if ( (FT_ULong)type->width >= 0x10000L )
{
FTC_OldImageDesc desc = (FTC_OldImageDesc)type;
@@ -663,10 +688,16 @@
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
{
+ if ( (FT_ULong)(type->flags - FT_INT_MIN) > FT_UINT_MAX )
+ {
+ FT_TRACE1(( "FTC_ImageCache_Lookup: higher bits in load_flags" ));
+ FT_TRACE1(( "0x%x are dropped\n", (type->flags & ~((FT_ULong)FT_UINT_MAX)) ));
+ }
+
query.attrs.scaler.face_id = type->face_id;
query.attrs.scaler.width = type->width;
query.attrs.scaler.height = type->height;
- query.attrs.load_flags = type->flags;
+ query.attrs.load_flags = (FT_UInt)type->flags;
}
query.attrs.scaler.pixel = 1;
@@ -690,17 +721,18 @@
hash,
gindex,
FTC_GQUERY( &query ),
- (FTC_Node*)&node );
+ &node );
#endif
if ( error )
goto Exit;
- *ansbit = node->sbits + ( gindex - FTC_GNODE( node )->gindex );
+ *ansbit = FTC_SNODE( node )->sbits +
+ ( gindex - FTC_GNODE( node )->gindex );
if ( anode )
{
- *anode = FTC_NODE( node );
- FTC_NODE( node )->ref_count++;
+ *anode = node;
+ node->ref_count++;
}
Exit:
@@ -720,7 +752,7 @@
{
FT_Error error;
FTC_BasicQueryRec query;
- FTC_SNode node = 0; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
FT_UInt32 hash;
@@ -733,8 +765,15 @@
*ansbit = NULL;
+ /* FT_Load_Glyph(), FT_Load_Char() take FT_UInt flags */
+ if ( load_flags > FT_UINT_MAX )
+ {
+ FT_TRACE1(( "FTC_ImageCache_LookupScaler: higher bits in load_flags" ));
+ FT_TRACE1(( "0x%x are dropped\n", (load_flags & ~((FT_ULong)FT_UINT_MAX)) ));
+ }
+
query.attrs.scaler = scaler[0];
- query.attrs.load_flags = load_flags;
+ query.attrs.load_flags = (FT_UInt)load_flags;
/* beware, the hash must be the same for all glyph ranges! */
hash = FTC_BASIC_ATTR_HASH( &query.attrs ) +
@@ -750,12 +789,13 @@
if ( error )
goto Exit;
- *ansbit = node->sbits + ( gindex - FTC_GNODE( node )->gindex );
+ *ansbit = FTC_SNODE( node )->sbits +
+ ( gindex - FTC_GNODE( node )->gindex );
if ( anode )
{
- *anode = FTC_NODE( node );
- FTC_NODE( node )->ref_count++;
+ *anode = node;
+ node->ref_count++;
}
Exit:
diff --git a/src/3rdparty/freetype/src/cache/ftccache.c b/src/3rdparty/freetype/src/cache/ftccache.c
index f3e699c385..463addd99b 100644
--- a/src/3rdparty/freetype/src/cache/ftccache.c
+++ b/src/3rdparty/freetype/src/cache/ftccache.c
@@ -4,7 +4,7 @@
/* */
/* The FreeType internal cache interface (body). */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
+/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -24,6 +24,9 @@
#include "ftccback.h"
#include "ftcerror.h"
+#undef FT_COMPONENT
+#define FT_COMPONENT trace_cache
+
#define FTC_HASH_MAX_LOAD 2
#define FTC_HASH_MIN_LOAD 1
@@ -93,9 +96,9 @@
for (;;)
{
FTC_Node node, *pnode;
- FT_UInt p = cache->p;
- FT_UInt mask = cache->mask;
- FT_UInt count = mask + p + 1; /* number of buckets */
+ FT_UFast p = cache->p;
+ FT_UFast mask = cache->mask;
+ FT_UFast count = mask + p + 1; /* number of buckets */
/* do we need to shrink the buckets array? */
@@ -153,7 +156,7 @@
/* do we need to expand the buckets array? */
else if ( cache->slack > (FT_Long)count * FTC_HASH_SUB_LOAD )
{
- FT_UInt old_index = p + mask;
+ FT_UFast old_index = p + mask;
FTC_Node* pold;
@@ -216,7 +219,7 @@
if ( node == NULL )
{
- FT_ERROR(( "ftc_node_hash_unlink: unknown node!\n" ));
+ FT_TRACE0(( "ftc_node_hash_unlink: unknown node\n" ));
return;
}
@@ -273,7 +276,7 @@
/* find node's cache */
if ( node->cache_index >= manager->num_caches )
{
- FT_ERROR(( "ftc_node_destroy: invalid node handle\n" ));
+ FT_TRACE0(( "ftc_node_destroy: invalid node handle\n" ));
return;
}
#endif
@@ -283,7 +286,7 @@
#ifdef FT_DEBUG_ERROR
if ( cache == NULL )
{
- FT_ERROR(( "ftc_node_destroy: invalid node handle\n" ));
+ FT_TRACE0(( "ftc_node_destroy: invalid node handle\n" ));
return;
}
#endif
@@ -302,7 +305,7 @@
#if 0
/* check, just in case of general corruption :-) */
if ( manager->num_nodes == 0 )
- FT_ERROR(( "ftc_node_destroy: invalid cache node count! = %d\n",
+ FT_TRACE0(( "ftc_node_destroy: invalid cache node count (%d)\n",
manager->num_nodes ));
#endif
}
@@ -347,7 +350,7 @@
{
FTC_Manager manager = cache->manager;
FT_UFast i;
- FT_UInt count;
+ FT_UFast count;
count = cache->p + cache->mask + 1;
diff --git a/src/3rdparty/freetype/src/cache/ftccache.h b/src/3rdparty/freetype/src/cache/ftccache.h
index 8c0a7c94fe..2082bc4f4f 100644
--- a/src/3rdparty/freetype/src/cache/ftccache.h
+++ b/src/3rdparty/freetype/src/cache/ftccache.h
@@ -4,7 +4,7 @@
/* */
/* FreeType internal cache interface (specification). */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
+/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -91,7 +91,7 @@ FT_BEGIN_HEADER
FT_Pointer query,
FTC_Cache cache );
- typedef FT_ULong
+ typedef FT_Offset
(*FTC_Node_WeightFunc)( FTC_Node node,
FTC_Cache cache );
@@ -121,7 +121,7 @@ FT_BEGIN_HEADER
FTC_Node_CompareFunc node_remove_faceid;
FTC_Node_FreeFunc node_free;
- FT_UInt cache_size;
+ FT_Offset cache_size;
FTC_Cache_InitFunc cache_init;
FTC_Cache_DoneFunc cache_done;
@@ -202,7 +202,7 @@ FT_BEGIN_HEADER
FTC_Cache _cache = FTC_CACHE(cache); \
FT_UInt32 _hash = (FT_UInt32)(hash); \
FTC_Node_CompareFunc _nodcomp = (FTC_Node_CompareFunc)(nodecmp); \
- FT_UInt _idx; \
+ FT_UFast _idx; \
\
\
error = 0; \
@@ -246,8 +246,7 @@ FT_BEGIN_HEADER
error = FTC_Cache_NewNode( _cache, _hash, query, &_node ); \
\
_Ok: \
- _pnode = (FTC_Node*)(void*)&(node); \
- *_pnode = _node; \
+ node = _node; \
FT_END_STMNT
#else /* !FTC_INLINE */
diff --git a/src/3rdparty/freetype/src/cache/ftccback.h b/src/3rdparty/freetype/src/cache/ftccback.h
index 86e72a7514..4d0818db27 100644
--- a/src/3rdparty/freetype/src/cache/ftccback.h
+++ b/src/3rdparty/freetype/src/cache/ftccback.h
@@ -36,7 +36,7 @@
FT_Pointer gquery,
FTC_Cache cache );
- FT_LOCAL( FT_ULong )
+ FT_LOCAL( FT_Offset )
ftc_inode_weight( FTC_Node inode,
FTC_Cache cache );
@@ -50,7 +50,7 @@
FT_Pointer gquery,
FTC_Cache cache );
- FT_LOCAL( FT_ULong )
+ FT_LOCAL( FT_Offset )
ftc_snode_weight( FTC_Node snode,
FTC_Cache cache );
diff --git a/src/3rdparty/freetype/src/cache/ftccmap.c b/src/3rdparty/freetype/src/cache/ftccmap.c
index 4c6a7fd960..a802b0557c 100644
--- a/src/3rdparty/freetype/src/cache/ftccmap.c
+++ b/src/3rdparty/freetype/src/cache/ftccmap.c
@@ -4,7 +4,7 @@
/* */
/* FreeType CharMap cache (body) */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -22,7 +22,6 @@
#include "ftcmanag.h"
#include FT_INTERNAL_MEMORY_H
#include FT_INTERNAL_DEBUG_H
-#include FT_TRUETYPE_IDS_H
#include "ftccback.h"
#include "ftcerror.h"
@@ -86,9 +85,9 @@
#define FTC_CMAP_INDICES_MAX 128
/* compute a query/node hash */
-#define FTC_CMAP_HASH( faceid, index, charcode ) \
- ( FTC_FACE_ID_HASH( faceid ) + 211 * ( index ) + \
- ( (char_code) / FTC_CMAP_INDICES_MAX ) )
+#define FTC_CMAP_HASH( faceid, index, charcode ) \
+ ( FTC_FACE_ID_HASH( faceid ) + 211 * (index) + \
+ ( (charcode) / FTC_CMAP_INDICES_MAX ) )
/* the charmap query */
typedef struct FTC_CMapQueryRec_
@@ -175,7 +174,7 @@
/* compute the weight of a given cmap node */
- FT_CALLBACK_DEF( FT_ULong )
+ FT_CALLBACK_DEF( FT_Offset )
ftc_cmap_node_weight( FTC_Node cnode,
FTC_Cache cache )
{
@@ -284,7 +283,7 @@
{
FTC_Cache cache = FTC_CACHE( cmap_cache );
FTC_CMapQueryRec query;
- FTC_CMapNode node;
+ FTC_Node node;
FT_Error error;
FT_UInt gindex = 0;
FT_UInt32 hash;
@@ -304,7 +303,7 @@
if ( !cache )
{
- FT_ERROR(( "FTC_CMapCache_Lookup: bad arguments, returning 0!\n" ));
+ FT_TRACE0(( "FTC_CMapCache_Lookup: bad arguments, returning 0\n" ));
return 0;
}
@@ -374,18 +373,21 @@
FTC_CACHE_LOOKUP_CMP( cache, ftc_cmap_node_compare, hash, &query,
node, error );
#else
- error = FTC_Cache_Lookup( cache, hash, &query, (FTC_Node*) &node );
+ error = FTC_Cache_Lookup( cache, hash, &query, &node );
#endif
if ( error )
goto Exit;
- FT_ASSERT( (FT_UInt)( char_code - node->first ) < FTC_CMAP_INDICES_MAX );
+ FT_ASSERT( (FT_UInt)( char_code - FTC_CMAP_NODE( node )->first ) <
+ FTC_CMAP_INDICES_MAX );
/* something rotten can happen with rogue clients */
- if ( (FT_UInt)( char_code - node->first >= FTC_CMAP_INDICES_MAX ) )
+ if ( (FT_UInt)( char_code - FTC_CMAP_NODE( node )->first >=
+ FTC_CMAP_INDICES_MAX ) )
return 0;
- gindex = node->indices[char_code - node->first];
+ gindex = FTC_CMAP_NODE( node )->indices[char_code -
+ FTC_CMAP_NODE( node )->first];
if ( gindex == FTC_CMAP_UNKNOWN )
{
FT_Face face;
@@ -393,7 +395,9 @@
gindex = 0;
- error = FTC_Manager_LookupFace( cache->manager, node->face_id, &face );
+ error = FTC_Manager_LookupFace( cache->manager,
+ FTC_CMAP_NODE( node )->face_id,
+ &face );
if ( error )
goto Exit;
@@ -414,7 +418,9 @@
FT_Set_Charmap( face, old );
}
- node->indices[char_code - node->first] = (FT_UShort)gindex;
+ FTC_CMAP_NODE( node )->indices[char_code -
+ FTC_CMAP_NODE( node )->first]
+ = (FT_UShort)gindex;
}
Exit:
diff --git a/src/3rdparty/freetype/src/cache/ftcglyph.c b/src/3rdparty/freetype/src/cache/ftcglyph.c
index 5c03abe055..a9ab0c319f 100644
--- a/src/3rdparty/freetype/src/cache/ftcglyph.c
+++ b/src/3rdparty/freetype/src/cache/ftcglyph.c
@@ -4,7 +4,7 @@
/* */
/* FreeType Glyph Image (FT_Glyph) cache (body). */
/* */
-/* Copyright 2000-2001, 2003, 2004, 2006 by */
+/* Copyright 2000-2001, 2003, 2004, 2006, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -20,8 +20,6 @@
#include FT_CACHE_H
#include "ftcglyph.h"
#include FT_ERRORS_H
-#include FT_INTERNAL_OBJECTS_H
-#include FT_INTERNAL_DEBUG_H
#include "ftccback.h"
#include "ftcerror.h"
@@ -73,8 +71,8 @@
FT_UNUSED( cache );
- return FT_BOOL( gnode->family == gquery->family &&
- gnode->gindex == gquery->gindex );
+ return FT_BOOL( gnode->family == gquery->family &&
+ gnode->gindex == gquery->gindex );
}
diff --git a/src/3rdparty/freetype/src/cache/ftcglyph.h b/src/3rdparty/freetype/src/cache/ftcglyph.h
index 87a4199bfd..c18f9c3af3 100644
--- a/src/3rdparty/freetype/src/cache/ftcglyph.h
+++ b/src/3rdparty/freetype/src/cache/ftcglyph.h
@@ -277,12 +277,14 @@ FT_BEGIN_HEADER
FTC_GCache _gcache = FTC_GCACHE( cache ); \
FTC_GQuery _gquery = (FTC_GQuery)( query ); \
FTC_MruNode_CompareFunc _fcompare = (FTC_MruNode_CompareFunc)(famcmp); \
+ FTC_MruNode _mrunode; \
\
\
_gquery->gindex = (gindex); \
\
FTC_MRULIST_LOOKUP_CMP( &_gcache->families, _gquery, _fcompare, \
- _gquery->family, error ); \
+ _mrunode, error ); \
+ _gquery->family = FTC_FAMILY( _mrunode ); \
if ( !error ) \
{ \
FTC_Family _gqfamily = _gquery->family; \
@@ -303,11 +305,10 @@ FT_BEGIN_HEADER
#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \
gindex, query, node, error ) \
FT_BEGIN_STMNT \
- void* _n = &(node); \
- \
\
error = FTC_GCache_Lookup( FTC_GCACHE( cache ), hash, gindex, \
- FTC_GQUERY( query ), (FTC_Node*)_n ); \
+ FTC_GQUERY( query ), node ); \
+ \
FT_END_STMNT
#endif /* !FTC_INLINE */
diff --git a/src/3rdparty/freetype/src/cache/ftcimage.c b/src/3rdparty/freetype/src/cache/ftcimage.c
index 15d4e80c8c..417daf2aae 100644
--- a/src/3rdparty/freetype/src/cache/ftcimage.c
+++ b/src/3rdparty/freetype/src/cache/ftcimage.c
@@ -103,12 +103,12 @@
}
- FT_LOCAL_DEF( FT_ULong )
+ FT_LOCAL_DEF( FT_Offset )
ftc_inode_weight( FTC_Node ftcinode,
FTC_Cache ftccache )
{
FTC_INode inode = (FTC_INode)ftcinode;
- FT_ULong size = 0;
+ FT_Offset size = 0;
FT_Glyph glyph = inode->glyph;
FT_UNUSED( ftccache );
@@ -151,7 +151,7 @@
#if 0
- FT_LOCAL_DEF( FT_ULong )
+ FT_LOCAL_DEF( FT_Offset )
FTC_INode_Weight( FTC_INode inode )
{
return ftc_inode_weight( FTC_NODE( inode ), NULL );
diff --git a/src/3rdparty/freetype/src/cache/ftcmanag.c b/src/3rdparty/freetype/src/cache/ftcmanag.c
index 4d44094ce3..f2a298e7d9 100644
--- a/src/3rdparty/freetype/src/cache/ftcmanag.c
+++ b/src/3rdparty/freetype/src/cache/ftcmanag.c
@@ -26,6 +26,10 @@
#include "ftccback.h"
#include "ftcerror.h"
+#ifdef FT_CONFIG_OPTION_PIC
+#error "cache system does not support PIC yet"
+#endif
+
#undef FT_COMPONENT
#define FT_COMPONENT trace_cache
@@ -78,6 +82,8 @@
} FTC_SizeNodeRec, *FTC_SizeNode;
+#define FTC_SIZE_NODE( x ) ( (FTC_SizeNode)( x ) )
+
FT_CALLBACK_DEF( void )
ftc_size_node_done( FTC_MruNode ftcnode,
@@ -176,8 +182,8 @@
FTC_Scaler scaler,
FT_Size *asize )
{
- FT_Error error;
- FTC_SizeNode node;
+ FT_Error error;
+ FTC_MruNode mrunode;
if ( asize == NULL )
@@ -191,14 +197,14 @@
#ifdef FTC_INLINE
FTC_MRULIST_LOOKUP_CMP( &manager->sizes, scaler, ftc_size_node_compare,
- node, error );
+ mrunode, error );
#else
- error = FTC_MruList_Lookup( &manager->sizes, scaler, (FTC_MruNode*)&node );
+ error = FTC_MruList_Lookup( &manager->sizes, scaler, &mrunode );
#endif
if ( !error )
- *asize = node->size;
+ *asize = FTC_SIZE_NODE( mrunode )->size;
return error;
}
@@ -220,6 +226,8 @@
} FTC_FaceNodeRec, *FTC_FaceNode;
+#define FTC_FACE_NODE( x ) ( ( FTC_FaceNode )( x ) )
+
FT_CALLBACK_DEF( FT_Error )
ftc_face_node_init( FTC_MruNode ftcnode,
@@ -301,8 +309,8 @@
FTC_FaceID face_id,
FT_Face *aface )
{
- FT_Error error;
- FTC_FaceNode node;
+ FT_Error error;
+ FTC_MruNode mrunode;
if ( aface == NULL )
@@ -317,14 +325,14 @@
#ifdef FTC_INLINE
FTC_MRULIST_LOOKUP_CMP( &manager->faces, face_id, ftc_face_node_compare,
- node, error );
+ mrunode, error );
#else
- error = FTC_MruList_Lookup( &manager->faces, face_id, (FTC_MruNode*)&node );
+ error = FTC_MruList_Lookup( &manager->faces, face_id, &mrunode );
#endif
if ( !error )
- *aface = node->face;
+ *aface = FTC_FACE_NODE( mrunode )->face;
return error;
}
@@ -476,8 +484,8 @@
if ( (FT_UInt)node->cache_index >= manager->num_caches )
- FT_ERROR(( "FTC_Manager_Check: invalid node (cache index = %ld\n",
- node->cache_index ));
+ FT_TRACE0(( "FTC_Manager_Check: invalid node (cache index = %ld\n",
+ node->cache_index ));
else
weight += cache->clazz.node_weight( node, cache );
@@ -486,8 +494,8 @@
} while ( node != first );
if ( weight != manager->cur_weight )
- FT_ERROR(( "FTC_Manager_Check: invalid weight %ld instead of %ld\n",
- manager->cur_weight, weight ));
+ FT_TRACE0(( "FTC_Manager_Check: invalid weight %ld instead of %ld\n",
+ manager->cur_weight, weight ));
}
/* check circular list */
@@ -505,9 +513,9 @@
} while ( node != first );
if ( count != manager->num_nodes )
- FT_ERROR((
- "FTC_Manager_Check: invalid cache node count %d instead of %d\n",
- manager->num_nodes, count ));
+ FT_TRACE0(( "FTC_Manager_Check:"
+ " invalid cache node count %d instead of %d\n",
+ manager->num_nodes, count ));
}
}
@@ -534,9 +542,9 @@
#ifdef FT_DEBUG_ERROR
FTC_Manager_Check( manager );
- FT_ERROR(( "compressing, weight = %ld, max = %ld, nodes = %d\n",
- manager->cur_weight, manager->max_weight,
- manager->num_nodes ));
+ FT_TRACE0(( "compressing, weight = %ld, max = %ld, nodes = %d\n",
+ manager->cur_weight, manager->max_weight,
+ manager->num_nodes ));
#endif
if ( manager->cur_weight < manager->max_weight || first == NULL )
@@ -579,8 +587,8 @@
if ( manager->num_caches >= FTC_MAX_CACHES )
{
error = FTC_Err_Too_Many_Caches;
- FT_ERROR(( "%s: too many registered caches\n",
- "FTC_Manager_Register_Cache" ));
+ FT_ERROR(( "FTC_Manager_RegisterCache:"
+ " too many registered caches\n" ));
goto Exit;
}
@@ -661,7 +669,9 @@
/* this will remove all FTC_SizeNode that correspond to
* the face_id as well
*/
- FTC_MruList_RemoveSelection( &manager->faces, NULL, face_id );
+ FTC_MruList_RemoveSelection( &manager->faces,
+ (FTC_MruNode_CompareFunc)NULL,
+ face_id );
for ( nn = 0; nn < manager->num_caches; nn++ )
FTC_Cache_RemoveFaceID( manager->caches[nn], face_id );
diff --git a/src/3rdparty/freetype/src/cache/ftcmru.c b/src/3rdparty/freetype/src/cache/ftcmru.c
index 3a6c625afa..9944b58980 100644
--- a/src/3rdparty/freetype/src/cache/ftcmru.c
+++ b/src/3rdparty/freetype/src/cache/ftcmru.c
@@ -4,7 +4,7 @@
/* */
/* FreeType MRU support (body). */
/* */
-/* Copyright 2003, 2004, 2006 by */
+/* Copyright 2003, 2004, 2006, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -46,7 +46,7 @@
{
if ( cnode == node )
{
- fprintf( stderr, "FTC_MruNode_Prepend: invalid action!\n" );
+ fprintf( stderr, "FTC_MruNode_Prepend: invalid action\n" );
exit( 2 );
}
cnode = cnode->next;
@@ -94,7 +94,7 @@
} while ( cnode != first );
- fprintf( stderr, "FTC_MruNode_Up: invalid action!\n" );
+ fprintf( stderr, "FTC_MruNode_Up: invalid action\n" );
exit( 2 );
Ok:
}
@@ -141,7 +141,7 @@
} while ( cnode != first );
- fprintf( stderr, "FTC_MruNode_Remove: invalid action!\n" );
+ fprintf( stderr, "FTC_MruNode_Remove: invalid action\n" );
exit( 2 );
Ok:
}
diff --git a/src/3rdparty/freetype/src/cache/ftcmru.h b/src/3rdparty/freetype/src/cache/ftcmru.h
index c8f0c6ef6e..5739439f45 100644
--- a/src/3rdparty/freetype/src/cache/ftcmru.h
+++ b/src/3rdparty/freetype/src/cache/ftcmru.h
@@ -107,7 +107,7 @@ FT_BEGIN_HEADER
typedef struct FTC_MruListClassRec_
{
- FT_UInt node_size;
+ FT_Offset node_size;
FTC_MruNode_CompareFunc node_compare;
FTC_MruNode_InitFunc node_init;
FTC_MruNode_ResetFunc node_reset;
@@ -163,7 +163,7 @@ FT_BEGIN_HEADER
FT_BEGIN_STMNT \
FTC_MruNode* _pfirst = &(list)->nodes; \
FTC_MruNode_CompareFunc _compare = (FTC_MruNode_CompareFunc)(compare); \
- FTC_MruNode _first, _node, *_pnode; \
+ FTC_MruNode _first, _node; \
\
\
error = 0; \
@@ -180,8 +180,7 @@ FT_BEGIN_HEADER
if ( _node != _first ) \
FTC_MruNode_Up( _pfirst, _node ); \
\
- _pnode = (FTC_MruNode*)(void*)&(node); \
- *_pnode = _node; \
+ node = _node; \
goto _MruOk; \
} \
_node = _node->next; \
diff --git a/src/3rdparty/freetype/src/cache/ftcsbits.c b/src/3rdparty/freetype/src/cache/ftcsbits.c
index 72f139d565..60d46aa7a0 100644
--- a/src/3rdparty/freetype/src/cache/ftcsbits.c
+++ b/src/3rdparty/freetype/src/cache/ftcsbits.c
@@ -4,7 +4,7 @@
/* */
/* FreeType sbits manager (body). */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006 by */
+/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -26,6 +26,9 @@
#include "ftccback.h"
#include "ftcerror.h"
+#undef FT_COMPONENT
+#define FT_COMPONENT trace_cache
+
/*************************************************************************/
/*************************************************************************/
@@ -129,13 +132,13 @@
FT_Int temp;
FT_GlyphSlot slot = face->glyph;
FT_Bitmap* bitmap = &slot->bitmap;
- FT_Int xadvance, yadvance;
+ FT_Pos xadvance, yadvance; /* FT_GlyphSlot->advance.{x|y} */
if ( slot->format != FT_GLYPH_FORMAT_BITMAP )
{
- FT_ERROR(( "%s: glyph loaded didn't return a bitmap!\n",
- "ftc_snode_load" ));
+ FT_TRACE0(( "ftc_snode_load:"
+ " glyph loaded didn't return a bitmap\n" ));
goto BadGlyph;
}
@@ -263,7 +266,7 @@
}
- FT_LOCAL_DEF( FT_ULong )
+ FT_LOCAL_DEF( FT_Offset )
ftc_snode_weight( FTC_Node ftcsnode,
FTC_Cache cache )
{
@@ -271,7 +274,7 @@
FT_UInt count = snode->count;
FTC_SBit sbit = snode->sbits;
FT_Int pitch;
- FT_ULong size;
+ FT_Offset size;
FT_UNUSED( cache );
@@ -300,7 +303,7 @@
#if 0
- FT_LOCAL_DEF( FT_ULong )
+ FT_LOCAL_DEF( FT_Offset )
FTC_SNode_Weight( FTC_SNode snode )
{
return ftc_snode_weight( FTC_NODE( snode ), NULL );
diff --git a/src/3rdparty/freetype/src/cff/Jamfile b/src/3rdparty/freetype/src/cff/Jamfile
index 6d0bb1b867..6705d3cfdb 100644
--- a/src/3rdparty/freetype/src/cff/Jamfile
+++ b/src/3rdparty/freetype/src/cff/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) cff ;
if $(FT2_MULTI)
{
- _sources = cffdrivr cffgload cffload cffobjs cffparse cffcmap ;
+ _sources = cffdrivr cffgload cffload cffobjs cffparse cffcmap cffpic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/cff/cff.c b/src/3rdparty/freetype/src/cff/cff.c
index e6d8954c9a..fccfd442f5 100644
--- a/src/3rdparty/freetype/src/cff/cff.c
+++ b/src/3rdparty/freetype/src/cff/cff.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "cffpic.c"
#include "cffdrivr.c"
#include "cffparse.c"
#include "cffload.c"
diff --git a/src/3rdparty/freetype/src/cff/cffcmap.c b/src/3rdparty/freetype/src/cff/cffcmap.c
index 578d048bed..46d603e3a8 100644
--- a/src/3rdparty/freetype/src/cff/cffcmap.c
+++ b/src/3rdparty/freetype/src/cff/cffcmap.c
@@ -65,7 +65,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
cff_cmap_encoding_char_next( CFF_CMapStd cmap,
FT_UInt32 *pchar_code )
{
@@ -99,9 +99,7 @@
}
- FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec
- cff_cmap_encoding_class_rec =
- {
+ FT_DEFINE_CMAP_CLASS(cff_cmap_encoding_class_rec,
sizeof ( CFF_CMapStdRec ),
(FT_CMap_InitFunc) cff_cmap_encoding_init,
@@ -110,7 +108,7 @@
(FT_CMap_CharNextFunc) cff_cmap_encoding_char_next,
NULL, NULL, NULL, NULL, NULL
- };
+ )
/*************************************************************************/
@@ -194,7 +192,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
cff_cmap_unicode_char_next( PS_Unicodes unicodes,
FT_UInt32 *pchar_code )
{
@@ -207,9 +205,7 @@
}
- FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec
- cff_cmap_unicode_class_rec =
- {
+ FT_DEFINE_CMAP_CLASS(cff_cmap_unicode_class_rec,
sizeof ( PS_UnicodesRec ),
(FT_CMap_InitFunc) cff_cmap_unicode_init,
@@ -218,7 +214,6 @@
(FT_CMap_CharNextFunc) cff_cmap_unicode_char_next,
NULL, NULL, NULL, NULL, NULL
- };
-
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/cff/cffcmap.h b/src/3rdparty/freetype/src/cff/cffcmap.h
index 3809b85611..3f7f67bbe0 100644
--- a/src/3rdparty/freetype/src/cff/cffcmap.h
+++ b/src/3rdparty/freetype/src/cff/cffcmap.h
@@ -43,8 +43,7 @@ FT_BEGIN_HEADER
} CFF_CMapStdRec;
- FT_CALLBACK_TABLE const FT_CMap_ClassRec
- cff_cmap_encoding_class_rec;
+ FT_DECLARE_CMAP_CLASS(cff_cmap_encoding_class_rec)
/*************************************************************************/
@@ -57,8 +56,7 @@ FT_BEGIN_HEADER
/* unicode (synthetic) cmaps */
- FT_CALLBACK_TABLE const FT_CMap_ClassRec
- cff_cmap_unicode_class_rec;
+ FT_DECLARE_CMAP_CLASS(cff_cmap_unicode_class_rec)
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/cff/cffdrivr.c b/src/3rdparty/freetype/src/cff/cffdrivr.c
index 3dd86f2aa8..dad0b65d8b 100644
--- a/src/3rdparty/freetype/src/cff/cffdrivr.c
+++ b/src/3rdparty/freetype/src/cff/cffdrivr.c
@@ -21,7 +21,6 @@
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_SFNT_H
-#include FT_TRUETYPE_IDS_H
#include FT_SERVICE_CID_H
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
#include FT_SERVICE_POSTSCRIPT_INFO_H
@@ -32,8 +31,10 @@
#include "cffgload.h"
#include "cffload.h"
#include "cffcmap.h"
+#include "cffparse.h"
#include "cfferrs.h"
+#include "cffpic.h"
#include FT_SERVICE_XFREE86_NAME_H
#include FT_SERVICE_GLYPH_DICT_H
@@ -199,7 +200,7 @@
FT_GlyphSlot slot = face->glyph;
- flags |= FT_LOAD_ADVANCE_ONLY;
+ flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY;
for ( nn = 0; nn < count; nn++ )
{
@@ -238,10 +239,10 @@
FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS );
if ( !psnames )
{
- FT_ERROR(( "cff_get_glyph_name:" ));
- FT_ERROR(( " cannot get glyph name from CFF & CEF fonts\n" ));
- FT_ERROR(( " " ));
- FT_ERROR(( " without the `PSNames' module\n" ));
+ FT_ERROR(( "cff_get_glyph_name:"
+ " cannot get glyph name from CFF & CEF fonts\n"
+ " "
+ " without the `PSNames' module\n" ));
error = CFF_Err_Unknown_File_Format;
goto Exit;
}
@@ -309,11 +310,10 @@
}
- static const FT_Service_GlyphDictRec cff_service_glyph_dict =
- {
+ FT_DEFINE_SERVICE_GLYPHDICTREC(cff_service_glyph_dict,
(FT_GlyphDict_GetNameFunc) cff_get_glyph_name,
- (FT_GlyphDict_NameIndexFunc)cff_get_name_index,
- };
+ (FT_GlyphDict_NameIndexFunc)cff_get_name_index
+ )
/*
@@ -378,13 +378,12 @@
}
- static const FT_Service_PsInfoRec cff_service_ps_info =
- {
+ FT_DEFINE_SERVICE_PSINFOREC(cff_service_ps_info,
(PS_GetFontInfoFunc) cff_ps_get_font_info,
(PS_GetFontExtraFunc) NULL,
(PS_HasGlyphNamesFunc) cff_ps_has_glyph_names,
(PS_GetFontPrivateFunc)NULL /* unsupported with CFF fonts */
- };
+ )
/*
@@ -402,10 +401,9 @@
}
- static const FT_Service_PsFontNameRec cff_service_ps_name =
- {
+ FT_DEFINE_SERVICE_PSFONTNAMEREC(cff_service_ps_name,
(FT_PsName_GetFunc)cff_get_ps_name
- };
+ )
/*
@@ -424,16 +422,16 @@
{
FT_CMap cmap = FT_CMAP( charmap );
FT_Error error = CFF_Err_Ok;
+ FT_Face face = FT_CMAP_FACE( cmap );
+ FT_Library library = FT_FACE_LIBRARY( face );
cmap_info->language = 0;
cmap_info->format = 0;
- if ( cmap->clazz != &cff_cmap_encoding_class_rec &&
- cmap->clazz != &cff_cmap_unicode_class_rec )
+ if ( cmap->clazz != &FT_CFF_CMAP_ENCODING_CLASS_REC_GET &&
+ cmap->clazz != &FT_CFF_CMAP_UNICODE_CLASS_REC_GET )
{
- FT_Face face = FT_CMAP_FACE( cmap );
- FT_Library library = FT_FACE_LIBRARY( face );
FT_Module sfnt = FT_Get_Module( library, "sfnt" );
FT_Service_TTCMaps service =
(FT_Service_TTCMaps)ft_module_get_service( sfnt,
@@ -448,10 +446,9 @@
}
- static const FT_Service_TTCMapsRec cff_service_get_cmap_info =
- {
+ FT_DEFINE_SERVICE_TTCMAPSREC(cff_service_get_cmap_info,
(TT_CMap_Info_GetFunc)cff_get_cmap_info
- };
+ )
/*
@@ -498,8 +495,19 @@
*ordering = cff->ordering;
}
+ /*
+ * XXX: According to Adobe TechNote #5176, the supplement in CFF
+ * can be a real number. We truncate it to fit public API
+ * since freetype-2.3.6.
+ */
if ( supplement )
- *supplement = dict->cid_supplement;
+ {
+ if ( dict->cid_supplement < FT_INT_MIN ||
+ dict->cid_supplement > FT_INT_MAX )
+ FT_TRACE1(( "cff_get_ros: too large supplement %d is truncated\n",
+ dict->cid_supplement ));
+ *supplement = (FT_Int)dict->cid_supplement;
+ }
}
Fail:
@@ -570,12 +578,11 @@
}
- static const FT_Service_CIDRec cff_service_cid_info =
- {
+ FT_DEFINE_SERVICE_CIDREC(cff_service_cid_info,
(FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros,
(FT_CID_GetIsInternallyCIDKeyedFunc) cff_get_is_cid,
(FT_CID_GetCIDFromGlyphIndexFunc) cff_get_cid_from_glyph_index
- };
+ )
/*************************************************************************/
@@ -589,20 +596,24 @@
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
-
- static const FT_ServiceDescRec cff_services[] =
- {
- { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF },
- { FT_SERVICE_ID_POSTSCRIPT_INFO, &cff_service_ps_info },
- { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name },
#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES
- { FT_SERVICE_ID_GLYPH_DICT, &cff_service_glyph_dict },
+ FT_DEFINE_SERVICEDESCREC6(cff_services,
+ FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF,
+ FT_SERVICE_ID_POSTSCRIPT_INFO, &FT_CFF_SERVICE_PS_INFO_GET,
+ FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &FT_CFF_SERVICE_PS_NAME_GET,
+ FT_SERVICE_ID_GLYPH_DICT, &FT_CFF_SERVICE_GLYPH_DICT_GET,
+ FT_SERVICE_ID_TT_CMAP, &FT_CFF_SERVICE_GET_CMAP_INFO_GET,
+ FT_SERVICE_ID_CID, &FT_CFF_SERVICE_CID_INFO_GET
+ )
+#else
+ FT_DEFINE_SERVICEDESCREC5(cff_services,
+ FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF,
+ FT_SERVICE_ID_POSTSCRIPT_INFO, &FT_CFF_SERVICE_PS_INFO_GET,
+ FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &FT_CFF_SERVICE_PS_NAME_GET,
+ FT_SERVICE_ID_TT_CMAP, &FT_CFF_SERVICE_GET_CMAP_INFO_GET,
+ FT_SERVICE_ID_CID, &FT_CFF_SERVICE_CID_INFO_GET
+ )
#endif
- { FT_SERVICE_ID_TT_CMAP, &cff_service_get_cmap_info },
- { FT_SERVICE_ID_CID, &cff_service_cid_info },
- { NULL, NULL }
- };
-
FT_CALLBACK_DEF( FT_Module_Interface )
cff_get_interface( FT_Module driver, /* CFF_Driver */
@@ -612,10 +623,13 @@
FT_Module_Interface result;
- result = ft_service_list_lookup( cff_services, module_interface );
+ result = ft_service_list_lookup( FT_CFF_SERVICES_GET, module_interface );
if ( result != NULL )
return result;
+ if ( !driver )
+ return NULL;
+
/* we pass our request to the `sfnt' module */
sfnt = FT_Get_Module( driver->library, "sfnt" );
@@ -625,11 +639,13 @@
/* The FT_DriverInterface structure is defined in ftdriver.h. */
- FT_CALLBACK_TABLE_DEF
- const FT_Driver_ClassRec cff_driver_class =
- {
- /* begin with the FT_Module_Class fields */
- {
+#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
+#define CFF_SIZE_SELECT cff_size_select
+#else
+#define CFF_SIZE_SELECT 0
+#endif
+
+ FT_DEFINE_DRIVER(cff_driver_class,
FT_MODULE_FONT_DRIVER |
FT_MODULE_DRIVER_SCALABLE |
FT_MODULE_DRIVER_HAS_HINTER,
@@ -644,7 +660,6 @@
cff_driver_init,
cff_driver_done,
cff_get_interface,
- },
/* now the specific driver fields */
sizeof( TT_FaceRec ),
@@ -658,10 +673,8 @@
cff_slot_init,
cff_slot_done,
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- ft_stub_set_char_sizes,
- ft_stub_set_pixel_sizes,
-#endif
+ ft_stub_set_char_sizes, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ ft_stub_set_pixel_sizes, /* FT_CONFIG_OPTION_OLD_INTERNALS */
Load_Glyph,
@@ -671,12 +684,8 @@
cff_size_request,
-#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
- cff_size_select
-#else
- 0 /* FT_Size_SelectFunc */
-#endif
- };
+ CFF_SIZE_SELECT
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/cff/cffdrivr.h b/src/3rdparty/freetype/src/cff/cffdrivr.h
index 553848c0a9..50e8138701 100644
--- a/src/3rdparty/freetype/src/cff/cffdrivr.h
+++ b/src/3rdparty/freetype/src/cff/cffdrivr.h
@@ -27,8 +27,7 @@
FT_BEGIN_HEADER
- FT_CALLBACK_TABLE
- const FT_Driver_ClassRec cff_driver_class;
+ FT_DECLARE_DRIVER( cff_driver_class )
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/cff/cffgload.c b/src/3rdparty/freetype/src/cff/cffgload.c
index 2718a277b4..9330c05882 100644
--- a/src/3rdparty/freetype/src/cff/cffgload.c
+++ b/src/3rdparty/freetype/src/cff/cffgload.c
@@ -4,7 +4,8 @@
/* */
/* OpenType Glyph Loader (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,11 +19,9 @@
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_SFNT_H
#include FT_OUTLINE_H
-#include FT_TRUETYPE_TAGS_H
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
#include "cffobjs.h"
@@ -115,6 +114,9 @@
cff_op_closepath,
cff_op_callothersubr,
cff_op_pop,
+ cff_op_seac,
+ cff_op_sbw,
+ cff_op_setcurrentpoint,
/* do not remove */
cff_op_max
@@ -203,7 +205,10 @@
2, /* hsbw */
0,
0,
- 0
+ 0,
+ 5, /* seac */
+ 4, /* sbw */
+ 2 /* setcurrentpoint */
};
@@ -321,17 +326,23 @@
/* subroutines. */
/* */
/* <Input> */
- /* num_subrs :: The number of glyph subroutines. */
+ /* in_charstring_type :: The `CharstringType' value of the top DICT */
+ /* dictionary. */
+ /* */
+ /* num_subrs :: The number of glyph subroutines. */
/* */
/* <Return> */
/* The bias value. */
static FT_Int
- cff_compute_bias( FT_UInt num_subrs )
+ cff_compute_bias( FT_Int in_charstring_type,
+ FT_UInt num_subrs )
{
FT_Int result;
- if ( num_subrs < 1240 )
+ if ( in_charstring_type == 1 )
+ result = 0;
+ else if ( num_subrs < 1240 )
result = 107;
else if ( num_subrs < 33900U )
result = 1131;
@@ -382,9 +393,12 @@
cff_builder_init( &decoder->builder, face, size, slot, hinting );
/* initialize Type2 decoder */
+ decoder->cff = cff;
decoder->num_globals = cff->num_global_subrs;
decoder->globals = cff->global_subrs;
- decoder->globals_bias = cff_compute_bias( decoder->num_globals );
+ decoder->globals_bias = cff_compute_bias(
+ cff->top_font.font_dict.charstring_type,
+ decoder->num_globals );
decoder->hint_mode = hint_mode;
}
@@ -436,7 +450,9 @@
decoder->num_locals = sub->num_local_subrs;
decoder->locals = sub->local_subrs;
- decoder->locals_bias = cff_compute_bias( decoder->num_locals );
+ decoder->locals_bias = cff_compute_bias(
+ decoder->cff->top_font.font_dict.charstring_type,
+ decoder->num_locals );
decoder->glyph_width = sub->private_dict.default_width;
decoder->nominal_width = sub->private_dict.nominal_width;
@@ -474,8 +490,6 @@
point->x = x >> 16;
point->y = y >> 16;
*control = (FT_Byte)( flag ? FT_CURVE_TAG_ON : FT_CURVE_TAG_CUBIC );
-
- builder->last = *point;
}
outline->n_points++;
@@ -554,27 +568,24 @@
cff_builder_close_contour( CFF_Builder* builder )
{
FT_Outline* outline = builder->current;
+ FT_Int first;
if ( !outline )
return;
- /* XXXX: We must not include the last point in the path if it */
- /* is located on the first point. */
+ first = outline->n_contours <= 1
+ ? 0 : outline->contours[outline->n_contours - 2] + 1;
+
+ /* We must not include the last point in the path if it */
+ /* is located on the first point. */
if ( outline->n_points > 1 )
{
- FT_Int first = 0;
FT_Vector* p1 = outline->points + first;
FT_Vector* p2 = outline->points + outline->n_points - 1;
FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1;
- if ( outline->n_contours > 1 )
- {
- first = outline->contours[outline->n_contours - 2] + 1;
- p1 = outline->points + first;
- }
-
/* `delete' last point only if it coincides with the first */
/* point and if it is not a control point (which can happen). */
if ( p1->x == p2->x && p1->y == p2->y )
@@ -583,8 +594,18 @@
}
if ( outline->n_contours > 0 )
- outline->contours[outline->n_contours - 1] =
- (short)( outline->n_points - 1 );
+ {
+ /* Don't add contours only consisting of one point, i.e., */
+ /* check whether begin point and last point are the same. */
+ if ( first == outline->n_points - 1 )
+ {
+ outline->n_contours--;
+ outline->n_points--;
+ }
+ else
+ outline->contours[outline->n_contours - 1] =
+ (short)( outline->n_points - 1 );
+ }
}
@@ -674,7 +695,7 @@
data.length = length;
face->root.internal->incremental_interface->funcs->free_glyph_data(
- face->root.internal->incremental_interface->object,&data );
+ face->root.internal->incremental_interface->object, &data );
}
else
#endif /* FT_CONFIG_OPTION_INCREMENTAL */
@@ -690,6 +711,7 @@
static FT_Error
cff_operator_seac( CFF_Decoder* decoder,
+ FT_Pos asb,
FT_Pos adx,
FT_Pos ady,
FT_Int bchar,
@@ -702,8 +724,18 @@
FT_Vector left_bearing, advance;
FT_Byte* charstring;
FT_ULong charstring_len;
+ FT_Pos glyph_width;
+ if ( decoder->seac )
+ {
+ FT_ERROR(( "cff_operator_seac: invalid nested seac\n" ));
+ return CFF_Err_Syntax_Error;
+ }
+
+ adx += decoder->builder.left_bearing.x;
+ ady += decoder->builder.left_bearing.y;
+
#ifdef FT_CONFIG_OPTION_INCREMENTAL
/* Incremental fonts don't necessarily have valid charsets. */
/* They use the character code, not the glyph index, in this case. */
@@ -724,8 +756,8 @@
if ( bchar_index < 0 || achar_index < 0 )
{
- FT_ERROR(( "cff_operator_seac:" ));
- FT_ERROR(( " invalid seac character code arguments\n" ));
+ FT_ERROR(( "cff_operator_seac:"
+ " invalid seac character code arguments\n" ));
return CFF_Err_Syntax_Error;
}
@@ -774,8 +806,11 @@
&charstring, &charstring_len );
if ( !error )
{
+ /* the seac operator must not be nested */
+ decoder->seac = TRUE;
error = cff_decoder_parse_charstrings( decoder, charstring,
charstring_len );
+ decoder->seac = FALSE;
if ( error )
goto Exit;
@@ -783,16 +818,17 @@
cff_free_glyph_data( face, &charstring, charstring_len );
}
- /* Save the left bearing and width of the base character */
- /* as they will be erased by the next load. */
+ /* Save the left bearing, advance and glyph width of the base */
+ /* character as they will be erased by the next load. */
left_bearing = builder->left_bearing;
advance = builder->advance;
+ glyph_width = decoder->glyph_width;
builder->left_bearing.x = 0;
builder->left_bearing.y = 0;
- builder->pos_x = adx;
+ builder->pos_x = adx - asb;
builder->pos_y = ady;
/* Now load `achar' on top of the base outline. */
@@ -800,8 +836,11 @@
&charstring, &charstring_len );
if ( !error )
{
+ /* the seac operator must not be nested */
+ decoder->seac = TRUE;
error = cff_decoder_parse_charstrings( decoder, charstring,
charstring_len );
+ decoder->seac = FALSE;
if ( error )
goto Exit;
@@ -809,10 +848,11 @@
cff_free_glyph_data( face, &charstring, charstring_len );
}
- /* Restore the left side bearing and advance width */
- /* of the base character. */
+ /* Restore the left side bearing, advance and glyph width */
+ /* of the base character. */
builder->left_bearing = left_bearing;
builder->advance = advance;
+ decoder->glyph_width = glyph_width;
builder->pos_x = 0;
builder->pos_y = 0;
@@ -854,6 +894,8 @@
FT_Pos x, y;
FT_Fixed seed;
FT_Fixed* stack;
+ FT_Int charstring_type =
+ decoder->cff->top_font.font_dict.charstring_type;
T2_Hints_Funcs hinter;
@@ -863,9 +905,10 @@
decoder->read_width = 1;
/* compute random seed from stack address of parameter */
- seed = (FT_Fixed)(char*)&seed ^
- (FT_Fixed)(char*)&decoder ^
- (FT_Fixed)(char*)&charstring_base;
+ seed = (FT_Fixed)( ( (FT_PtrDist)(char*)&seed ^
+ (FT_PtrDist)(char*)&decoder ^
+ (FT_PtrDist)(char*)&charstring_base ) &
+ FT_ULONG_MAX ) ;
seed = ( seed ^ ( seed >> 10 ) ^ ( seed >> 20 ) ) & 0xFFFFL;
if ( seed == 0 )
seed = 0x7384;
@@ -920,18 +963,18 @@
ip += 2;
}
else if ( v < 247 )
- val = (FT_Long)v - 139;
+ val = (FT_Int32)v - 139;
else if ( v < 251 )
{
if ( ip >= limit )
goto Syntax_Error;
- val = ( (FT_Long)v - 247 ) * 256 + *ip++ + 108;
+ val = ( (FT_Int32)v - 247 ) * 256 + *ip++ + 108;
}
else if ( v < 255 )
{
if ( ip >= limit )
goto Syntax_Error;
- val = -( (FT_Long)v - 251 ) * 256 - *ip++ - 108;
+ val = -( (FT_Int32)v - 251 ) * 256 - *ip++ - 108;
}
else
{
@@ -942,7 +985,8 @@
( (FT_Int32)ip[2] << 8 ) |
ip[3];
ip += 4;
- shift = 0;
+ if ( charstring_type == 2 )
+ shift = 0;
}
if ( decoder->top - stack >= CFF_MAX_OPERANDS )
goto Stack_Overflow;
@@ -1016,6 +1060,12 @@
case 0:
op = cff_op_dotsection;
break;
+ case 1: /* this is actually the Type1 vstem3 operator */
+ op = cff_op_vstem;
+ break;
+ case 2: /* this is actually the Type1 hstem3 operator */
+ op = cff_op_hstem;
+ break;
case 3:
op = cff_op_and;
break;
@@ -1025,6 +1075,12 @@
case 5:
op = cff_op_not;
break;
+ case 6:
+ op = cff_op_seac;
+ break;
+ case 7:
+ op = cff_op_sbw;
+ break;
case 8:
op = cff_op_store;
break;
@@ -1088,6 +1144,9 @@
case 30:
op = cff_op_roll;
break;
+ case 33:
+ op = cff_op_setcurrentpoint;
+ break;
case 34:
op = cff_op_hflex;
break;
@@ -1155,7 +1214,7 @@
op = cff_op_hvcurveto;
break;
default:
- ;
+ break;
}
if ( op == cff_op_unknown )
@@ -1870,6 +1929,21 @@
}
break;
+ case cff_op_seac:
+ FT_TRACE4(( " seac\n" ));
+
+ error = cff_operator_seac( decoder,
+ args[0], args[1], args[2],
+ (FT_Int)( args[3] >> 16 ),
+ (FT_Int)( args[4] >> 16 ) );
+
+ /* add current outline to the glyph slot */
+ FT_GlyphLoader_Add( builder->loader );
+
+ /* return now! */
+ FT_TRACE4(( "\n" ));
+ return error;
+
case cff_op_endchar:
FT_TRACE4(( " endchar\n" ));
@@ -1879,10 +1953,8 @@
/* Save glyph width so that the subglyphs don't overwrite it. */
FT_Pos glyph_width = decoder->glyph_width;
-
error = cff_operator_seac( decoder,
- args[-4],
- args[-3],
+ 0L, args[-4], args[-3],
(FT_Int)( args[-2] >> 16 ),
(FT_Int)( args[-1] >> 16 ) );
@@ -2090,7 +2162,7 @@
FT_TRACE4(( " dup\n" ));
args[1] = args[0];
- args++;
+ args += 2;
break;
case cff_op_put:
@@ -2101,7 +2173,7 @@
FT_TRACE4(( " put\n" ));
- if ( idx >= 0 && idx < decoder->len_buildchar )
+ if ( idx >= 0 && idx < CFF_MAX_TRANS_ELEMENTS )
decoder->buildchar[idx] = val;
}
break;
@@ -2114,7 +2186,7 @@
FT_TRACE4(( " get\n" ));
- if ( idx >= 0 && idx < decoder->len_buildchar )
+ if ( idx >= 0 && idx < CFF_MAX_TRANS_ELEMENTS )
val = decoder->buildchar[idx];
args[0] = val;
@@ -2154,10 +2226,42 @@
FT_TRACE4(( " hsbw (invalid op)\n" ));
- decoder->glyph_width = decoder->nominal_width +
- (args[1] >> 16);
- x = args[0];
- y = 0;
+ decoder->glyph_width = decoder->nominal_width + ( args[1] >> 16 );
+
+ decoder->builder.left_bearing.x = args[0];
+ decoder->builder.left_bearing.y = 0;
+
+ x = decoder->builder.pos_x + args[0];
+ y = decoder->builder.pos_y;
+ args = stack;
+ break;
+
+ case cff_op_sbw:
+ /* this is an invalid Type 2 operator; however, there */
+ /* exist fonts which are incorrectly converted from probably */
+ /* Type 1 to CFF, and some parsers seem to accept it */
+
+ FT_TRACE4(( " sbw (invalid op)\n" ));
+
+ decoder->glyph_width = decoder->nominal_width + ( args[2] >> 16 );
+
+ decoder->builder.left_bearing.x = args[0];
+ decoder->builder.left_bearing.y = args[1];
+
+ x = decoder->builder.pos_x + args[0];
+ y = decoder->builder.pos_y + args[1];
+ args = stack;
+ break;
+
+ case cff_op_setcurrentpoint:
+ /* this is an invalid Type 2 operator; however, there */
+ /* exist fonts which are incorrectly converted from probably */
+ /* Type 1 to CFF, and some parsers seem to accept it */
+
+ FT_TRACE4(( " setcurrentpoint (invalid op)\n" ));
+
+ x = decoder->builder.pos_x + args[0];
+ y = decoder->builder.pos_y + args[1];
args = stack;
break;
@@ -2168,8 +2272,10 @@
FT_TRACE4(( " callothersubr (invalid op)\n" ));
- /* don't modify stack; handle the subr as `unknown' so that */
- /* following `pop' operands use the arguments on stack */
+ /* subsequent `pop' operands should add the arguments, */
+ /* this is the implementation described for `unknown' other */
+ /* subroutines in the Type1 spec. */
+ args -= 2 + ( args[-2] >> 16 );
break;
case cff_op_pop:
@@ -2241,8 +2347,8 @@
if ( idx >= decoder->num_locals )
{
- FT_ERROR(( "cff_decoder_parse_charstrings:" ));
- FT_ERROR(( " invalid local subr index\n" ));
+ FT_ERROR(( "cff_decoder_parse_charstrings:"
+ " invalid local subr index\n" ));
goto Syntax_Error;
}
@@ -2263,7 +2369,7 @@
if ( !zone->base || zone->limit == zone->base )
{
FT_ERROR(( "cff_decoder_parse_charstrings:"
- " invoking empty subrs!\n" ));
+ " invoking empty subrs\n" ));
goto Syntax_Error;
}
@@ -2283,8 +2389,8 @@
if ( idx >= decoder->num_globals )
{
- FT_ERROR(( "cff_decoder_parse_charstrings:" ));
- FT_ERROR(( " invalid global subr index\n" ));
+ FT_ERROR(( "cff_decoder_parse_charstrings:"
+ " invalid global subr index\n" ));
goto Syntax_Error;
}
@@ -2305,7 +2411,7 @@
if ( !zone->base || zone->limit == zone->base )
{
FT_ERROR(( "cff_decoder_parse_charstrings:"
- " invoking empty subrs!\n" ));
+ " invoking empty subrs\n" ));
goto Syntax_Error;
}
@@ -2354,15 +2460,15 @@
return error;
Syntax_Error:
- FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error!\n" ));
+ FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error\n" ));
return CFF_Err_Invalid_File_Format;
Stack_Underflow:
- FT_TRACE4(( "cff_decoder_parse_charstrings: stack underflow!\n" ));
+ FT_TRACE4(( "cff_decoder_parse_charstrings: stack underflow\n" ));
return CFF_Err_Too_Few_Arguments;
Stack_Overflow:
- FT_TRACE4(( "cff_decoder_parse_charstrings: stack overflow!\n" ));
+ FT_TRACE4(( "cff_decoder_parse_charstrings: stack overflow\n" ));
return CFF_Err_Stack_Overflow;
}
@@ -2565,8 +2671,8 @@
FT_Byte fd_index = cff_fd_select_get( &cff->fd_select,
glyph_index );
- FT_Int top_upm = cff->top_font.font_dict.units_per_em;
- FT_Int sub_upm = cff->subfonts[fd_index]->font_dict.units_per_em;
+ FT_ULong top_upm = cff->top_font.font_dict.units_per_em;
+ FT_ULong sub_upm = cff->subfonts[fd_index]->font_dict.units_per_em;
font_matrix = cff->subfonts[fd_index]->font_dict.font_matrix;
@@ -2658,23 +2764,25 @@
#ifdef FT_CONFIG_OPTION_INCREMENTAL
/* Incremental fonts can optionally override the metrics. */
- if ( !error &&
- face->root.internal->incremental_interface &&
+ if ( !error &&
+ face->root.internal->incremental_interface &&
face->root.internal->incremental_interface->funcs->get_glyph_metrics )
{
FT_Incremental_MetricsRec metrics;
metrics.bearing_x = decoder.builder.left_bearing.x;
- metrics.bearing_y = decoder.builder.left_bearing.y;
+ metrics.bearing_y = 0;
metrics.advance = decoder.builder.advance.x;
+ metrics.advance_v = decoder.builder.advance.y;
+
error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
face->root.internal->incremental_interface->object,
glyph_index, FALSE, &metrics );
+
decoder.builder.left_bearing.x = metrics.bearing_x;
- decoder.builder.left_bearing.y = metrics.bearing_y;
decoder.builder.advance.x = metrics.advance;
- decoder.builder.advance.y = 0;
+ decoder.builder.advance.y = metrics.advance_v;
}
#endif /* FT_CONFIG_OPTION_INCREMENTAL */
@@ -2711,9 +2819,14 @@
glyph->root.linearHoriAdvance = decoder.glyph_width;
glyph->root.internal->glyph_transformed = 0;
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
has_vertical_info = FT_BOOL( face->vertical_info &&
face->vertical.number_Of_VMetrics > 0 &&
face->vertical.long_metrics );
+#else
+ has_vertical_info = FT_BOOL( face->vertical_info &&
+ face->vertical.number_Of_VMetrics > 0 );
+#endif
/* get the vertical metrics from the vtmx table if we have one */
if ( has_vertical_info )
@@ -2750,8 +2863,8 @@
glyph->root.outline.flags |= FT_OUTLINE_REVERSE_FILL;
- /* apply the font matrix -- `xx' has already been normalized */
- if ( !( font_matrix.yy == 0x10000L &&
+ if ( !( font_matrix.xx == 0x10000L &&
+ font_matrix.yy == 0x10000L &&
font_matrix.xy == 0 &&
font_matrix.yx == 0 ) )
FT_Outline_Transform( &glyph->root.outline, &font_matrix );
@@ -2804,10 +2917,14 @@
metrics->horiBearingY = cbox.yMax;
if ( has_vertical_info )
- metrics->vertBearingX = -metrics->width / 2;
- else
- ft_synthesize_vertical_metrics( metrics,
- metrics->vertAdvance );
+ metrics->vertBearingX = metrics->horiBearingX -
+ metrics->horiAdvance / 2;
+ else
+ {
+ if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
+ ft_synthesize_vertical_metrics( metrics,
+ metrics->vertAdvance );
+ }
}
}
diff --git a/src/3rdparty/freetype/src/cff/cffgload.h b/src/3rdparty/freetype/src/cff/cffgload.h
index 667134e3b5..38937be5c1 100644
--- a/src/3rdparty/freetype/src/cff/cffgload.h
+++ b/src/3rdparty/freetype/src/cff/cffgload.h
@@ -4,7 +4,7 @@
/* */
/* OpenType Glyph Loader (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -28,8 +28,9 @@
FT_BEGIN_HEADER
-#define CFF_MAX_OPERANDS 48
-#define CFF_MAX_SUBRS_CALLS 32
+#define CFF_MAX_OPERANDS 48
+#define CFF_MAX_SUBRS_CALLS 32
+#define CFF_MAX_TRANS_ELEMENTS 32
/*************************************************************************/
@@ -53,8 +54,6 @@ FT_BEGIN_HEADER
/* */
/* current :: The current glyph outline. */
/* */
- /* last :: The last point position. */
- /* */
/* pos_x :: The horizontal translation (if composite glyph). */
/* */
/* pos_y :: The vertical translation (if composite glyph). */
@@ -88,8 +87,6 @@ FT_BEGIN_HEADER
FT_Outline* base;
FT_Outline* current;
- FT_Vector last;
-
FT_Pos pos_x;
FT_Pos pos_y;
@@ -141,8 +138,7 @@ FT_BEGIN_HEADER
FT_Bool read_width;
FT_Bool width_only;
FT_Int num_hints;
- FT_Fixed* buildchar;
- FT_Int len_buildchar;
+ FT_Fixed buildchar[CFF_MAX_TRANS_ELEMENTS];
FT_UInt num_locals;
FT_UInt num_globals;
@@ -158,6 +154,8 @@ FT_BEGIN_HEADER
FT_Render_Mode hint_mode;
+ FT_Bool seac;
+
} CFF_Decoder;
diff --git a/src/3rdparty/freetype/src/cff/cffload.c b/src/3rdparty/freetype/src/cff/cffload.c
index 22163fb75c..64d1395723 100644
--- a/src/3rdparty/freetype/src/cff/cffload.c
+++ b/src/3rdparty/freetype/src/cff/cffload.c
@@ -736,6 +736,7 @@
{
FT_Error error = FT_Err_Ok;
FT_UInt i;
+ FT_Long j;
FT_UShort max_cid = 0;
@@ -750,8 +751,11 @@
if ( FT_NEW_ARRAY( charset->cids, max_cid ) )
goto Exit;
- for ( i = 0; i < num_glyphs; i++ )
- charset->cids[charset->sids[i]] = (FT_UShort)i;
+ /* When multiple GIDs map to the same CID, we choose the lowest */
+ /* GID. This is not described in any spec, but it matches the */
+ /* behaviour of recent Acroread versions. */
+ for ( j = num_glyphs - 1; j >= 0 ; j-- )
+ charset->cids[charset->sids[j]] = (FT_UShort)j;
charset->max_cid = max_cid;
charset->num_glyphs = num_glyphs;
@@ -842,7 +846,20 @@
goto Exit;
for ( j = 1; j < num_glyphs; j++ )
- charset->sids[j] = FT_GET_USHORT();
+ {
+ FT_UShort sid = FT_GET_USHORT();
+
+
+ /* this constant is given in the CFF specification */
+ if ( sid < 65000L )
+ charset->sids[j] = sid;
+ else
+ {
+ FT_TRACE0(( "cff_charset_load:"
+ " invalid SID value %d set to zero\n", sid ));
+ charset->sids[j] = 0;
+ }
+ }
FT_FRAME_EXIT();
}
@@ -875,6 +892,20 @@
goto Exit;
}
+ /* check whether the range contains at least one valid glyph; */
+ /* the constant is given in the CFF specification */
+ if ( glyph_sid >= 65000L ) {
+ FT_ERROR(( "cff_charset_load: invalid SID range\n" ));
+ error = CFF_Err_Invalid_File_Format;
+ goto Exit;
+ }
+
+ /* try to rescue some of the SIDs if `nleft' is too large */
+ if ( nleft > 65000L - 1L || glyph_sid >= 65000L - nleft ) {
+ FT_ERROR(( "cff_charset_load: invalid SID range trimmed\n" ));
+ nleft = ( FT_UInt )( 65000L - 1L - glyph_sid );
+ }
+
/* Fill in the range of sids -- `nleft + 1' glyphs. */
for ( i = 0; j < num_glyphs && i <= nleft; i++, j++, glyph_sid++ )
charset->sids[j] = glyph_sid;
@@ -883,7 +914,7 @@
break;
default:
- FT_ERROR(( "cff_charset_load: invalid table format!\n" ));
+ FT_ERROR(( "cff_charset_load: invalid table format\n" ));
error = CFF_Err_Invalid_File_Format;
goto Exit;
}
@@ -906,7 +937,7 @@
if ( num_glyphs > 229 )
{
FT_ERROR(( "cff_charset_load: implicit charset larger than\n"
- "predefined charset (Adobe ISO-Latin)!\n" ));
+ "predefined charset (Adobe ISO-Latin)\n" ));
error = CFF_Err_Invalid_File_Format;
goto Exit;
}
@@ -924,7 +955,7 @@
if ( num_glyphs > 166 )
{
FT_ERROR(( "cff_charset_load: implicit charset larger than\n"
- "predefined charset (Adobe Expert)!\n" ));
+ "predefined charset (Adobe Expert)\n" ));
error = CFF_Err_Invalid_File_Format;
goto Exit;
}
@@ -942,7 +973,7 @@
if ( num_glyphs > 87 )
{
FT_ERROR(( "cff_charset_load: implicit charset larger than\n"
- "predefined charset (Adobe Expert Subset)!\n" ));
+ "predefined charset (Adobe Expert Subset)\n" ));
error = CFF_Err_Invalid_File_Format;
goto Exit;
}
@@ -1127,7 +1158,7 @@
break;
default:
- FT_ERROR(( "cff_encoding_load: invalid table format!\n" ));
+ FT_ERROR(( "cff_encoding_load: invalid table format\n" ));
error = CFF_Err_Invalid_File_Format;
goto Exit;
}
@@ -1222,7 +1253,7 @@
break;
default:
- FT_ERROR(( "cff_encoding_load: invalid table format!\n" ));
+ FT_ERROR(( "cff_encoding_load: invalid table format\n" ));
error = CFF_Err_Invalid_File_Format;
goto Exit;
}
@@ -1240,7 +1271,8 @@
CFF_Index idx,
FT_UInt font_index,
FT_Stream stream,
- FT_ULong base_offset )
+ FT_ULong base_offset,
+ FT_Library library )
{
FT_Error error;
CFF_ParserRec parser;
@@ -1250,7 +1282,7 @@
CFF_Private priv = &font->private_dict;
- cff_parser_init( &parser, CFF_CODE_TOPDICT, &font->font_dict );
+ cff_parser_init( &parser, CFF_CODE_TOPDICT, &font->font_dict, library );
/* set defaults */
FT_MEM_ZERO( top, sizeof ( *top ) );
@@ -1301,7 +1333,7 @@
priv->expansion_factor = (FT_Fixed)( 0.06 * 0x10000L );
priv->blue_scale = (FT_Fixed)( 0.039625 * 0x10000L * 1000 );
- cff_parser_init( &parser, CFF_CODE_PRIVATE, priv );
+ cff_parser_init( &parser, CFF_CODE_PRIVATE, priv, library );
if ( FT_STREAM_SEEK( base_offset + font->font_dict.private_offset ) ||
FT_FRAME_ENTER( font->font_dict.private_size ) )
@@ -1354,7 +1386,8 @@
FT_LOCAL_DEF( FT_Error )
- cff_font_load( FT_Stream stream,
+ cff_font_load( FT_Library library,
+ FT_Stream stream,
FT_Int face_index,
CFF_Font font,
FT_Bool pure_cff )
@@ -1394,7 +1427,7 @@
font->header_size < 4 ||
font->absolute_offsize > 4 )
{
- FT_TRACE2(( "[not a CFF font header!]\n" ));
+ FT_TRACE2(( "[not a CFF font header]\n" ));
error = CFF_Err_Unknown_File_Format;
goto Exit;
}
@@ -1432,7 +1465,8 @@
&font->font_dict_index,
face_index,
stream,
- base_offset );
+ base_offset,
+ library );
if ( error )
goto Exit;
@@ -1462,7 +1496,7 @@
if ( fd_index.count > CFF_MAX_CID_FONTS )
{
- FT_ERROR(( "cff_font_load: FD array too large in CID font\n" ));
+ FT_TRACE0(( "cff_font_load: FD array too large in CID font\n" ));
goto Fail_CID;
}
@@ -1480,7 +1514,7 @@
{
sub = font->subfonts[idx];
error = cff_subfont_load( sub, &fd_index, idx,
- stream, base_offset );
+ stream, base_offset, library );
if ( error )
goto Fail_CID;
}
@@ -1503,7 +1537,7 @@
/* read the charstrings index now */
if ( dict->charstrings_offset == 0 )
{
- FT_ERROR(( "cff_font_load: no charstrings offset!\n" ));
+ FT_ERROR(( "cff_font_load: no charstrings offset\n" ));
error = CFF_Err_Unknown_File_Format;
goto Exit;
}
diff --git a/src/3rdparty/freetype/src/cff/cffload.h b/src/3rdparty/freetype/src/cff/cffload.h
index 02498bd5e0..2b313acf06 100644
--- a/src/3rdparty/freetype/src/cff/cffload.h
+++ b/src/3rdparty/freetype/src/cff/cffload.h
@@ -58,7 +58,8 @@ FT_BEGIN_HEADER
FT_LOCAL( FT_Error )
- cff_font_load( FT_Stream stream,
+ cff_font_load( FT_Library library,
+ FT_Stream stream,
FT_Int face_index,
CFF_Font font,
FT_Bool pure_cff );
diff --git a/src/3rdparty/freetype/src/cff/cffobjs.c b/src/3rdparty/freetype/src/cff/cffobjs.c
index 3525ea3b7d..bd56c4ba11 100644
--- a/src/3rdparty/freetype/src/cff/cffobjs.c
+++ b/src/3rdparty/freetype/src/cff/cffobjs.c
@@ -4,7 +4,7 @@
/* */
/* OpenType objects manager (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -30,6 +30,7 @@
#include "cffload.h"
#include "cffcmap.h"
#include "cfferrs.h"
+#include "cffpic.h"
/*************************************************************************/
@@ -223,8 +224,8 @@
CFF_Font font = (CFF_Font)face->extra.data;
CFF_Internal internal = (CFF_Internal)size->internal;
- FT_Int top_upm = font->top_font.font_dict.units_per_em;
- FT_UInt i;
+ FT_ULong top_upm = font->top_font.font_dict.units_per_em;
+ FT_UInt i;
funcs->set_scale( internal->topfont,
@@ -234,7 +235,7 @@
for ( i = font->num_subfonts; i > 0; i-- )
{
CFF_SubFont sub = font->subfonts[i - 1];
- FT_Int sub_upm = sub->font_dict.units_per_em;
+ FT_ULong sub_upm = sub->font_dict.units_per_em;
FT_Pos x_scale, y_scale;
@@ -295,8 +296,8 @@
CFF_Font font = (CFF_Font)cffface->extra.data;
CFF_Internal internal = (CFF_Internal)size->internal;
- FT_Int top_upm = font->top_font.font_dict.units_per_em;
- FT_UInt i;
+ FT_ULong top_upm = font->top_font.font_dict.units_per_em;
+ FT_UInt i;
funcs->set_scale( internal->topfont,
@@ -306,7 +307,7 @@
for ( i = font->num_subfonts; i > 0; i-- )
{
CFF_SubFont sub = font->subfonts[i - 1];
- FT_Int sub_upm = sub->font_dict.units_per_em;
+ FT_ULong sub_upm = sub->font_dict.units_per_em;
FT_Pos x_scale, y_scale;
@@ -408,6 +409,7 @@
PSHinter_Service pshinter;
FT_Bool pure_cff = 1;
FT_Bool sfnt_format = 0;
+ FT_Library library = cffface->driver->root.library;
#if 0
@@ -419,14 +421,14 @@
goto Bad_Format;
#else
sfnt = (SFNT_Service)FT_Get_Module_Interface(
- cffface->driver->root.library, "sfnt" );
+ library, "sfnt" );
if ( !sfnt )
goto Bad_Format;
FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS );
pshinter = (PSHinter_Service)FT_Get_Module_Interface(
- cffface->driver->root.library, "pshinter" );
+ library, "pshinter" );
#endif
/* create input stream from resource */
@@ -507,7 +509,7 @@
goto Exit;
face->extra.data = cff;
- error = cff_font_load( stream, face_index, cff, pure_cff );
+ error = cff_font_load( library, stream, face_index, cff, pure_cff );
if ( error )
goto Exit;
@@ -528,10 +530,10 @@
/* which aren't CID-keyed */
if ( dict->cid_registry == 0xFFFFU && !psnames )
{
- FT_ERROR(( "cff_face_init:" ));
- FT_ERROR(( " cannot open CFF & CEF fonts\n" ));
- FT_ERROR(( " " ));
- FT_ERROR(( " without the `PSNames' module\n" ));
+ FT_ERROR(( "cff_face_init:"
+ " cannot open CFF & CEF fonts\n"
+ " "
+ " without the `PSNames' module\n" ));
goto Bad_Format;
}
@@ -582,7 +584,7 @@
if ( sub->units_per_em )
{
- FT_Int scaling;
+ FT_Long scaling;
if ( top->units_per_em > 1 && sub->units_per_em > 1 )
@@ -655,10 +657,11 @@
cffface->num_glyphs = cff->charstrings_index.count;
/* set global bbox, as well as EM size */
- cffface->bbox.xMin = dict->font_bbox.xMin >> 16;
- cffface->bbox.yMin = dict->font_bbox.yMin >> 16;
- cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16;
- cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16;
+ cffface->bbox.xMin = dict->font_bbox.xMin >> 16;
+ cffface->bbox.yMin = dict->font_bbox.yMin >> 16;
+ /* no `U' suffix here to 0xFFFF! */
+ cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFF ) >> 16;
+ cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFF ) >> 16;
cffface->units_per_EM = (FT_UShort)( dict->units_per_em );
@@ -764,22 +767,22 @@
/* */
/* Compute face flags. */
/* */
- flags = FT_FACE_FLAG_SCALABLE | /* scalable outlines */
- FT_FACE_FLAG_HORIZONTAL | /* horizontal data */
- FT_FACE_FLAG_HINTER; /* has native hinter */
+ flags = (FT_UInt32)( FT_FACE_FLAG_SCALABLE | /* scalable outlines */
+ FT_FACE_FLAG_HORIZONTAL | /* horizontal data */
+ FT_FACE_FLAG_HINTER ); /* has native hinter */
if ( sfnt_format )
- flags |= FT_FACE_FLAG_SFNT;
+ flags |= (FT_UInt32)FT_FACE_FLAG_SFNT;
/* fixed width font? */
if ( dict->is_fixed_pitch )
- flags |= FT_FACE_FLAG_FIXED_WIDTH;
+ flags |= (FT_UInt32)FT_FACE_FLAG_FIXED_WIDTH;
/* XXX: WE DO NOT SUPPORT KERNING METRICS IN THE GPOS TABLE FOR NOW */
#if 0
/* kerning available? */
if ( face->kern_pairs )
- flags |= FT_FACE_FLAG_KERNING;
+ flags |= (FT_UInt32)FT_FACE_FLAG_KERNING;
#endif
cffface->face_flags = flags;
@@ -868,7 +871,7 @@
nn = (FT_UInt)cffface->num_charmaps;
- FT_CMap_New( &cff_cmap_unicode_class_rec, NULL, &cmaprec, NULL );
+ FT_CMap_New( &FT_CFF_CMAP_UNICODE_CLASS_REC_GET, NULL, &cmaprec, NULL );
/* if no Unicode charmap was previously selected, select this one */
if ( cffface->charmap == NULL && nn != (FT_UInt)cffface->num_charmaps )
@@ -887,19 +890,19 @@
{
cmaprec.encoding_id = TT_ADOBE_ID_STANDARD;
cmaprec.encoding = FT_ENCODING_ADOBE_STANDARD;
- clazz = &cff_cmap_encoding_class_rec;
+ clazz = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET;
}
else if ( encoding->offset == 1 )
{
cmaprec.encoding_id = TT_ADOBE_ID_EXPERT;
cmaprec.encoding = FT_ENCODING_ADOBE_EXPERT;
- clazz = &cff_cmap_encoding_class_rec;
+ clazz = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET;
}
else
{
cmaprec.encoding_id = TT_ADOBE_ID_CUSTOM;
cmaprec.encoding = FT_ENCODING_ADOBE_CUSTOM;
- clazz = &cff_cmap_encoding_class_rec;
+ clazz = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET;
}
FT_CMap_New( clazz, NULL, &cmaprec, NULL );
diff --git a/src/3rdparty/freetype/src/cff/cffparse.c b/src/3rdparty/freetype/src/cff/cffparse.c
index 290595f9e8..01266a193d 100644
--- a/src/3rdparty/freetype/src/cff/cffparse.c
+++ b/src/3rdparty/freetype/src/cff/cffparse.c
@@ -22,6 +22,7 @@
#include FT_INTERNAL_DEBUG_H
#include "cfferrs.h"
+#include "cffpic.h"
/*************************************************************************/
@@ -34,47 +35,20 @@
#define FT_COMPONENT trace_cffparse
- enum
- {
- cff_kind_none = 0,
- cff_kind_num,
- cff_kind_fixed,
- cff_kind_fixed_thousand,
- cff_kind_string,
- cff_kind_bool,
- cff_kind_delta,
- cff_kind_callback,
-
- cff_kind_max /* do not remove */
- };
-
-
- /* now generate handlers for the most simple fields */
- typedef FT_Error (*CFF_Field_Reader)( CFF_Parser parser );
-
- typedef struct CFF_Field_Handler_
- {
- int kind;
- int code;
- FT_UInt offset;
- FT_Byte size;
- CFF_Field_Reader reader;
- FT_UInt array_max;
- FT_UInt count_offset;
-
- } CFF_Field_Handler;
FT_LOCAL_DEF( void )
cff_parser_init( CFF_Parser parser,
FT_UInt code,
- void* object )
+ void* object,
+ FT_Library library)
{
FT_MEM_ZERO( parser, sizeof ( *parser ) );
parser->top = parser->stack;
parser->object_code = code;
parser->object = object;
+ parser->library = library;
}
@@ -156,8 +130,8 @@
static FT_Fixed
cff_parse_real( FT_Byte* start,
FT_Byte* limit,
- FT_Int power_ten,
- FT_Int* scaling )
+ FT_Long power_ten,
+ FT_Long* scaling )
{
FT_Byte* p = start;
FT_UInt nib;
@@ -165,7 +139,7 @@
FT_Long result, number, rest, exponent;
FT_Int sign = 0, exponent_sign = 0;
- FT_Int exponent_add, integer_length, fraction_length;
+ FT_Long exponent_add, integer_length, fraction_length;
if ( scaling )
@@ -181,6 +155,8 @@
integer_length = 0;
fraction_length = 0;
+ FT_UNUSED( rest );
+
/* First of all, read the integer part. */
phase = 4;
@@ -310,7 +286,7 @@
{
if ( exponent > 0 )
{
- FT_Int new_fraction_length, shift;
+ FT_Long new_fraction_length, shift;
/* Make `scaling' as small as possible. */
@@ -410,7 +386,7 @@
/* but return `10^scaling' times the number read in */
static FT_Fixed
cff_parse_fixed_scaled( FT_Byte** d,
- FT_Int scaling )
+ FT_Long scaling )
{
return **d == 30 ? cff_parse_real( d[0], d[1], scaling, NULL )
: ( cff_parse_integer( d[0], d[1] ) *
@@ -423,7 +399,7 @@
/* the scaling factor (as a power of 10) */
static FT_Fixed
cff_parse_fixed_dynamic( FT_Byte** d,
- FT_Int* scaling )
+ FT_Long* scaling )
{
FT_ASSERT( scaling );
@@ -476,7 +452,7 @@
if ( parser->top >= parser->stack + 6 )
{
- FT_Int scaling;
+ FT_Long scaling;
error = CFF_Err_Ok;
@@ -578,7 +554,12 @@
{
dict->cid_registry = (FT_UInt)cff_parse_num ( data++ );
dict->cid_ordering = (FT_UInt)cff_parse_num ( data++ );
- dict->cid_supplement = (FT_ULong)cff_parse_num( data );
+ if ( **data == 30 )
+ FT_TRACE1(( "cff_parse_cid_ros: real supplement is rounded\n" ));
+ dict->cid_supplement = cff_parse_num( data );
+ if ( dict->cid_supplement < 0 )
+ FT_TRACE1(( "cff_parse_cid_ros: negative supplement %d is found\n",
+ dict->cid_supplement ));
error = CFF_Err_Ok;
}
@@ -599,6 +580,11 @@
#define CFF_FIELD_DELTA( code, name, max ) \
CFF_FIELD( code, name, cff_kind_delta )
+#define CFFCODE_TOPDICT 0x1000
+#define CFFCODE_PRIVATE 0x2000
+
+#ifndef FT_CONFIG_OPTION_PIC
+
#define CFF_FIELD_CALLBACK( code, name ) \
{ \
cff_kind_callback, \
@@ -630,9 +616,6 @@
FT_FIELD_OFFSET( num_ ## name ) \
},
-#define CFFCODE_TOPDICT 0x1000
-#define CFFCODE_PRIVATE 0x2000
-
static const CFF_Field_Handler cff_field_handlers[] =
{
@@ -642,13 +625,99 @@
};
+#else /* FT_CONFIG_OPTION_PIC */
+
+ void FT_Destroy_Class_cff_field_handlers(FT_Library library, CFF_Field_Handler* clazz)
+ {
+ FT_Memory memory = library->memory;
+ if ( clazz )
+ FT_FREE( clazz );
+ }
+
+ FT_Error FT_Create_Class_cff_field_handlers(FT_Library library, CFF_Field_Handler** output_class)
+ {
+ CFF_Field_Handler* clazz;
+ FT_Error error;
+ FT_Memory memory = library->memory;
+ int i=0;
+
+#undef CFF_FIELD
+#undef CFF_FIELD_DELTA
+#undef CFF_FIELD_CALLBACK
+#define CFF_FIELD_CALLBACK( code, name ) i++;
+#define CFF_FIELD( code, name, kind ) i++;
+#define CFF_FIELD_DELTA( code, name, max ) i++;
+
+#include "cfftoken.h"
+ i++;/*{ 0, 0, 0, 0, 0, 0, 0 }*/
+
+ if ( FT_ALLOC( clazz, sizeof(CFF_Field_Handler)*i ) )
+ return error;
+
+ i=0;
+#undef CFF_FIELD
+#undef CFF_FIELD_DELTA
+#undef CFF_FIELD_CALLBACK
+
+#define CFF_FIELD_CALLBACK( code_, name_ ) \
+ clazz[i].kind = cff_kind_callback; \
+ clazz[i].code = code_ | CFFCODE; \
+ clazz[i].offset = 0; \
+ clazz[i].size = 0; \
+ clazz[i].reader = cff_parse_ ## name_; \
+ clazz[i].array_max = 0; \
+ clazz[i].count_offset = 0; \
+ i++;
+
+#undef CFF_FIELD
+#define CFF_FIELD( code_, name_, kind_ ) \
+ clazz[i].kind = kind_; \
+ clazz[i].code = code_ | CFFCODE; \
+ clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
+ clazz[i].size = FT_FIELD_SIZE( name_ ); \
+ clazz[i].reader = 0; \
+ clazz[i].array_max = 0; \
+ clazz[i].count_offset = 0; \
+ i++; \
+
+#undef CFF_FIELD_DELTA
+#define CFF_FIELD_DELTA( code_, name_, max_ ) \
+ clazz[i].kind = cff_kind_delta; \
+ clazz[i].code = code_ | CFFCODE; \
+ clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
+ clazz[i].size = FT_FIELD_SIZE_DELTA( name_ ); \
+ clazz[i].reader = 0; \
+ clazz[i].array_max = max_; \
+ clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
+ i++;
+
+#include "cfftoken.h"
+
+ clazz[i].kind = 0;
+ clazz[i].code = 0;
+ clazz[i].offset = 0;
+ clazz[i].size = 0;
+ clazz[i].reader = 0;
+ clazz[i].array_max = 0;
+ clazz[i].count_offset = 0;
+
+ *output_class = clazz;
+ return FT_Err_Ok;
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
FT_LOCAL_DEF( FT_Error )
cff_parser_run( CFF_Parser parser,
FT_Byte* start,
FT_Byte* limit )
{
- FT_Byte* p = start;
- FT_Error error = CFF_Err_Ok;
+ FT_Byte* p = start;
+ FT_Error error = CFF_Err_Ok;
+ FT_Library library = parser->library;
+ FT_UNUSED(library);
parser->top = parser->stack;
@@ -676,8 +745,10 @@
p++;
for (;;)
{
+ /* An unterminated floating point number at the */
+ /* end of a dictionary is invalid but harmless. */
if ( p >= limit )
- goto Syntax_Error;
+ goto Exit;
v = p[0] >> 4;
if ( v == 15 )
break;
@@ -718,7 +789,7 @@
}
code = code | parser->object_code;
- for ( field = cff_field_handlers; field->kind; field++ )
+ for ( field = FT_CFF_FIELD_HANDLERS_GET; field->kind; field++ )
{
if ( field->code == (FT_Int)code )
{
diff --git a/src/3rdparty/freetype/src/cff/cffparse.h b/src/3rdparty/freetype/src/cff/cffparse.h
index 8f3fa58859..7e2c00a044 100644
--- a/src/3rdparty/freetype/src/cff/cffparse.h
+++ b/src/3rdparty/freetype/src/cff/cffparse.h
@@ -36,6 +36,7 @@ FT_BEGIN_HEADER
typedef struct CFF_ParserRec_
{
+ FT_Library library;
FT_Byte* start;
FT_Byte* limit;
FT_Byte* cursor;
@@ -52,7 +53,8 @@ FT_BEGIN_HEADER
FT_LOCAL( void )
cff_parser_init( CFF_Parser parser,
FT_UInt code,
- void* object );
+ void* object,
+ FT_Library library);
FT_LOCAL( FT_Error )
cff_parser_run( CFF_Parser parser,
@@ -60,6 +62,37 @@ FT_BEGIN_HEADER
FT_Byte* limit );
+ enum
+ {
+ cff_kind_none = 0,
+ cff_kind_num,
+ cff_kind_fixed,
+ cff_kind_fixed_thousand,
+ cff_kind_string,
+ cff_kind_bool,
+ cff_kind_delta,
+ cff_kind_callback,
+
+ cff_kind_max /* do not remove */
+ };
+
+
+ /* now generate handlers for the most simple fields */
+ typedef FT_Error (*CFF_Field_Reader)( CFF_Parser parser );
+
+ typedef struct CFF_Field_Handler_
+ {
+ int kind;
+ int code;
+ FT_UInt offset;
+ FT_Byte size;
+ CFF_Field_Reader reader;
+ FT_UInt array_max;
+ FT_UInt count_offset;
+
+ } CFF_Field_Handler;
+
+
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/cff/cffpic.c b/src/3rdparty/freetype/src/cff/cffpic.c
new file mode 100644
index 0000000000..568956d6a9
--- /dev/null
+++ b/src/3rdparty/freetype/src/cff/cffpic.c
@@ -0,0 +1,99 @@
+/***************************************************************************/
+/* */
+/* cffpic.c */
+/* */
+/* The FreeType position independent code services for cff module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "cffpic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from cffdrivr.c */
+ FT_Error FT_Create_Class_cff_services( FT_Library, FT_ServiceDescRec**);
+ void FT_Destroy_Class_cff_services( FT_Library, FT_ServiceDescRec*);
+ void FT_Init_Class_cff_service_ps_info( FT_Library, FT_Service_PsInfoRec*);
+ void FT_Init_Class_cff_service_glyph_dict( FT_Library, FT_Service_GlyphDictRec*);
+ void FT_Init_Class_cff_service_ps_name( FT_Library, FT_Service_PsFontNameRec*);
+ void FT_Init_Class_cff_service_get_cmap_info( FT_Library, FT_Service_TTCMapsRec*);
+ void FT_Init_Class_cff_service_cid_info( FT_Library, FT_Service_CIDRec*);
+
+ /* forward declaration of PIC init functions from cffparse.c */
+ FT_Error FT_Create_Class_cff_field_handlers( FT_Library, CFF_Field_Handler**);
+ void FT_Destroy_Class_cff_field_handlers( FT_Library, CFF_Field_Handler*);
+
+ /* forward declaration of PIC init functions from cffcmap.c */
+ void FT_Init_Class_cff_cmap_encoding_class_rec( FT_Library, FT_CMap_ClassRec*);
+ void FT_Init_Class_cff_cmap_unicode_class_rec( FT_Library, FT_CMap_ClassRec*);
+
+ void
+ cff_driver_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->cff )
+ {
+ CffModulePIC* container = (CffModulePIC*)pic_container->cff;
+ if(container->cff_services)
+ FT_Destroy_Class_cff_services(library, container->cff_services);
+ container->cff_services = NULL;
+ if(container->cff_field_handlers)
+ FT_Destroy_Class_cff_field_handlers(library, container->cff_field_handlers);
+ container->cff_field_handlers = NULL;
+ FT_FREE( container );
+ pic_container->cff = NULL;
+ }
+ }
+
+ FT_Error
+ cff_driver_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ CffModulePIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->cff = container;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ error = FT_Create_Class_cff_services(library, &container->cff_services);
+ if(error)
+ goto Exit;
+ error = FT_Create_Class_cff_field_handlers(library, &container->cff_field_handlers);
+ if(error)
+ goto Exit;
+ FT_Init_Class_cff_service_ps_info(library, &container->cff_service_ps_info);
+ FT_Init_Class_cff_service_glyph_dict(library, &container->cff_service_glyph_dict);
+ FT_Init_Class_cff_service_ps_name(library, &container->cff_service_ps_name);
+ FT_Init_Class_cff_service_get_cmap_info(library, &container->cff_service_get_cmap_info);
+ FT_Init_Class_cff_service_cid_info(library, &container->cff_service_cid_info);
+ FT_Init_Class_cff_cmap_encoding_class_rec(library, &container->cff_cmap_encoding_class_rec);
+ FT_Init_Class_cff_cmap_unicode_class_rec(library, &container->cff_cmap_unicode_class_rec);
+Exit:
+ if(error)
+ cff_driver_class_pic_free(library);
+ return error;
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/cff/cffpic.h b/src/3rdparty/freetype/src/cff/cffpic.h
new file mode 100644
index 0000000000..e29d068134
--- /dev/null
+++ b/src/3rdparty/freetype/src/cff/cffpic.h
@@ -0,0 +1,80 @@
+/***************************************************************************/
+/* */
+/* cffpic.h */
+/* */
+/* The FreeType position independent code services for cff module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __CFFPIC_H__
+#define __CFFPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+#define FT_CFF_SERVICE_PS_INFO_GET cff_service_ps_info
+#define FT_CFF_SERVICE_GLYPH_DICT_GET cff_service_glyph_dict
+#define FT_CFF_SERVICE_PS_NAME_GET cff_service_ps_name
+#define FT_CFF_SERVICE_GET_CMAP_INFO_GET cff_service_get_cmap_info
+#define FT_CFF_SERVICE_CID_INFO_GET cff_service_cid_info
+#define FT_CFF_SERVICES_GET cff_services
+#define FT_CFF_CMAP_ENCODING_CLASS_REC_GET cff_cmap_encoding_class_rec
+#define FT_CFF_CMAP_UNICODE_CLASS_REC_GET cff_cmap_unicode_class_rec
+#define FT_CFF_FIELD_HANDLERS_GET cff_field_handlers
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#include FT_SERVICE_GLYPH_DICT_H
+#include "cffparse.h"
+#include FT_SERVICE_POSTSCRIPT_INFO_H
+#include FT_SERVICE_POSTSCRIPT_NAME_H
+#include FT_SERVICE_TT_CMAP_H
+#include FT_SERVICE_CID_H
+
+ typedef struct CffModulePIC_
+ {
+ FT_ServiceDescRec* cff_services;
+ CFF_Field_Handler* cff_field_handlers;
+ FT_Service_PsInfoRec cff_service_ps_info;
+ FT_Service_GlyphDictRec cff_service_glyph_dict;
+ FT_Service_PsFontNameRec cff_service_ps_name;
+ FT_Service_TTCMapsRec cff_service_get_cmap_info;
+ FT_Service_CIDRec cff_service_cid_info;
+ FT_CMap_ClassRec cff_cmap_encoding_class_rec;
+ FT_CMap_ClassRec cff_cmap_unicode_class_rec;
+ } CffModulePIC;
+
+#define GET_PIC(lib) ((CffModulePIC*)((lib)->pic_container.cff))
+#define FT_CFF_SERVICE_PS_INFO_GET (GET_PIC(library)->cff_service_ps_info)
+#define FT_CFF_SERVICE_GLYPH_DICT_GET (GET_PIC(library)->cff_service_glyph_dict)
+#define FT_CFF_SERVICE_PS_NAME_GET (GET_PIC(library)->cff_service_ps_name)
+#define FT_CFF_SERVICE_GET_CMAP_INFO_GET (GET_PIC(library)->cff_service_get_cmap_info)
+#define FT_CFF_SERVICE_CID_INFO_GET (GET_PIC(library)->cff_service_cid_info)
+#define FT_CFF_SERVICES_GET (GET_PIC(library)->cff_services)
+#define FT_CFF_CMAP_ENCODING_CLASS_REC_GET (GET_PIC(library)->cff_cmap_encoding_class_rec)
+#define FT_CFF_CMAP_UNICODE_CLASS_REC_GET (GET_PIC(library)->cff_cmap_unicode_class_rec)
+#define FT_CFF_FIELD_HANDLERS_GET (GET_PIC(library)->cff_field_handlers)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __CFFPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/cff/cfftypes.h b/src/3rdparty/freetype/src/cff/cfftypes.h
index 546ea3b99d..df92e9a1ac 100644
--- a/src/3rdparty/freetype/src/cff/cfftypes.h
+++ b/src/3rdparty/freetype/src/cff/cfftypes.h
@@ -130,7 +130,7 @@ FT_BEGIN_HEADER
/* these should only be used for the top-level font dictionary */
FT_UInt cid_registry;
FT_UInt cid_ordering;
- FT_ULong cid_supplement;
+ FT_Long cid_supplement;
FT_Long cid_font_version;
FT_Long cid_font_revision;
diff --git a/src/3rdparty/freetype/src/cid/cidgload.c b/src/3rdparty/freetype/src/cid/cidgload.c
index 64994b4419..ea61b4e128 100644
--- a/src/3rdparty/freetype/src/cid/cidgload.c
+++ b/src/3rdparty/freetype/src/cid/cidgload.c
@@ -4,7 +4,7 @@
/* */
/* CID-keyed Type1 Glyph Loader (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -22,6 +22,7 @@
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_OUTLINE_H
+#include FT_INTERNAL_CALC_H
#include "ciderrs.h"
@@ -51,20 +52,25 @@
FT_ULong glyph_length = 0;
PSAux_Service psaux = (PSAux_Service)face->psaux;
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ FT_Incremental_InterfaceRec *inc =
+ face->root.internal->incremental_interface;
+#endif
+
+
+ FT_TRACE4(( "cid_load_glyph: glyph index %d\n", glyph_index ));
#ifdef FT_CONFIG_OPTION_INCREMENTAL
/* For incremental fonts get the character data using */
/* the callback function. */
- if ( face->root.internal->incremental_interface )
+ if ( inc )
{
FT_Data glyph_data;
- error = face->root.internal->incremental_interface->funcs->get_glyph_data(
- face->root.internal->incremental_interface->object,
- glyph_index,
- &glyph_data );
+ error = inc->funcs->get_glyph_data( inc->object,
+ glyph_index, &glyph_data );
if ( error )
goto Exit;
@@ -80,9 +86,7 @@
glyph_length );
}
- face->root.internal->incremental_interface->funcs->free_glyph_data(
- face->root.internal->incremental_interface->object,
- &glyph_data );
+ inc->funcs->free_glyph_data( inc->object, &glyph_data );
if ( error )
goto Exit;
@@ -163,23 +167,22 @@
#ifdef FT_CONFIG_OPTION_INCREMENTAL
/* Incremental fonts can optionally override the metrics. */
- if ( !error &&
- face->root.internal->incremental_interface &&
- face->root.internal->incremental_interface->funcs->get_glyph_metrics )
+ if ( !error && inc && inc->funcs->get_glyph_metrics )
{
FT_Incremental_MetricsRec metrics;
- metrics.bearing_x = decoder->builder.left_bearing.x;
- metrics.bearing_y = decoder->builder.left_bearing.y;
- metrics.advance = decoder->builder.advance.x;
- error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
- face->root.internal->incremental_interface->object,
- glyph_index, FALSE, &metrics );
- decoder->builder.left_bearing.x = metrics.bearing_x;
- decoder->builder.left_bearing.y = metrics.bearing_y;
- decoder->builder.advance.x = metrics.advance;
- decoder->builder.advance.y = 0;
+ metrics.bearing_x = FIXED_TO_INT( decoder->builder.left_bearing.x );
+ metrics.bearing_y = 0;
+ metrics.advance = FIXED_TO_INT( decoder->builder.advance.x );
+ metrics.advance_v = FIXED_TO_INT( decoder->builder.advance.y );
+
+ error = inc->funcs->get_glyph_metrics( inc->object,
+ glyph_index, FALSE, &metrics );
+
+ decoder->builder.left_bearing.x = INT_TO_FIXED( metrics.bearing_x );
+ decoder->builder.advance.x = INT_TO_FIXED( metrics.advance );
+ decoder->builder.advance.y = INT_TO_FIXED( metrics.advance_v );
}
#endif /* FT_CONFIG_OPTION_INCREMENTAL */
@@ -251,7 +254,7 @@
/* ignore the error if one occurred - skip to next glyph */
}
- *max_advance = decoder.builder.advance.x;
+ *max_advance = FIXED_TO_INT( decoder.builder.advance.x );
psaux->t1_decoder_funcs->done( &decoder );
@@ -342,8 +345,10 @@
FT_Slot_Internal internal = cidglyph->internal;
- cidglyph->metrics.horiBearingX = decoder.builder.left_bearing.x;
- cidglyph->metrics.horiAdvance = decoder.builder.advance.x;
+ cidglyph->metrics.horiBearingX =
+ FIXED_TO_INT( decoder.builder.left_bearing.x );
+ cidglyph->metrics.horiAdvance =
+ FIXED_TO_INT( decoder.builder.advance.x );
internal->glyph_matrix = font_matrix;
internal->glyph_delta = font_offset;
@@ -357,8 +362,10 @@
/* copy the _unscaled_ advance width */
- metrics->horiAdvance = decoder.builder.advance.x;
- cidglyph->linearHoriAdvance = decoder.builder.advance.x;
+ metrics->horiAdvance =
+ FIXED_TO_INT( decoder.builder.advance.x );
+ cidglyph->linearHoriAdvance =
+ FIXED_TO_INT( decoder.builder.advance.x );
cidglyph->internal->glyph_transformed = 0;
/* make up vertical ones */
@@ -420,9 +427,12 @@
metrics->horiBearingX = cbox.xMin;
metrics->horiBearingY = cbox.yMax;
- /* make up vertical ones */
- ft_synthesize_vertical_metrics( metrics,
- metrics->vertAdvance );
+ if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
+ {
+ /* make up vertical ones */
+ ft_synthesize_vertical_metrics( metrics,
+ metrics->vertAdvance );
+ }
}
Exit:
diff --git a/src/3rdparty/freetype/src/cid/cidload.c b/src/3rdparty/freetype/src/cid/cidload.c
index a43a00e01a..3bb359446f 100644
--- a/src/3rdparty/freetype/src/cid/cidload.c
+++ b/src/3rdparty/freetype/src/cid/cidload.c
@@ -112,7 +112,7 @@
if ( parser->num_dict < 0 )
{
- FT_ERROR(( "cid_load_keyword: invalid use of `%s'!\n",
+ FT_ERROR(( "cid_load_keyword: invalid use of `%s'\n",
keyword->ident ));
error = CID_Err_Syntax_Error;
goto Exit;
diff --git a/src/3rdparty/freetype/src/cid/cidobjs.c b/src/3rdparty/freetype/src/cid/cidobjs.c
index 9647d87016..82678af0d4 100644
--- a/src/3rdparty/freetype/src/cid/cidobjs.c
+++ b/src/3rdparty/freetype/src/cid/cidobjs.c
@@ -413,10 +413,11 @@
cidface->num_fixed_sizes = 0;
cidface->available_sizes = 0;
- cidface->bbox.xMin = cid->font_bbox.xMin >> 16;
- cidface->bbox.yMin = cid->font_bbox.yMin >> 16;
- cidface->bbox.xMax = ( cid->font_bbox.xMax + 0xFFFFU ) >> 16;
- cidface->bbox.yMax = ( cid->font_bbox.yMax + 0xFFFFU ) >> 16;
+ cidface->bbox.xMin = cid->font_bbox.xMin >> 16;
+ cidface->bbox.yMin = cid->font_bbox.yMin >> 16;
+ /* no `U' suffix here to 0xFFFF! */
+ cidface->bbox.xMax = ( cid->font_bbox.xMax + 0xFFFF ) >> 16;
+ cidface->bbox.yMax = ( cid->font_bbox.yMax + 0xFFFF ) >> 16;
if ( !cidface->units_per_EM )
cidface->units_per_EM = 1000;
diff --git a/src/3rdparty/freetype/src/cid/cidparse.c b/src/3rdparty/freetype/src/cid/cidparse.c
index bb87afc589..efed618f5a 100644
--- a/src/3rdparty/freetype/src/cid/cidparse.c
+++ b/src/3rdparty/freetype/src/cid/cidparse.c
@@ -4,7 +4,7 @@
/* */
/* CID-keyed Type1 parser (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,7 +18,6 @@
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_STREAM_H
@@ -87,13 +86,13 @@
/* `StartData' or `/sfnts' */
{
FT_Byte buffer[256 + 10];
- FT_Int read_len = 256 + 10;
+ FT_Long read_len = 256 + 10; /* same as signed FT_Stream->size */
FT_Byte* p = buffer;
- for ( offset = (FT_ULong)FT_STREAM_POS(); ; offset += 256 )
+ for ( offset = FT_STREAM_POS(); ; offset += 256 )
{
- FT_Int stream_len;
+ FT_Long stream_len; /* same as signed FT_Stream->size */
stream_len = stream->size - FT_STREAM_POS();
diff --git a/src/3rdparty/freetype/src/cid/cidriver.c b/src/3rdparty/freetype/src/cid/cidriver.c
index b41d5d6f05..3a2d22532a 100644
--- a/src/3rdparty/freetype/src/cid/cidriver.c
+++ b/src/3rdparty/freetype/src/cid/cidriver.c
@@ -20,7 +20,6 @@
#include "cidriver.h"
#include "cidgload.h"
#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_STREAM_H
#include "ciderrs.h"
diff --git a/src/3rdparty/freetype/src/cid/cidriver.h b/src/3rdparty/freetype/src/cid/cidriver.h
index d5a80f6f9f..c7f424bb38 100644
--- a/src/3rdparty/freetype/src/cid/cidriver.h
+++ b/src/3rdparty/freetype/src/cid/cidriver.h
@@ -26,6 +26,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_CALLBACK_TABLE
const FT_Driver_ClassRec t1cid_driver_class;
diff --git a/src/3rdparty/freetype/src/cid/cidtoken.h b/src/3rdparty/freetype/src/cid/cidtoken.h
index 94a3657b02..904cb09cf4 100644
--- a/src/3rdparty/freetype/src/cid/cidtoken.h
+++ b/src/3rdparty/freetype/src/cid/cidtoken.h
@@ -22,7 +22,7 @@
#define T1CODE T1_FIELD_LOCATION_CID_INFO
T1_FIELD_KEY ( "CIDFontName", cid_font_name, 0 )
- T1_FIELD_NUM ( "CIDFontVersion", cid_version, 0 )
+ T1_FIELD_FIXED ( "CIDFontVersion", cid_version, 0 )
T1_FIELD_NUM ( "CIDFontType", cid_font_type, 0 )
T1_FIELD_STRING( "Registry", registry, 0 )
T1_FIELD_STRING( "Ordering", ordering, 0 )
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvbsln.c b/src/3rdparty/freetype/src/gxvalid/gxvbsln.c
index 6cca65831e..3d10031563 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvbsln.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvbsln.c
@@ -71,10 +71,10 @@
static void
gxv_bsln_LookupValue_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
- FT_UShort v = value.u;
+ FT_UShort v = value_p->u;
FT_UShort* ctlPoints;
FT_UNUSED( glyph );
@@ -122,7 +122,7 @@
static GXV_LookupValueDesc
gxv_bsln_LookupFmt4_transit( FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid )
{
@@ -132,7 +132,7 @@
GXV_LookupValueDesc value;
/* XXX: check range ? */
- offset = (FT_UShort)( base_value.u +
+ offset = (FT_UShort)( base_value_p->u +
( relative_gindex * sizeof ( FT_UShort ) ) );
p = valid->lookuptbl_head + offset;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvcommn.c b/src/3rdparty/freetype/src/gxvalid/gxvcommn.c
index 46fc123fe4..de7ce6fdef 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvcommn.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvcommn.c
@@ -4,7 +4,8 @@
/* */
/* TrueTypeGX/AAT common tables validation (body). */
/* */
-/* Copyright 2004, 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */
+/* Copyright 2004, 2005, 2009 */
+/* by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -404,8 +405,8 @@
if ( UNITSIZE != CORRECTSIZE ) \
{ \
FT_ERROR(( "unitSize=%d differs from" \
- "expected unitSize=%d" \
- "in LookupTable %s", \
+ " expected unitSize=%d" \
+ " in LookupTable %s\n", \
UNITSIZE, CORRECTSIZE, FORMAT )); \
if ( UNITSIZE != 0 && NUNITS != 0 ) \
{ \
@@ -447,7 +448,7 @@
}
value = GXV_LOOKUP_VALUE_LOAD( p, valid->lookupval_sign );
- valid->lookupval_func( i, value, valid );
+ valid->lookupval_func( i, &value, valid );
}
valid->subtable_length = p - table;
@@ -552,7 +553,7 @@
}
for ( gid = firstGlyph; gid <= lastGlyph; gid++ )
- valid->lookupval_func( gid, value, valid );
+ valid->lookupval_func( gid, &value, valid );
}
gxv_LookupTable_fmt2_skip_endmarkers( p, unitSize, valid );
@@ -630,11 +631,11 @@
for ( gid = firstGlyph; gid <= lastGlyph; gid++ )
{
value = valid->lookupfmt4_trans( (FT_UShort)( gid - firstGlyph ),
- base_value,
+ &base_value,
limit,
valid );
- valid->lookupval_func( gid, value, valid );
+ valid->lookupval_func( gid, &value, valid );
}
}
@@ -709,7 +710,7 @@
}
prev_glyph = glyph;
- valid->lookupval_func( glyph, value, valid );
+ valid->lookupval_func( glyph, &value, valid );
}
gxv_LookupTable_fmt6_skip_endmarkers( p, unitSize, valid );
@@ -749,7 +750,7 @@
{
GXV_LIMIT_CHECK( 2 );
value = GXV_LOOKUP_VALUE_LOAD( p, valid->lookupval_sign );
- valid->lookupval_func( (FT_UShort)( firstGlyph + i ), value, valid );
+ valid->lookupval_func( (FT_UShort)( firstGlyph + i ), &value, valid );
}
valid->subtable_length = p - table;
@@ -1180,7 +1181,7 @@
if ( NULL != valid->statetable.entry_validate_func )
valid->statetable.entry_validate_func( state,
flags,
- glyphOffset,
+ &glyphOffset,
statetable_table,
statetable_limit,
valid );
@@ -1351,15 +1352,15 @@
static void
gxv_XClassTable_lookupval_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
FT_UNUSED( glyph );
- if ( value.u >= valid->xstatetable.nClasses )
+ if ( value_p->u >= valid->xstatetable.nClasses )
FT_INVALID_DATA;
- if ( value.u > valid->xstatetable.maxClassID )
- valid->xstatetable.maxClassID = value.u;
+ if ( value_p->u > valid->xstatetable.maxClassID )
+ valid->xstatetable.maxClassID = value_p->u;
}
@@ -1391,7 +1392,7 @@
*/
static GXV_LookupValueDesc
gxv_XClassTable_lookupfmt4_transit( FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid )
{
@@ -1401,7 +1402,7 @@
GXV_LookupValueDesc value;
/* XXX: check range? */
- offset = (FT_UShort)( base_value.u +
+ offset = (FT_UShort)( base_value_p->u +
relative_gindex * sizeof ( FT_UShort ) );
p = valid->lookuptbl_head + offset;
@@ -1555,7 +1556,7 @@
if ( NULL != valid->xstatetable.entry_validate_func )
valid->xstatetable.entry_validate_func( state,
flags,
- glyphOffset,
+ &glyphOffset,
xstatetable_table,
xstatetable_limit,
valid );
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvcommn.h b/src/3rdparty/freetype/src/gxvalid/gxvcommn.h
index 198d8e4fc5..404c07ffad 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvcommn.h
+++ b/src/3rdparty/freetype/src/gxvalid/gxvcommn.h
@@ -79,6 +79,8 @@ FT_BEGIN_HEADER
} GXV_LookupValueDesc;
+ typedef const GXV_LookupValueDesc* GXV_LookupValueCPtr;
+
typedef enum GXV_LookupValue_SignSpec_
{
GXV_LOOKUPVALUE_UNSIGNED = 0,
@@ -89,12 +91,12 @@ FT_BEGIN_HEADER
typedef void
(*GXV_Lookup_Value_Validate_Func)( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid );
typedef GXV_LookupValueDesc
(*GXV_Lookup_Fmt4_Transit_Func)( FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid );
@@ -134,6 +136,7 @@ FT_BEGIN_HEADER
} GXV_StateTable_GlyphOffsetDesc;
+ typedef const GXV_StateTable_GlyphOffsetDesc* GXV_StateTable_GlyphOffsetCPtr;
typedef void
(*GXV_StateTable_Subtable_Setup_Func)( FT_UShort table_size,
@@ -149,7 +152,7 @@ FT_BEGIN_HEADER
(*GXV_StateTable_Entry_Validate_Func)(
FT_Byte state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes statetable_table,
FT_Bytes statetable_limit,
GXV_Validator valid );
@@ -175,6 +178,8 @@ FT_BEGIN_HEADER
typedef GXV_StateTable_GlyphOffsetDesc GXV_XStateTable_GlyphOffsetDesc;
+ typedef const GXV_XStateTable_GlyphOffsetDesc* GXV_XStateTable_GlyphOffsetCPtr;
+
typedef void
(*GXV_XStateTable_Subtable_Setup_Func)( FT_ULong table_size,
FT_ULong classTable,
@@ -189,7 +194,7 @@ FT_BEGIN_HEADER
(*GXV_XStateTable_Entry_Validate_Func)(
FT_UShort state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes xstatetable_table,
FT_Bytes xstatetable_limit,
GXV_Validator valid );
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvfeat.c b/src/3rdparty/freetype/src/gxvalid/gxvfeat.c
index ad30a764c6..002fec6d6b 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvfeat.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvfeat.c
@@ -199,7 +199,7 @@
FT_UShort feature;
FT_UShort nSettings;
- FT_UInt settingTable;
+ FT_ULong settingTable;
FT_UShort featureFlags;
FT_Bool exclusive;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvjust.c b/src/3rdparty/freetype/src/gxvalid/gxvjust.c
index 29bf840b57..e14f946f2d 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvjust.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvjust.c
@@ -323,15 +323,15 @@
static void
gxv_just_pcTable_LookupValue_entry_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
FT_UNUSED( glyph );
- if ( value.u > GXV_JUST_DATA( pc_offset_max ) )
- GXV_JUST_DATA( pc_offset_max ) = value.u;
- if ( value.u < GXV_JUST_DATA( pc_offset_max ) )
- GXV_JUST_DATA( pc_offset_min ) = value.u;
+ if ( value_p->u > GXV_JUST_DATA( pc_offset_max ) )
+ GXV_JUST_DATA( pc_offset_max ) = value_p->u;
+ if ( value_p->u < GXV_JUST_DATA( pc_offset_max ) )
+ GXV_JUST_DATA( pc_offset_min ) = value_p->u;
}
@@ -384,7 +384,7 @@
gxv_just_classTable_entry_validate(
FT_Byte state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -395,7 +395,7 @@
FT_UShort currentClass;
FT_UNUSED( state );
- FT_UNUSED( glyphOffset );
+ FT_UNUSED( glyphOffset_p );
FT_UNUSED( table );
FT_UNUSED( limit );
FT_UNUSED( valid );
@@ -449,15 +449,15 @@
static void
gxv_just_wdcTable_LookupValue_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
FT_UNUSED( glyph );
- if ( value.u > GXV_JUST_DATA( wdc_offset_max ) )
- GXV_JUST_DATA( wdc_offset_max ) = value.u;
- if ( value.u < GXV_JUST_DATA( wdc_offset_min ) )
- GXV_JUST_DATA( wdc_offset_min ) = value.u;
+ if ( value_p->u > GXV_JUST_DATA( wdc_offset_max ) )
+ GXV_JUST_DATA( wdc_offset_max ) = value_p->u;
+ if ( value_p->u < GXV_JUST_DATA( wdc_offset_min ) )
+ GXV_JUST_DATA( wdc_offset_min ) = value_p->u;
}
@@ -557,7 +557,7 @@
{
FT_Bytes p = table;
FT_Bytes limit = 0;
- FT_UInt table_size;
+ FT_Offset table_size;
GXV_ValidatorRec validrec;
GXV_Validator valid = &validrec;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvkern.c b/src/3rdparty/freetype/src/gxvalid/gxvkern.c
index bfb405f65b..2137db842a 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvkern.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvkern.c
@@ -256,7 +256,7 @@
gxv_kern_subtable_fmt1_entry_validate(
FT_Byte state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -268,7 +268,7 @@
FT_UShort kernValue;
FT_UNUSED( state );
- FT_UNUSED( glyphOffset );
+ FT_UNUSED( glyphOffset_p );
push = (FT_UShort)( ( flags >> 15 ) & 1 );
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvlcar.c b/src/3rdparty/freetype/src/gxvalid/gxvlcar.c
index 48821ea879..f14fa5b131 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvlcar.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvlcar.c
@@ -83,10 +83,10 @@
static void
gxv_lcar_LookupValue_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
- FT_Bytes p = valid->root->base + value.u;
+ FT_Bytes p = valid->root->base + value_p->u;
FT_Bytes limit = valid->root->limit;
FT_UShort count;
FT_Short partial;
@@ -146,7 +146,7 @@
static GXV_LookupValueDesc
gxv_lcar_LookupFmt4_transit( FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid )
{
@@ -158,7 +158,7 @@
FT_UNUSED( lookuptbl_limit );
/* XXX: check range? */
- offset = (FT_UShort)( base_value.u +
+ offset = (FT_UShort)( base_value_p->u +
relative_gindex * sizeof ( FT_UShort ) );
p = valid->root->base + offset;
limit = valid->root->limit;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmod.h b/src/3rdparty/freetype/src/gxvalid/gxvmod.h
index 466584ef4f..d912a8f838 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmod.h
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmod.h
@@ -34,6 +34,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_EXPORT_VAR( const FT_Module_Class ) gxv_module_class;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort.c b/src/3rdparty/freetype/src/gxvalid/gxvmort.c
index f4fbd30e41..0aa066339d 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmort.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmort.c
@@ -85,17 +85,17 @@
/*
- * nFeatureFlags is typed to FT_UInt to accept that in
+ * nFeatureFlags is typed to FT_ULong to accept that in
* mort (typed FT_UShort) and morx (typed FT_ULong).
*/
FT_LOCAL_DEF( void )
gxv_mort_featurearray_validate( FT_Bytes table,
FT_Bytes limit,
- FT_UInt nFeatureFlags,
+ FT_ULong nFeatureFlags,
GXV_Validator valid )
{
FT_Bytes p = table;
- FT_UInt i;
+ FT_ULong i;
GXV_mort_featureRec f = GXV_MORT_FEATURE_OFF;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort.h b/src/3rdparty/freetype/src/gxvalid/gxvmort.h
index 1d64e69c47..1e5a1f5ab6 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmort.h
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmort.h
@@ -54,7 +54,7 @@
FT_LOCAL( void )
gxv_mort_featurearray_validate( FT_Bytes table,
FT_Bytes limit,
- FT_UInt nFeatureFlags,
+ FT_ULong nFeatureFlags,
GXV_Validator valid );
FT_LOCAL( void )
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort0.c b/src/3rdparty/freetype/src/gxvalid/gxvmort0.c
index 0902056c62..0453062f63 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmort0.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmort0.c
@@ -64,7 +64,7 @@
gxv_mort_subtable_type0_entry_validate(
FT_Byte state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -80,7 +80,7 @@
FT_UNUSED( limit );
FT_UNUSED( GXV_Mort_IndicScript_Msg[verb] ); /* for the non-debugging */
- FT_UNUSED( glyphOffset ); /* case */
+ FT_UNUSED( glyphOffset_p ); /* case */
markFirst = (FT_UShort)( ( flags >> 15 ) & 1 );
@@ -91,7 +91,7 @@
verb = (FT_UShort)( flags & 0x000F );
GXV_TRACE(( " IndicScript MorphRule for glyphOffset 0x%04x",
- glyphOffset.u ));
+ glyphOffset_p->u ));
GXV_TRACE(( " markFirst=%01d", markFirst ));
GXV_TRACE(( " dontAdvance=%01d", dontAdvance ));
GXV_TRACE(( " markLast=%01d", markLast ));
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort1.c b/src/3rdparty/freetype/src/gxvalid/gxvmort1.c
index 711bbd0baa..696d85032d 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmort1.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmort1.c
@@ -135,7 +135,7 @@
gxv_mort_subtable_type1_entry_validate(
FT_Byte state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -154,8 +154,8 @@
dontAdvance = (FT_UShort)( ( flags >> 14 ) & 1 );
reserved = (FT_Short)( flags & 0x3FFF );
- markOffset = (FT_Short)( glyphOffset.ul >> 16 );
- currentOffset = (FT_Short)( glyphOffset.ul );
+ markOffset = (FT_Short)( glyphOffset_p->ul >> 16 );
+ currentOffset = (FT_Short)( glyphOffset_p->ul );
if ( 0 < reserved )
{
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort2.c b/src/3rdparty/freetype/src/gxvalid/gxvmort2.c
index f19d15dab5..6f77cf39ce 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmort2.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmort2.c
@@ -189,7 +189,7 @@
gxv_mort_subtable_type2_entry_validate(
FT_Byte state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -199,7 +199,7 @@
FT_UShort offset;
FT_UNUSED( state );
- FT_UNUSED( glyphOffset );
+ FT_UNUSED( glyphOffset_p );
FT_UNUSED( limit );
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort4.c b/src/3rdparty/freetype/src/gxvalid/gxvmort4.c
index a04bc1efaf..83470988c0 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmort4.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmort4.c
@@ -40,12 +40,12 @@
static void
gxv_mort_subtable_type4_lookupval_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
FT_UNUSED( glyph );
- gxv_glyphid_validate( value.u, valid );
+ gxv_glyphid_validate( value_p->u, valid );
}
/*
@@ -78,7 +78,7 @@
static GXV_LookupValueDesc
gxv_mort_subtable_type4_lookupfmt4_transit(
FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid )
{
@@ -88,7 +88,7 @@
GXV_LookupValueDesc value;
/* XXX: check range? */
- offset = (FT_UShort)( base_value.u +
+ offset = (FT_UShort)( base_value_p->u +
relative_gindex * sizeof ( FT_UShort ) );
p = valid->lookuptbl_head + offset;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort5.c b/src/3rdparty/freetype/src/gxvalid/gxvmort5.c
index a7cabc359f..ec0bcb634d 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmort5.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmort5.c
@@ -139,7 +139,7 @@
gxv_mort_subtable_type5_entry_validate(
FT_Byte state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -168,8 +168,8 @@
currentInsertCount = (FT_Byte)( ( flags >> 5 ) & 0x1F );
markedInsertCount = (FT_Byte)( flags & 0x001F );
- currentInsertList = (FT_UShort)( glyphOffset.ul >> 16 );
- markedInsertList = (FT_UShort)( glyphOffset.ul );
+ currentInsertList = (FT_UShort)( glyphOffset->ul >> 16 );
+ markedInsertList = (FT_UShort)( glyphOffset->ul );
if ( 0 != currentInsertList && 0 != currentInsertCount )
{
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmorx.c b/src/3rdparty/freetype/src/gxvalid/gxvmorx.c
index d217940eab..f8ba5b985d 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmorx.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmorx.c
@@ -69,8 +69,8 @@
FT_ULong length;
FT_ULong coverage;
FT_ULong subFeatureFlags;
- FT_UInt type;
- FT_UInt rest;
+ FT_ULong type;
+ FT_ULong rest;
GXV_LIMIT_CHECK( 4 + 4 + 4 );
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c b/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c
index ca92b6c392..0159c5aef7 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c
@@ -42,7 +42,7 @@
gxv_morx_subtable_type0_entry_validate(
FT_UShort state,
FT_UShort flags,
- GXV_XStateTable_GlyphOffsetDesc glyphOffset,
+ GXV_XStateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -54,7 +54,7 @@
FT_UShort verb;
FT_UNUSED( state );
- FT_UNUSED( glyphOffset );
+ FT_UNUSED( glyphOffset_p );
FT_UNUSED( table );
FT_UNUSED( limit );
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c b/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c
index 331d4ccdab..e1c162fa0c 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c
@@ -103,7 +103,7 @@
gxv_morx_subtable_type1_entry_validate(
FT_UShort state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -127,8 +127,8 @@
reserved = (FT_UShort)( flags & 0x3FFF );
- markIndex = (FT_Short)( glyphOffset.ul >> 16 );
- currentIndex = (FT_Short)( glyphOffset.ul );
+ markIndex = (FT_Short)( glyphOffset_p->ul >> 16 );
+ currentIndex = (FT_Short)( glyphOffset_p->ul );
GXV_TRACE(( " setMark=%01d dontAdvance=%01d\n",
setMark, dontAdvance ));
@@ -155,14 +155,14 @@
static void
gxv_morx_subtable_type1_LookupValue_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
FT_UNUSED( glyph ); /* for the non-debugging case */
- GXV_TRACE(( "morx subtable type1 subst.: %d -> %d\n", glyph, value.u ));
+ GXV_TRACE(( "morx subtable type1 subst.: %d -> %d\n", glyph, value_p->u ));
- if ( value.u > valid->face->num_glyphs )
+ if ( value_p->u > valid->face->num_glyphs )
FT_INVALID_GLYPH_ID;
}
@@ -170,7 +170,7 @@
static GXV_LookupValueDesc
gxv_morx_subtable_type1_LookupFmt4_transit(
FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid )
{
@@ -180,7 +180,7 @@
GXV_LookupValueDesc value;
/* XXX: check range? */
- offset = (FT_UShort)( base_value.u +
+ offset = (FT_UShort)( base_value_p->u +
relative_gindex * sizeof ( FT_UShort ) );
p = valid->lookuptbl_head + offset;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c b/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c
index 5cad5169c2..b4bb3353f6 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c
@@ -186,7 +186,7 @@
gxv_morx_subtable_type2_entry_validate(
FT_UShort state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -206,7 +206,7 @@
performAction = (FT_UShort)( ( flags >> 13 ) & 1 );
reserved = (FT_UShort)( flags & 0x1FFF );
- ligActionIndex = glyphOffset.u;
+ ligActionIndex = glyphOffset_p->u;
if ( reserved > 0 )
GXV_TRACE(( " reserved 14bit is non-zero\n" ));
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c b/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c
index d9115618c0..5e3a16437e 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c
@@ -136,7 +136,7 @@
gxv_morx_subtable_type5_entry_validate(
FT_UShort state,
FT_UShort flags,
- GXV_StateTable_GlyphOffsetDesc glyphOffset,
+ GXV_StateTable_GlyphOffsetCPtr glyphOffset_p,
FT_Bytes table,
FT_Bytes limit,
GXV_Validator valid )
@@ -165,8 +165,8 @@
currentInsertCount = (FT_Byte)( ( flags >> 5 ) & 0x1F );
markedInsertCount = (FT_Byte)( flags & 0x001F );
- currentInsertList = (FT_Byte) ( glyphOffset.ul >> 16 );
- markedInsertList = (FT_UShort)( glyphOffset.ul );
+ currentInsertList = (FT_Byte) ( glyphOffset_p->ul >> 16 );
+ markedInsertList = (FT_UShort)( glyphOffset_p->ul );
if ( currentInsertList && 0 != currentInsertCount )
gxv_morx_subtable_type5_InsertList_validate( currentInsertList,
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvopbd.c b/src/3rdparty/freetype/src/gxvalid/gxvopbd.c
index 8d6fe669f3..e125060946 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvopbd.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvopbd.c
@@ -67,18 +67,18 @@
static void
gxv_opbd_LookupValue_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
/* offset in LookupTable is measured from the head of opbd table */
- FT_Bytes p = valid->root->base + value.u;
+ FT_Bytes p = valid->root->base + value_p->u;
FT_Bytes limit = valid->root->limit;
FT_Short delta_value;
int i;
- if ( value.u < GXV_OPBD_DATA( valueOffset_min ) )
- GXV_OPBD_DATA( valueOffset_min ) = value.u;
+ if ( value_p->u < GXV_OPBD_DATA( valueOffset_min ) )
+ GXV_OPBD_DATA( valueOffset_min ) = value_p->u;
for ( i = 0; i < 4; i++ )
{
@@ -132,7 +132,7 @@
static GXV_LookupValueDesc
gxv_opbd_LookupFmt4_transit( FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid )
{
@@ -142,7 +142,7 @@
FT_UNUSED( valid );
/* XXX: check range? */
- value.u = (FT_UShort)( base_value.u +
+ value.u = (FT_UShort)( base_value_p->u +
relative_gindex * 4 * sizeof ( FT_Short ) );
return value;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvprop.c b/src/3rdparty/freetype/src/gxvalid/gxvprop.c
index 010eeda426..66c3ab7404 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvprop.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvprop.c
@@ -168,10 +168,10 @@
static void
gxv_prop_LookupValue_validate( FT_UShort glyph,
- GXV_LookupValueDesc value,
+ GXV_LookupValueCPtr value_p,
GXV_Validator valid )
{
- gxv_prop_property_validate( value.u, glyph, valid );
+ gxv_prop_property_validate( value_p->u, glyph, valid );
}
@@ -204,7 +204,7 @@
static GXV_LookupValueDesc
gxv_prop_LookupFmt4_transit( FT_UShort relative_gindex,
- GXV_LookupValueDesc base_value,
+ GXV_LookupValueCPtr base_value_p,
FT_Bytes lookuptbl_limit,
GXV_Validator valid )
{
@@ -214,7 +214,7 @@
GXV_LookupValueDesc value;
/* XXX: check range? */
- offset = (FT_UShort)( base_value.u +
+ offset = (FT_UShort)( base_value_p->u +
relative_gindex * sizeof( FT_UShort ) );
p = valid->lookuptbl_head + offset;
limit = lookuptbl_limit;
diff --git a/src/3rdparty/freetype/src/gxvalid/gxvtrak.c b/src/3rdparty/freetype/src/gxvalid/gxvtrak.c
index 432ee4e271..df3fd15c0b 100644
--- a/src/3rdparty/freetype/src/gxvalid/gxvtrak.c
+++ b/src/3rdparty/freetype/src/gxvalid/gxvtrak.c
@@ -198,7 +198,7 @@
{
FT_Bytes p = table;
FT_Bytes limit = 0;
- FT_UInt table_size;
+ FT_Offset table_size;
GXV_ValidatorRec validrec;
GXV_Validator valid = &validrec;
diff --git a/src/3rdparty/freetype/src/gzip/adler32.c b/src/3rdparty/freetype/src/gzip/adler32.c
index 36f6a432ea..c53f9dd125 100644
--- a/src/3rdparty/freetype/src/gzip/adler32.c
+++ b/src/3rdparty/freetype/src/gzip/adler32.c
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: adler32.c,v 1.5 2007/06/01 06:56:17 wl Exp $ */
+/* @(#) $Id$ */
#include "zlib.h"
diff --git a/src/3rdparty/freetype/src/gzip/ftgzip.c b/src/3rdparty/freetype/src/gzip/ftgzip.c
index 0d6bd34956..6f0c515723 100644
--- a/src/3rdparty/freetype/src/gzip/ftgzip.c
+++ b/src/3rdparty/freetype/src/gzip/ftgzip.c
@@ -40,6 +40,10 @@
#ifdef FT_CONFIG_OPTION_USE_ZLIB
+#ifdef FT_CONFIG_OPTION_PIC
+#error "gzip code does not support PIC yet"
+#endif
+
#ifdef FT_CONFIG_OPTION_SYSTEM_ZLIB
#include <zlib.h>
@@ -54,7 +58,9 @@
/* original ZLib. */
#define NO_DUMMY_DECL
-#define MY_ZCALLOC
+#ifndef USE_ZLIB_ZCALLOC
+#define MY_ZCALLOC /* prevent all zcalloc() & zfree() in zutils.c */
+#endif
#include "zlib.h"
@@ -117,7 +123,7 @@
}
-#ifndef FT_CONFIG_OPTION_SYSTEM_ZLIB
+#if !defined( FT_CONFIG_OPTION_SYSTEM_ZLIB ) && !defined( USE_ZLIB_ZCALLOC )
local voidpf
zcalloc ( voidpf opaque,
@@ -134,7 +140,7 @@
ft_gzip_free( (FT_Memory)opaque, ptr );
}
-#endif /* !SYSTEM_ZLIB */
+#endif /* !SYSTEM_ZLIB && !USE_ZLIB_ZCALLOC */
/***************************************************************************/
diff --git a/src/3rdparty/freetype/src/gzip/zconf.h b/src/3rdparty/freetype/src/gzip/zconf.h
index 2030a7e8d4..3abf0ba03b 100644
--- a/src/3rdparty/freetype/src/gzip/zconf.h
+++ b/src/3rdparty/freetype/src/gzip/zconf.h
@@ -3,12 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: zconf.h,v 1.4 2007/06/01 06:56:17 wl Exp $ */
-
-#if defined(__ARMCC__) || defined(__CC_ARM)
-/* Ultra ugly hack that convinces RVCT to use the systems zlib */
-#include <stdapis/zconf.h>
-#else /* defined(__ARMCC__) || defined(__CC_ARM) */
+/* @(#) $Id$ */
#ifndef _ZCONF_H
#define _ZCONF_H
@@ -65,6 +60,12 @@
# define MSDOS
#endif
+/* WinCE doesn't have errno.h */
+#ifdef _WIN32_WCE
+# define NO_ERRNO_H
+#endif
+
+
/*
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
* than 64k bytes at a time (needed on systems with 16-bit int).
@@ -281,5 +282,3 @@ typedef uLong FAR uLongf;
#endif
#endif /* _ZCONF_H */
-
-#endif /* defined(__ARMCC__) || defined(__CC_ARM) */
diff --git a/src/3rdparty/freetype/src/gzip/zlib.h b/src/3rdparty/freetype/src/gzip/zlib.h
index 0f98fdcbd3..50d0d3f146 100644
--- a/src/3rdparty/freetype/src/gzip/zlib.h
+++ b/src/3rdparty/freetype/src/gzip/zlib.h
@@ -28,11 +28,6 @@
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
*/
-#if defined(__ARMCC__) || defined(__CC_ARM)
-/* Ultra ugly hack that convinces RVCT to use the systems zlib */
-#include <stdapis/zlib.h>
-#else /* defined(__ARMCC__) || defined(__CC_ARM) */
-
#ifndef _ZLIB_H
#define _ZLIB_H
@@ -833,5 +828,3 @@ ZEXTERN(int) inflateInit2_ OF((z_streamp strm, int windowBits,
#endif
#endif /* _ZLIB_H */
-
-#endif /* defined(__ARMCC__) || defined(__CC_ARM) */
diff --git a/src/3rdparty/freetype/src/gzip/zutil.c b/src/3rdparty/freetype/src/gzip/zutil.c
index 5ed2da0871..7ad0c1f81b 100644
--- a/src/3rdparty/freetype/src/gzip/zutil.c
+++ b/src/3rdparty/freetype/src/gzip/zutil.c
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: zutil.c,v 1.3 2006/04/29 07:31:16 wl Exp $ */
+/* @(#) $Id$ */
#include "zutil.h"
@@ -49,7 +49,7 @@ void zmemzero(dest, len)
}
#endif
-#ifdef __TURBOC__
+#if defined( MSDOS ) && defined( __TURBOC__ ) && !defined( MY_ZCALLOC )
#if (defined( __BORLANDC__) || !defined(SMALL_MEDIUM)) && !defined(__32BIT__)
/* Small and medium model in Turbo C are for now limited to near allocation
* with reduced MAX_WBITS and MAX_MEM_LEVEL
@@ -126,10 +126,10 @@ void zcfree (voidpf opaque, voidpf ptr)
Assert(0, "zcfree: ptr not found");
}
#endif
-#endif /* __TURBOC__ */
+#endif /* MSDOS && __TURBOC__ */
-#if defined(M_I86) && !defined(__32BIT__)
+#if defined(M_I86) && !defined(__32BIT__) && !defined( MY_ZCALLOC )
/* Microsoft C in 16-bit mode */
# define MY_ZCALLOC
diff --git a/src/3rdparty/freetype/src/gzip/zutil.h b/src/3rdparty/freetype/src/gzip/zutil.h
index 9560b48203..c9688cd9c0 100644
--- a/src/3rdparty/freetype/src/gzip/zutil.h
+++ b/src/3rdparty/freetype/src/gzip/zutil.h
@@ -8,7 +8,7 @@
subject to change. Applications should only use zlib.h.
*/
-/* @(#) $Id: zutil.h,v 1.6 2007/06/01 06:56:17 wl Exp $ */
+/* @(#) $Id$ */
#ifndef _Z_UTIL_H
#define _Z_UTIL_H
@@ -182,7 +182,7 @@ typedef unsigned long ulg;
#endif
/* Diagnostic functions */
-#if defined(DEBUG) && !defined(_WIN32_WCE)
+#ifdef DEBUG
# include <stdio.h>
extern int z_verbose;
extern void z_error OF((char *m));
diff --git a/src/3rdparty/freetype/src/lzw/ftlzw.c b/src/3rdparty/freetype/src/lzw/ftlzw.c
index a00bd5012f..6e57dedb97 100644
--- a/src/3rdparty/freetype/src/lzw/ftlzw.c
+++ b/src/3rdparty/freetype/src/lzw/ftlzw.c
@@ -8,7 +8,7 @@
/* be used to parse compressed PCF fonts, as found with many X11 server */
/* distributions. */
/* */
-/* Copyright 2004, 2005, 2006, 2009 by */
+/* Copyright 2004, 2005, 2006, 2009, 2010 by */
/* Albert Chin-A-Young. */
/* */
/* Based on code in src/gzip/ftgzip.c, Copyright 2004 by */
@@ -42,6 +42,10 @@
#ifdef FT_CONFIG_OPTION_USE_LZW
+#ifdef FT_CONFIG_OPTION_PIC
+#error "lzw code does not support PIC yet"
+#endif
+
#include "ftzopen.h"
@@ -118,13 +122,9 @@
zip->pos = 0;
/* check and skip .Z header */
- {
- stream = source;
-
- error = ft_lzw_check_header( source );
- if ( error )
- goto Exit;
- }
+ error = ft_lzw_check_header( source );
+ if ( error )
+ goto Exit;
/* initialize internal lzw variable */
ft_lzwstate_init( lzw, source );
diff --git a/src/3rdparty/freetype/src/lzw/ftzopen.c b/src/3rdparty/freetype/src/lzw/ftzopen.c
index fc7831510d..8bc65c8f57 100644
--- a/src/3rdparty/freetype/src/lzw/ftzopen.c
+++ b/src/3rdparty/freetype/src/lzw/ftzopen.c
@@ -8,7 +8,7 @@
/* be used to parse compressed PCF fonts, as found with many X11 server */
/* distributions. */
/* */
-/* Copyright 2005, 2006, 2007 by David Turner. */
+/* Copyright 2005, 2006, 2007, 2009 by David Turner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
@@ -113,8 +113,8 @@
{
FT_Memory memory = state->memory;
FT_Error error;
- FT_UInt old_size = state->stack_size;
- FT_UInt new_size = old_size;
+ FT_Offset old_size = state->stack_size;
+ FT_Offset new_size = old_size;
new_size = new_size + ( new_size >> 1 ) + 4;
@@ -332,6 +332,9 @@
while ( code >= 256U )
{
+ if ( !state->prefix )
+ goto Eof;
+
FTLZW_STACK_PUSH( state->suffix[code - 256] );
code = state->prefix[code - 256];
}
diff --git a/src/3rdparty/freetype/src/lzw/ftzopen.h b/src/3rdparty/freetype/src/lzw/ftzopen.h
index dd602402ac..f7d2936be2 100644
--- a/src/3rdparty/freetype/src/lzw/ftzopen.h
+++ b/src/3rdparty/freetype/src/lzw/ftzopen.h
@@ -118,7 +118,7 @@
FT_Int buf_offset;
FT_Int buf_size;
FT_Bool buf_clear;
- FT_Int buf_total;
+ FT_Offset buf_total;
FT_UInt max_bits; /* max code bits, from file header */
FT_Int block_mode; /* block mode flag, from file header */
@@ -137,7 +137,7 @@
FT_Byte* stack; /* character stack */
FT_UInt stack_top;
- FT_UInt stack_size;
+ FT_Offset stack_size;
FT_Byte stack_0[FT_LZW_DEFAULT_STACK_SIZE]; /* minimize heap alloc */
FT_Stream source; /* source stream */
diff --git a/src/3rdparty/freetype/src/otvalid/otvcommn.h b/src/3rdparty/freetype/src/otvalid/otvcommn.h
index 71726d5b2e..898887fc95 100644
--- a/src/3rdparty/freetype/src/otvalid/otvcommn.h
+++ b/src/3rdparty/freetype/src/otvalid/otvcommn.h
@@ -4,7 +4,7 @@
/* */
/* OpenType common tables validation (specification). */
/* */
-/* Copyright 2004, 2005, 2007 by */
+/* Copyright 2004, 2005, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -85,27 +85,27 @@ FT_BEGIN_HEADER
FT_INVALID_TOO_SHORT; \
FT_END_STMNT
-#define OTV_SIZE_CHECK( _size ) \
- FT_BEGIN_STMNT \
- if ( _size > 0 && _size < table_size ) \
- { \
- if ( valid->root->level == FT_VALIDATE_PARANOID ) \
- FT_INVALID_OFFSET; \
- else \
- { \
- /* strip off `const' */ \
- FT_Byte* pp = (FT_Byte*)_size ## _p; \
- \
- \
- FT_TRACE3(( "\n" \
- "Invalid offset to optional table `%s'!\n" \
- "Set to zero.\n" \
- "\n", #_size )); \
- \
- /* always assume 16bit entities */ \
- _size = pp[0] = pp[1] = 0; \
- } \
- } \
+#define OTV_SIZE_CHECK( _size ) \
+ FT_BEGIN_STMNT \
+ if ( _size > 0 && _size < table_size ) \
+ { \
+ if ( valid->root->level == FT_VALIDATE_PARANOID ) \
+ FT_INVALID_OFFSET; \
+ else \
+ { \
+ /* strip off `const' */ \
+ FT_Byte* pp = (FT_Byte*)_size ## _p; \
+ \
+ \
+ FT_TRACE3(( "\n" \
+ "Invalid offset to optional table `%s'" \
+ " set to zero.\n" \
+ "\n", #_size )); \
+ \
+ /* always assume 16bit entities */ \
+ _size = pp[0] = pp[1] = 0; \
+ } \
+ } \
FT_END_STMNT
diff --git a/src/3rdparty/freetype/src/otvalid/otvgpos.c b/src/3rdparty/freetype/src/otvalid/otvgpos.c
index 53025ec5e6..49b46183a3 100644
--- a/src/3rdparty/freetype/src/otvalid/otvgpos.c
+++ b/src/3rdparty/freetype/src/otvalid/otvgpos.c
@@ -209,7 +209,7 @@
{
if ( format & 1 )
{
- FT_UInt table_size;
+ FT_PtrDist table_size;
OTV_OPTIONAL_TABLE( device );
@@ -911,7 +911,8 @@
{
case 1: /* ExtensionPosFormat1 */
{
- FT_UInt ExtensionLookupType, ExtensionOffset;
+ FT_UInt ExtensionLookupType;
+ FT_ULong ExtensionOffset;
OTV_Validate_Func validate;
diff --git a/src/3rdparty/freetype/src/otvalid/otvgsub.c b/src/3rdparty/freetype/src/otvalid/otvgsub.c
index f01fca1e89..ed499d1e92 100644
--- a/src/3rdparty/freetype/src/otvalid/otvgsub.c
+++ b/src/3rdparty/freetype/src/otvalid/otvgsub.c
@@ -415,7 +415,8 @@
{
case 1: /* ExtensionSubstFormat1 */
{
- FT_UInt ExtensionLookupType, ExtensionOffset;
+ FT_UInt ExtensionLookupType;
+ FT_ULong ExtensionOffset;
OTV_Validate_Func validate;
diff --git a/src/3rdparty/freetype/src/otvalid/otvmod.c b/src/3rdparty/freetype/src/otvalid/otvmod.c
index 63c25f690c..3248564560 100644
--- a/src/3rdparty/freetype/src/otvalid/otvmod.c
+++ b/src/3rdparty/freetype/src/otvalid/otvmod.c
@@ -82,12 +82,25 @@
FT_Byte* volatile math;
FT_ULong len_base, len_gdef, len_gpos, len_gsub, len_jstf;
FT_ULong len_math;
+ FT_UInt num_glyphs = (FT_UInt)face->num_glyphs;
FT_ValidatorRec volatile valid;
base = gdef = gpos = gsub = jstf = math = NULL;
len_base = len_gdef = len_gpos = len_gsub = len_jstf = len_math = 0;
+ /*
+ * XXX: OpenType tables cannot handle 32-bit glyph index,
+ * although broken TrueType can have 32-bit glyph index.
+ */
+ if ( face->num_glyphs > 0xFFFFL )
+ {
+ FT_TRACE1(( "otv_validate: Invalid glyphs index (0x0000FFFF - 0x%08x) ",
+ face->num_glyphs ));
+ FT_TRACE1(( "are not handled by OpenType tables\n" ));
+ num_glyphs = 0xFFFF;
+ }
+
/* load tables */
if ( ot_flags & FT_VALIDATE_BASE )
@@ -148,7 +161,7 @@
{
ft_validator_init( &valid, gpos, gpos + len_gpos, FT_VALIDATE_DEFAULT );
if ( ft_setjmp( valid.jump_buffer ) == 0 )
- otv_GPOS_validate( gpos, face->num_glyphs, &valid );
+ otv_GPOS_validate( gpos, num_glyphs, &valid );
error = valid.error;
if ( error )
goto Exit;
@@ -158,7 +171,7 @@
{
ft_validator_init( &valid, gsub, gsub + len_gsub, FT_VALIDATE_DEFAULT );
if ( ft_setjmp( valid.jump_buffer ) == 0 )
- otv_GSUB_validate( gsub, face->num_glyphs, &valid );
+ otv_GSUB_validate( gsub, num_glyphs, &valid );
error = valid.error;
if ( error )
goto Exit;
@@ -168,7 +181,7 @@
{
ft_validator_init( &valid, gdef, gdef + len_gdef, FT_VALIDATE_DEFAULT );
if ( ft_setjmp( valid.jump_buffer ) == 0 )
- otv_GDEF_validate( gdef, gsub, gpos, face->num_glyphs, &valid );
+ otv_GDEF_validate( gdef, gsub, gpos, num_glyphs, &valid );
error = valid.error;
if ( error )
goto Exit;
@@ -178,7 +191,7 @@
{
ft_validator_init( &valid, jstf, jstf + len_jstf, FT_VALIDATE_DEFAULT );
if ( ft_setjmp( valid.jump_buffer ) == 0 )
- otv_JSTF_validate( jstf, gsub, gpos, face->num_glyphs, &valid );
+ otv_JSTF_validate( jstf, gsub, gpos, num_glyphs, &valid );
error = valid.error;
if ( error )
goto Exit;
@@ -188,7 +201,7 @@
{
ft_validator_init( &valid, math, math + len_math, FT_VALIDATE_DEFAULT );
if ( ft_setjmp( valid.jump_buffer ) == 0 )
- otv_MATH_validate( math, face->num_glyphs, &valid );
+ otv_MATH_validate( math, num_glyphs, &valid );
error = valid.error;
if ( error )
goto Exit;
diff --git a/src/3rdparty/freetype/src/otvalid/otvmod.h b/src/3rdparty/freetype/src/otvalid/otvmod.h
index 1bfc1899fe..573b2a0c4b 100644
--- a/src/3rdparty/freetype/src/otvalid/otvmod.h
+++ b/src/3rdparty/freetype/src/otvalid/otvmod.h
@@ -27,6 +27,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_EXPORT_VAR( const FT_Module_Class ) otv_module_class;
diff --git a/src/3rdparty/freetype/src/pcf/pcf.h b/src/3rdparty/freetype/src/pcf/pcf.h
index 9d2d8e0e42..1cd56c13a4 100644
--- a/src/3rdparty/freetype/src/pcf/pcf.h
+++ b/src/3rdparty/freetype/src/pcf/pcf.h
@@ -72,8 +72,8 @@ FT_BEGIN_HEADER
union
{
FT_String* atom;
- FT_Long integer;
- FT_ULong cardinal;
+ FT_Long l;
+ FT_ULong ul;
} value;
diff --git a/src/3rdparty/freetype/src/pcf/pcfdrivr.c b/src/3rdparty/freetype/src/pcf/pcfdrivr.c
index e2d4d3d874..b34e542aeb 100644
--- a/src/3rdparty/freetype/src/pcf/pcfdrivr.c
+++ b/src/3rdparty/freetype/src/pcf/pcfdrivr.c
@@ -111,7 +111,7 @@ THE SOFTWARE.
while ( min < max )
{
- FT_UInt32 code;
+ FT_ULong code;
mid = ( min + max ) >> 1;
@@ -140,7 +140,7 @@ THE SOFTWARE.
PCF_CMap cmap = (PCF_CMap)pcfcmap;
PCF_Encoding encodings = cmap->encodings;
FT_UInt min, max, mid;
- FT_UInt32 charcode = *acharcode + 1;
+ FT_ULong charcode = *acharcode + 1;
FT_UInt result = 0;
@@ -149,7 +149,7 @@ THE SOFTWARE.
while ( min < max )
{
- FT_UInt32 code;
+ FT_ULong code;
mid = ( min + max ) >> 1;
@@ -175,7 +175,14 @@ THE SOFTWARE.
}
Exit:
- *acharcode = charcode;
+ if ( charcode > 0xFFFFFFFFUL )
+ {
+ FT_TRACE1(( "pcf_cmap_char_next: charcode 0x%x > 32bit API" ));
+ *acharcode = 0;
+ /* XXX: result should be changed to indicate an overflow error */
+ }
+ else
+ *acharcode = (FT_UInt32)charcode;
return result;
}
@@ -266,19 +273,27 @@ THE SOFTWARE.
error = pcf_load_font( stream, face );
if ( error )
{
- FT_Error error2;
+ PCF_Face_Done( pcfface );
+#if defined( FT_CONFIG_OPTION_USE_ZLIB ) || \
+ defined( FT_CONFIG_OPTION_USE_LZW )
- PCF_Face_Done( pcfface );
+#ifdef FT_CONFIG_OPTION_USE_ZLIB
+ {
+ FT_Error error2;
- /* this didn't work, try gzip support! */
- error2 = FT_Stream_OpenGzip( &face->gzip_stream, stream );
- if ( FT_ERROR_BASE( error2 ) == FT_Err_Unimplemented_Feature )
- goto Fail;
- error = error2;
- if ( error )
+ /* this didn't work, try gzip support! */
+ error2 = FT_Stream_OpenGzip( &face->gzip_stream, stream );
+ if ( FT_ERROR_BASE( error2 ) == FT_Err_Unimplemented_Feature )
+ goto Fail;
+
+ error = error2;
+ }
+#endif /* FT_CONFIG_OPTION_USE_ZLIB */
+
#ifdef FT_CONFIG_OPTION_USE_LZW
+ if ( error )
{
FT_Error error3;
@@ -289,32 +304,26 @@ THE SOFTWARE.
goto Fail;
error = error3;
- if ( error )
- goto Fail;
+ }
+#endif /* FT_CONFIG_OPTION_USE_LZW */
- face->gzip_source = stream;
- pcfface->stream = &face->gzip_stream;
+ if ( error )
+ goto Fail;
- stream = pcfface->stream;
+ face->gzip_source = stream;
+ pcfface->stream = &face->gzip_stream;
- error = pcf_load_font( stream, face );
- if ( error )
- goto Fail;
- }
-#else
+ stream = pcfface->stream;
+
+ error = pcf_load_font( stream, face );
+ if ( error )
goto Fail;
-#endif
- else
- {
- face->gzip_source = stream;
- pcfface->stream = &face->gzip_stream;
- stream = pcfface->stream;
+#else /* !(FT_CONFIG_OPTION_USE_ZLIB || FT_CONFIG_OPTION_USE_LZW) */
- error = pcf_load_font( stream, face );
- if ( error )
- goto Fail;
- }
+ goto Fail;
+
+#endif
}
/* set up charmap */
@@ -446,7 +455,7 @@ THE SOFTWARE.
FT_Error error = PCF_Err_Ok;
FT_Bitmap* bitmap = &slot->bitmap;
PCF_Metric metric;
- int bytes;
+ FT_Offset bytes;
FT_UNUSED( load_flags );
@@ -576,12 +585,17 @@ THE SOFTWARE.
}
else
{
+ if ( prop->value.l > 0x7FFFFFFFL || prop->value.l < ( -1 - 0x7FFFFFFFL ) )
+ {
+ FT_TRACE1(( "pcf_get_bdf_property: " ));
+ FT_TRACE1(( "too large integer 0x%x is truncated\n" ));
+ }
/* Apparently, the PCF driver loads all properties as signed integers!
* This really doesn't seem to be a problem, because this is
* sufficient for any meaningful values.
*/
aproperty->type = BDF_PROPERTY_TYPE_INTEGER;
- aproperty->u.integer = prop->value.integer;
+ aproperty->u.integer = (FT_Int32)prop->value.l;
}
return 0;
}
diff --git a/src/3rdparty/freetype/src/pcf/pcfdrivr.h b/src/3rdparty/freetype/src/pcf/pcfdrivr.h
index 7ddf697e16..a81d7309e5 100644
--- a/src/3rdparty/freetype/src/pcf/pcfdrivr.h
+++ b/src/3rdparty/freetype/src/pcf/pcfdrivr.h
@@ -33,6 +33,10 @@ THE SOFTWARE.
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_EXPORT_VAR( const FT_Driver_ClassRec ) pcf_driver_class;
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/pcf/pcfread.c b/src/3rdparty/freetype/src/pcf/pcfread.c
index 8e04c57b31..08becf99ce 100644
--- a/src/3rdparty/freetype/src/pcf/pcfread.c
+++ b/src/3rdparty/freetype/src/pcf/pcfread.c
@@ -32,7 +32,6 @@ THE SOFTWARE.
#include FT_INTERNAL_OBJECTS_H
#include "pcf.h"
-#include "pcfdrivr.h"
#include "pcfread.h"
#include "pcferror.h"
@@ -290,13 +289,13 @@ THE SOFTWARE.
static FT_Error
pcf_seek_to_table_type( FT_Stream stream,
PCF_Table tables,
- FT_Int ntables,
+ FT_ULong ntables, /* same as PCF_Toc->count */
FT_ULong type,
FT_ULong *aformat,
FT_ULong *asize )
{
FT_Error error = PCF_Err_Invalid_File_Format;
- FT_Int i;
+ FT_ULong i;
for ( i = 0; i < ntables; i++ )
@@ -328,10 +327,10 @@ THE SOFTWARE.
static FT_Bool
pcf_has_table_type( PCF_Table tables,
- FT_Int ntables,
+ FT_ULong ntables, /* same as PCF_Toc->count */
FT_ULong type )
{
- FT_Int i;
+ FT_ULong i;
for ( i = 0; i < ntables; i++ )
@@ -400,7 +399,7 @@ THE SOFTWARE.
{
PCF_ParseProperty props = 0;
PCF_Property properties;
- FT_UInt nprops, i;
+ FT_ULong nprops, i;
FT_ULong format, size;
FT_Error error;
FT_Memory memory = FT_FACE(face)->memory;
@@ -434,7 +433,10 @@ THE SOFTWARE.
if ( error )
goto Bail;
- FT_TRACE4(( " nprop = %d\n", nprops ));
+ FT_TRACE4(( " nprop = %d (truncate %d props)\n",
+ (int)nprops, nprops - (int)nprops ));
+
+ nprops = (int)nprops;
/* rough estimate */
if ( nprops > size / PCF_PROPERTY_SIZE )
@@ -443,7 +445,7 @@ THE SOFTWARE.
goto Bail;
}
- face->nprops = nprops;
+ face->nprops = (int)nprops;
if ( FT_NEW_ARRAY( props, nprops ) )
goto Bail;
@@ -543,9 +545,9 @@ THE SOFTWARE.
}
else
{
- properties[i].value.integer = props[i].value;
+ properties[i].value.l = props[i].value;
- FT_TRACE4(( " %d\n", properties[i].value.integer ));
+ FT_TRACE4(( " %d\n", properties[i].value.l ));
}
}
@@ -662,7 +664,7 @@ THE SOFTWARE.
FT_Long* offsets;
FT_Long bitmapSizes[GLYPHPADOPTIONS];
FT_ULong format, size;
- int nbitmaps, i, sizebitmaps = 0;
+ FT_ULong nbitmaps, i, sizebitmaps = 0;
error = pcf_seek_to_table_type( stream,
@@ -693,7 +695,8 @@ THE SOFTWARE.
FT_TRACE4(( " number of bitmaps: %d\n", nbitmaps ));
- if ( nbitmaps != face->nmetrics )
+ /* XXX: PCF_Face->nmetrics is singed FT_Long, see pcf.h */
+ if ( face->nmetrics < 0 || nbitmaps != ( FT_ULong )face->nmetrics )
return PCF_Err_Invalid_File_Format;
if ( FT_NEW_ARRAY( offsets, nbitmaps ) )
@@ -739,8 +742,8 @@ THE SOFTWARE.
if ( ( offsets[i] < 0 ) ||
( (FT_ULong)offsets[i] > size ) )
{
- FT_ERROR(( "pcf_get_bitmaps:"));
- FT_ERROR(( " invalid offset to bitmap data of glyph %d\n", i ));
+ FT_TRACE0(( "pcf_get_bitmaps:"
+ " invalid offset to bitmap data of glyph %d\n", i ));
}
else
face->metrics[i].bits = stream->pos + offsets[i];
@@ -993,9 +996,9 @@ THE SOFTWARE.
PCF_Property prop;
- int nn, len;
- char* strings[4] = { NULL, NULL, NULL, NULL };
- int lengths[4];
+ size_t nn, len;
+ char* strings[4] = { NULL, NULL, NULL, NULL };
+ size_t lengths[4];
face->style_flags = 0;
@@ -1077,7 +1080,7 @@ THE SOFTWARE.
/* add_style_name and setwidth_name */
if ( nn == 0 || nn == 3 )
{
- int mm;
+ size_t mm;
for ( mm = 0; mm < len; mm++ )
@@ -1202,7 +1205,7 @@ THE SOFTWARE.
prop = pcf_find_property( face, "AVERAGE_WIDTH" );
if ( prop )
- bsize->width = (FT_Short)( ( prop->value.integer + 5 ) / 10 );
+ bsize->width = (FT_Short)( ( prop->value.l + 5 ) / 10 );
else
bsize->width = (FT_Short)( bsize->height * 2/3 );
@@ -1210,19 +1213,19 @@ THE SOFTWARE.
if ( prop )
/* convert from 722.7 decipoints to 72 points per inch */
bsize->size =
- (FT_Pos)( ( prop->value.integer * 64 * 7200 + 36135L ) / 72270L );
+ (FT_Pos)( ( prop->value.l * 64 * 7200 + 36135L ) / 72270L );
prop = pcf_find_property( face, "PIXEL_SIZE" );
if ( prop )
- bsize->y_ppem = (FT_Short)prop->value.integer << 6;
+ bsize->y_ppem = (FT_Short)prop->value.l << 6;
prop = pcf_find_property( face, "RESOLUTION_X" );
if ( prop )
- resolution_x = (FT_Short)prop->value.integer;
+ resolution_x = (FT_Short)prop->value.l;
prop = pcf_find_property( face, "RESOLUTION_Y" );
if ( prop )
- resolution_y = (FT_Short)prop->value.integer;
+ resolution_y = (FT_Short)prop->value.l;
if ( bsize->y_ppem == 0 )
{
diff --git a/src/3rdparty/freetype/src/pcf/pcfutil.c b/src/3rdparty/freetype/src/pcf/pcfutil.c
index 67ddbe8890..b91274f935 100644
--- a/src/3rdparty/freetype/src/pcf/pcfutil.c
+++ b/src/3rdparty/freetype/src/pcf/pcfutil.c
@@ -42,9 +42,9 @@ in this Software without prior written authorization from The Open Group.
FT_LOCAL_DEF( void )
BitOrderInvert( unsigned char* buf,
- int nbytes )
+ size_t nbytes )
{
- for ( ; --nbytes >= 0; buf++ )
+ for ( ; nbytes > 0; nbytes--, buf++ )
{
unsigned int val = *buf;
@@ -64,7 +64,7 @@ in this Software without prior written authorization from The Open Group.
FT_LOCAL_DEF( void )
TwoByteSwap( unsigned char* buf,
- int nbytes )
+ size_t nbytes )
{
unsigned char c;
@@ -83,7 +83,7 @@ in this Software without prior written authorization from The Open Group.
FT_LOCAL_DEF( void )
FourByteSwap( unsigned char* buf,
- int nbytes )
+ size_t nbytes )
{
unsigned char c;
diff --git a/src/3rdparty/freetype/src/pcf/pcfutil.h b/src/3rdparty/freetype/src/pcf/pcfutil.h
index 1557be3e80..ce10fb541d 100644
--- a/src/3rdparty/freetype/src/pcf/pcfutil.h
+++ b/src/3rdparty/freetype/src/pcf/pcfutil.h
@@ -37,15 +37,15 @@ FT_BEGIN_HEADER
FT_LOCAL( void )
BitOrderInvert( unsigned char* buf,
- int nbytes );
+ size_t nbytes );
FT_LOCAL( void )
TwoByteSwap( unsigned char* buf,
- int nbytes );
+ size_t nbytes );
FT_LOCAL( void )
FourByteSwap( unsigned char* buf,
- int nbytes );
+ size_t nbytes );
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/pfr/pfrcmap.c b/src/3rdparty/freetype/src/pfr/pfrcmap.c
index d4656d1b5e..9c8f9ed8eb 100644
--- a/src/3rdparty/freetype/src/pfr/pfrcmap.c
+++ b/src/3rdparty/freetype/src/pfr/pfrcmap.c
@@ -4,7 +4,7 @@
/* */
/* FreeType PFR cmap handling (body). */
/* */
-/* Copyright 2002, 2007 by */
+/* Copyright 2002, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,7 +18,6 @@
#include "pfrcmap.h"
#include "pfrobjs.h"
-#include FT_INTERNAL_DEBUG_H
#include "pfrerror.h"
@@ -89,7 +88,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
pfr_cmap_char_next( PFR_CMap cmap,
FT_UInt32 *pchar_code )
{
diff --git a/src/3rdparty/freetype/src/pfr/pfrdrivr.h b/src/3rdparty/freetype/src/pfr/pfrdrivr.h
index 36f1205b77..da0a1aa634 100644
--- a/src/3rdparty/freetype/src/pfr/pfrdrivr.h
+++ b/src/3rdparty/freetype/src/pfr/pfrdrivr.h
@@ -26,6 +26,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_EXPORT_VAR( const FT_Driver_ClassRec ) pfr_driver_class;
diff --git a/src/3rdparty/freetype/src/pfr/pfrload.c b/src/3rdparty/freetype/src/pfr/pfrload.c
index 1ee2c1f8c8..bc5c035f3d 100644
--- a/src/3rdparty/freetype/src/pfr/pfrload.c
+++ b/src/3rdparty/freetype/src/pfr/pfrload.c
@@ -4,7 +4,7 @@
/* */
/* FreeType PFR loader (body). */
/* */
-/* Copyright 2002, 2003, 2004, 2005, 2007 by */
+/* Copyright 2002, 2003, 2004, 2005, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -428,7 +428,8 @@
Too_Short:
error = PFR_Err_Invalid_Table;
- FT_ERROR(( "pfr_extra_item_load_bitmap_info: invalid bitmap info table\n" ));
+ FT_ERROR(( "pfr_extra_item_load_bitmap_info:"
+ " invalid bitmap info table\n" ));
goto Exit;
}
@@ -506,7 +507,8 @@
Too_Short:
error = PFR_Err_Invalid_Table;
- FT_ERROR(( "pfr_exta_item_load_stem_snaps: invalid stem snaps table\n" ));
+ FT_ERROR(( "pfr_exta_item_load_stem_snaps:"
+ " invalid stem snaps table\n" ));
goto Exit;
}
@@ -603,8 +605,8 @@
FT_FREE( item );
error = PFR_Err_Invalid_Table;
- FT_ERROR(( "pfr_extra_item_load_kerning_pairs: "
- "invalid kerning pairs table\n" ));
+ FT_ERROR(( "pfr_extra_item_load_kerning_pairs:"
+ " invalid kerning pairs table\n" ));
goto Exit;
}
@@ -714,7 +716,8 @@
{
FT_Error error;
FT_Memory memory = stream->memory;
- FT_UInt flags, num_aux;
+ FT_UInt flags;
+ FT_ULong num_aux;
FT_Byte* p;
FT_Byte* limit;
diff --git a/src/3rdparty/freetype/src/pfr/pfrsbit.c b/src/3rdparty/freetype/src/pfr/pfrsbit.c
index 45ff6663b3..d2f17dc9ce 100644
--- a/src/3rdparty/freetype/src/pfr/pfrsbit.c
+++ b/src/3rdparty/freetype/src/pfr/pfrsbit.c
@@ -4,7 +4,7 @@
/* */
/* FreeType PFR bitmap loader (body). */
/* */
-/* Copyright 2002, 2003, 2006 by */
+/* Copyright 2002, 2003, 2006, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -600,8 +600,8 @@
/* get the bitmap metrics */
{
- FT_Long xpos, ypos, advance;
- FT_UInt xsize, ysize, format;
+ FT_Long xpos = 0, ypos = 0, advance = 0;
+ FT_UInt xsize = 0, ysize = 0, format = 0;
FT_Byte* p;
@@ -630,18 +630,35 @@
&xpos, &ypos,
&xsize, &ysize,
&advance, &format );
+
+ /*
+ * XXX: on 16bit system, we return an error for huge bitmap
+ * which causes a size truncation, because truncated
+ * size properties makes bitmap glyph broken.
+ */
+ if ( xpos > FT_INT_MAX || ( ypos + ysize ) > FT_INT_MAX )
+ {
+ FT_TRACE1(( "pfr_slot_load_bitmap:" ));
+ FT_TRACE1(( "huge bitmap glyph %dx%d over FT_GlyphSlot\n",
+ xpos, ypos ));
+ error = PFR_Err_Invalid_Pixel_Size;
+ }
+
if ( !error )
{
glyph->root.format = FT_GLYPH_FORMAT_BITMAP;
/* Set up glyph bitmap and metrics */
+
+ /* XXX: needs casts to fit FT_Bitmap.{width|rows|pitch} */
glyph->root.bitmap.width = (FT_Int)xsize;
glyph->root.bitmap.rows = (FT_Int)ysize;
- glyph->root.bitmap.pitch = (FT_Long)( xsize + 7 ) >> 3;
+ glyph->root.bitmap.pitch = (FT_Int)( xsize + 7 ) >> 3;
glyph->root.bitmap.pixel_mode = FT_PIXEL_MODE_MONO;
- glyph->root.metrics.width = (FT_Long)xsize << 6;
- glyph->root.metrics.height = (FT_Long)ysize << 6;
+ /* XXX: needs casts to fit FT_Glyph_Metrics.{width|height} */
+ glyph->root.metrics.width = (FT_Pos)xsize << 6;
+ glyph->root.metrics.height = (FT_Pos)ysize << 6;
glyph->root.metrics.horiBearingX = xpos << 6;
glyph->root.metrics.horiBearingY = ypos << 6;
glyph->root.metrics.horiAdvance = FT_PIX_ROUND( ( advance >> 2 ) );
@@ -649,8 +666,9 @@
glyph->root.metrics.vertBearingY = 0;
glyph->root.metrics.vertAdvance = size->root.metrics.height;
- glyph->root.bitmap_left = xpos;
- glyph->root.bitmap_top = ypos + ysize;
+ /* XXX: needs casts fit FT_GlyphSlotRec.bitmap_{left|top} */
+ glyph->root.bitmap_left = (FT_Int)xpos;
+ glyph->root.bitmap_top = (FT_Int)(ypos + ysize);
/* Allocate and read bitmap data */
{
diff --git a/src/3rdparty/freetype/src/pfr/pfrtypes.h b/src/3rdparty/freetype/src/pfr/pfrtypes.h
index c0ae04253a..918310814c 100644
--- a/src/3rdparty/freetype/src/pfr/pfrtypes.h
+++ b/src/3rdparty/freetype/src/pfr/pfrtypes.h
@@ -200,7 +200,7 @@ FT_BEGIN_HEADER
FT_Byte flags;
FT_Short base_adj;
FT_UInt pair_size;
- FT_UInt32 offset;
+ FT_Offset offset;
FT_UInt32 pair1;
FT_UInt32 pair2;
@@ -252,7 +252,7 @@ FT_BEGIN_HEADER
FT_UInt blue_scale;
FT_UInt num_chars;
- FT_UInt32 chars_offset;
+ FT_Offset chars_offset;
PFR_Char chars;
FT_UInt num_kern_pairs;
@@ -260,7 +260,7 @@ FT_BEGIN_HEADER
PFR_KernItem* kern_items_tail;
/* not part of the spec, but used during load */
- FT_UInt32 bct_offset;
+ FT_Long bct_offset;
FT_Byte* cursor;
} PFR_PhyFontRec, *PFR_PhyFont;
diff --git a/src/3rdparty/freetype/src/psaux/afmparse.c b/src/3rdparty/freetype/src/psaux/afmparse.c
index 63a786e888..91a17e2362 100644
--- a/src/3rdparty/freetype/src/psaux/afmparse.c
+++ b/src/3rdparty/freetype/src/psaux/afmparse.c
@@ -4,7 +4,7 @@
/* */
/* AFM parser (body). */
/* */
-/* Copyright 2006, 2007, 2008 by */
+/* Copyright 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,7 +18,6 @@
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_INTERNAL_POSTSCRIPT_AUX_H
-#include FT_INTERNAL_DEBUG_H
#include "afmparse.h"
#include "psconv.h"
@@ -367,11 +366,11 @@
FT_LOCAL_DEF( FT_Int )
afm_parser_read_vals( AFM_Parser parser,
AFM_Value vals,
- FT_Int n )
+ FT_UInt n )
{
AFM_Stream stream = parser->stream;
char* str;
- FT_Int i;
+ FT_UInt i;
if ( n > AFM_MAX_ARGUMENTS )
@@ -379,7 +378,7 @@
for ( i = 0; i < n; i++ )
{
- FT_UInt len;
+ FT_Offset len;
AFM_Value val = vals + i;
@@ -441,7 +440,7 @@
FT_LOCAL_DEF( char* )
afm_parser_next_key( AFM_Parser parser,
FT_Bool line,
- FT_UInt* len )
+ FT_Offset* len )
{
AFM_Stream stream = parser->stream;
char* key = 0; /* make stupid compiler happy */
@@ -489,7 +488,7 @@
}
if ( len )
- *len = ( key ) ? AFM_STREAM_KEY_LEN( stream, key )
+ *len = ( key ) ? (FT_Offset)AFM_STREAM_KEY_LEN( stream, key )
: 0;
return key;
@@ -498,7 +497,7 @@
static AFM_Token
afm_tokenize( const char* key,
- FT_UInt len )
+ FT_Offset len )
{
int n;
@@ -586,7 +585,7 @@
AFM_FontInfo fi = parser->FontInfo;
AFM_TrackKern tk;
char* key;
- FT_UInt len;
+ FT_Offset len;
int n = -1;
@@ -687,7 +686,7 @@
AFM_FontInfo fi = parser->FontInfo;
AFM_KernPair kp;
char* key;
- FT_UInt len;
+ FT_Offset len;
int n = -1;
@@ -775,9 +774,9 @@
static FT_Error
afm_parse_kern_data( AFM_Parser parser )
{
- FT_Error error;
- char* key;
- FT_UInt len;
+ FT_Error error;
+ char* key;
+ FT_Offset len;
while ( ( key = afm_parser_next_key( parser, 1, &len ) ) != 0 )
@@ -819,8 +818,8 @@
FT_UInt n,
AFM_Token end_section )
{
- char* key;
- FT_UInt len;
+ char* key;
+ FT_Offset len;
while ( n-- > 0 )
@@ -851,7 +850,7 @@
AFM_FontInfo fi = parser->FontInfo;
FT_Error error = PSaux_Err_Syntax_Error;
char* key;
- FT_UInt len;
+ FT_Offset len;
FT_Int metrics_sets = 0;
diff --git a/src/3rdparty/freetype/src/psaux/afmparse.h b/src/3rdparty/freetype/src/psaux/afmparse.h
index c2fce75c86..de2a530b2f 100644
--- a/src/3rdparty/freetype/src/psaux/afmparse.h
+++ b/src/3rdparty/freetype/src/psaux/afmparse.h
@@ -71,13 +71,13 @@ FT_BEGIN_HEADER
FT_LOCAL( FT_Int )
afm_parser_read_vals( AFM_Parser parser,
AFM_Value vals,
- FT_Int n );
+ FT_UInt n );
/* read the next key from the next line or column */
FT_LOCAL( char* )
afm_parser_next_key( AFM_Parser parser,
FT_Bool line,
- FT_UInt* len );
+ FT_Offset* len );
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/psaux/psauxmod.h b/src/3rdparty/freetype/src/psaux/psauxmod.h
index 92ac056048..35e042dbce 100644
--- a/src/3rdparty/freetype/src/psaux/psauxmod.h
+++ b/src/3rdparty/freetype/src/psaux/psauxmod.h
@@ -26,6 +26,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_EXPORT_VAR( const FT_Module_Class ) psaux_driver_class;
diff --git a/src/3rdparty/freetype/src/psaux/psconv.c b/src/3rdparty/freetype/src/psaux/psconv.c
index d824b59139..1531d8f0fb 100644
--- a/src/3rdparty/freetype/src/psaux/psconv.c
+++ b/src/3rdparty/freetype/src/psaux/psconv.c
@@ -4,7 +4,7 @@
/* */
/* Some convenience conversions (body). */
/* */
-/* Copyright 2006, 2008 by */
+/* Copyright 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,10 +18,8 @@
#include <ft2build.h>
#include FT_INTERNAL_POSTSCRIPT_AUX_H
-#include FT_INTERNAL_DEBUG_H
#include "psconv.h"
-#include "psobjs.h"
#include "psauxerr.h"
@@ -241,7 +239,7 @@
PS_Conv_StringDecode( FT_Byte** cursor,
FT_Byte* limit,
FT_Byte* buffer,
- FT_UInt n )
+ FT_Offset n )
{
FT_Byte* p;
FT_UInt r = 0;
@@ -336,7 +334,7 @@
PS_Conv_ASCIIHexDecode( FT_Byte** cursor,
FT_Byte* limit,
FT_Byte* buffer,
- FT_UInt n )
+ FT_Offset n )
{
FT_Byte* p;
FT_UInt r = 0;
@@ -425,7 +423,7 @@
PS_Conv_EexecDecode( FT_Byte** cursor,
FT_Byte* limit,
FT_Byte* buffer,
- FT_UInt n,
+ FT_Offset n,
FT_UShort* seed )
{
FT_Byte* p;
diff --git a/src/3rdparty/freetype/src/psaux/psconv.h b/src/3rdparty/freetype/src/psaux/psconv.h
index e51124185d..84854ba0d1 100644
--- a/src/3rdparty/freetype/src/psaux/psconv.h
+++ b/src/3rdparty/freetype/src/psaux/psconv.h
@@ -46,20 +46,20 @@ FT_BEGIN_HEADER
PS_Conv_StringDecode( FT_Byte** cursor,
FT_Byte* limit,
FT_Byte* buffer,
- FT_UInt n );
+ FT_Offset n );
#endif
FT_LOCAL( FT_UInt )
PS_Conv_ASCIIHexDecode( FT_Byte** cursor,
FT_Byte* limit,
FT_Byte* buffer,
- FT_UInt n );
+ FT_Offset n );
FT_LOCAL( FT_UInt )
PS_Conv_EexecDecode( FT_Byte** cursor,
FT_Byte* limit,
FT_Byte* buffer,
- FT_UInt n,
+ FT_Offset n,
FT_UShort* seed );
diff --git a/src/3rdparty/freetype/src/psaux/psobjs.c b/src/3rdparty/freetype/src/psaux/psobjs.c
index 52e30a4136..fe8398ae38 100644
--- a/src/3rdparty/freetype/src/psaux/psobjs.c
+++ b/src/3rdparty/freetype/src/psaux/psobjs.c
@@ -19,6 +19,7 @@
#include <ft2build.h>
#include FT_INTERNAL_POSTSCRIPT_AUX_H
#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_CALC_H
#include "psobjs.h"
#include "psconv.h"
@@ -564,8 +565,8 @@
cur++;
if ( cur >= limit || *cur != '>' ) /* >> */
{
- FT_ERROR(( "ps_parser_skip_PS_token: "
- "unexpected closing delimiter `>'\n" ));
+ FT_ERROR(( "ps_parser_skip_PS_token:"
+ " unexpected closing delimiter `>'\n" ));
error = PSaux_Err_Invalid_File_Format;
goto Exit;
}
@@ -590,9 +591,10 @@
Exit:
if ( cur == parser->cursor )
{
- FT_ERROR(( "ps_parser_skip_PS_token: "
- "current token is `%c', which is self-delimiting "
- "but invalid at this point\n",
+ FT_ERROR(( "ps_parser_skip_PS_token:"
+ " current token is `%c' which is self-delimiting\n"
+ " "
+ " but invalid at this point\n",
*cur ));
error = PSaux_Err_Invalid_File_Format;
@@ -1153,8 +1155,10 @@
}
else
{
- FT_ERROR(( "ps_parser_load_field: expected a name or string "
- "but found token of type %d instead\n",
+ FT_ERROR(( "ps_parser_load_field:"
+ " expected a name or string\n"
+ " "
+ " but found token of type %d instead\n",
token.type ));
error = PSaux_Err_Invalid_File_Format;
goto Exit;
@@ -1191,8 +1195,8 @@
if ( result < 0 )
{
- FT_ERROR(( "ps_parser_load_field: "
- "expected four integers in bounding box\n" ));
+ FT_ERROR(( "ps_parser_load_field:"
+ " expected four integers in bounding box\n" ));
error = PSaux_Err_Invalid_File_Format;
goto Exit;
}
@@ -1309,7 +1313,7 @@
FT_LOCAL_DEF( FT_Error )
ps_parser_to_bytes( PS_Parser parser,
FT_Byte* bytes,
- FT_Long max_bytes,
+ FT_Offset max_bytes,
FT_Long* pnum_bytes,
FT_Bool delimiters )
{
@@ -1551,16 +1555,9 @@
FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points;
- if ( builder->shift )
- {
- x >>= 16;
- y >>= 16;
- }
- point->x = x;
- point->y = y;
+ point->x = FIXED_TO_INT( x );
+ point->y = FIXED_TO_INT( y );
*control = (FT_Byte)( flag ? FT_CURVE_TAG_ON : FT_CURVE_TAG_CUBIC );
-
- builder->last = *point;
}
outline->n_points++;
}
@@ -1668,8 +1665,8 @@
if ( outline->n_contours > 0 )
{
- /* Don't add contours only consisting of one point, i.e., */
- /* check whether begin point and last point are the same. */
+ /* Don't add contours only consisting of one point, i.e., */
+ /* check whether the first and the last point is the same. */
if ( first == outline->n_points - 1 )
{
outline->n_contours--;
diff --git a/src/3rdparty/freetype/src/psaux/psobjs.h b/src/3rdparty/freetype/src/psaux/psobjs.h
index c2cbf2c79b..e380c60dab 100644
--- a/src/3rdparty/freetype/src/psaux/psobjs.h
+++ b/src/3rdparty/freetype/src/psaux/psobjs.h
@@ -111,7 +111,7 @@ FT_BEGIN_HEADER
FT_LOCAL( FT_Error )
ps_parser_to_bytes( PS_Parser parser,
FT_Byte* bytes,
- FT_Long max_bytes,
+ FT_Offset max_bytes,
FT_Long* pnum_bytes,
FT_Bool delimiters );
diff --git a/src/3rdparty/freetype/src/psaux/t1cmap.c b/src/3rdparty/freetype/src/psaux/t1cmap.c
index 67a23db569..f933e4da88 100644
--- a/src/3rdparty/freetype/src/psaux/t1cmap.c
+++ b/src/3rdparty/freetype/src/psaux/t1cmap.c
@@ -95,7 +95,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
t1_cmap_std_char_next( T1_CMapStd cmap,
FT_UInt32 *pchar_code )
{
@@ -179,7 +179,7 @@
cmap->first = encoding->code_first;
- cmap->count = (FT_UInt)( encoding->code_last - cmap->first + 1 );
+ cmap->count = (FT_UInt)( encoding->code_last - cmap->first );
cmap->indices = encoding->char_index;
FT_ASSERT( cmap->indices != NULL );
@@ -213,7 +213,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
t1_cmap_custom_char_next( T1_CMapCustom cmap,
FT_UInt32 *pchar_code )
{
@@ -312,7 +312,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
t1_cmap_unicode_char_next( PS_Unicodes unicodes,
FT_UInt32 *pchar_code )
{
diff --git a/src/3rdparty/freetype/src/psaux/t1decode.c b/src/3rdparty/freetype/src/psaux/t1decode.c
index bda2324d78..31554ff1ba 100644
--- a/src/3rdparty/freetype/src/psaux/t1decode.c
+++ b/src/3rdparty/freetype/src/psaux/t1decode.c
@@ -4,7 +4,8 @@
/* */
/* PostScript Type 1 decoding routines (body). */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
+/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -17,6 +18,7 @@
#include <ft2build.h>
+#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
#include FT_OUTLINE_H
@@ -144,7 +146,8 @@
FT_String* name = (FT_String*)decoder->glyph_names[n];
- if ( name && name[0] == glyph_name[0] &&
+ if ( name &&
+ name[0] == glyph_name[0] &&
ft_strcmp( name, glyph_name ) == 0 )
return n;
}
@@ -193,26 +196,52 @@
#endif
FT_Vector left_bearing, advance;
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ T1_Face face = (T1_Face)decoder->builder.face;
+#endif
+
+
+ if ( decoder->seac )
+ {
+ FT_ERROR(( "t1operator_seac: invalid nested seac\n" ));
+ return PSaux_Err_Syntax_Error;
+ }
/* seac weirdness */
adx += decoder->builder.left_bearing.x;
/* `glyph_names' is set to 0 for CID fonts which do not */
/* include an encoding. How can we deal with these? */
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ if ( decoder->glyph_names == 0 &&
+ !face->root.internal->incremental_interface )
+#else
if ( decoder->glyph_names == 0 )
+#endif /* FT_CONFIG_OPTION_INCREMENTAL */
{
- FT_ERROR(( "t1operator_seac:" ));
- FT_ERROR(( " glyph names table not available in this font!\n" ));
+ FT_ERROR(( "t1operator_seac:"
+ " glyph names table not available in this font\n" ));
return PSaux_Err_Syntax_Error;
}
- bchar_index = t1_lookup_glyph_by_stdcharcode( decoder, bchar );
- achar_index = t1_lookup_glyph_by_stdcharcode( decoder, achar );
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ if ( face->root.internal->incremental_interface )
+ {
+ /* the caller must handle the font encoding also */
+ bchar_index = bchar;
+ achar_index = achar;
+ }
+ else
+#endif
+ {
+ bchar_index = t1_lookup_glyph_by_stdcharcode( decoder, bchar );
+ achar_index = t1_lookup_glyph_by_stdcharcode( decoder, achar );
+ }
if ( bchar_index < 0 || achar_index < 0 )
{
- FT_ERROR(( "t1operator_seac:" ));
- FT_ERROR(( " invalid seac character code arguments\n" ));
+ FT_ERROR(( "t1operator_seac:"
+ " invalid seac character code arguments\n" ));
return PSaux_Err_Syntax_Error;
}
@@ -243,8 +272,8 @@
/* subglyph 1 = accent character */
subg->index = achar_index;
subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES;
- subg->arg1 = (FT_Int)( adx - asb );
- subg->arg2 = (FT_Int)ady;
+ subg->arg1 = (FT_Int)FIXED_TO_INT( adx - asb );
+ subg->arg2 = (FT_Int)FIXED_TO_INT( ady );
/* set up remaining glyph fields */
glyph->num_subglyphs = 2;
@@ -260,7 +289,10 @@
FT_GlyphLoader_Prepare( decoder->builder.loader ); /* prepare loader */
+ /* the seac operator must not be nested */
+ decoder->seac = TRUE;
error = t1_decoder_parse_glyph( decoder, bchar_index );
+ decoder->seac = FALSE;
if ( error )
goto Exit;
@@ -278,7 +310,11 @@
/* Now load `achar' on top of */
/* the base outline */
+
+ /* the seac operator must not be nested */
+ decoder->seac = TRUE;
error = t1_decoder_parse_glyph( decoder, achar_index );
+ decoder->seac = FALSE;
if ( error )
goto Exit;
@@ -327,9 +363,15 @@
FT_Pos x, y, orig_x, orig_y;
FT_Int known_othersubr_result_cnt = 0;
FT_Int unknown_othersubr_result_cnt = 0;
+ FT_Bool large_int;
+ FT_Fixed seed;
T1_Hints_Funcs hinter;
+#ifdef FT_DEBUG_LEVEL_TRACE
+ FT_Bool bol = TRUE;
+#endif
+
/* we don't want to touch the source code -- use macro trick */
#define start_point t1_builder_start_point
@@ -339,6 +381,16 @@
#define add_contour t1_builder_add_contour
#define close_contour t1_builder_close_contour
+
+ /* compute random seed from stack address of parameter */
+ seed = (FT_Fixed)( ( (FT_PtrDist)(char*)&seed ^
+ (FT_PtrDist)(char*)&decoder ^
+ (FT_PtrDist)(char*)&charstring_base ) &
+ FT_ULONG_MAX ) ;
+ seed = ( seed ^ ( seed >> 10 ) ^ ( seed >> 20 ) ) & 0xFFFFL;
+ if ( seed == 0 )
+ seed = 0x7384;
+
/* First of all, initialize the decoder */
decoder->top = decoder->stack;
decoder->zone = decoder->zones;
@@ -351,14 +403,15 @@
/* a font that reads BuildCharArray without setting */
/* its values first is buggy, but ... */
FT_ASSERT( ( decoder->len_buildchar == 0 ) ==
- ( decoder->buildchar == NULL ) );
+ ( decoder->buildchar == NULL ) );
if ( decoder->len_buildchar > 0 )
ft_memset( &decoder->buildchar[0],
0,
sizeof( decoder->buildchar[0] ) * decoder->len_buildchar );
- FT_TRACE4(( "\nStart charstring\n" ));
+ FT_TRACE4(( "\n"
+ "Start charstring\n" ));
zone->base = charstring_base;
limit = zone->limit = charstring_base + charstring_len;
@@ -373,18 +426,26 @@
if ( hinter )
hinter->open( hinter->hints );
+ large_int = FALSE;
+
/* now, execute loop */
while ( ip < limit )
{
FT_Long* top = decoder->top;
T1_Operator op = op_none;
- FT_Long value = 0;
+ FT_Int32 value = 0;
FT_ASSERT( known_othersubr_result_cnt == 0 ||
unknown_othersubr_result_cnt == 0 );
- FT_TRACE5(( " (%d)", decoder->top - decoder->stack ));
+#ifdef FT_DEBUG_LEVEL_TRACE
+ if ( bol )
+ {
+ FT_TRACE5(( " (%d)", decoder->top - decoder->stack ));
+ bol = FALSE;
+ }
+#endif
/*********************************************************************/
/* */
@@ -455,8 +516,8 @@
case 12:
if ( ip > limit )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "invalid escape (12+EOF)\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " invalid escape (12+EOF)\n" ));
goto Syntax_Error;
}
@@ -491,8 +552,8 @@
break;
default:
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "invalid escape (12+%d)\n",
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " invalid escape (12+%d)\n",
ip[-1] ));
goto Syntax_Error;
}
@@ -501,42 +562,69 @@
case 255: /* four bytes integer */
if ( ip + 4 > limit )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "unexpected EOF in integer\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unexpected EOF in integer\n" ));
goto Syntax_Error;
}
- value = (FT_Int32)( ((FT_Long)ip[0] << 24) |
- ((FT_Long)ip[1] << 16) |
- ((FT_Long)ip[2] << 8 ) |
- ip[3] );
+ value = (FT_Int32)( ( (FT_Long)ip[0] << 24 ) |
+ ( (FT_Long)ip[1] << 16 ) |
+ ( (FT_Long)ip[2] << 8 ) |
+ ip[3] );
ip += 4;
+
+ /* According to the specification, values > 32000 or < -32000 must */
+ /* be followed by a `div' operator to make the result be in the */
+ /* range [-32000;32000]. We expect that the second argument of */
+ /* `div' is not a large number. Additionally, we don't handle */
+ /* stuff like `<large1> <large2> <num> div <num> div' or */
+ /* <large1> <large2> <num> div div'. This is probably not allowed */
+ /* anyway. */
+ if ( value > 32000 || value < -32000 )
+ {
+ if ( large_int )
+ {
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " no `div' after large integer\n" ));
+ }
+ else
+ large_int = TRUE;
+ }
+ else
+ {
+ if ( !large_int )
+ value <<= 16;
+ }
+
break;
default:
if ( ip[-1] >= 32 )
{
if ( ip[-1] < 247 )
- value = (FT_Long)ip[-1] - 139;
+ value = (FT_Int32)ip[-1] - 139;
else
{
if ( ++ip > limit )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: " ));
- FT_ERROR(( "unexpected EOF in integer\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unexpected EOF in integer\n" ));
goto Syntax_Error;
}
if ( ip[-2] < 251 )
- value = ( ( (FT_Long)ip[-2] - 247 ) << 8 ) + ip[-1] + 108;
+ value = ( ( (FT_Int32)ip[-2] - 247 ) << 8 ) + ip[-1] + 108;
else
- value = -( ( ( (FT_Long)ip[-2] - 251 ) << 8 ) + ip[-1] + 108 );
+ value = -( ( ( (FT_Int32)ip[-2] - 251 ) << 8 ) + ip[-1] + 108 );
}
+
+ if ( !large_int )
+ value <<= 16;
}
else
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "invalid byte (%d)\n", ip[-1] ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " invalid byte (%d)\n", ip[-1] ));
goto Syntax_Error;
}
}
@@ -558,6 +646,14 @@
}
}
+ if ( large_int && !( op == op_none || op == op_div ) )
+ {
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " no `div' after large integer\n" ));
+
+ large_int = FALSE;
+ }
+
/*********************************************************************/
/* */
/* Push value on stack, or process operator */
@@ -567,11 +663,16 @@
{
if ( top - decoder->stack >= T1_MAX_CHARSTRINGS_OPERANDS )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: stack overflow!\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings: stack overflow\n" ));
goto Syntax_Error;
}
- FT_TRACE4(( " %ld", value ));
+#ifdef FT_DEBUG_LEVEL_TRACE
+ if ( large_int )
+ FT_TRACE4(( " %ld", value ));
+ else
+ FT_TRACE4(( " %ld", (FT_Int32)( value >> 16 ) ));
+#endif
*top++ = value;
decoder->top = top;
@@ -582,15 +683,18 @@
FT_Int arg_cnt;
- FT_TRACE4(( " callothersubr" ));
+#ifdef FT_DEBUG_LEVEL_TRACE
+ FT_TRACE4(( " callothersubr\n" ));
+ bol = TRUE;
+#endif
if ( top - decoder->stack < 2 )
goto Stack_Underflow;
top -= 2;
- subr_no = (FT_Int)top[1];
- arg_cnt = (FT_Int)top[0];
+ subr_no = (FT_Int)( top[1] >> 16 );
+ arg_cnt = (FT_Int)( top[0] >> 16 );
/***********************************************************/
/* */
@@ -667,8 +771,8 @@
if ( decoder->flex_state == 0 ||
decoder->num_flex_vectors != 7 )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "unexpected flex end\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unexpected flex end\n" ));
goto Syntax_Error;
}
@@ -684,7 +788,6 @@
if ( hinter )
hinter->reset( hinter->hints, builder->current->n_points );
-
break;
case 12:
@@ -707,16 +810,16 @@
if ( !blend )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: " ));
- FT_ERROR(( "unexpected multiple masters operator!\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unexpected multiple masters operator\n" ));
goto Syntax_Error;
}
num_points = (FT_UInt)subr_no - 13 + ( subr_no == 18 );
if ( arg_cnt != (FT_Int)( num_points * blend->num_designs ) )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: " ));
- FT_ERROR(( "incorrect number of mm arguments\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " incorrect number of multiple masters arguments\n" ));
goto Syntax_Error;
}
@@ -752,12 +855,6 @@
break;
}
-#ifdef CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS
-
- /* We cannot yet enable these since currently */
- /* our T1 stack stores integers which lack the */
- /* precision to express the values */
-
case 19:
/* <idx> 1 19 callothersubr */
/* => replace elements starting from index cvi( <idx> ) */
@@ -770,10 +867,10 @@
if ( arg_cnt != 1 || blend == NULL )
goto Unexpected_OtherSubr;
- idx = top[0];
+ idx = (FT_Int)( top[0] >> 16 );
- if ( idx < 0 ||
- idx + blend->num_designs > decoder->face->len_buildchar )
+ if ( idx < 0 ||
+ idx + blend->num_designs > decoder->len_buildchar )
goto Unexpected_OtherSubr;
ft_memcpy( &decoder->buildchar[idx],
@@ -811,7 +908,7 @@
if ( arg_cnt != 2 )
goto Unexpected_OtherSubr;
- top[0] *= top[1]; /* XXX (over|under)flow */
+ top[0] = FT_MulFix( top[0], top[1] );
known_othersubr_result_cnt = 1;
break;
@@ -822,24 +919,23 @@
if ( arg_cnt != 2 || top[1] == 0 )
goto Unexpected_OtherSubr;
- top[0] /= top[1]; /* XXX (over|under)flow */
+ top[0] = FT_DivFix( top[0], top[1] );
known_othersubr_result_cnt = 1;
break;
-#endif /* CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS */
-
case 24:
- /* <val> <idx> 2 24 callothersubr */
- /* => set BuildCharArray[cvi( <idx> )] = <val> */
+ /* <val> <idx> 2 24 callothersubr */
+ /* ==> set BuildCharArray[cvi( <idx> )] = <val> */
{
FT_Int idx;
PS_Blend blend = decoder->blend;
+
if ( arg_cnt != 2 || blend == NULL )
goto Unexpected_OtherSubr;
- idx = top[1];
+ idx = (FT_Int)( top[1] >> 16 );
if ( idx < 0 || (FT_UInt) idx >= decoder->len_buildchar )
goto Unexpected_OtherSubr;
@@ -849,17 +945,18 @@
break;
case 25:
- /* <idx> 1 25 callothersubr pop */
- /* => push BuildCharArray[cvi( idx )] */
- /* onto T1 stack */
+ /* <idx> 1 25 callothersubr pop */
+ /* ==> push BuildCharArray[cvi( idx )] */
+ /* onto T1 stack */
{
FT_Int idx;
PS_Blend blend = decoder->blend;
+
if ( arg_cnt != 1 || blend == NULL )
goto Unexpected_OtherSubr;
- idx = top[0];
+ idx = (FT_Int)( top[0] >> 16 );
if ( idx < 0 || (FT_UInt) idx >= decoder->len_buildchar )
goto Unexpected_OtherSubr;
@@ -875,13 +972,13 @@
/* <val> mark <idx> ==> set BuildCharArray[cvi( <idx> )] = <val>, */
/* leave mark on T1 stack */
/* <val> <idx> ==> set BuildCharArray[cvi( <idx> )] = <val> */
- XXX who has left his mark on the (PostScript) stack ?;
+ XXX which routine has left its mark on the (PostScript) stack?;
break;
#endif
case 27:
/* <res1> <res2> <val1> <val2> 4 27 callothersubr pop */
- /* ==> push <res1> onto T1 stack if <val1> <= <val2>, */
+ /* ==> push <res1> onto T1 stack if <val1> <= <val2>, */
/* otherwise push <res2> */
if ( arg_cnt != 4 )
goto Unexpected_OtherSubr;
@@ -892,28 +989,40 @@
known_othersubr_result_cnt = 1;
break;
-#ifdef CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS
case 28:
/* 0 28 callothersubr pop */
/* => push random value from interval [0, 1) onto stack */
if ( arg_cnt != 0 )
goto Unexpected_OtherSubr;
- top[0] = FT_rand();
+ {
+ FT_Fixed Rand;
+
+
+ Rand = seed;
+ if ( Rand >= 0x8000L )
+ Rand++;
+
+ top[0] = Rand;
+
+ seed = FT_MulFix( seed, 0x10000L - seed );
+ if ( seed == 0 )
+ seed += 0x2873;
+ }
+
known_othersubr_result_cnt = 1;
break;
-#endif
default:
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "unknown othersubr [%d %d], wish me luck!\n",
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unknown othersubr [%d %d], wish me luck\n",
arg_cnt, subr_no ));
unknown_othersubr_result_cnt = arg_cnt;
break;
Unexpected_OtherSubr:
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "invalid othersubr [%d %d]!\n", arg_cnt, subr_no ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " invalid othersubr [%d %d]\n", arg_cnt, subr_no ));
goto Syntax_Error;
}
@@ -950,9 +1059,9 @@
default:
if ( top - decoder->stack != num_args )
- FT_TRACE0(( "t1_decoder_parse_charstrings: "
- "too much operands on the stack "
- "(seen %d, expected %d)\n",
+ FT_TRACE0(( "t1_decoder_parse_charstrings:"
+ " too much operands on the stack"
+ " (seen %d, expected %d)\n",
top - decoder->stack, num_args ));
break;
}
@@ -964,28 +1073,26 @@
switch ( op )
{
case op_endchar:
- FT_TRACE4(( " endchar" ));
+ FT_TRACE4(( " endchar\n" ));
close_contour( builder );
/* close hints recording session */
if ( hinter )
{
- if (hinter->close( hinter->hints, builder->current->n_points ))
+ if ( hinter->close( hinter->hints, builder->current->n_points ) )
goto Syntax_Error;
/* apply hints to the loaded glyph outline now */
hinter->apply( hinter->hints,
builder->current,
- (PSH_Globals) builder->hints_globals,
+ (PSH_Globals)builder->hints_globals,
decoder->hint_mode );
}
/* add current outline to the glyph slot */
FT_GlyphLoader_Add( builder->loader );
- FT_TRACE4(( "\n" ));
-
/* the compiler should optimize away this empty loop but ... */
#ifdef FT_DEBUG_LEVEL_TRACE
@@ -1019,8 +1126,8 @@
builder->advance.x = top[1];
builder->advance.y = 0;
- orig_x = builder->last.x = x = builder->pos_x + top[0];
- orig_y = builder->last.y = y = builder->pos_y;
+ orig_x = x = builder->pos_x + top[0];
+ orig_y = y = builder->pos_y;
FT_UNUSED( orig_y );
@@ -1033,9 +1140,12 @@
break;
case op_seac:
- /* return immediately after the processing */
- return t1operator_seac( decoder, top[0], top[1], top[2],
- (FT_Int)top[3], (FT_Int)top[4] );
+ return t1operator_seac( decoder,
+ top[0],
+ top[1],
+ top[2],
+ (FT_Int)( top[3] >> 16 ),
+ (FT_Int)( top[4] >> 16 ) );
case op_sbw:
FT_TRACE4(( " sbw" ));
@@ -1047,8 +1157,8 @@
builder->advance.x = top[2];
builder->advance.y = top[3];
- builder->last.x = x = builder->pos_x + top[0];
- builder->last.y = y = builder->pos_y + top[1];
+ x = builder->pos_x + top[0];
+ y = builder->pos_y + top[1];
/* the `metrics_only' indicates that we only want to compute */
/* the glyph's metrics (lsb + advance width), not load the */
@@ -1134,7 +1244,7 @@
break;
case op_rrcurveto:
- FT_TRACE4(( " rcurveto" ));
+ FT_TRACE4(( " rrcurveto" ));
if ( start_point( builder, x, y ) ||
check_points( builder, 3 ) )
@@ -1193,16 +1303,13 @@
case op_div:
FT_TRACE4(( " div" ));
- if ( top[1] )
- {
- *top = top[0] / top[1];
- ++top;
- }
- else
- {
- FT_ERROR(( "t1_decoder_parse_charstrings: division by 0\n" ));
- goto Syntax_Error;
- }
+ /* if `large_int' is set, we divide unscaled numbers; */
+ /* otherwise, we divide numbers in 16.16 format -- */
+ /* in both cases, it is the same operation */
+ *top = FT_DivFix( top[0], top[1] );
+ ++top;
+
+ large_int = FALSE;
break;
case op_callsubr:
@@ -1212,18 +1319,18 @@
FT_TRACE4(( " callsubr" ));
- idx = (FT_Int)top[0];
+ idx = (FT_Int)( top[0] >> 16 );
if ( idx < 0 || idx >= (FT_Int)decoder->num_subrs )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "invalid subrs index\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " invalid subrs index\n" ));
goto Syntax_Error;
}
if ( zone - decoder->zones >= T1_MAX_SUBRS_CALLS )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "too many nested subrs\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " too many nested subrs\n" ));
goto Syntax_Error;
}
@@ -1250,8 +1357,8 @@
if ( !zone->base )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "invoking empty subrs!\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " invoking empty subrs\n" ));
goto Syntax_Error;
}
@@ -1273,8 +1380,8 @@
if ( unknown_othersubr_result_cnt == 0 )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "no more operands for othersubr!\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " no more operands for othersubr\n" ));
goto Syntax_Error;
}
@@ -1287,7 +1394,8 @@
if ( zone <= decoder->zones )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: unexpected return\n" ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unexpected return\n" ));
goto Syntax_Error;
}
@@ -1311,7 +1419,6 @@
/* top[0] += builder->left_bearing.y; */
hinter->stem( hinter->hints, 1, top );
}
-
break;
case op_hstem3:
@@ -1320,19 +1427,17 @@
/* record horizontal counter-controlled hints */
if ( hinter )
hinter->stem3( hinter->hints, 1, top );
-
break;
case op_vstem:
FT_TRACE4(( " vstem" ));
- /* record vertical hint */
+ /* record vertical hint */
if ( hinter )
{
top[0] += orig_x;
hinter->stem( hinter->hints, 0, top );
}
-
break;
case op_vstem3:
@@ -1354,20 +1459,28 @@
case op_setcurrentpoint:
FT_TRACE4(( " setcurrentpoint" ));
- /* From the T1 specs, section 6.4: */
+ /* From the T1 specification, section 6.4: */
/* */
/* The setcurrentpoint command is used only in */
/* conjunction with results from OtherSubrs procedures. */
- /* known_othersubr_result_cnt != 0 is already handled above */
+ /* known_othersubr_result_cnt != 0 is already handled */
+ /* above. */
+
+ /* Note, however, that both Ghostscript and Adobe */
+ /* Distiller handle this situation by silently ignoring */
+ /* the inappropriate `setcurrentpoint' instruction. So */
+ /* we do the same. */
+#if 0
+
if ( decoder->flex_state != 1 )
{
- FT_ERROR(( "t1_decoder_parse_charstrings: " ));
- FT_ERROR(( "unexpected `setcurrentpoint'\n" ));
-
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unexpected `setcurrentpoint'\n" ));
goto Syntax_Error;
}
else
+#endif
decoder->flex_state = 0;
break;
@@ -1377,8 +1490,8 @@
break;
default:
- FT_ERROR(( "t1_decoder_parse_charstrings: "
- "unhandled opcode %d\n", op ));
+ FT_ERROR(( "t1_decoder_parse_charstrings:"
+ " unhandled opcode %d\n", op ));
goto Syntax_Error;
}
@@ -1389,6 +1502,11 @@
decoder->top = top;
+#ifdef FT_DEBUG_LEVEL_TRACE
+ FT_TRACE4(( "\n" ));
+ bol = TRUE;
+#endif
+
} /* general operator processing */
} /* while ip < limit */
@@ -1437,8 +1555,8 @@
FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS );
if ( !psnames )
{
- FT_ERROR(( "t1_decoder_init: " ));
- FT_ERROR(( "the `psnames' module is not available\n" ));
+ FT_ERROR(( "t1_decoder_init:"
+ " the `psnames' module is not available\n" ));
return PSaux_Err_Unimplemented_Feature;
}
diff --git a/src/3rdparty/freetype/src/pshinter/Jamfile b/src/3rdparty/freetype/src/pshinter/Jamfile
index 769dcc4b29..779f1b0b82 100644
--- a/src/3rdparty/freetype/src/pshinter/Jamfile
+++ b/src/3rdparty/freetype/src/pshinter/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) pshinter ;
if $(FT2_MULTI)
{
- _sources = pshrec pshglob pshalgo pshmod ;
+ _sources = pshrec pshglob pshalgo pshmod pshpic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/pshinter/pshalgo.c b/src/3rdparty/freetype/src/pshinter/pshalgo.c
index f9ab3dae58..417dcee547 100644
--- a/src/3rdparty/freetype/src/pshinter/pshalgo.c
+++ b/src/3rdparty/freetype/src/pshinter/pshalgo.c
@@ -103,7 +103,7 @@
if ( idx >= table->max_hints )
{
- FT_ERROR(( "psh_hint_table_record: invalid hint index %d\n", idx ));
+ FT_TRACE0(( "psh_hint_table_record: invalid hint index %d\n", idx ));
return;
}
@@ -137,7 +137,7 @@
if ( table->num_hints < table->max_hints )
table->sort_global[table->num_hints++] = hint;
else
- FT_ERROR(( "psh_hint_table_record: too many sorted hints! BUG!\n" ));
+ FT_TRACE0(( "psh_hint_table_record: too many sorted hints! BUG!\n" ));
}
@@ -230,7 +230,7 @@
FT_UInt idx;
- FT_ERROR(( "psh_hint_table_init: missing/incorrect hint masks!\n" ));
+ FT_TRACE0(( "psh_hint_table_init: missing/incorrect hint masks\n" ));
count = table->max_hints;
for ( idx = 0; idx < count; idx++ )
@@ -282,8 +282,8 @@
{
hint2 = sort[0];
if ( psh_hint_overlap( hint, hint2 ) )
- FT_ERROR(( "psh_hint_table_activate_mask:"
- " found overlapping hints\n" ))
+ FT_TRACE0(( "psh_hint_table_activate_mask:"
+ " found overlapping hints\n" ))
}
#else
count2 = 0;
@@ -295,8 +295,8 @@
if ( count < table->max_hints )
table->sort[count++] = hint;
else
- FT_ERROR(( "psh_hint_tableactivate_mask:"
- " too many active hints\n" ));
+ FT_TRACE0(( "psh_hint_tableactivate_mask:"
+ " too many active hints\n" ));
}
}
}
diff --git a/src/3rdparty/freetype/src/pshinter/pshinter.c b/src/3rdparty/freetype/src/pshinter/pshinter.c
index 8e3f193093..b35a2a91c5 100644
--- a/src/3rdparty/freetype/src/pshinter/pshinter.c
+++ b/src/3rdparty/freetype/src/pshinter/pshinter.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "pshpic.c"
#include "pshrec.c"
#include "pshglob.c"
#include "pshalgo.c"
diff --git a/src/3rdparty/freetype/src/pshinter/pshmod.c b/src/3rdparty/freetype/src/pshinter/pshmod.c
index 4eb3d91272..91da5d7e6b 100644
--- a/src/3rdparty/freetype/src/pshinter/pshmod.c
+++ b/src/3rdparty/freetype/src/pshinter/pshmod.c
@@ -20,6 +20,7 @@
#include FT_INTERNAL_OBJECTS_H
#include "pshrec.h"
#include "pshalgo.h"
+#include "pshpic.h"
/* the Postscript Hinter module structure */
@@ -92,30 +93,26 @@
}
- static
- const PSHinter_Interface pshinter_interface =
- {
+ FT_DEFINE_PSHINTER_INTERFACE(pshinter_interface,
pshinter_get_globals_funcs,
pshinter_get_t1_funcs,
pshinter_get_t2_funcs
- };
+ )
- FT_CALLBACK_TABLE_DEF
- const FT_Module_Class pshinter_module_class =
- {
+ FT_DEFINE_MODULE(pshinter_module_class,
+
0,
sizeof ( PS_Hinter_ModuleRec ),
"pshinter",
0x10000L,
0x20000L,
- &pshinter_interface, /* module-specific interface */
+ &FTPSHINTER_INTERFACE_GET, /* module-specific interface */
(FT_Module_Constructor)ps_hinter_init,
(FT_Module_Destructor) ps_hinter_done,
(FT_Module_Requester) 0 /* no additional interface for now */
- };
-
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/pshinter/pshmod.h b/src/3rdparty/freetype/src/pshinter/pshmod.h
index 1a91025b26..0ae7e96f54 100644
--- a/src/3rdparty/freetype/src/pshinter/pshmod.h
+++ b/src/3rdparty/freetype/src/pshinter/pshmod.h
@@ -27,7 +27,7 @@
FT_BEGIN_HEADER
- FT_EXPORT_VAR( const FT_Module_Class ) pshinter_module_class;
+ FT_DECLARE_MODULE( pshinter_module_class )
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/pshinter/pshpic.c b/src/3rdparty/freetype/src/pshinter/pshpic.c
new file mode 100644
index 0000000000..51a0879888
--- /dev/null
+++ b/src/3rdparty/freetype/src/pshinter/pshpic.c
@@ -0,0 +1,67 @@
+/***************************************************************************/
+/* */
+/* pshpic.c */
+/* */
+/* The FreeType position independent code services for pshinter module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "pshpic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from pshmod.c */
+ void FT_Init_Class_pshinter_interface( FT_Library, PSHinter_Interface*);
+
+ void
+ pshinter_module_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->pshinter )
+ {
+ FT_FREE( pic_container->pshinter );
+ pic_container->pshinter = NULL;
+ }
+ }
+
+ FT_Error
+ pshinter_module_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ PSHinterPIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->pshinter = container;
+
+ /* add call to initialization function when you add new scripts */
+ FT_Init_Class_pshinter_interface(library, &container->pshinter_interface);
+
+/*Exit:*/
+ if(error)
+ pshinter_module_class_pic_free(library);
+ return error;
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+/* END */
diff --git a/src/3rdparty/freetype/src/pshinter/pshpic.h b/src/3rdparty/freetype/src/pshinter/pshpic.h
new file mode 100644
index 0000000000..3555d8e851
--- /dev/null
+++ b/src/3rdparty/freetype/src/pshinter/pshpic.h
@@ -0,0 +1,53 @@
+/***************************************************************************/
+/* */
+/* pshpic.h */
+/* */
+/* The FreeType position independent code services for pshinter module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __PSHPIC_H__
+#define __PSHPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FTPSHINTER_INTERFACE_GET pshinter_interface
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#include FT_INTERNAL_POSTSCRIPT_HINTS_H
+
+ typedef struct PSHinterPIC_
+ {
+ PSHinter_Interface pshinter_interface;
+ } PSHinterPIC;
+
+#define GET_PIC(lib) ((PSHinterPIC*)((lib)->pic_container.autofit))
+#define FTPSHINTER_INTERFACE_GET (GET_PIC(library)->pshinter_interface)
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __PSHPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/pshinter/pshrec.c b/src/3rdparty/freetype/src/pshinter/pshrec.c
index 2a885ef276..0910cc5e6a 100644
--- a/src/3rdparty/freetype/src/pshinter/pshrec.c
+++ b/src/3rdparty/freetype/src/pshinter/pshrec.c
@@ -4,7 +4,7 @@
/* */
/* FreeType PostScript hints recorder (body). */
/* */
-/* Copyright 2001, 2002, 2003, 2004, 2007 by */
+/* Copyright 2001, 2002, 2003, 2004, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -20,6 +20,8 @@
#include FT_FREETYPE_H
#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_CALC_H
+
#include "pshrec.h"
#include "pshalgo.h"
@@ -62,7 +64,7 @@
{
FT_UInt old_max = table->max_hints;
FT_UInt new_max = count;
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
if ( new_max > old_max )
@@ -81,7 +83,7 @@
FT_Memory memory,
PS_Hint *ahint )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
FT_UInt count;
PS_Hint hint = 0;
@@ -137,7 +139,7 @@
{
FT_UInt old_max = ( mask->max_bits + 7 ) >> 3;
FT_UInt new_max = ( count + 7 ) >> 3;
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
if ( new_max > old_max )
@@ -184,7 +186,7 @@
FT_Int idx,
FT_Memory memory )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
FT_Byte* p;
@@ -234,7 +236,7 @@
{
FT_UInt old_max = table->max_masks;
FT_UInt new_max = count;
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
if ( new_max > old_max )
@@ -254,7 +256,7 @@
PS_Mask *amask )
{
FT_UInt count;
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
PS_Mask mask = 0;
@@ -285,7 +287,7 @@
FT_Memory memory,
PS_Mask *amask )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
FT_UInt count;
PS_Mask mask;
@@ -314,7 +316,7 @@
FT_UInt bit_count,
FT_Memory memory )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
PS_Mask mask;
@@ -407,7 +409,7 @@
FT_Memory memory )
{
FT_UInt temp;
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
/* swap index1 and index2 so that index1 < index2 */
@@ -481,8 +483,8 @@
table->num_masks--;
}
else
- FT_ERROR(( "ps_mask_table_merge: ignoring invalid indices (%d,%d)\n",
- index1, index2 ));
+ FT_TRACE0(( "ps_mask_table_merge: ignoring invalid indices (%d,%d)\n",
+ index1, index2 ));
Exit:
return error;
@@ -497,7 +499,7 @@
FT_Memory memory )
{
FT_Int index1, index2;
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
for ( index1 = table->num_masks - 1; index1 > 0; index1-- )
@@ -558,8 +560,8 @@
FT_UInt idx,
FT_Memory memory )
{
- PS_Mask mask;
- FT_Error error = 0;
+ PS_Mask mask;
+ FT_Error error = PSH_Err_Ok;
/* get last hint mask */
@@ -619,7 +621,7 @@
FT_UInt end_point,
FT_Memory memory )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
/* reset current mask, if any */
@@ -644,7 +646,7 @@
FT_Memory memory,
FT_Int *aindex )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
FT_UInt flags = 0;
@@ -715,7 +717,7 @@
FT_Int hint3,
FT_Memory memory )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
FT_UInt count = dim->counters.num_masks;
PS_Mask counter = dim->counters.masks;
@@ -789,7 +791,7 @@
ps_dimension_done( &hints->dimension[0], memory );
ps_dimension_done( &hints->dimension[1], memory );
- hints->error = 0;
+ hints->error = PSH_Err_Ok;
hints->memory = 0;
}
@@ -800,7 +802,7 @@
{
FT_MEM_ZERO( hints, sizeof ( *hints ) );
hints->memory = memory;
- return 0;
+ return PSH_Err_Ok;
}
@@ -813,7 +815,7 @@
{
case PS_HINT_TYPE_1:
case PS_HINT_TYPE_2:
- hints->error = 0;
+ hints->error = PSH_Err_Ok;
hints->hint_type = hint_type;
ps_dimension_init( &hints->dimension[0] );
@@ -824,7 +826,7 @@
hints->error = PSH_Err_Invalid_Argument;
hints->hint_type = hint_type;
- FT_ERROR(( "ps_hints_open: invalid charstring type!\n" ));
+ FT_TRACE0(( "ps_hints_open: invalid charstring type\n" ));
break;
}
}
@@ -842,8 +844,8 @@
/* limit "dimension" to 0..1 */
if ( dimension < 0 || dimension > 1 )
{
- FT_ERROR(( "ps_hints_stem: invalid dimension (%d) used\n",
- dimension ));
+ FT_TRACE0(( "ps_hints_stem: invalid dimension (%d) used\n",
+ dimension ));
dimension = ( dimension != 0 );
}
@@ -878,8 +880,8 @@
}
default:
- FT_ERROR(( "ps_hints_stem: called with invalid hint type (%d)\n",
- hints->hint_type ));
+ FT_TRACE0(( "ps_hints_stem: called with invalid hint type (%d)\n",
+ hints->hint_type ));
break;
}
}
@@ -888,11 +890,11 @@
/* add one Type1 counter stem to the current hints table */
static void
- ps_hints_t1stem3( PS_Hints hints,
- FT_Int dimension,
- FT_Long* stems )
+ ps_hints_t1stem3( PS_Hints hints,
+ FT_Int dimension,
+ FT_Fixed* stems )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
if ( !hints->error )
@@ -906,8 +908,8 @@
/* limit "dimension" to 0..1 */
if ( dimension < 0 || dimension > 1 )
{
- FT_ERROR(( "ps_hints_t1stem3: invalid dimension (%d) used\n",
- dimension ));
+ FT_TRACE0(( "ps_hints_t1stem3: invalid dimension (%d) used\n",
+ dimension ));
dimension = ( dimension != 0 );
}
@@ -919,9 +921,10 @@
/* add the three stems to our hints/masks table */
for ( count = 0; count < 3; count++, stems += 2 )
{
- error = ps_dimension_add_t1stem(
- dim, (FT_Int)stems[0], (FT_Int)stems[1],
- memory, &idx[count] );
+ error = ps_dimension_add_t1stem( dim,
+ (FT_Int)FIXED_TO_INT( stems[0] ),
+ (FT_Int)FIXED_TO_INT( stems[1] ),
+ memory, &idx[count] );
if ( error )
goto Fail;
}
@@ -934,7 +937,7 @@
}
else
{
- FT_ERROR(( "ps_hints_t1stem3: called with invalid hint type!\n" ));
+ FT_ERROR(( "ps_hints_t1stem3: called with invalid hint type\n" ));
error = PSH_Err_Invalid_Argument;
goto Fail;
}
@@ -953,7 +956,7 @@
ps_hints_t1reset( PS_Hints hints,
FT_UInt end_point )
{
- FT_Error error = 0;
+ FT_Error error = PSH_Err_Ok;
if ( !hints->error )
@@ -1008,8 +1011,8 @@
/* check bit count; must be equal to current total hint count */
if ( bit_count != count1 + count2 )
{
- FT_ERROR(( "ps_hints_t2mask: "
- "called with invalid bitcount %d (instead of %d)\n",
+ FT_TRACE0(( "ps_hints_t2mask:"
+ " called with invalid bitcount %d (instead of %d)\n",
bit_count, count1 + count2 ));
/* simply ignore the operator */
@@ -1053,8 +1056,8 @@
/* check bit count, must be equal to current total hint count */
if ( bit_count != count1 + count2 )
{
- FT_ERROR(( "ps_hints_t2counter: "
- "called with invalid bitcount %d (instead of %d)\n",
+ FT_TRACE0(( "ps_hints_t2counter:"
+ " called with invalid bitcount %d (instead of %d)\n",
bit_count, count1 + count2 ));
/* simply ignore the operator */
@@ -1124,11 +1127,17 @@
}
static void
- t1_hints_stem( T1_Hints hints,
- FT_Int dimension,
- FT_Long* coords )
+ t1_hints_stem( T1_Hints hints,
+ FT_Int dimension,
+ FT_Fixed* coords )
{
- ps_hints_stem( (PS_Hints)hints, dimension, 1, coords );
+ FT_Pos stems[2];
+
+
+ stems[0] = FIXED_TO_INT( coords[0] );
+ stems[1] = FIXED_TO_INT( coords[1] );
+
+ ps_hints_stem( (PS_Hints)hints, dimension, 1, stems );
}
@@ -1183,7 +1192,7 @@
for ( n = 0; n < count * 2; n++ )
{
y += coords[n];
- stems[n] = ( y + 0x8000L ) >> 16;
+ stems[n] = FIXED_TO_INT( y );
}
/* compute lengths */
diff --git a/src/3rdparty/freetype/src/psnames/Jamfile b/src/3rdparty/freetype/src/psnames/Jamfile
index d85c1e97de..06c0dda66f 100644
--- a/src/3rdparty/freetype/src/psnames/Jamfile
+++ b/src/3rdparty/freetype/src/psnames/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) psnames ;
if $(FT2_MULTI)
{
- _sources = psmodule ;
+ _sources = psmodule pspic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/psnames/psmodule.c b/src/3rdparty/freetype/src/psnames/psmodule.c
index 41942a9b46..00b363f8bb 100644
--- a/src/3rdparty/freetype/src/psnames/psmodule.c
+++ b/src/3rdparty/freetype/src/psnames/psmodule.c
@@ -24,6 +24,7 @@
#include "pstables.h"
#include "psnamerr.h"
+#include "pspic.h"
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -33,7 +34,7 @@
#define VARIANT_BIT 0x80000000UL
-#define BASE_GLYPH( code ) ( (code) & ~VARIANT_BIT )
+#define BASE_GLYPH( code ) ( (FT_UInt32)( (code) & ~VARIANT_BIT ) )
/* Return the Unicode value corresponding to a given glyph. Note that */
@@ -57,7 +58,7 @@
/* `uniXXXXYYYYZZZZ'... */
FT_Int count;
- FT_ULong value = 0;
+ FT_UInt32 value = 0;
const char* p = glyph_name + 3;
@@ -92,7 +93,7 @@
if ( *p == '\0' )
return value;
if ( *p == '.' )
- return value | VARIANT_BIT;
+ return (FT_UInt32)( value | VARIANT_BIT );
}
}
@@ -101,7 +102,7 @@
if ( glyph_name[0] == 'u' )
{
FT_Int count;
- FT_ULong value = 0;
+ FT_UInt32 value = 0;
const char* p = glyph_name + 1;
@@ -132,7 +133,7 @@
if ( *p == '\0' )
return value;
if ( *p == '.' )
- return value | VARIANT_BIT;
+ return (FT_UInt32)( value | VARIANT_BIT );
}
}
@@ -154,9 +155,10 @@
/* now look up the glyph in the Adobe Glyph List */
if ( !dot )
- return ft_get_adobe_glyph_index( glyph_name, p );
+ return (FT_UInt32)ft_get_adobe_glyph_index( glyph_name, p );
else
- return ft_get_adobe_glyph_index( glyph_name, dot ) | VARIANT_BIT;
+ return (FT_UInt32)( ft_get_adobe_glyph_index( glyph_name, dot ) |
+ VARIANT_BIT );
}
}
@@ -435,7 +437,7 @@
}
- static FT_ULong
+ static FT_UInt32
ps_unicodes_char_next( PS_Unicodes table,
FT_UInt32 *unicode )
{
@@ -516,38 +518,43 @@
}
- static
- const FT_Service_PsCMapsRec pscmaps_interface =
- {
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
+ FT_DEFINE_SERVICE_PSCMAPSREC(pscmaps_interface,
(PS_Unicode_ValueFunc) ps_unicode_value,
(PS_Unicodes_InitFunc) ps_unicodes_init,
(PS_Unicodes_CharIndexFunc)ps_unicodes_char_index,
(PS_Unicodes_CharNextFunc) ps_unicodes_char_next,
+ (PS_Macintosh_NameFunc) ps_get_macintosh_name,
+ (PS_Adobe_Std_StringsFunc) ps_get_standard_strings,
+
+ t1_standard_encoding,
+ t1_expert_encoding
+ )
+
#else
+ FT_DEFINE_SERVICE_PSCMAPSREC(pscmaps_interface,
0,
0,
0,
0,
-#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
-
(PS_Macintosh_NameFunc) ps_get_macintosh_name,
(PS_Adobe_Std_StringsFunc) ps_get_standard_strings,
t1_standard_encoding,
t1_expert_encoding
- };
+ )
+
+#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
+
+
+ FT_DEFINE_SERVICEDESCREC1(pscmaps_services,
+ FT_SERVICE_ID_POSTSCRIPT_CMAPS, &FT_PSCMAPS_INTERFACE_GET
+ )
- static const FT_ServiceDescRec pscmaps_services[] =
- {
- { FT_SERVICE_ID_POSTSCRIPT_CMAPS, &pscmaps_interface },
- { NULL, NULL }
- };
static FT_Pointer
@@ -556,16 +563,20 @@
{
FT_UNUSED( module );
- return ft_service_list_lookup( pscmaps_services, service_id );
+ return ft_service_list_lookup( FT_PSCMAPS_SERVICES_GET, service_id );
}
#endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
+#ifndef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
+#define PUT_PS_NAMES_SERVICE(a) 0
+#else
+#define PUT_PS_NAMES_SERVICE(a) a
+#endif
- FT_CALLBACK_TABLE_DEF
- const FT_Module_Class psnames_module_class =
- {
+ FT_DEFINE_MODULE(psnames_module_class,
+
0, /* this is not a font driver, nor a renderer */
sizeof ( FT_ModuleRec ),
@@ -573,18 +584,12 @@
0x10000L, /* driver version */
0x20000L, /* driver requires FreeType 2 or above */
-#ifndef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
- 0,
- (FT_Module_Constructor)0,
- (FT_Module_Destructor) 0,
- (FT_Module_Requester) 0
-#else
- (void*)&pscmaps_interface, /* module specific interface */
+ PUT_PS_NAMES_SERVICE((void*)&FT_PSCMAPS_INTERFACE_GET), /* module specific interface */
(FT_Module_Constructor)0,
(FT_Module_Destructor) 0,
- (FT_Module_Requester) psnames_get_service
-#endif
- };
+ (FT_Module_Requester) PUT_PS_NAMES_SERVICE(psnames_get_service)
+ )
+
/* END */
diff --git a/src/3rdparty/freetype/src/psnames/psmodule.h b/src/3rdparty/freetype/src/psnames/psmodule.h
index 232fdfb9a9..28fa14807c 100644
--- a/src/3rdparty/freetype/src/psnames/psmodule.h
+++ b/src/3rdparty/freetype/src/psnames/psmodule.h
@@ -27,7 +27,7 @@
FT_BEGIN_HEADER
- FT_EXPORT_VAR( const FT_Module_Class ) psnames_module_class;
+ FT_DECLARE_MODULE( psnames_module_class )
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/psnames/psnames.c b/src/3rdparty/freetype/src/psnames/psnames.c
index d6ed998bfb..1ede225dc9 100644
--- a/src/3rdparty/freetype/src/psnames/psnames.c
+++ b/src/3rdparty/freetype/src/psnames/psnames.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "pspic.c"
#include "psmodule.c"
diff --git a/src/3rdparty/freetype/src/psnames/pspic.c b/src/3rdparty/freetype/src/psnames/pspic.c
new file mode 100644
index 0000000000..ed7dadda39
--- /dev/null
+++ b/src/3rdparty/freetype/src/psnames/pspic.c
@@ -0,0 +1,77 @@
+/***************************************************************************/
+/* */
+/* pspic.c */
+/* */
+/* The FreeType position independent code services for psnames module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "pspic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from psmodule.c */
+ FT_Error FT_Create_Class_pscmaps_services( FT_Library, FT_ServiceDescRec**);
+ void FT_Destroy_Class_pscmaps_services( FT_Library, FT_ServiceDescRec*);
+ void FT_Init_Class_pscmaps_interface( FT_Library, FT_Service_PsCMapsRec*);
+
+ void
+ psnames_module_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->psnames )
+ {
+ PSModulePIC* container = (PSModulePIC*)pic_container->psnames;
+ if(container->pscmaps_services)
+ FT_Destroy_Class_pscmaps_services(library, container->pscmaps_services);
+ container->pscmaps_services = NULL;
+ FT_FREE( container );
+ pic_container->psnames = NULL;
+ }
+ }
+
+ FT_Error
+ psnames_module_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ PSModulePIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->psnames = container;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ error = FT_Create_Class_pscmaps_services(library, &container->pscmaps_services);
+ if(error)
+ goto Exit;
+ FT_Init_Class_pscmaps_interface(library, &container->pscmaps_interface);
+
+Exit:
+ if(error)
+ psnames_module_class_pic_free(library);
+ return error;
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/psnames/pspic.h b/src/3rdparty/freetype/src/psnames/pspic.h
new file mode 100644
index 0000000000..75a14fdcb9
--- /dev/null
+++ b/src/3rdparty/freetype/src/psnames/pspic.h
@@ -0,0 +1,54 @@
+/***************************************************************************/
+/* */
+/* pspic.h */
+/* */
+/* The FreeType position independent code services for psnames module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __PSPIC_H__
+#define __PSPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+#define FT_PSCMAPS_SERVICES_GET pscmaps_services
+#define FT_PSCMAPS_INTERFACE_GET pscmaps_interface
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#include FT_SERVICE_POSTSCRIPT_CMAPS_H
+
+ typedef struct PSModulePIC_
+ {
+ FT_ServiceDescRec* pscmaps_services;
+ FT_Service_PsCMapsRec pscmaps_interface;
+ } PSModulePIC;
+
+#define GET_PIC(lib) ((PSModulePIC*)((lib)->pic_container.psnames))
+#define FT_PSCMAPS_SERVICES_GET (GET_PIC(library)->pscmaps_services)
+#define FT_PSCMAPS_INTERFACE_GET (GET_PIC(library)->pscmaps_interface)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __PSPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/raster/Jamfile b/src/3rdparty/freetype/src/raster/Jamfile
index f6e4251cb8..4f60e87c78 100644
--- a/src/3rdparty/freetype/src/raster/Jamfile
+++ b/src/3rdparty/freetype/src/raster/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) raster ;
if $(FT2_MULTI)
{
- _sources = ftraster ftrend1 ;
+ _sources = ftraster ftrend1 rastpic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/raster/ftmisc.h b/src/3rdparty/freetype/src/raster/ftmisc.h
index d9d73e3373..f04b5404bb 100644
--- a/src/3rdparty/freetype/src/raster/ftmisc.h
+++ b/src/3rdparty/freetype/src/raster/ftmisc.h
@@ -52,6 +52,31 @@
(FT_ULong)_x4 )
+ /* from include/freetype2/ftsystem.h */
+
+ typedef struct FT_MemoryRec_* FT_Memory;
+
+ typedef void* (*FT_Alloc_Func)( FT_Memory memory,
+ long size );
+
+ typedef void (*FT_Free_Func)( FT_Memory memory,
+ void* block );
+
+ typedef void* (*FT_Realloc_Func)( FT_Memory memory,
+ long cur_size,
+ long new_size,
+ void* block );
+
+ typedef struct FT_MemoryRec_
+ {
+ void* user;
+
+ FT_Alloc_Func alloc;
+ FT_Free_Func free;
+ FT_Realloc_Func realloc;
+
+ } FT_MemoryRec;
+
/* from src/ftcalc.c */
#include <inttypes.h>
diff --git a/src/3rdparty/freetype/src/raster/ftraster.c b/src/3rdparty/freetype/src/raster/ftraster.c
index eb9c4a45f2..23ad592653 100644
--- a/src/3rdparty/freetype/src/raster/ftraster.c
+++ b/src/3rdparty/freetype/src/raster/ftraster.c
@@ -49,6 +49,10 @@
#ifdef _STANDALONE_
+#define FT_CONFIG_STANDARD_LIBRARY_H <stdlib.h>
+
+#include <string.h> /* for memset */
+
#include "ftmisc.h"
#include "ftimage.h"
@@ -58,6 +62,8 @@
#include "ftraster.h"
#include FT_INTERNAL_CALC_H /* for FT_MulDiv only */
+#include "rastpic.h"
+
#endif /* !_STANDALONE_ */
@@ -72,13 +78,15 @@
/* profile is simply an array of scanline intersections on a given */
/* dimension. A profile's main attributes are */
/* */
- /* o its scanline position boundaries, i.e. `Ymin' and `Ymax'. */
+ /* o its scanline position boundaries, i.e. `Ymin' and `Ymax' */
/* */
/* o an array of intersection coordinates for each scanline */
- /* between `Ymin' and `Ymax'. */
+ /* between `Ymin' and `Ymax' */
/* */
/* o a direction, indicating whether it was built going `up' or */
- /* `down', as this is very important for filling rules. */
+ /* `down', as this is very important for filling rules */
+ /* */
+ /* o its drop-out mode */
/* */
/* 2 - Sweeping the target map's scanlines in order to compute segment */
/* `spans' which are then filled. Additionally, this pass */
@@ -88,15 +96,15 @@
/* built from the bottom of the render pool, used as a stack. The */
/* following graphics shows the profile list under construction: */
/* */
- /* ____________________________________________________________ _ _ */
- /* | | | | | */
- /* | profile | coordinates for | profile | coordinates for |--> */
- /* | 1 | profile 1 | 2 | profile 2 |--> */
- /* |_________|___________________|_________|_________________|__ _ _ */
+ /* __________________________________________________________ _ _ */
+ /* | | | | | */
+ /* | profile | coordinates for | profile | coordinates for |--> */
+ /* | 1 | profile 1 | 2 | profile 2 |--> */
+ /* |_________|_________________|_________|_________________|__ _ _ */
/* */
- /* ^ ^ */
- /* | | */
- /* start of render pool top */
+ /* ^ ^ */
+ /* | | */
+ /* start of render pool top */
/* */
/* The top of the profile stack is kept in the `top' variable. */
/* */
@@ -140,11 +148,11 @@
/*************************************************************************/
/* define DEBUG_RASTER if you want to compile a debugging version */
-#define xxxDEBUG_RASTER
+/* #define DEBUG_RASTER */
- /* undefine FT_RASTER_OPTION_ANTI_ALIASING if you do not want to support */
- /* 5-levels anti-aliasing */
-#undef FT_RASTER_OPTION_ANTI_ALIASING
+ /* define FT_RASTER_OPTION_ANTI_ALIASING if you want to support */
+ /* 5-levels anti-aliasing */
+/* #define FT_RASTER_OPTION_ANTI_ALIASING */
/* The size of the two-lines intermediate bitmap used */
/* for anti-aliasing, in bytes. */
@@ -197,9 +205,22 @@
#define Raster_Err_Invalid -4
#define Raster_Err_Unsupported -5
-#define ft_memset memset
+#define ft_memset memset
+
+#define FT_DEFINE_RASTER_FUNCS( class_, glyph_format_, raster_new_, \
+ raster_reset_, raster_set_mode_, \
+ raster_render_, raster_done_ ) \
+ const FT_Raster_Funcs class_ = \
+ { \
+ glyph_format_, \
+ raster_new_, \
+ raster_reset_, \
+ raster_set_mode_, \
+ raster_render_, \
+ raster_done_ \
+ };
-#else /* _STANDALONE_ */
+#else /* !_STANDALONE_ */
#include FT_INTERNAL_OBJECTS_H
@@ -215,7 +236,7 @@
#define Raster_Err_Unsupported Raster_Err_Cannot_Render_Glyph
-#endif /* _STANDALONE_ */
+#endif /* !_STANDALONE_ */
#ifndef FT_MEM_SET
@@ -304,13 +325,10 @@
} TPoint;
- typedef enum TFlow_
- {
- Flow_None = 0,
- Flow_Up = 1,
- Flow_Down = -1
-
- } TFlow;
+ /* values for the `flags' bit field */
+#define Flow_Up 0x8
+#define Overshoot_Top 0x10
+#define Overshoot_Bottom 0x20
/* States of each line, arc, and profile */
@@ -329,18 +347,21 @@
struct TProfile_
{
- FT_F26Dot6 X; /* current coordinate during sweep */
- PProfile link; /* link to next profile - various purpose */
- PLong offset; /* start of profile's data in render pool */
- int flow; /* Profile orientation: Asc/Descending */
- long height; /* profile's height in scanlines */
- long start; /* profile's starting scanline */
-
- unsigned countL; /* number of lines to step before this */
- /* profile becomes drawable */
-
- PProfile next; /* next profile in same contour, used */
- /* during drop-out control */
+ FT_F26Dot6 X; /* current coordinate during sweep */
+ PProfile link; /* link to next profile (various purposes) */
+ PLong offset; /* start of profile's data in render pool */
+ unsigned flags; /* Bit 0-2: drop-out mode */
+ /* Bit 3: profile orientation (up/down) */
+ /* Bit 4: is top profile? */
+ /* Bit 5: is bottom profile? */
+ long height; /* profile's height in scanlines */
+ long start; /* profile's starting scanline */
+
+ unsigned countL; /* number of lines to step before this */
+ /* profile becomes drawable */
+
+ PProfile next; /* next profile in same contour, used */
+ /* during drop-out control */
};
typedef PProfile TProfileList;
@@ -373,7 +394,7 @@
#define FT_UNUSED_RASTER do { } while ( 0 )
-#else /* FT_STATIC_RASTER */
+#else /* !FT_STATIC_RASTER */
#define RAS_ARGS PWorker worker,
@@ -385,7 +406,7 @@
#define FT_UNUSED_RASTER FT_UNUSED( worker )
-#endif /* FT_STATIC_RASTER */
+#endif /* !FT_STATIC_RASTER */
typedef struct TWorker_ TWorker, *PWorker;
@@ -415,65 +436,68 @@
#define FRAC( x ) ( (x) & ( ras.precision - 1 ) )
#define SCALED( x ) ( ( (x) << ras.scale_shift ) - ras.precision_half )
- /* Note that I have moved the location of some fields in the */
- /* structure to ensure that the most used variables are used */
- /* at the top. Thus, their offset can be coded with less */
- /* opcodes, and it results in a smaller executable. */
+#define IS_BOTTOM_OVERSHOOT( x ) ( CEILING( x ) - x >= ras.precision_half )
+#define IS_TOP_OVERSHOOT( x ) ( x - FLOOR( x ) >= ras.precision_half )
+
+ /* The most used variables are positioned at the top of the structure. */
+ /* Thus, their offset can be coded with less opcodes, resulting in a */
+ /* smaller executable. */
struct TWorker_
{
- Int precision_bits; /* precision related variables */
- Int precision;
- Int precision_half;
- Long precision_mask;
- Int precision_shift;
- Int precision_step;
- Int precision_jitter;
-
- Int scale_shift; /* == precision_shift for bitmaps */
+ Int precision_bits; /* precision related variables */
+ Int precision;
+ Int precision_half;
+ Long precision_mask;
+ Int precision_shift;
+ Int precision_step;
+ Int precision_jitter;
+
+ Int scale_shift; /* == precision_shift for bitmaps */
/* == precision_shift+1 for pixmaps */
- PLong buff; /* The profiles buffer */
- PLong sizeBuff; /* Render pool size */
- PLong maxBuff; /* Profiles buffer size */
- PLong top; /* Current cursor in buffer */
+ PLong buff; /* The profiles buffer */
+ PLong sizeBuff; /* Render pool size */
+ PLong maxBuff; /* Profiles buffer size */
+ PLong top; /* Current cursor in buffer */
- FT_Error error;
+ FT_Error error;
- Int numTurns; /* number of Y-turns in outline */
+ Int numTurns; /* number of Y-turns in outline */
- TPoint* arc; /* current Bezier arc pointer */
+ TPoint* arc; /* current Bezier arc pointer */
- UShort bWidth; /* target bitmap width */
- PByte bTarget; /* target bitmap buffer */
- PByte gTarget; /* target pixmap buffer */
+ UShort bWidth; /* target bitmap width */
+ PByte bTarget; /* target bitmap buffer */
+ PByte gTarget; /* target pixmap buffer */
- Long lastX, lastY, minY, maxY;
+ Long lastX, lastY;
+ Long minY, maxY;
- UShort num_Profs; /* current number of profiles */
+ UShort num_Profs; /* current number of profiles */
- Bool fresh; /* signals a fresh new profile which */
- /* 'start' field must be completed */
- Bool joint; /* signals that the last arc ended */
+ Bool fresh; /* signals a fresh new profile which */
+ /* `start' field must be completed */
+ Bool joint; /* signals that the last arc ended */
/* exactly on a scanline. Allows */
/* removal of doublets */
- PProfile cProfile; /* current profile */
- PProfile fProfile; /* head of linked list of profiles */
- PProfile gProfile; /* contour's first profile in case */
+ PProfile cProfile; /* current profile */
+ PProfile fProfile; /* head of linked list of profiles */
+ PProfile gProfile; /* contour's first profile in case */
/* of impact */
- TStates state; /* rendering state */
+ TStates state; /* rendering state */
FT_Bitmap target; /* description of target bit/pixmap */
FT_Outline outline;
- Long traceOfs; /* current offset in target bitmap */
- Long traceG; /* current offset in target pixmap */
+ Long traceOfs; /* current offset in target bitmap */
+ Long traceG; /* current offset in target pixmap */
- Short traceIncr; /* sweep's increment in target bitmap */
+ Short traceIncr; /* sweep's increment in target bitmap */
- Short gray_min_x; /* current min x during gray rendering */
- Short gray_max_x; /* current max x during gray rendering */
+ Short gray_min_x; /* current min x during gray rendering */
+ Short gray_max_x; /* current max x during gray rendering */
/* dispatch variables */
@@ -482,31 +506,31 @@
Function_Sweep_Span* Proc_Sweep_Drop;
Function_Sweep_Step* Proc_Sweep_Step;
- Byte dropOutControl; /* current drop_out control method */
+ Byte dropOutControl; /* current drop_out control method */
- Bool second_pass; /* indicates whether a horizontal pass */
+ Bool second_pass; /* indicates whether a horizontal pass */
/* should be performed to control */
/* drop-out accurately when calling */
/* Render_Glyph. Note that there is */
/* no horizontal pass during gray */
/* rendering. */
- TPoint arcs[3 * MaxBezier + 1]; /* The Bezier stack */
+ TPoint arcs[3 * MaxBezier + 1]; /* The Bezier stack */
- TBand band_stack[16]; /* band stack used for sub-banding */
- Int band_top; /* band stack top */
+ TBand band_stack[16]; /* band stack used for sub-banding */
+ Int band_top; /* band stack top */
#ifdef FT_RASTER_OPTION_ANTI_ALIASING
- Byte* grays;
+ Byte* grays;
- Byte gray_lines[RASTER_GRAY_LINES];
+ Byte gray_lines[RASTER_GRAY_LINES];
/* Intermediate table used to render the */
/* graylevels pixmaps. */
/* gray_lines is a buffer holding two */
/* monochrome scanlines */
- Short gray_width; /* width in bytes of one monochrome */
+ Short gray_width; /* width in bytes of one monochrome */
/* intermediate scanline of gray_lines. */
/* Each gray pixel takes 2 bits long there */
@@ -520,12 +544,12 @@
typedef struct TRaster_
{
- char* buffer;
- long buffer_size;
- void* memory;
- PWorker worker;
- Byte grays[5];
- Short gray_width;
+ char* buffer;
+ long buffer_size;
+ void* memory;
+ PWorker worker;
+ Byte grays[5];
+ Short gray_width;
} TRaster, *PRaster;
@@ -534,34 +558,72 @@
static TWorker cur_ras;
#define ras cur_ras
-#else
+#else /* !FT_STATIC_RASTER */
#define ras (*worker)
-#endif /* FT_STATIC_RASTER */
+#endif /* !FT_STATIC_RASTER */
#ifdef FT_RASTER_OPTION_ANTI_ALIASING
- static const char count_table[256] =
+ /* A lookup table used to quickly count set bits in four gray 2x2 */
+ /* cells. The values of the table have been produced with the */
+ /* following code: */
+ /* */
+ /* for ( i = 0; i < 256; i++ ) */
+ /* { */
+ /* l = 0; */
+ /* j = i; */
+ /* */
+ /* for ( c = 0; c < 4; c++ ) */
+ /* { */
+ /* l <<= 4; */
+ /* */
+ /* if ( j & 0x80 ) l++; */
+ /* if ( j & 0x40 ) l++; */
+ /* */
+ /* j = ( j << 2 ) & 0xFF; */
+ /* } */
+ /* printf( "0x%04X", l ); */
+ /* } */
+ /* */
+
+ static const short count_table[256] =
{
- 0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4,
- 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
- 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
- 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
- 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
- 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
- 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
- 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
- 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
- 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
- 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
- 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
- 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
- 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
- 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
- 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 5 , 6 , 6 , 7 , 6 , 7 , 7 , 8
-a };
+ 0x0000, 0x0001, 0x0001, 0x0002, 0x0010, 0x0011, 0x0011, 0x0012,
+ 0x0010, 0x0011, 0x0011, 0x0012, 0x0020, 0x0021, 0x0021, 0x0022,
+ 0x0100, 0x0101, 0x0101, 0x0102, 0x0110, 0x0111, 0x0111, 0x0112,
+ 0x0110, 0x0111, 0x0111, 0x0112, 0x0120, 0x0121, 0x0121, 0x0122,
+ 0x0100, 0x0101, 0x0101, 0x0102, 0x0110, 0x0111, 0x0111, 0x0112,
+ 0x0110, 0x0111, 0x0111, 0x0112, 0x0120, 0x0121, 0x0121, 0x0122,
+ 0x0200, 0x0201, 0x0201, 0x0202, 0x0210, 0x0211, 0x0211, 0x0212,
+ 0x0210, 0x0211, 0x0211, 0x0212, 0x0220, 0x0221, 0x0221, 0x0222,
+ 0x1000, 0x1001, 0x1001, 0x1002, 0x1010, 0x1011, 0x1011, 0x1012,
+ 0x1010, 0x1011, 0x1011, 0x1012, 0x1020, 0x1021, 0x1021, 0x1022,
+ 0x1100, 0x1101, 0x1101, 0x1102, 0x1110, 0x1111, 0x1111, 0x1112,
+ 0x1110, 0x1111, 0x1111, 0x1112, 0x1120, 0x1121, 0x1121, 0x1122,
+ 0x1100, 0x1101, 0x1101, 0x1102, 0x1110, 0x1111, 0x1111, 0x1112,
+ 0x1110, 0x1111, 0x1111, 0x1112, 0x1120, 0x1121, 0x1121, 0x1122,
+ 0x1200, 0x1201, 0x1201, 0x1202, 0x1210, 0x1211, 0x1211, 0x1212,
+ 0x1210, 0x1211, 0x1211, 0x1212, 0x1220, 0x1221, 0x1221, 0x1222,
+ 0x1000, 0x1001, 0x1001, 0x1002, 0x1010, 0x1011, 0x1011, 0x1012,
+ 0x1010, 0x1011, 0x1011, 0x1012, 0x1020, 0x1021, 0x1021, 0x1022,
+ 0x1100, 0x1101, 0x1101, 0x1102, 0x1110, 0x1111, 0x1111, 0x1112,
+ 0x1110, 0x1111, 0x1111, 0x1112, 0x1120, 0x1121, 0x1121, 0x1122,
+ 0x1100, 0x1101, 0x1101, 0x1102, 0x1110, 0x1111, 0x1111, 0x1112,
+ 0x1110, 0x1111, 0x1111, 0x1112, 0x1120, 0x1121, 0x1121, 0x1122,
+ 0x1200, 0x1201, 0x1201, 0x1202, 0x1210, 0x1211, 0x1211, 0x1212,
+ 0x1210, 0x1211, 0x1211, 0x1212, 0x1220, 0x1221, 0x1221, 0x1222,
+ 0x2000, 0x2001, 0x2001, 0x2002, 0x2010, 0x2011, 0x2011, 0x2012,
+ 0x2010, 0x2011, 0x2011, 0x2012, 0x2020, 0x2021, 0x2021, 0x2022,
+ 0x2100, 0x2101, 0x2101, 0x2102, 0x2110, 0x2111, 0x2111, 0x2112,
+ 0x2110, 0x2111, 0x2111, 0x2112, 0x2120, 0x2121, 0x2121, 0x2122,
+ 0x2100, 0x2101, 0x2101, 0x2102, 0x2110, 0x2111, 0x2111, 0x2112,
+ 0x2110, 0x2111, 0x2111, 0x2112, 0x2120, 0x2121, 0x2121, 0x2122,
+ 0x2200, 0x2201, 0x2201, 0x2202, 0x2210, 0x2211, 0x2211, 0x2212,
+ 0x2210, 0x2211, 0x2211, 0x2212, 0x2220, 0x2221, 0x2221, 0x2222
+ };
#endif /* FT_RASTER_OPTION_ANTI_ALIASING */
@@ -593,9 +655,9 @@ a };
{
if ( High )
{
- ras.precision_bits = 10;
- ras.precision_step = 128;
- ras.precision_jitter = 24;
+ ras.precision_bits = 12;
+ ras.precision_step = 256;
+ ras.precision_jitter = 50;
}
else
{
@@ -622,14 +684,18 @@ a };
/* Create a new profile in the render pool. */
/* */
/* <Input> */
- /* aState :: The state/orientation of the new profile. */
+ /* aState :: The state/orientation of the new profile. */
+ /* */
+ /* overshoot :: Whether the profile's unrounded start position */
+ /* differs by at least a half pixel. */
/* */
/* <Return> */
/* SUCCESS on success. FAILURE in case of overflow or of incoherent */
/* profile. */
/* */
static Bool
- New_Profile( RAS_ARGS TStates aState )
+ New_Profile( RAS_ARGS TStates aState,
+ Bool overshoot )
{
if ( !ras.fProfile )
{
@@ -644,30 +710,36 @@ a };
return FAILURE;
}
+ ras.cProfile->flags = 0;
+ ras.cProfile->start = 0;
+ ras.cProfile->height = 0;
+ ras.cProfile->offset = ras.top;
+ ras.cProfile->link = (PProfile)0;
+ ras.cProfile->next = (PProfile)0;
+ ras.cProfile->flags = ras.dropOutControl;
+
switch ( aState )
{
case Ascending_State:
- ras.cProfile->flow = Flow_Up;
+ ras.cProfile->flags |= Flow_Up;
+ if ( overshoot )
+ ras.cProfile->flags |= Overshoot_Bottom;
+
FT_TRACE6(( "New ascending profile = %lx\n", (long)ras.cProfile ));
break;
case Descending_State:
- ras.cProfile->flow = Flow_Down;
+ if ( overshoot )
+ ras.cProfile->flags |= Overshoot_Top;
FT_TRACE6(( "New descending profile = %lx\n", (long)ras.cProfile ));
break;
default:
- FT_ERROR(( "New_Profile: invalid profile direction!\n" ));
+ FT_ERROR(( "New_Profile: invalid profile direction\n" ));
ras.error = Raster_Err_Invalid;
return FAILURE;
}
- ras.cProfile->start = 0;
- ras.cProfile->height = 0;
- ras.cProfile->offset = ras.top;
- ras.cProfile->link = (PProfile)0;
- ras.cProfile->next = (PProfile)0;
-
if ( !ras.gProfile )
ras.gProfile = ras.cProfile;
@@ -687,11 +759,15 @@ a };
/* <Description> */
/* Finalize the current profile. */
/* */
+ /* <Input> */
+ /* overshoot :: Whether the profile's unrounded end position differs */
+ /* by at least a half pixel. */
+ /* */
/* <Return> */
/* SUCCESS on success. FAILURE in case of overflow or incoherency. */
/* */
static Bool
- End_Profile( RAS_ARG )
+ End_Profile( RAS_ARGS Bool overshoot )
{
Long h;
PProfile oldProfile;
@@ -701,7 +777,7 @@ a };
if ( h < 0 )
{
- FT_ERROR(( "End_Profile: negative height encountered!\n" ));
+ FT_ERROR(( "End_Profile: negative height encountered\n" ));
ras.error = Raster_Err_Neg_Height;
return FAILURE;
}
@@ -711,15 +787,24 @@ a };
FT_TRACE6(( "Ending profile %lx, start = %ld, height = %ld\n",
(long)ras.cProfile, ras.cProfile->start, h ));
- oldProfile = ras.cProfile;
ras.cProfile->height = h;
- ras.cProfile = (PProfile)ras.top;
+ if ( overshoot )
+ {
+ if ( ras.cProfile->flags & Flow_Up )
+ ras.cProfile->flags |= Overshoot_Top;
+ else
+ ras.cProfile->flags |= Overshoot_Bottom;
+ }
- ras.top += AlignProfileSize;
+ oldProfile = ras.cProfile;
+ ras.cProfile = (PProfile)ras.top;
+
+ ras.top += AlignProfileSize;
ras.cProfile->height = 0;
ras.cProfile->offset = ras.top;
- oldProfile->next = ras.cProfile;
+
+ oldProfile->next = ras.cProfile;
ras.num_Profs++;
}
@@ -822,23 +907,21 @@ a };
else
p->link = NULL;
- switch ( p->flow )
+ if ( p->flags & Flow_Up )
+ {
+ bottom = (Int)p->start;
+ top = (Int)( p->start + p->height - 1 );
+ }
+ else
{
- case Flow_Down:
bottom = (Int)( p->start - p->height + 1 );
top = (Int)p->start;
p->start = bottom;
p->offset += p->height - 1;
- break;
-
- case Flow_Up:
- default:
- bottom = (Int)p->start;
- top = (Int)( p->start + p->height - 1 );
}
- if ( Insert_Y_Turn( RAS_VARS bottom ) ||
- Insert_Y_Turn( RAS_VARS top + 1 ) )
+ if ( Insert_Y_Turn( RAS_VARS bottom ) ||
+ Insert_Y_Turn( RAS_VARS top + 1 ) )
return FAILURE;
p = p->link;
@@ -1230,7 +1313,7 @@ a };
}
else
{
- *top++ = arc[degree].x + FMulDiv( arc[0].x-arc[degree].x,
+ *top++ = arc[degree].x + FMulDiv( arc[0].x - arc[degree].x,
e - y1, y2 - y1 );
arc -= degree;
e += ras.precision;
@@ -1335,13 +1418,15 @@ a };
case Unknown_State:
if ( y > ras.lastY )
{
- if ( New_Profile( RAS_VARS Ascending_State ) )
+ if ( New_Profile( RAS_VARS Ascending_State,
+ IS_BOTTOM_OVERSHOOT( ras.lastY ) ) )
return FAILURE;
}
else
{
if ( y < ras.lastY )
- if ( New_Profile( RAS_VARS Descending_State ) )
+ if ( New_Profile( RAS_VARS Descending_State,
+ IS_TOP_OVERSHOOT( ras.lastY ) ) )
return FAILURE;
}
break;
@@ -1349,8 +1434,9 @@ a };
case Ascending_State:
if ( y < ras.lastY )
{
- if ( End_Profile( RAS_VAR ) ||
- New_Profile( RAS_VARS Descending_State ) )
+ if ( End_Profile( RAS_VARS IS_TOP_OVERSHOOT( ras.lastY ) ) ||
+ New_Profile( RAS_VARS Descending_State,
+ IS_TOP_OVERSHOOT( ras.lastY ) ) )
return FAILURE;
}
break;
@@ -1358,8 +1444,9 @@ a };
case Descending_State:
if ( y > ras.lastY )
{
- if ( End_Profile( RAS_VAR ) ||
- New_Profile( RAS_VARS Ascending_State ) )
+ if ( End_Profile( RAS_VARS IS_BOTTOM_OVERSHOOT( ras.lastY ) ) ||
+ New_Profile( RAS_VARS Ascending_State,
+ IS_BOTTOM_OVERSHOOT( ras.lastY ) ) )
return FAILURE;
}
break;
@@ -1374,13 +1461,13 @@ a };
{
case Ascending_State:
if ( Line_Up( RAS_VARS ras.lastX, ras.lastY,
- x, y, ras.minY, ras.maxY ) )
+ x, y, ras.minY, ras.maxY ) )
return FAILURE;
break;
case Descending_State:
if ( Line_Down( RAS_VARS ras.lastX, ras.lastY,
- x, y, ras.minY, ras.maxY ) )
+ x, y, ras.minY, ras.maxY ) )
return FAILURE;
break;
@@ -1431,8 +1518,10 @@ a };
ras.arc = ras.arcs;
ras.arc[2].x = ras.lastX;
ras.arc[2].y = ras.lastY;
- ras.arc[1].x = cx; ras.arc[1].y = cy;
- ras.arc[0].x = x; ras.arc[0].y = y;
+ ras.arc[1].x = cx;
+ ras.arc[1].y = cy;
+ ras.arc[0].x = x;
+ ras.arc[0].y = y;
do
{
@@ -1472,13 +1561,17 @@ a };
state_bez = y1 < y3 ? Ascending_State : Descending_State;
if ( ras.state != state_bez )
{
+ Bool o = state_bez == Ascending_State ? IS_BOTTOM_OVERSHOOT( y1 )
+ : IS_TOP_OVERSHOOT( y1 );
+
+
/* finalize current profile if any */
- if ( ras.state != Unknown_State &&
- End_Profile( RAS_VAR ) )
+ if ( ras.state != Unknown_State &&
+ End_Profile( RAS_VARS o ) )
goto Fail;
/* create a new profile */
- if ( New_Profile( RAS_VARS state_bez ) )
+ if ( New_Profile( RAS_VARS state_bez, o ) )
goto Fail;
}
@@ -1547,9 +1640,12 @@ a };
ras.arc = ras.arcs;
ras.arc[3].x = ras.lastX;
ras.arc[3].y = ras.lastY;
- ras.arc[2].x = cx1; ras.arc[2].y = cy1;
- ras.arc[1].x = cx2; ras.arc[1].y = cy2;
- ras.arc[0].x = x; ras.arc[0].y = y;
+ ras.arc[2].x = cx1;
+ ras.arc[2].y = cy1;
+ ras.arc[1].x = cx2;
+ ras.arc[1].y = cy2;
+ ras.arc[0].x = x;
+ ras.arc[0].y = y;
do
{
@@ -1601,11 +1697,16 @@ a };
/* detect a change of direction */
if ( ras.state != state_bez )
{
- if ( ras.state != Unknown_State &&
- End_Profile( RAS_VAR ) )
+ Bool o = state_bez == Ascending_State ? IS_BOTTOM_OVERSHOOT( y1 )
+ : IS_TOP_OVERSHOOT( y1 );
+
+
+ /* finalize current profile if any */
+ if ( ras.state != Unknown_State &&
+ End_Profile( RAS_VARS o ) )
goto Fail;
- if ( New_Profile( RAS_VARS state_bez ) )
+ if ( New_Profile( RAS_VARS state_bez, o ) )
goto Fail;
}
@@ -1698,8 +1799,13 @@ a };
v_control = v_start;
point = points + first;
- tags = ras.outline.tags + first;
- tag = FT_CURVE_TAG( tags[0] );
+ tags = ras.outline.tags + first;
+
+ /* set scan mode if necessary */
+ if ( tags[0] & FT_CURVE_TAG_HAS_SCANMODE )
+ ras.dropOutControl = (Byte)tags[0] >> 5;
+
+ tag = FT_CURVE_TAG( tags[0] );
/* A contour cannot start with a cubic control point! */
if ( tag == FT_CURVE_TAG_CUBIC )
@@ -1905,27 +2011,36 @@ a };
for ( i = 0; i < ras.outline.n_contours; i++ )
{
+ Bool o;
+
+
ras.state = Unknown_State;
ras.gProfile = NULL;
if ( Decompose_Curve( RAS_VARS (unsigned short)start,
- ras.outline.contours[i],
- flipped ) )
+ ras.outline.contours[i],
+ flipped ) )
return FAILURE;
start = ras.outline.contours[i] + 1;
- /* We must now see whether the extreme arcs join or not */
+ /* we must now check whether the extreme arcs join or not */
if ( FRAC( ras.lastY ) == 0 &&
ras.lastY >= ras.minY &&
ras.lastY <= ras.maxY )
- if ( ras.gProfile && ras.gProfile->flow == ras.cProfile->flow )
+ if ( ras.gProfile &&
+ ( ras.gProfile->flags & Flow_Up ) ==
+ ( ras.cProfile->flags & Flow_Up ) )
ras.top--;
/* Note that ras.gProfile can be nil if the contour was too small */
/* to be drawn. */
lastProfile = ras.cProfile;
- if ( End_Profile( RAS_VAR ) )
+ if ( ras.cProfile->flags & Flow_Up )
+ o = IS_TOP_OVERSHOOT( ras.lastY );
+ else
+ o = IS_BOTTOM_OVERSHOOT( ras.lastY );
+ if ( End_Profile( RAS_VARS o ) )
return FAILURE;
/* close the `next profile in contour' linked list */
@@ -2045,7 +2160,7 @@ a };
while ( current )
{
current->X = *current->offset;
- current->offset += current->flow;
+ current->offset += current->flags & Flow_Up ? 1 : -1;
current->height--;
current = current->link;
}
@@ -2220,16 +2335,19 @@ a };
if ( e1 > e2 )
{
+ Int dropOutControl = left->flags & 7;
+
+
if ( e1 == e2 + ras.precision )
{
- switch ( ras.dropOutControl )
+ switch ( dropOutControl )
{
case 0: /* simple drop-outs including stubs */
pxl = e2;
break;
case 4: /* smart drop-outs including stubs */
- pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half );
+ pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half );
break;
case 1: /* simple drop-outs excluding stubs */
@@ -2237,11 +2355,10 @@ a };
/* Drop-out Control Rules #4 and #6 */
- /* The spec is not very clear regarding those rules. It */
- /* presents a method that is way too costly to implement */
- /* while the general idea seems to get rid of `stubs'. */
+ /* The specification neither provides an exact definition */
+ /* of a `stub' nor gives exact rules to exclude them. */
/* */
- /* Here, we only get rid of stubs recognized if: */
+ /* Here the constraints we use to recognize a stub. */
/* */
/* upper stub: */
/* */
@@ -2255,27 +2372,31 @@ a };
/* - P_Left is the successor of P_Right in that contour */
/* - y is the bottom of P_Left */
/* */
+ /* We draw a stub if the following constraints are met. */
+ /* */
+ /* - for an upper or lower stub, there is top or bottom */
+ /* overshoot, respectively */
+ /* - the covered interval is greater or equal to a half */
+ /* pixel */
+
+ /* upper stub test */
+ if ( left->next == right &&
+ left->height <= 0 &&
+ !( left->flags & Overshoot_Top &&
+ x2 - x1 >= ras.precision_half ) )
+ return;
- /* FIXXXME: uncommenting this line solves the disappearing */
- /* bit problem in the `7' of verdana 10pts, but */
- /* makes a new one in the `C' of arial 14pts */
-#if 0
- if ( x2 - x1 < ras.precision_half )
-#endif
- {
- /* upper stub test */
- if ( left->next == right && left->height <= 0 )
- return;
-
- /* lower stub test */
- if ( right->next == left && left->start == y )
- return;
- }
+ /* lower stub test */
+ if ( right->next == left &&
+ left->start == y &&
+ !( left->flags & Overshoot_Bottom &&
+ x2 - x1 >= ras.precision_half ) )
+ return;
- if ( ras.dropOutControl == 1 )
+ if ( dropOutControl == 1 )
pxl = e2;
else
- pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half );
+ pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half );
break;
default: /* modes 2, 3, 6, 7 */
@@ -2415,16 +2536,19 @@ a };
if ( e1 > e2 )
{
+ Int dropOutControl = left->flags & 7;
+
+
if ( e1 == e2 + ras.precision )
{
- switch ( ras.dropOutControl )
+ switch ( dropOutControl )
{
case 0: /* simple drop-outs including stubs */
pxl = e2;
break;
case 4: /* smart drop-outs including stubs */
- pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half );
+ pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half );
break;
case 1: /* simple drop-outs excluding stubs */
@@ -2432,17 +2556,23 @@ a };
/* see Vertical_Sweep_Drop for details */
/* rightmost stub test */
- if ( left->next == right && left->height <= 0 )
+ if ( left->next == right &&
+ left->height <= 0 &&
+ !( left->flags & Overshoot_Top &&
+ x2 - x1 >= ras.precision_half ) )
return;
/* leftmost stub test */
- if ( right->next == left && left->start == y )
+ if ( right->next == left &&
+ left->start == y &&
+ !( left->flags & Overshoot_Bottom &&
+ x2 - x1 >= ras.precision_half ) )
return;
- if ( ras.dropOutControl == 1 )
+ if ( dropOutControl == 1 )
pxl = e2;
else
- pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half );
+ pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half );
break;
default: /* modes 2, 3, 6, 7 */
@@ -2543,10 +2673,10 @@ a };
static void
Vertical_Gray_Sweep_Step( RAS_ARG )
{
- Int c1, c2;
- PByte pix, bit, bit2;
- char* count = (char*)count_table;
- Byte* grays;
+ Int c1, c2;
+ PByte pix, bit, bit2;
+ short* count = (short*)count_table;
+ Byte* grays;
ras.traceOfs += ras.gray_width;
@@ -2665,16 +2795,19 @@ a };
if ( e1 > e2 )
{
+ Int dropOutControl = left->flags & 7;
+
+
if ( e1 == e2 + ras.precision )
{
- switch ( ras.dropOutControl )
+ switch ( dropOutControl )
{
case 0: /* simple drop-outs including stubs */
e1 = e2;
break;
case 4: /* smart drop-outs including stubs */
- e1 = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half );
+ e1 = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half );
break;
case 1: /* simple drop-outs excluding stubs */
@@ -2689,10 +2822,10 @@ a };
if ( right->next == left && left->start == y )
return;
- if ( ras.dropOutControl == 1 )
+ if ( dropOutControl == 1 )
e1 = e2;
else
- e1 = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half );
+ e1 = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half );
break;
@@ -2806,7 +2939,7 @@ a };
y = min_Y;
y_height = 0;
- if ( ras.numTurns > 0 &&
+ if ( ras.numTurns > 0 &&
ras.sizeBuff[-ras.numTurns] == min_Y )
ras.numTurns--;
@@ -2824,16 +2957,10 @@ a };
{
DelOld( &waiting, P );
- switch ( P->flow )
- {
- case Flow_Up:
+ if ( P->flags & Flow_Up )
InsNew( &draw_left, P );
- break;
-
- case Flow_Down:
+ else
InsNew( &draw_right, P );
- break;
- }
}
P = Q;
@@ -2876,7 +3003,10 @@ a };
{
if ( e1 > e2 || e2 == e1 + ras.precision )
{
- if ( ras.dropOutControl != 2 )
+ Int dropOutControl = P_Left->flags & 7;
+
+
+ if ( dropOutControl != 2 )
{
/* a drop-out was detected */
@@ -3070,7 +3200,7 @@ a };
Set_High_Precision( RAS_VARS ras.outline.flags &
- FT_OUTLINE_HIGH_PRECISION );
+ FT_OUTLINE_HIGH_PRECISION );
ras.scale_shift = ras.precision_shift;
if ( ras.outline.flags & FT_OUTLINE_IGNORE_DROPOUTS )
@@ -3146,7 +3276,7 @@ a };
Set_High_Precision( RAS_VARS ras.outline.flags &
- FT_OUTLINE_HIGH_PRECISION );
+ FT_OUTLINE_HIGH_PRECISION );
ras.scale_shift = ras.precision_shift + 1;
if ( ras.outline.flags & FT_OUTLINE_IGNORE_DROPOUTS )
@@ -3234,7 +3364,6 @@ a };
raster->grays[n] = n * 255 / 4;
raster->gray_width = RASTER_GRAY_LINES / 2;
-
#else
FT_UNUSED( raster );
#endif
@@ -3411,23 +3540,24 @@ a };
#ifdef FT_RASTER_OPTION_ANTI_ALIASING
worker->grays = raster->grays;
worker->gray_width = raster->gray_width;
+
+ FT_MEM_ZERO( worker->gray_lines, worker->gray_width * 2 );
#endif
- return ( ( params->flags & FT_RASTER_FLAG_AA )
- ? Render_Gray_Glyph( RAS_VAR )
- : Render_Glyph( RAS_VAR ) );
+ return ( params->flags & FT_RASTER_FLAG_AA )
+ ? Render_Gray_Glyph( RAS_VAR )
+ : Render_Glyph( RAS_VAR );
}
- const FT_Raster_Funcs ft_standard_raster =
- {
+ FT_DEFINE_RASTER_FUNCS( ft_standard_raster,
FT_GLYPH_FORMAT_OUTLINE,
(FT_Raster_New_Func) ft_black_new,
(FT_Raster_Reset_Func) ft_black_reset,
(FT_Raster_Set_Mode_Func)ft_black_set_mode,
(FT_Raster_Render_Func) ft_black_render,
(FT_Raster_Done_Func) ft_black_done
- };
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/raster/ftrend1.c b/src/3rdparty/freetype/src/raster/ftrend1.c
index 3cc8d07413..1ed8af6121 100644
--- a/src/3rdparty/freetype/src/raster/ftrend1.c
+++ b/src/3rdparty/freetype/src/raster/ftrend1.c
@@ -21,6 +21,7 @@
#include FT_OUTLINE_H
#include "ftrend1.h"
#include "ftraster.h"
+#include "rastpic.h"
#include "rasterrs.h"
@@ -118,6 +119,7 @@
}
/* check rendering mode */
+#ifndef FT_CONFIG_OPTION_PIC
if ( mode != FT_RENDER_MODE_MONO )
{
/* raster1 is only capable of producing monochrome bitmaps */
@@ -130,6 +132,25 @@
if ( render->clazz == &ft_raster5_renderer_class )
return Raster_Err_Cannot_Render_Glyph;
}
+#else /* FT_CONFIG_OPTION_PIC */
+ /* When PIC is enabled, we cannot get to the class object */
+ /* so instead we check the final character in the class name */
+ /* ("raster5" or "raster1"). Yes this is a hack. */
+ /* The "correct" thing to do is have different render function */
+ /* for each of the classes. */
+ if ( mode != FT_RENDER_MODE_MONO )
+ {
+ /* raster1 is only capable of producing monochrome bitmaps */
+ if ( render->clazz->root.module_name[6] == '1' )
+ return Raster_Err_Cannot_Render_Glyph;
+ }
+ else
+ {
+ /* raster5 is only capable of producing 5-gray-levels bitmaps */
+ if ( render->clazz->root.module_name[6] == '5' )
+ return Raster_Err_Cannot_Render_Glyph;
+ }
+#endif /* FT_CONFIG_OPTION_PIC */
outline = &slot->outline;
@@ -208,10 +229,8 @@
}
- FT_CALLBACK_TABLE_DEF
- const FT_Renderer_Class ft_raster1_renderer_class =
- {
- {
+ FT_DEFINE_RENDERER(ft_raster1_renderer_class,
+
FT_MODULE_RENDERER,
sizeof( FT_RendererRec ),
@@ -224,7 +243,7 @@
(FT_Module_Constructor)ft_raster1_init,
(FT_Module_Destructor) 0,
(FT_Module_Requester) 0
- },
+ ,
FT_GLYPH_FORMAT_OUTLINE,
@@ -233,18 +252,17 @@
(FT_Renderer_GetCBoxFunc) ft_raster1_get_cbox,
(FT_Renderer_SetModeFunc) ft_raster1_set_mode,
- (FT_Raster_Funcs*) &ft_standard_raster
- };
+ (FT_Raster_Funcs*) &FT_STANDARD_RASTER_GET
+ )
/* This renderer is _NOT_ part of the default modules; you will need */
/* to register it by hand in your application. It should only be */
/* used for backwards-compatibility with FT 1.x anyway. */
/* */
- FT_CALLBACK_TABLE_DEF
- const FT_Renderer_Class ft_raster5_renderer_class =
- {
- {
+ FT_DEFINE_RENDERER(ft_raster5_renderer_class,
+
+
FT_MODULE_RENDERER,
sizeof( FT_RendererRec ),
@@ -257,7 +275,7 @@
(FT_Module_Constructor)ft_raster1_init,
(FT_Module_Destructor) 0,
(FT_Module_Requester) 0
- },
+ ,
FT_GLYPH_FORMAT_OUTLINE,
@@ -266,8 +284,8 @@
(FT_Renderer_GetCBoxFunc) ft_raster1_get_cbox,
(FT_Renderer_SetModeFunc) ft_raster1_set_mode,
- (FT_Raster_Funcs*) &ft_standard_raster
- };
+ (FT_Raster_Funcs*) &FT_STANDARD_RASTER_GET
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/raster/ftrend1.h b/src/3rdparty/freetype/src/raster/ftrend1.h
index 76e9a5f581..4cf128622a 100644
--- a/src/3rdparty/freetype/src/raster/ftrend1.h
+++ b/src/3rdparty/freetype/src/raster/ftrend1.h
@@ -27,13 +27,13 @@
FT_BEGIN_HEADER
- FT_EXPORT_VAR( const FT_Renderer_Class ) ft_raster1_renderer_class;
+ FT_DECLARE_RENDERER( ft_raster1_renderer_class )
/* this renderer is _NOT_ part of the default modules, you'll need */
/* to register it by hand in your application. It should only be */
/* used for backwards-compatibility with FT 1.x anyway. */
/* */
- FT_EXPORT_VAR( const FT_Renderer_Class ) ft_raster5_renderer_class;
+ FT_DECLARE_RENDERER( ft_raster5_renderer_class )
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/raster/raster.c b/src/3rdparty/freetype/src/raster/raster.c
index f13a67a209..1202a116cd 100644
--- a/src/3rdparty/freetype/src/raster/raster.c
+++ b/src/3rdparty/freetype/src/raster/raster.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "rastpic.c"
#include "ftraster.c"
#include "ftrend1.c"
diff --git a/src/3rdparty/freetype/src/raster/rastpic.c b/src/3rdparty/freetype/src/raster/rastpic.c
new file mode 100644
index 0000000000..3c264877b6
--- /dev/null
+++ b/src/3rdparty/freetype/src/raster/rastpic.c
@@ -0,0 +1,89 @@
+/***************************************************************************/
+/* */
+/* rastpic.c */
+/* */
+/* The FreeType position independent code services for raster module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "rastpic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from ftraster.c */
+ void FT_Init_Class_ft_standard_raster(FT_Raster_Funcs*);
+
+ void
+ ft_raster1_renderer_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->raster )
+ {
+ RasterPIC* container = (RasterPIC*)pic_container->raster;
+ if(--container->ref_count)
+ return;
+ FT_FREE( container );
+ pic_container->raster = NULL;
+ }
+ }
+
+
+ FT_Error
+ ft_raster1_renderer_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ RasterPIC* container;
+ FT_Memory memory = library->memory;
+
+ /* since this function also serve raster5 renderer,
+ it implements reference counting */
+ if(pic_container->raster)
+ {
+ ((RasterPIC*)pic_container->raster)->ref_count++;
+ return error;
+ }
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->raster = container;
+ container->ref_count = 1;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ FT_Init_Class_ft_standard_raster(&container->ft_standard_raster);
+/*Exit:*/
+ if(error)
+ ft_raster1_renderer_class_pic_free(library);
+ return error;
+ }
+
+ /* re-route these init and free functions to the above functions */
+ FT_Error ft_raster5_renderer_class_pic_init(FT_Library library)
+ {
+ return ft_raster1_renderer_class_pic_init(library);
+ }
+ void ft_raster5_renderer_class_pic_free(FT_Library library)
+ {
+ ft_raster1_renderer_class_pic_free(library);
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/raster/rastpic.h b/src/3rdparty/freetype/src/raster/rastpic.h
new file mode 100644
index 0000000000..dcd82b8ca8
--- /dev/null
+++ b/src/3rdparty/freetype/src/raster/rastpic.h
@@ -0,0 +1,50 @@
+/***************************************************************************/
+/* */
+/* rastpic.h */
+/* */
+/* The FreeType position independent code services for raster module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __RASTPIC_H__
+#define __RASTPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+#define FT_STANDARD_RASTER_GET ft_standard_raster
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+ typedef struct RasterPIC_
+ {
+ int ref_count;
+ FT_Raster_Funcs ft_standard_raster;
+ } RasterPIC;
+
+#define GET_PIC(lib) ((RasterPIC*)((lib)->pic_container.raster))
+#define FT_STANDARD_RASTER_GET (GET_PIC(library)->ft_standard_raster)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __RASTPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/raster/rules.mk b/src/3rdparty/freetype/src/raster/rules.mk
index 43a9af2b79..9703b1298a 100644
--- a/src/3rdparty/freetype/src/raster/rules.mk
+++ b/src/3rdparty/freetype/src/raster/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2000, 2001, 2003, 2008 by
+# Copyright 1996-2000, 2001, 2003, 2008, 2009 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -31,7 +31,6 @@ RASTER_DRV_SRC := $(RASTER_DIR)/ftraster.c \
# raster driver headers
#
RASTER_DRV_H := $(RASTER_DRV_SRC:%.c=%.h) \
- $(RASTER_DIR)/ftmisc.h \
$(RASTER_DIR)/rasterrs.h
diff --git a/src/3rdparty/freetype/src/sfnt/Jamfile b/src/3rdparty/freetype/src/sfnt/Jamfile
index ad467bebec..cb20b1b04b 100644
--- a/src/3rdparty/freetype/src/sfnt/Jamfile
+++ b/src/3rdparty/freetype/src/sfnt/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) sfnt ;
if $(FT2_MULTI)
{
- _sources = sfobjs sfdriver ttcmap ttmtx ttpost ttload ttsbit ttkern ttbdf ;
+ _sources = sfobjs sfdriver ttcmap ttmtx ttpost ttload ttsbit ttkern ttbdf sfntpic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/sfnt/sfdriver.c b/src/3rdparty/freetype/src/sfnt/sfdriver.c
index 142ef767da..1097efb86d 100644
--- a/src/3rdparty/freetype/src/sfnt/sfdriver.c
+++ b/src/3rdparty/freetype/src/sfnt/sfdriver.c
@@ -17,12 +17,14 @@
#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_SFNT_H
#include FT_INTERNAL_OBJECTS_H
#include "sfdriver.h"
#include "ttload.h"
#include "sfobjs.h"
+#include "sfntpic.h"
#include "sferrors.h"
@@ -48,6 +50,15 @@
#include FT_SERVICE_SFNT_H
#include FT_SERVICE_TT_CMAP_H
+ /*************************************************************************/
+ /* */
+ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */
+ /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */
+ /* messages during execution. */
+ /* */
+#undef FT_COMPONENT
+#define FT_COMPONENT trace_sfdriver
+
/*
* SFNT TABLE SERVICE
@@ -103,27 +114,28 @@
sfnt_table_info( TT_Face face,
FT_UInt idx,
FT_ULong *tag,
+ FT_ULong *offset,
FT_ULong *length )
{
- if ( !tag || !length )
+ if ( !tag || !offset || !length )
return SFNT_Err_Invalid_Argument;
if ( idx >= face->num_tables )
return SFNT_Err_Table_Missing;
*tag = face->dir_tables[idx].Tag;
+ *offset = face->dir_tables[idx].Offset;
*length = face->dir_tables[idx].Length;
return SFNT_Err_Ok;
}
- static const FT_Service_SFNT_TableRec sfnt_service_sfnt_table =
- {
+ FT_DEFINE_SERVICE_SFNT_TABLEREC(sfnt_service_sfnt_table,
(FT_SFNT_TableLoadFunc)tt_face_load_any,
(FT_SFNT_TableGetFunc) get_sfnt_table,
(FT_SFNT_TableInfoFunc)sfnt_table_info
- };
+ )
#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -155,11 +167,19 @@
sfnt_get_name_index( TT_Face face,
FT_String* glyph_name )
{
- FT_Face root = &face->root;
- FT_Long i;
+ FT_Face root = &face->root;
+ FT_UInt i, max_gid = FT_UINT_MAX;
+
+ if ( root->num_glyphs < 0 )
+ return 0;
+ else if ( ( FT_ULong ) root->num_glyphs < FT_UINT_MAX )
+ max_gid = ( FT_UInt ) root->num_glyphs;
+ else
+ FT_TRACE0(( "Ignore glyph names for invalid GID 0x%08x - 0x%08x\n",
+ FT_UINT_MAX, root->num_glyphs ));
- for ( i = 0; i < root->num_glyphs; i++ )
+ for ( i = 0; i < max_gid; i++ )
{
FT_String* gname;
FT_Error error = tt_face_get_ps_name( face, i, &gname );
@@ -169,18 +189,17 @@
continue;
if ( !ft_strcmp( glyph_name, gname ) )
- return (FT_UInt)i;
+ return i;
}
return 0;
}
- static const FT_Service_GlyphDictRec sfnt_service_glyph_dict =
- {
+ FT_DEFINE_SERVICE_GLYPHDICTREC(sfnt_service_glyph_dict,
(FT_GlyphDict_GetNameFunc) sfnt_get_glyph_name,
(FT_GlyphDict_NameIndexFunc)sfnt_get_name_index
- };
+ )
#endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */
@@ -300,19 +319,17 @@
return result;
}
- static const FT_Service_PsFontNameRec sfnt_service_ps_name =
- {
+ FT_DEFINE_SERVICE_PSFONTNAMEREC(sfnt_service_ps_name,
(FT_PsName_GetFunc)sfnt_get_ps_name
- };
+ )
/*
* TT CMAP INFO
*/
- static const FT_Service_TTCMapsRec tt_service_get_cmap_info =
- {
+ FT_DEFINE_SERVICE_TTCMAPSREC(tt_service_get_cmap_info,
(TT_CMap_Info_GetFunc)tt_get_cmap_info
- };
+ )
#ifdef TT_CONFIG_OPTION_BDF
@@ -353,11 +370,10 @@
}
- static const FT_Service_BDFRec sfnt_service_bdf =
- {
+ FT_DEFINE_SERVICE_BDFRec(sfnt_service_bdf,
(FT_BDF_GetCharsetIdFunc) sfnt_get_charset_id,
- (FT_BDF_GetPropertyFunc) tt_face_find_bdf_prop,
- };
+ (FT_BDF_GetPropertyFunc) tt_face_find_bdf_prop
+ )
#endif /* TT_CONFIG_OPTION_BDF */
@@ -366,20 +382,35 @@
* SERVICE LIST
*/
- static const FT_ServiceDescRec sfnt_services[] =
- {
- { FT_SERVICE_ID_SFNT_TABLE, &sfnt_service_sfnt_table },
- { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name },
-#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
- { FT_SERVICE_ID_GLYPH_DICT, &sfnt_service_glyph_dict },
-#endif
-#ifdef TT_CONFIG_OPTION_BDF
- { FT_SERVICE_ID_BDF, &sfnt_service_bdf },
+#if defined TT_CONFIG_OPTION_POSTSCRIPT_NAMES && defined TT_CONFIG_OPTION_BDF
+ FT_DEFINE_SERVICEDESCREC5(sfnt_services,
+ FT_SERVICE_ID_SFNT_TABLE, &FT_SFNT_SERVICE_SFNT_TABLE_GET,
+ FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &FT_SFNT_SERVICE_PS_NAME_GET,
+ FT_SERVICE_ID_GLYPH_DICT, &FT_SFNT_SERVICE_GLYPH_DICT_GET,
+ FT_SERVICE_ID_BDF, &FT_SFNT_SERVICE_BDF_GET,
+ FT_SERVICE_ID_TT_CMAP, &FT_TT_SERVICE_GET_CMAP_INFO_GET
+ )
+#elif defined TT_CONFIG_OPTION_POSTSCRIPT_NAMES
+ FT_DEFINE_SERVICEDESCREC4(sfnt_services,
+ FT_SERVICE_ID_SFNT_TABLE, &FT_SFNT_SERVICE_SFNT_TABLE_GET,
+ FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &FT_SFNT_SERVICE_PS_NAME_GET,
+ FT_SERVICE_ID_GLYPH_DICT, &FT_SFNT_SERVICE_GLYPH_DICT_GET,
+ FT_SERVICE_ID_TT_CMAP, &FT_TT_SERVICE_GET_CMAP_INFO_GET
+ )
+#elif defined TT_CONFIG_OPTION_BDF
+ FT_DEFINE_SERVICEDESCREC4(sfnt_services,
+ FT_SERVICE_ID_SFNT_TABLE, &FT_SFNT_SERVICE_SFNT_TABLE_GET,
+ FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &FT_SFNT_SERVICE_PS_NAME_GET,
+ FT_SERVICE_ID_BDF, &FT_SFNT_SERVICE_BDF_GET,
+ FT_SERVICE_ID_TT_CMAP, &FT_TT_SERVICE_GET_CMAP_INFO_GET
+ )
+#else
+ FT_DEFINE_SERVICEDESCREC3(sfnt_services,
+ FT_SERVICE_ID_SFNT_TABLE, &FT_SFNT_SERVICE_SFNT_TABLE_GET,
+ FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &FT_SFNT_SERVICE_PS_NAME_GET,
+ FT_SERVICE_ID_TT_CMAP, &FT_TT_SERVICE_GET_CMAP_INFO_GET
+ )
#endif
- { FT_SERVICE_ID_TT_CMAP, &tt_service_get_cmap_info },
-
- { NULL, NULL }
- };
FT_CALLBACK_DEF( FT_Module_Interface )
@@ -388,7 +419,7 @@
{
FT_UNUSED( module );
- return ft_service_list_lookup( sfnt_services, module_interface );
+ return ft_service_list_lookup( FT_SFNT_SERVICES_GET, module_interface );
}
@@ -519,10 +550,18 @@
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
+#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
+#define PUT_EMBEDDED_BITMAPS(a) a
+#else
+#define PUT_EMBEDDED_BITMAPS(a) 0
+#endif
+#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
+#define PUT_PS_NAMES(a) a
+#else
+#define PUT_PS_NAMES(a) 0
+#endif
- static
- const SFNT_Interface sfnt_interface =
- {
+ FT_DEFINE_SFNT_INTERFACE(sfnt_interface,
tt_face_goto_table,
sfnt_init_face,
@@ -532,10 +571,8 @@
tt_face_load_any,
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- tt_face_load_sfnt_header_stub,
- tt_face_load_directory_stub,
-#endif
+ tt_face_load_sfnt_header_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ tt_face_load_directory_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
tt_face_load_head,
tt_face_load_hhea,
@@ -547,53 +584,32 @@
tt_face_load_name,
tt_face_free_name,
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- tt_face_load_hdmx_stub,
- tt_face_free_hdmx_stub,
-#endif
+ tt_face_load_hdmx_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ tt_face_free_hdmx_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
tt_face_load_kern,
tt_face_load_gasp,
tt_face_load_pclt,
-#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/* see `ttload.h' */
- tt_face_load_bhed,
-#else
- 0,
-#endif
+ PUT_EMBEDDED_BITMAPS(tt_face_load_bhed),
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- tt_face_set_sbit_strike_stub,
- tt_face_load_sbit_stub,
+ tt_face_set_sbit_strike_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ tt_face_load_sbit_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
- tt_find_sbit_image,
- tt_load_sbit_metrics,
-#endif
+ tt_find_sbit_image, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ tt_load_sbit_metrics, /* FT_CONFIG_OPTION_OLD_INTERNALS */
-#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
- tt_face_load_sbit_image,
-#else
- 0,
-#endif
+ PUT_EMBEDDED_BITMAPS(tt_face_load_sbit_image),
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- tt_face_free_sbit_stub,
-#endif
+ tt_face_free_sbit_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
-#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
/* see `ttpost.h' */
- tt_face_get_ps_name,
- tt_face_free_ps_names,
-#else
- 0,
- 0,
-#endif
+ PUT_PS_NAMES(tt_face_get_ps_name),
+ PUT_PS_NAMES(tt_face_free_ps_names),
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- tt_face_load_charmap_stub,
- tt_face_free_charmap_stub,
-#endif
+ tt_face_load_charmap_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ tt_face_free_charmap_stub, /* FT_CONFIG_OPTION_OLD_INTERNALS */
/* since version 2.1.8 */
@@ -604,27 +620,19 @@
tt_face_load_font_dir,
tt_face_load_hmtx,
-#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/* see `ttsbit.h' and `sfnt.h' */
- tt_face_load_eblc,
- tt_face_free_eblc,
+ PUT_EMBEDDED_BITMAPS(tt_face_load_eblc),
+ PUT_EMBEDDED_BITMAPS(tt_face_free_eblc),
- tt_face_set_sbit_strike,
- tt_face_load_strike_metrics,
-#else
- 0,
- 0,
- 0,
- 0,
-#endif
+ PUT_EMBEDDED_BITMAPS(tt_face_set_sbit_strike),
+ PUT_EMBEDDED_BITMAPS(tt_face_load_strike_metrics),
tt_face_get_metrics
- };
+ )
- FT_CALLBACK_TABLE_DEF
- const FT_Module_Class sfnt_module_class =
- {
+ FT_DEFINE_MODULE(sfnt_module_class,
+
0, /* not a font driver or renderer */
sizeof( FT_ModuleRec ),
@@ -632,12 +640,12 @@
0x10000L, /* driver version 1.0 */
0x20000L, /* driver requires FreeType 2.0 or higher */
- (const void*)&sfnt_interface, /* module specific interface */
+ (const void*)&FT_SFNT_INTERFACE_GET, /* module specific interface */
(FT_Module_Constructor)0,
(FT_Module_Destructor) 0,
(FT_Module_Requester) sfnt_get_interface
- };
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/sfnt/sfdriver.h b/src/3rdparty/freetype/src/sfnt/sfdriver.h
index 92db79694d..5de25d51ca 100644
--- a/src/3rdparty/freetype/src/sfnt/sfdriver.h
+++ b/src/3rdparty/freetype/src/sfnt/sfdriver.h
@@ -27,7 +27,7 @@
FT_BEGIN_HEADER
- FT_EXPORT_VAR( const FT_Module_Class ) sfnt_module_class;
+ FT_DECLARE_MODULE( sfnt_module_class )
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/sfnt/sfnt.c b/src/3rdparty/freetype/src/sfnt/sfnt.c
index 45a820b718..fc507b4961 100644
--- a/src/3rdparty/freetype/src/sfnt/sfnt.c
+++ b/src/3rdparty/freetype/src/sfnt/sfnt.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "sfntpic.c"
#include "ttload.c"
#include "ttmtx.c"
#include "ttcmap.c"
diff --git a/src/3rdparty/freetype/src/sfnt/sfntpic.c b/src/3rdparty/freetype/src/sfnt/sfntpic.c
new file mode 100644
index 0000000000..fd3cf4e923
--- /dev/null
+++ b/src/3rdparty/freetype/src/sfnt/sfntpic.c
@@ -0,0 +1,101 @@
+/***************************************************************************/
+/* */
+/* sfntpic.c */
+/* */
+/* The FreeType position independent code services for sfnt module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "sfntpic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from sfdriver.c */
+ FT_Error FT_Create_Class_sfnt_services( FT_Library, FT_ServiceDescRec**);
+ void FT_Destroy_Class_sfnt_services( FT_Library, FT_ServiceDescRec*);
+ void FT_Init_Class_sfnt_service_bdf( FT_Service_BDFRec*);
+ void FT_Init_Class_sfnt_interface( FT_Library, SFNT_Interface*);
+ void FT_Init_Class_sfnt_service_glyph_dict( FT_Library, FT_Service_GlyphDictRec*);
+ void FT_Init_Class_sfnt_service_ps_name( FT_Library, FT_Service_PsFontNameRec*);
+ void FT_Init_Class_tt_service_get_cmap_info( FT_Library, FT_Service_TTCMapsRec*);
+ void FT_Init_Class_sfnt_service_sfnt_table( FT_Service_SFNT_TableRec*);
+
+ /* forward declaration of PIC init functions from ttcmap.c */
+ FT_Error FT_Create_Class_tt_cmap_classes( FT_Library, TT_CMap_Class**);
+ void FT_Destroy_Class_tt_cmap_classes( FT_Library, TT_CMap_Class*);
+
+ void
+ sfnt_module_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->sfnt )
+ {
+ sfntModulePIC* container = (sfntModulePIC*)pic_container->sfnt;
+ if(container->sfnt_services)
+ FT_Destroy_Class_sfnt_services(library, container->sfnt_services);
+ container->sfnt_services = NULL;
+ if(container->tt_cmap_classes)
+ FT_Destroy_Class_tt_cmap_classes(library, container->tt_cmap_classes);
+ container->tt_cmap_classes = NULL;
+ FT_FREE( container );
+ pic_container->sfnt = NULL;
+ }
+ }
+
+
+ FT_Error
+ sfnt_module_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ sfntModulePIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->sfnt = container;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ error = FT_Create_Class_sfnt_services(library, &container->sfnt_services);
+ if(error)
+ goto Exit;
+ error = FT_Create_Class_tt_cmap_classes(library, &container->tt_cmap_classes);
+ if(error)
+ goto Exit;
+ FT_Init_Class_sfnt_service_glyph_dict(library, &container->sfnt_service_glyph_dict);
+ FT_Init_Class_sfnt_service_ps_name(library, &container->sfnt_service_ps_name);
+ FT_Init_Class_tt_service_get_cmap_info(library, &container->tt_service_get_cmap_info);
+ FT_Init_Class_sfnt_service_sfnt_table(&container->sfnt_service_sfnt_table);
+#ifdef TT_CONFIG_OPTION_BDF
+ FT_Init_Class_sfnt_service_bdf(&container->sfnt_service_bdf);
+#endif
+ FT_Init_Class_sfnt_interface(library, &container->sfnt_interface);
+
+Exit:
+ if(error)
+ sfnt_module_class_pic_free(library);
+ return error;
+ }
+
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/sfnt/sfntpic.h b/src/3rdparty/freetype/src/sfnt/sfntpic.h
new file mode 100644
index 0000000000..6943b4250a
--- /dev/null
+++ b/src/3rdparty/freetype/src/sfnt/sfntpic.h
@@ -0,0 +1,88 @@
+/***************************************************************************/
+/* */
+/* sfntpic.h */
+/* */
+/* The FreeType position independent code services for sfnt module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __SFNTPIC_H__
+#define __SFNTPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+ #ifndef FT_CONFIG_OPTION_PIC
+#define FT_SFNT_SERVICES_GET sfnt_services
+#define FT_SFNT_SERVICE_GLYPH_DICT_GET sfnt_service_glyph_dict
+#define FT_SFNT_SERVICE_PS_NAME_GET sfnt_service_ps_name
+#define FT_TT_SERVICE_GET_CMAP_INFO_GET tt_service_get_cmap_info
+#define FT_SFNT_SERVICES_GET sfnt_services
+#define FT_TT_CMAP_CLASSES_GET tt_cmap_classes
+#define FT_SFNT_SERVICE_SFNT_TABLE_GET sfnt_service_sfnt_table
+#define FT_SFNT_SERVICE_BDF_GET sfnt_service_bdf
+#define FT_SFNT_INTERFACE_GET sfnt_interface
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+/* some include files required for members of sfntModulePIC */
+#include FT_SERVICE_GLYPH_DICT_H
+#include FT_SERVICE_POSTSCRIPT_NAME_H
+#include FT_SERVICE_SFNT_H
+#include FT_SERVICE_TT_CMAP_H
+#ifdef TT_CONFIG_OPTION_BDF
+#include "ttbdf.h"
+#include FT_SERVICE_BDF_H
+#endif
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_STREAM_H
+#include FT_INTERNAL_SFNT_H
+#include "ttcmap.h"
+
+typedef struct sfntModulePIC_
+ {
+ FT_ServiceDescRec* sfnt_services;
+ FT_Service_GlyphDictRec sfnt_service_glyph_dict;
+ FT_Service_PsFontNameRec sfnt_service_ps_name;
+ FT_Service_TTCMapsRec tt_service_get_cmap_info;
+ TT_CMap_Class* tt_cmap_classes;
+ FT_Service_SFNT_TableRec sfnt_service_sfnt_table;
+#ifdef TT_CONFIG_OPTION_BDF
+ FT_Service_BDFRec sfnt_service_bdf;
+#endif
+ SFNT_Interface sfnt_interface;
+ } sfntModulePIC;
+
+#define GET_PIC(lib) ((sfntModulePIC*)((lib)->pic_container.sfnt))
+#define FT_SFNT_SERVICES_GET (GET_PIC(library)->sfnt_services)
+#define FT_SFNT_SERVICE_GLYPH_DICT_GET (GET_PIC(library)->sfnt_service_glyph_dict)
+#define FT_SFNT_SERVICE_PS_NAME_GET (GET_PIC(library)->sfnt_service_ps_name)
+#define FT_TT_SERVICE_GET_CMAP_INFO_GET (GET_PIC(library)->tt_service_get_cmap_info)
+#define FT_SFNT_SERVICES_GET (GET_PIC(library)->sfnt_services)
+#define FT_TT_CMAP_CLASSES_GET (GET_PIC(library)->tt_cmap_classes)
+#define FT_SFNT_SERVICE_SFNT_TABLE_GET (GET_PIC(library)->sfnt_service_sfnt_table)
+#define FT_SFNT_SERVICE_BDF_GET (GET_PIC(library)->sfnt_service_bdf)
+#define FT_SFNT_INTERFACE_GET (GET_PIC(library)->sfnt_interface)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+/* */
+
+FT_END_HEADER
+
+#endif /* __SFNTPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/sfnt/sfobjs.c b/src/3rdparty/freetype/src/sfnt/sfobjs.c
index c826b92aa3..b74b1a93a9 100644
--- a/src/3rdparty/freetype/src/sfnt/sfobjs.c
+++ b/src/3rdparty/freetype/src/sfnt/sfobjs.c
@@ -26,6 +26,7 @@
#include FT_TRUETYPE_IDS_H
#include FT_TRUETYPE_TAGS_H
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
+#include FT_SFNT_NAMES_H
#include "sferrors.h"
#ifdef TT_CONFIG_OPTION_BDF
@@ -527,13 +528,27 @@
#endif
FT_Bool has_outline;
FT_Bool is_apple_sbit;
+ FT_Bool ignore_preferred_family = FALSE;
+ FT_Bool ignore_preferred_subfamily = FALSE;
SFNT_Service sfnt = (SFNT_Service)face->sfnt;
FT_UNUSED( face_index );
- FT_UNUSED( num_params );
- FT_UNUSED( params );
+ /* Check parameters */
+
+ {
+ FT_Int i;
+
+
+ for ( i = 0; i < num_params; i++ )
+ {
+ if ( params[i].tag == FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY )
+ ignore_preferred_family = TRUE;
+ else if ( params[i].tag == FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY )
+ ignore_preferred_subfamily = TRUE;
+ }
+ }
/* Load tables */
@@ -722,26 +737,30 @@
/* Foundation (WPF). This flag has been introduced in version */
/* 1.5 of the OpenType specification (May 2008). */
+ face->root.family_name = NULL;
+ face->root.style_name = NULL;
if ( face->os2.version != 0xFFFFU && face->os2.fsSelection & 256 )
{
- GET_NAME( PREFERRED_FAMILY, &face->root.family_name );
+ if ( !ignore_preferred_family )
+ GET_NAME( PREFERRED_FAMILY, &face->root.family_name );
if ( !face->root.family_name )
GET_NAME( FONT_FAMILY, &face->root.family_name );
- GET_NAME( PREFERRED_SUBFAMILY, &face->root.style_name );
+ if ( !ignore_preferred_subfamily )
+ GET_NAME( PREFERRED_SUBFAMILY, &face->root.style_name );
if ( !face->root.style_name )
GET_NAME( FONT_SUBFAMILY, &face->root.style_name );
}
else
{
GET_NAME( WWS_FAMILY, &face->root.family_name );
- if ( !face->root.family_name )
+ if ( !face->root.family_name && !ignore_preferred_family )
GET_NAME( PREFERRED_FAMILY, &face->root.family_name );
if ( !face->root.family_name )
GET_NAME( FONT_FAMILY, &face->root.family_name );
GET_NAME( WWS_SUBFAMILY, &face->root.style_name );
- if ( !face->root.style_name )
+ if ( !face->root.style_name && !ignore_preferred_subfamily )
GET_NAME( PREFERRED_SUBFAMILY, &face->root.style_name );
if ( !face->root.style_name )
GET_NAME( FONT_SUBFAMILY, &face->root.style_name );
@@ -749,8 +768,8 @@
/* now set up root fields */
{
- FT_Face root = &face->root;
- FT_Int32 flags = root->face_flags;
+ FT_Face root = &face->root;
+ FT_Long flags = root->face_flags;
/*********************************************************************/
diff --git a/src/3rdparty/freetype/src/sfnt/ttbdf.c b/src/3rdparty/freetype/src/sfnt/ttbdf.c
index 6c95387adb..206cecee5e 100644
--- a/src/3rdparty/freetype/src/sfnt/ttbdf.c
+++ b/src/3rdparty/freetype/src/sfnt/ttbdf.c
@@ -84,7 +84,7 @@
FT_Byte* p = bdf->table;
FT_UInt version = FT_NEXT_USHORT( p );
FT_UInt num_strikes = FT_NEXT_USHORT( p );
- FT_UInt32 strings = FT_NEXT_ULONG ( p );
+ FT_ULong strings = FT_NEXT_ULONG ( p );
FT_UInt count;
FT_Byte* strike;
@@ -141,13 +141,13 @@
const char* property_name,
BDF_PropertyRec *aprop )
{
- TT_BDF bdf = &face->bdf;
- FT_Size size = FT_FACE(face)->size;
- FT_Error error = 0;
- FT_Byte* p;
- FT_UInt count;
- FT_Byte* strike;
- FT_UInt property_len;
+ TT_BDF bdf = &face->bdf;
+ FT_Size size = FT_FACE(face)->size;
+ FT_Error error = 0;
+ FT_Byte* p;
+ FT_UInt count;
+ FT_Byte* strike;
+ FT_Offset property_len;
aprop->type = BDF_PROPERTY_TYPE_NONE;
diff --git a/src/3rdparty/freetype/src/sfnt/ttcmap.c b/src/3rdparty/freetype/src/sfnt/ttcmap.c
index 683039153b..b283f6d162 100644
--- a/src/3rdparty/freetype/src/sfnt/ttcmap.c
+++ b/src/3rdparty/freetype/src/sfnt/ttcmap.c
@@ -25,6 +25,7 @@
#include FT_INTERNAL_STREAM_H
#include "ttload.h"
#include "ttcmap.h"
+#include "sfntpic.h"
/*************************************************************************/
@@ -124,7 +125,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap0_char_next( TT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -157,17 +158,14 @@
FT_Byte* p = cmap->data + 4;
- cmap_info->format = 0;
+ cmap_info->format = 0;
cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p );
return SFNT_Err_Ok;
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap0_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap0_class_rec,
sizeof ( TT_CMapRec ),
(FT_CMap_InitFunc) tt_cmap_init,
@@ -176,11 +174,11 @@
(FT_CMap_CharNextFunc) tt_cmap0_char_next,
NULL, NULL, NULL, NULL, NULL
- },
+ ,
0,
(TT_CMap_ValidateFunc) tt_cmap0_validate,
(TT_CMap_Info_GetFunc) tt_cmap0_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_0 */
@@ -462,7 +460,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap2_char_next( TT_CMap cmap,
FT_UInt32 *pcharcode )
{
@@ -536,17 +534,14 @@
FT_Byte* p = cmap->data + 4;
- cmap_info->format = 2;
+ cmap_info->format = 2;
cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p );
return SFNT_Err_Ok;
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap2_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap2_class_rec,
sizeof ( TT_CMapRec ),
(FT_CMap_InitFunc) tt_cmap_init,
@@ -555,11 +550,11 @@
(FT_CMap_CharNextFunc) tt_cmap2_char_next,
NULL, NULL, NULL, NULL, NULL
- },
+ ,
2,
(TT_CMap_ValidateFunc) tt_cmap2_validate,
(TT_CMap_Info_GetFunc) tt_cmap2_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_2 */
@@ -664,7 +659,7 @@
p = table + 6;
cmap->num_ranges = FT_PEEK_USHORT( p ) >> 1;
- cmap->cur_charcode = 0xFFFFFFFFUL;
+ cmap->cur_charcode = (FT_UInt32)0xFFFFFFFFUL;
cmap->cur_gindex = 0;
return SFNT_Err_Ok;
@@ -742,7 +737,7 @@
if ( cmap->cur_charcode >= 0xFFFFUL )
goto Fail;
- charcode = cmap->cur_charcode + 1;
+ charcode = (FT_UInt)cmap->cur_charcode + 1;
if ( charcode < cmap->cur_start )
charcode = cmap->cur_start;
@@ -804,7 +799,7 @@
}
Fail:
- cmap->cur_charcode = 0xFFFFFFFFUL;
+ cmap->cur_charcode = (FT_UInt32)0xFFFFFFFFUL;
cmap->cur_gindex = 0;
}
@@ -1093,7 +1088,7 @@
FT_UInt num_segs2, start, end, offset;
FT_Int delta;
FT_UInt max, min, mid, num_segs;
- FT_UInt charcode = *pcharcode;
+ FT_UInt charcode = (FT_UInt)*pcharcode;
FT_UInt gindex = 0;
FT_Byte* p;
@@ -1335,7 +1330,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap4_char_next( TT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -1375,17 +1370,14 @@
FT_Byte* p = cmap->data + 4;
- cmap_info->format = 4;
+ cmap_info->format = 4;
cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p );
return SFNT_Err_Ok;
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap4_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap4_class_rec,
sizeof ( TT_CMap4Rec ),
(FT_CMap_InitFunc) tt_cmap4_init,
(FT_CMap_DoneFunc) NULL,
@@ -1393,11 +1385,11 @@
(FT_CMap_CharNextFunc) tt_cmap4_char_next,
NULL, NULL, NULL, NULL, NULL
- },
+ ,
4,
(TT_CMap_ValidateFunc) tt_cmap4_validate,
(TT_CMap_Info_GetFunc) tt_cmap4_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_4 */
@@ -1489,7 +1481,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap6_char_next( TT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -1537,17 +1529,14 @@
FT_Byte* p = cmap->data + 4;
- cmap_info->format = 6;
+ cmap_info->format = 6;
cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p );
return SFNT_Err_Ok;
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap6_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap6_class_rec,
sizeof ( TT_CMapRec ),
(FT_CMap_InitFunc) tt_cmap_init,
@@ -1556,11 +1545,11 @@
(FT_CMap_CharNextFunc) tt_cmap6_char_next,
NULL, NULL, NULL, NULL, NULL
- },
+ ,
6,
(TT_CMap_ValidateFunc) tt_cmap6_validate,
(TT_CMap_Info_GetFunc) tt_cmap6_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_6 */
@@ -1635,7 +1624,7 @@
FT_INVALID_TOO_SHORT;
length = TT_NEXT_ULONG( p );
- if ( table + length > valid->limit || length < 8208 )
+ if ( length > (FT_UInt32)( valid->limit - table ) || length < 8192 + 16 )
FT_INVALID_TOO_SHORT;
is32 = table + 12;
@@ -1745,7 +1734,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap8_char_next( TT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -1793,17 +1782,14 @@
FT_Byte* p = cmap->data + 8;
- cmap_info->format = 8;
+ cmap_info->format = 8;
cmap_info->language = (FT_ULong)TT_PEEK_ULONG( p );
return SFNT_Err_Ok;
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap8_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap8_class_rec,
sizeof ( TT_CMapRec ),
(FT_CMap_InitFunc) tt_cmap_init,
@@ -1812,11 +1798,11 @@
(FT_CMap_CharNextFunc) tt_cmap8_char_next,
NULL, NULL, NULL, NULL, NULL
- },
+ ,
8,
(TT_CMap_ValidateFunc) tt_cmap8_validate,
(TT_CMap_Info_GetFunc) tt_cmap8_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_8 */
@@ -1863,7 +1849,8 @@
p = table + 16;
count = TT_NEXT_ULONG( p );
- if ( table + length > valid->limit || length < 20 + count * 2 )
+ if ( length > (FT_ULong)( valid->limit - table ) ||
+ length < 20 + count * 2 )
FT_INVALID_TOO_SHORT;
/* check glyph indices */
@@ -1905,7 +1892,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap10_char_next( TT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -1944,17 +1931,14 @@
FT_Byte* p = cmap->data + 8;
- cmap_info->format = 10;
+ cmap_info->format = 10;
cmap_info->language = (FT_ULong)TT_PEEK_ULONG( p );
return SFNT_Err_Ok;
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap10_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap10_class_rec,
sizeof ( TT_CMapRec ),
(FT_CMap_InitFunc) tt_cmap_init,
@@ -1963,11 +1947,11 @@
(FT_CMap_CharNextFunc) tt_cmap10_char_next,
NULL, NULL, NULL, NULL, NULL
- },
+ ,
10,
(TT_CMap_ValidateFunc) tt_cmap10_validate,
(TT_CMap_Info_GetFunc) tt_cmap10_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_10 */
@@ -2048,7 +2032,8 @@
p = table + 12;
num_groups = TT_NEXT_ULONG( p );
- if ( table + length > valid->limit || length < 16 + 12 * num_groups )
+ if ( length > (FT_ULong)( valid->limit - table ) ||
+ length < 16 + 12 * num_groups )
FT_INVALID_TOO_SHORT;
/* check groups, they must be in increasing order */
@@ -2225,7 +2210,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap12_char_next( TT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -2243,8 +2228,10 @@
if ( cmap12->valid )
{
gindex = cmap12->cur_gindex;
+
+ /* XXX: check cur_charcode overflow is expected */
if ( gindex )
- *pchar_code = cmap12->cur_charcode;
+ *pchar_code = (FT_UInt32)cmap12->cur_charcode;
}
else
gindex = 0;
@@ -2252,7 +2239,8 @@
else
gindex = tt_cmap12_char_map_binary( cmap, pchar_code, 1 );
- return gindex;
+ /* XXX: check gindex overflow is expected */
+ return (FT_UInt32)gindex;
}
@@ -2263,17 +2251,14 @@
FT_Byte* p = cmap->data + 8;
- cmap_info->format = 12;
+ cmap_info->format = 12;
cmap_info->language = (FT_ULong)TT_PEEK_ULONG( p );
return SFNT_Err_Ok;
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap12_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap12_class_rec,
sizeof ( TT_CMap12Rec ),
(FT_CMap_InitFunc) tt_cmap12_init,
@@ -2282,11 +2267,11 @@
(FT_CMap_CharNextFunc) tt_cmap12_char_next,
NULL, NULL, NULL, NULL, NULL
- },
+ ,
12,
(TT_CMap_ValidateFunc) tt_cmap12_validate,
(TT_CMap_Info_GetFunc) tt_cmap12_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_12 */
@@ -2294,6 +2279,322 @@
/*************************************************************************/
/*************************************************************************/
/***** *****/
+ /***** FORMAT 13 *****/
+ /***** *****/
+ /*************************************************************************/
+ /*************************************************************************/
+
+ /*************************************************************************/
+ /* */
+ /* TABLE OVERVIEW */
+ /* -------------- */
+ /* */
+ /* NAME OFFSET TYPE DESCRIPTION */
+ /* */
+ /* format 0 USHORT must be 13 */
+ /* reserved 2 USHORT reserved */
+ /* length 4 ULONG length in bytes */
+ /* language 8 ULONG Mac language code */
+ /* count 12 ULONG number of groups */
+ /* 16 */
+ /* */
+ /* This header is followed by `count' groups of the following format: */
+ /* */
+ /* start 0 ULONG first charcode */
+ /* end 4 ULONG last charcode */
+ /* glyphId 8 ULONG glyph ID for the whole group */
+ /* */
+
+#ifdef TT_CONFIG_CMAP_FORMAT_13
+
+ typedef struct TT_CMap13Rec_
+ {
+ TT_CMapRec cmap;
+ FT_Bool valid;
+ FT_ULong cur_charcode;
+ FT_UInt cur_gindex;
+ FT_ULong cur_group;
+ FT_ULong num_groups;
+
+ } TT_CMap13Rec, *TT_CMap13;
+
+
+ FT_CALLBACK_DEF( FT_Error )
+ tt_cmap13_init( TT_CMap13 cmap,
+ FT_Byte* table )
+ {
+ cmap->cmap.data = table;
+
+ table += 12;
+ cmap->num_groups = FT_PEEK_ULONG( table );
+
+ cmap->valid = 0;
+
+ return SFNT_Err_Ok;
+ }
+
+
+ FT_CALLBACK_DEF( FT_Error )
+ tt_cmap13_validate( FT_Byte* table,
+ FT_Validator valid )
+ {
+ FT_Byte* p;
+ FT_ULong length;
+ FT_ULong num_groups;
+
+
+ if ( table + 16 > valid->limit )
+ FT_INVALID_TOO_SHORT;
+
+ p = table + 4;
+ length = TT_NEXT_ULONG( p );
+
+ p = table + 12;
+ num_groups = TT_NEXT_ULONG( p );
+
+ if ( length > (FT_ULong)( valid->limit - table ) ||
+ length < 16 + 12 * num_groups )
+ FT_INVALID_TOO_SHORT;
+
+ /* check groups, they must be in increasing order */
+ {
+ FT_ULong n, start, end, glyph_id, last = 0;
+
+
+ for ( n = 0; n < num_groups; n++ )
+ {
+ start = TT_NEXT_ULONG( p );
+ end = TT_NEXT_ULONG( p );
+ glyph_id = TT_NEXT_ULONG( p );
+
+ if ( start > end )
+ FT_INVALID_DATA;
+
+ if ( n > 0 && start <= last )
+ FT_INVALID_DATA;
+
+ if ( valid->level >= FT_VALIDATE_TIGHT )
+ {
+ if ( glyph_id >= TT_VALID_GLYPH_COUNT( valid ) )
+ FT_INVALID_GLYPH_ID;
+ }
+
+ last = end;
+ }
+ }
+
+ return SFNT_Err_Ok;
+ }
+
+
+ /* search the index of the charcode next to cmap->cur_charcode */
+ /* cmap->cur_group should be set up properly by caller */
+ /* */
+ static void
+ tt_cmap13_next( TT_CMap13 cmap )
+ {
+ FT_Byte* p;
+ FT_ULong start, end, glyph_id, char_code;
+ FT_ULong n;
+ FT_UInt gindex;
+
+
+ if ( cmap->cur_charcode >= 0xFFFFFFFFUL )
+ goto Fail;
+
+ char_code = cmap->cur_charcode + 1;
+
+ n = cmap->cur_group;
+
+ for ( n = cmap->cur_group; n < cmap->num_groups; n++ )
+ {
+ p = cmap->cmap.data + 16 + 12 * n;
+ start = TT_NEXT_ULONG( p );
+ end = TT_NEXT_ULONG( p );
+ glyph_id = TT_PEEK_ULONG( p );
+
+ if ( char_code < start )
+ char_code = start;
+
+ if ( char_code <= end )
+ {
+ gindex = (FT_UInt)glyph_id;
+
+ if ( gindex )
+ {
+ cmap->cur_charcode = char_code;;
+ cmap->cur_gindex = gindex;
+ cmap->cur_group = n;
+
+ return;
+ }
+ }
+ }
+
+ Fail:
+ cmap->valid = 0;
+ }
+
+
+ static FT_UInt
+ tt_cmap13_char_map_binary( TT_CMap cmap,
+ FT_UInt32* pchar_code,
+ FT_Bool next )
+ {
+ FT_UInt gindex = 0;
+ FT_Byte* p = cmap->data + 12;
+ FT_UInt32 num_groups = TT_PEEK_ULONG( p );
+ FT_UInt32 char_code = *pchar_code;
+ FT_UInt32 start, end;
+ FT_UInt32 max, min, mid;
+
+
+ if ( !num_groups )
+ return 0;
+
+ /* make compiler happy */
+ mid = num_groups;
+ end = 0xFFFFFFFFUL;
+
+ if ( next )
+ char_code++;
+
+ min = 0;
+ max = num_groups;
+
+ /* binary search */
+ while ( min < max )
+ {
+ mid = ( min + max ) >> 1;
+ p = cmap->data + 16 + 12 * mid;
+
+ start = TT_NEXT_ULONG( p );
+ end = TT_NEXT_ULONG( p );
+
+ if ( char_code < start )
+ max = mid;
+ else if ( char_code > end )
+ min = mid + 1;
+ else
+ {
+ gindex = (FT_UInt)TT_PEEK_ULONG( p );
+
+ break;
+ }
+ }
+
+ if ( next )
+ {
+ TT_CMap13 cmap13 = (TT_CMap13)cmap;
+
+
+ /* if `char_code' is not in any group, then `mid' is */
+ /* the group nearest to `char_code' */
+ /* */
+
+ if ( char_code > end )
+ {
+ mid++;
+ if ( mid == num_groups )
+ return 0;
+ }
+
+ cmap13->valid = 1;
+ cmap13->cur_charcode = char_code;
+ cmap13->cur_group = mid;
+
+ if ( !gindex )
+ {
+ tt_cmap13_next( cmap13 );
+
+ if ( cmap13->valid )
+ gindex = cmap13->cur_gindex;
+ }
+ else
+ cmap13->cur_gindex = gindex;
+
+ if ( gindex )
+ *pchar_code = cmap13->cur_charcode;
+ }
+
+ return gindex;
+ }
+
+
+ FT_CALLBACK_DEF( FT_UInt )
+ tt_cmap13_char_index( TT_CMap cmap,
+ FT_UInt32 char_code )
+ {
+ return tt_cmap13_char_map_binary( cmap, &char_code, 0 );
+ }
+
+
+ FT_CALLBACK_DEF( FT_UInt32 )
+ tt_cmap13_char_next( TT_CMap cmap,
+ FT_UInt32 *pchar_code )
+ {
+ TT_CMap13 cmap13 = (TT_CMap13)cmap;
+ FT_UInt gindex;
+
+
+ if ( cmap13->cur_charcode >= 0xFFFFFFFFUL )
+ return 0;
+
+ /* no need to search */
+ if ( cmap13->valid && cmap13->cur_charcode == *pchar_code )
+ {
+ tt_cmap13_next( cmap13 );
+ if ( cmap13->valid )
+ {
+ gindex = cmap13->cur_gindex;
+ if ( gindex )
+ *pchar_code = cmap13->cur_charcode;
+ }
+ else
+ gindex = 0;
+ }
+ else
+ gindex = tt_cmap13_char_map_binary( cmap, pchar_code, 1 );
+
+ return gindex;
+ }
+
+
+ FT_CALLBACK_DEF( FT_Error )
+ tt_cmap13_get_info( TT_CMap cmap,
+ TT_CMapInfo *cmap_info )
+ {
+ FT_Byte* p = cmap->data + 8;
+
+
+ cmap_info->format = 13;
+ cmap_info->language = (FT_ULong)TT_PEEK_ULONG( p );
+
+ return SFNT_Err_Ok;
+ }
+
+
+ FT_DEFINE_TT_CMAP(tt_cmap13_class_rec,
+ sizeof ( TT_CMap13Rec ),
+
+ (FT_CMap_InitFunc) tt_cmap13_init,
+ (FT_CMap_DoneFunc) NULL,
+ (FT_CMap_CharIndexFunc)tt_cmap13_char_index,
+ (FT_CMap_CharNextFunc) tt_cmap13_char_next,
+
+ NULL, NULL, NULL, NULL, NULL
+ ,
+ 13,
+ (TT_CMap_ValidateFunc) tt_cmap13_validate,
+ (TT_CMap_Info_GetFunc) tt_cmap13_get_info
+ )
+
+#endif /* TT_CONFIG_CMAP_FORMAT_13 */
+
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /***** *****/
/***** FORMAT 14 *****/
/***** *****/
/*************************************************************************/
@@ -2363,7 +2664,7 @@
* cmap 14 query functions. The data is overwritten
* on each call to these functions.
*/
- FT_UInt max_results;
+ FT_UInt32 max_results;
FT_UInt32* results;
FT_Memory memory;
@@ -2384,10 +2685,10 @@
static FT_Error
tt_cmap14_ensure( TT_CMap14 cmap,
- FT_UInt num_results,
+ FT_UInt32 num_results,
FT_Memory memory )
{
- FT_UInt old_max = cmap->max_results;
+ FT_UInt32 old_max = cmap->max_results;
FT_Error error = 0;
@@ -2429,7 +2730,8 @@
FT_ULong num_selectors = TT_NEXT_ULONG( p );
- if ( table + length > valid->limit || length < 10 + 11 * num_selectors )
+ if ( length > (FT_ULong)( valid->limit - table ) ||
+ length < 10 + 11 * num_selectors )
FT_INVALID_TOO_SHORT;
/* check selectors, they must be in increasing order */
@@ -2491,7 +2793,7 @@
FT_ULong i, lastUni = 0;
- if ( ndp + numMappings * 4 > valid->limit )
+ if ( numMappings * 4 > (FT_ULong)( valid->limit - ndp ) )
FT_INVALID_TOO_SHORT;
for ( i = 0; i < numMappings; ++i )
@@ -2532,7 +2834,7 @@
}
- FT_CALLBACK_DEF( FT_UInt )
+ FT_CALLBACK_DEF( FT_UInt32 )
tt_cmap14_char_next( TT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -2550,7 +2852,7 @@
{
FT_UNUSED( cmap );
- cmap_info->format = 14;
+ cmap_info->format = 14;
/* subtable 14 does not define a language field */
cmap_info->language = 0xFFFFFFFFUL;
@@ -2610,7 +2912,7 @@
{
FT_UInt32 mid = ( min + max ) >> 1;
FT_Byte* p = base + 5 * mid;
- FT_UInt32 uni = TT_NEXT_UINT24( p );
+ FT_UInt32 uni = (FT_UInt32)TT_NEXT_UINT24( p );
if ( char_code < uni )
@@ -2659,10 +2961,10 @@
FT_CALLBACK_DEF( FT_UInt )
- tt_cmap14_char_var_index( TT_CMap cmap,
- TT_CMap ucmap,
- FT_ULong charcode,
- FT_ULong variantSelector)
+ tt_cmap14_char_var_index( TT_CMap cmap,
+ TT_CMap ucmap,
+ FT_UInt32 charcode,
+ FT_UInt32 variantSelector)
{
FT_Byte* p = tt_cmap14_find_variant( cmap->data + 6, variantSelector );
FT_ULong defOff;
@@ -2692,9 +2994,9 @@
FT_CALLBACK_DEF( FT_Int )
- tt_cmap14_char_var_isdefault( TT_CMap cmap,
- FT_ULong charcode,
- FT_ULong variantSelector )
+ tt_cmap14_char_var_isdefault( TT_CMap cmap,
+ FT_UInt32 charcode,
+ FT_UInt32 variantSelector )
{
FT_Byte* p = tt_cmap14_find_variant( cmap->data + 6, variantSelector );
FT_ULong defOff;
@@ -2725,10 +3027,10 @@
FT_Memory memory )
{
TT_CMap14 cmap14 = (TT_CMap14)cmap;
- FT_UInt count = cmap14->num_selectors;
+ FT_UInt32 count = cmap14->num_selectors;
FT_Byte* p = cmap->data + 10;
FT_UInt32* result;
- FT_UInt i;
+ FT_UInt32 i;
if ( tt_cmap14_ensure( cmap14, ( count + 1 ), memory ) )
@@ -2737,7 +3039,7 @@
result = cmap14->results;
for ( i = 0; i < count; ++i )
{
- result[i] = TT_NEXT_UINT24( p );
+ result[i] = (FT_UInt32)TT_NEXT_UINT24( p );
p += 8;
}
result[i] = 0;
@@ -2749,10 +3051,10 @@
FT_CALLBACK_DEF( FT_UInt32 * )
tt_cmap14_char_variants( TT_CMap cmap,
FT_Memory memory,
- FT_ULong charCode )
+ FT_UInt32 charCode )
{
TT_CMap14 cmap14 = (TT_CMap14) cmap;
- FT_UInt count = cmap14->num_selectors;
+ FT_UInt32 count = cmap14->num_selectors;
FT_Byte* p = cmap->data + 10;
FT_UInt32* q;
@@ -2787,7 +3089,7 @@
static FT_UInt
tt_cmap14_def_char_count( FT_Byte *p )
{
- FT_UInt32 numRanges = TT_NEXT_ULONG( p );
+ FT_UInt32 numRanges = (FT_UInt32)TT_NEXT_ULONG( p );
FT_UInt tot = 0;
@@ -2814,14 +3116,14 @@
cnt = tt_cmap14_def_char_count( p );
- numRanges = TT_NEXT_ULONG( p );
+ numRanges = (FT_UInt32)TT_NEXT_ULONG( p );
if ( tt_cmap14_ensure( cmap14, ( cnt + 1 ), memory ) )
return NULL;
for ( q = cmap14->results; numRanges > 0; --numRanges )
{
- FT_UInt uni = TT_NEXT_UINT24( p );
+ FT_UInt32 uni = (FT_UInt32)TT_NEXT_UINT24( p );
cnt = FT_NEXT_BYTE( p ) + 1;
@@ -2849,7 +3151,7 @@
FT_UInt32 *ret;
- numMappings = TT_NEXT_ULONG( p );
+ numMappings = (FT_UInt32)TT_NEXT_ULONG( p );
if ( tt_cmap14_ensure( cmap14, ( numMappings + 1 ), memory ) )
return NULL;
@@ -2857,7 +3159,7 @@
ret = cmap14->results;
for ( i = 0; i < numMappings; ++i )
{
- ret[i] = TT_NEXT_UINT24( p );
+ ret[i] = (FT_UInt32)TT_NEXT_UINT24( p );
p += 2;
}
ret[i] = 0;
@@ -2869,7 +3171,7 @@
FT_CALLBACK_DEF( FT_UInt32 * )
tt_cmap14_variant_chars( TT_CMap cmap,
FT_Memory memory,
- FT_ULong variantSelector )
+ FT_UInt32 variantSelector )
{
FT_Byte *p = tt_cmap14_find_variant( cmap->data + 6,
variantSelector );
@@ -2911,9 +3213,9 @@
p = cmap->data + nondefOff;
dp = cmap->data + defOff;
- numMappings = TT_NEXT_ULONG( p );
+ numMappings = (FT_UInt32)TT_NEXT_ULONG( p );
dcnt = tt_cmap14_def_char_count( dp );
- numRanges = TT_NEXT_ULONG( dp );
+ numRanges = (FT_UInt32)TT_NEXT_ULONG( dp );
if ( numMappings == 0 )
return tt_cmap14_get_def_chars( cmap, cmap->data + defOff,
@@ -2926,10 +3228,10 @@
return NULL;
ret = cmap14->results;
- duni = TT_NEXT_UINT24( dp );
+ duni = (FT_UInt32)TT_NEXT_UINT24( dp );
dcnt = FT_NEXT_BYTE( dp );
di = 1;
- nuni = TT_NEXT_UINT24( p );
+ nuni = (FT_UInt32)TT_NEXT_UINT24( p );
p += 2;
ni = 1;
i = 0;
@@ -2946,7 +3248,7 @@
if ( di > numRanges )
break;
- duni = TT_NEXT_UINT24( dp );
+ duni = (FT_UInt32)TT_NEXT_UINT24( dp );
dcnt = FT_NEXT_BYTE( dp );
}
else
@@ -2959,7 +3261,7 @@
if ( ni > numMappings )
break;
- nuni = TT_NEXT_UINT24( p );
+ nuni = (FT_UInt32)TT_NEXT_UINT24( p );
p += 2;
}
}
@@ -2972,7 +3274,7 @@
ret[i++] = nuni;
while ( ni < numMappings )
{
- ret[i++] = TT_NEXT_UINT24( p );
+ ret[i++] = (FT_UInt32)TT_NEXT_UINT24( p );
p += 2;
++ni;
}
@@ -2987,7 +3289,7 @@
while ( di < numRanges )
{
- duni = TT_NEXT_UINT24( dp );
+ duni = (FT_UInt32)TT_NEXT_UINT24( dp );
dcnt = FT_NEXT_BYTE( dp );
for ( k = 0; k <= dcnt; ++k )
@@ -3003,10 +3305,7 @@
}
- FT_CALLBACK_TABLE_DEF
- const TT_CMap_ClassRec tt_cmap14_class_rec =
- {
- {
+ FT_DEFINE_TT_CMAP(tt_cmap14_class_rec,
sizeof ( TT_CMap14Rec ),
(FT_CMap_InitFunc) tt_cmap14_init,
@@ -3020,51 +3319,66 @@
(FT_CMap_VariantListFunc) tt_cmap14_variants,
(FT_CMap_CharVariantListFunc) tt_cmap14_char_variants,
(FT_CMap_VariantCharListFunc) tt_cmap14_variant_chars
- },
+ ,
14,
(TT_CMap_ValidateFunc)tt_cmap14_validate,
(TT_CMap_Info_GetFunc)tt_cmap14_get_info
- };
+ )
#endif /* TT_CONFIG_CMAP_FORMAT_14 */
+#ifndef FT_CONFIG_OPTION_PIC
+
static const TT_CMap_Class tt_cmap_classes[] =
{
-#ifdef TT_CONFIG_CMAP_FORMAT_0
- &tt_cmap0_class_rec,
-#endif
+#define TTCMAPCITEM(a) &a,
+#include "ttcmapc.h"
+ NULL,
+ };
-#ifdef TT_CONFIG_CMAP_FORMAT_2
- &tt_cmap2_class_rec,
-#endif
+#else /*FT_CONFIG_OPTION_PIC*/
-#ifdef TT_CONFIG_CMAP_FORMAT_4
- &tt_cmap4_class_rec,
-#endif
+ void FT_Destroy_Class_tt_cmap_classes(FT_Library library, TT_CMap_Class* clazz)
+ {
+ FT_Memory memory = library->memory;
+ if ( clazz )
+ FT_FREE( clazz );
+ }
-#ifdef TT_CONFIG_CMAP_FORMAT_6
- &tt_cmap6_class_rec,
-#endif
+ FT_Error FT_Create_Class_tt_cmap_classes(FT_Library library, TT_CMap_Class** output_class)
+ {
+ TT_CMap_Class* clazz;
+ TT_CMap_ClassRec* recs;
+ FT_Error error;
+ FT_Memory memory = library->memory;
+ int i = 0;
-#ifdef TT_CONFIG_CMAP_FORMAT_8
- &tt_cmap8_class_rec,
-#endif
+#define TTCMAPCITEM(a) i++;
+#include "ttcmapc.h"
-#ifdef TT_CONFIG_CMAP_FORMAT_10
- &tt_cmap10_class_rec,
-#endif
+ /* allocate enough space for both the pointers +terminator and the class instances */
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*(i+1)+sizeof(TT_CMap_ClassRec)*i ) )
+ return error;
-#ifdef TT_CONFIG_CMAP_FORMAT_12
- &tt_cmap12_class_rec,
-#endif
+ /* the location of the class instances follows the array of pointers */
+ recs = (TT_CMap_ClassRec*) (((char*)clazz)+(sizeof(*clazz)*(i+1)));
+ i=0;
-#ifdef TT_CONFIG_CMAP_FORMAT_14
- &tt_cmap14_class_rec,
-#endif
+#undef TTCMAPCITEM
+#define TTCMAPCITEM(a) \
+ FT_Init_Class_##a(&recs[i]); \
+ clazz[i] = &recs[i]; \
+ i++;
+#include "ttcmapc.h"
- NULL,
- };
+ clazz[i] = NULL;
+
+ *output_class = clazz;
+ return FT_Err_Ok;
+ }
+
+#endif /*FT_CONFIG_OPTION_PIC*/
/* parse the `cmap' table and build the corresponding TT_CMap objects */
@@ -3077,6 +3391,8 @@
FT_Byte* limit = table + face->cmap_size;
FT_UInt volatile num_cmaps;
FT_Byte* volatile p = table;
+ FT_Library library = FT_FACE_LIBRARY(face);
+ FT_UNUSED(library);
if ( p + 4 > limit )
@@ -3086,7 +3402,8 @@
if ( TT_NEXT_USHORT( p ) != 0 )
{
p -= 2;
- FT_ERROR(( "tt_face_build_cmaps: unsupported `cmap' table format = %d\n",
+ FT_ERROR(( "tt_face_build_cmaps:"
+ " unsupported `cmap' table format = %d\n",
TT_PEEK_USHORT( p ) ));
return SFNT_Err_Invalid_Table;
}
@@ -3109,7 +3426,7 @@
{
FT_Byte* volatile cmap = table + offset;
volatile FT_UInt format = TT_PEEK_USHORT( cmap );
- const TT_CMap_Class* volatile pclazz = tt_cmap_classes;
+ const TT_CMap_Class* volatile pclazz = FT_TT_CMAP_CLASSES_GET;
TT_CMap_Class volatile clazz;
@@ -3153,8 +3470,8 @@
}
else
{
- FT_ERROR(( "tt_face_build_cmaps:" ));
- FT_ERROR(( " broken cmap sub-table ignored!\n" ));
+ FT_TRACE0(( "tt_face_build_cmaps:"
+ " broken cmap sub-table ignored\n" ));
}
break;
}
@@ -3162,8 +3479,8 @@
if ( *pclazz == NULL )
{
- FT_ERROR(( "tt_face_build_cmaps:" ));
- FT_ERROR(( " unsupported cmap sub-table ignored!\n" ));
+ FT_TRACE0(( "tt_face_build_cmaps:"
+ " unsupported cmap sub-table ignored\n" ));
}
}
}
diff --git a/src/3rdparty/freetype/src/sfnt/ttcmap.h b/src/3rdparty/freetype/src/sfnt/ttcmap.h
index a10a3e2502..15a4a21e50 100644
--- a/src/3rdparty/freetype/src/sfnt/ttcmap.h
+++ b/src/3rdparty/freetype/src/sfnt/ttcmap.h
@@ -55,6 +55,46 @@ FT_BEGIN_HEADER
} TT_CMap_ClassRec;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_TT_CMAP(class_, size_, init_, done_, char_index_, \
+ char_next_, char_var_index_, char_var_default_, variant_list_, \
+ charvariant_list_,variantchar_list_, \
+ format_, validate_, get_cmap_info_) \
+ FT_CALLBACK_TABLE_DEF \
+ const TT_CMap_ClassRec class_ = \
+ { \
+ {size_, init_, done_, char_index_, \
+ char_next_, char_var_index_, char_var_default_, variant_list_, \
+ charvariant_list_, variantchar_list_}, \
+ format_, validate_, get_cmap_info_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_TT_CMAP(class_, size_, init_, done_, char_index_, \
+ char_next_, char_var_index_, char_var_default_, variant_list_, \
+ charvariant_list_,variantchar_list_, \
+ format_, validate_, get_cmap_info_) \
+ void \
+ FT_Init_Class_##class_( TT_CMap_ClassRec* clazz ) \
+ { \
+ clazz->clazz.size = size_; \
+ clazz->clazz.init = init_; \
+ clazz->clazz.done = done_; \
+ clazz->clazz.char_index = char_index_; \
+ clazz->clazz.char_next = char_next_; \
+ clazz->clazz.char_var_index = char_var_index_; \
+ clazz->clazz.char_var_default = char_var_default_; \
+ clazz->clazz.variant_list = variant_list_; \
+ clazz->clazz.charvariant_list = charvariant_list_; \
+ clazz->clazz.variantchar_list = variantchar_list_; \
+ clazz->format = format_; \
+ clazz->validate = validate_; \
+ clazz->get_cmap_info = get_cmap_info_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
typedef struct TT_ValidatorRec_
{
diff --git a/src/3rdparty/freetype/src/sfnt/ttcmapc.h b/src/3rdparty/freetype/src/sfnt/ttcmapc.h
new file mode 100644
index 0000000000..4c9c6a56f7
--- /dev/null
+++ b/src/3rdparty/freetype/src/sfnt/ttcmapc.h
@@ -0,0 +1,55 @@
+/***************************************************************************/
+/* */
+/* ttcmapc.h */
+/* */
+/* TT CMAP classes definitions (specification only). */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifdef TT_CONFIG_CMAP_FORMAT_0
+ TTCMAPCITEM(tt_cmap0_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_2
+ TTCMAPCITEM(tt_cmap2_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_4
+ TTCMAPCITEM(tt_cmap4_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_6
+ TTCMAPCITEM(tt_cmap6_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_8
+ TTCMAPCITEM(tt_cmap8_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_10
+ TTCMAPCITEM(tt_cmap10_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_12
+ TTCMAPCITEM(tt_cmap12_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_13
+ TTCMAPCITEM(tt_cmap13_class_rec)
+#endif
+
+#ifdef TT_CONFIG_CMAP_FORMAT_14
+ TTCMAPCITEM(tt_cmap14_class_rec)
+#endif
+
+ /* END */
diff --git a/src/3rdparty/freetype/src/sfnt/ttkern.c b/src/3rdparty/freetype/src/sfnt/ttkern.c
index 67d5115e87..c1540802b8 100644
--- a/src/3rdparty/freetype/src/sfnt/ttkern.c
+++ b/src/3rdparty/freetype/src/sfnt/ttkern.c
@@ -22,7 +22,6 @@
#include FT_INTERNAL_STREAM_H
#include FT_TRUETYPE_TAGS_H
#include "ttkern.h"
-#include "ttload.h"
#include "sferrors.h"
@@ -60,14 +59,16 @@
if ( table_size < 4 ) /* the case of a malformed table */
{
- FT_ERROR(( "kerning table is too small - ignored\n" ));
+ FT_ERROR(( "tt_face_load_kern:"
+ " kerning table is too small - ignored\n" ));
error = SFNT_Err_Table_Missing;
goto Exit;
}
if ( FT_FRAME_EXTRACT( table_size, face->kern_table ) )
{
- FT_ERROR(( "could not extract kerning table\n" ));
+ FT_ERROR(( "tt_face_load_kern:"
+ " could not extract kerning table\n" ));
goto Exit;
}
@@ -86,7 +87,7 @@
{
FT_UInt num_pairs, length, coverage;
FT_Byte* p_next;
- FT_UInt32 mask = 1UL << nn;
+ FT_UInt32 mask = (FT_UInt32)1UL << nn;
if ( p + 6 > p_limit )
@@ -125,8 +126,8 @@
*/
if ( num_pairs > 0 )
{
- FT_UInt count;
- FT_UInt old_pair;
+ FT_ULong count;
+ FT_ULong old_pair;
old_pair = FT_NEXT_ULONG( p );
diff --git a/src/3rdparty/freetype/src/sfnt/ttload.c b/src/3rdparty/freetype/src/sfnt/ttload.c
index c45a1ed556..3ad33bd6d8 100644
--- a/src/3rdparty/freetype/src/sfnt/ttload.c
+++ b/src/3rdparty/freetype/src/sfnt/ttload.c
@@ -5,7 +5,7 @@
/* Load the basic TrueType tables, i.e., tables that can be either in */
/* TTF or OTF fonts (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -91,9 +91,9 @@
#ifdef FT_DEBUG_LEVEL_TRACE
if ( zero_length )
- FT_TRACE4(( "ignoring empty table!\n" ));
+ FT_TRACE4(( "ignoring empty table\n" ));
else
- FT_TRACE4(( "could not find table!\n" ));
+ FT_TRACE4(( "could not find table\n" ));
#endif
return NULL;
@@ -168,10 +168,10 @@
check_table_dir( SFNT_Header sfnt,
FT_Stream stream )
{
- FT_Error error;
- FT_UInt nn, valid_entries = 0;
- FT_UInt has_head = 0, has_sing = 0, has_meta = 0;
- FT_ULong offset = sfnt->offset + 12;
+ FT_Error error;
+ FT_UShort nn, valid_entries = 0;
+ FT_UInt has_head = 0, has_sing = 0, has_meta = 0;
+ FT_ULong offset = sfnt->offset + 12;
static const FT_Frame_Field table_dir_entry_fields[] =
{
@@ -364,7 +364,8 @@
error = check_table_dir( &sfnt, stream );
if ( error )
{
- FT_TRACE2(( "tt_face_load_font_dir: invalid table directory for TrueType!\n" ));
+ FT_TRACE2(( "tt_face_load_font_dir:"
+ " invalid table directory for TrueType\n" ));
goto Exit;
}
@@ -685,8 +686,10 @@
/* we add 4 phantom points later */
if ( maxProfile->maxTwilightPoints > ( 0xFFFFU - 4 ) )
{
- FT_ERROR(( "Too much twilight points in `maxp' table;\n" ));
- FT_ERROR(( " some glyphs might be rendered incorrectly.\n" ));
+ FT_TRACE0(( "tt_face_load_maxp:"
+ " too much twilight points in `maxp' table;\n"
+ " "
+ " some glyphs might be rendered incorrectly\n" ));
maxProfile->maxTwilightPoints = 0xFFFFU - 4;
}
@@ -779,7 +782,7 @@
if ( storage_start > storage_limit )
{
- FT_ERROR(( "invalid `name' table\n" ));
+ FT_ERROR(( "tt_face_load_name: invalid `name' table\n" ));
error = SFNT_Err_Name_Table_Missing;
goto Exit;
}
diff --git a/src/3rdparty/freetype/src/sfnt/ttmtx.c b/src/3rdparty/freetype/src/sfnt/ttmtx.c
index 2a7d22c072..53e6ac7881 100644
--- a/src/3rdparty/freetype/src/sfnt/ttmtx.c
+++ b/src/3rdparty/freetype/src/sfnt/ttmtx.c
@@ -4,7 +4,7 @@
/* */
/* Load the metrics tables common to TTF and OTF fonts (body). */
/* */
-/* Copyright 2006, 2007, 2008 by */
+/* Copyright 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -161,7 +161,9 @@
if ( num_shorts < 0 )
{
- FT_ERROR(( "%cmtx has more metrics than glyphs.\n" ));
+ FT_TRACE0(( "tt_face_load_hmtx:"
+ " %cmtx has more metrics than glyphs.\n",
+ vertical ? "v" : "h" ));
/* Adobe simply ignores this problem. So we shall do the same. */
#if 0
diff --git a/src/3rdparty/freetype/src/sfnt/ttpost.c b/src/3rdparty/freetype/src/sfnt/ttpost.c
index ce628e210d..aa0bf1ec41 100644
--- a/src/3rdparty/freetype/src/sfnt/ttpost.c
+++ b/src/3rdparty/freetype/src/sfnt/ttpost.c
@@ -5,7 +5,7 @@
/* Postcript name table processing for TrueType and OpenType fonts */
/* (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -29,7 +29,6 @@
#include FT_INTERNAL_STREAM_H
#include FT_TRUETYPE_TAGS_H
#include "ttpost.h"
-#include "ttload.h"
#include "sferrors.h"
diff --git a/src/3rdparty/freetype/src/sfnt/ttsbit.c b/src/3rdparty/freetype/src/sfnt/ttsbit.c
index eadaade71e..833bb2add2 100644
--- a/src/3rdparty/freetype/src/sfnt/ttsbit.c
+++ b/src/3rdparty/freetype/src/sfnt/ttsbit.c
@@ -494,7 +494,7 @@
if ( version != 0x00020000L ||
num_strikes >= 0x10000L )
{
- FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version!\n" ));
+ FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version\n" ));
error = SFNT_Err_Invalid_File_Format;
goto Exit;
diff --git a/src/3rdparty/freetype/src/sfnt/ttsbit0.c b/src/3rdparty/freetype/src/sfnt/ttsbit0.c
index 3ebcbbd740..38bcf210ea 100644
--- a/src/3rdparty/freetype/src/sfnt/ttsbit0.c
+++ b/src/3rdparty/freetype/src/sfnt/ttsbit0.c
@@ -62,7 +62,7 @@
if ( table_size < 8 )
{
- FT_ERROR(( "tt_face_load_sbit_strikes: table too short!\n" ));
+ FT_ERROR(( "tt_face_load_sbit_strikes: table too short\n" ));
error = SFNT_Err_Invalid_File_Format;
goto Exit;
}
@@ -80,7 +80,7 @@
if ( version != 0x00020000UL || num_strikes >= 0x10000UL )
{
- FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version!\n" ));
+ FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version\n" ));
error = SFNT_Err_Invalid_File_Format;
goto Fail;
}
@@ -469,6 +469,41 @@
}
+ /*
+ * Load a bit-aligned bitmap (with pointer `p') into a line-aligned bitmap
+ * (with pointer `write'). In the example below, the width is 3 pixel,
+ * and `x_pos' is 1 pixel.
+ *
+ * p p+1
+ * | | |
+ * | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 |...
+ * | | |
+ * +-------+ +-------+ +-------+ ...
+ * . . .
+ * . . .
+ * v . .
+ * +-------+ . .
+ * | | .
+ * | 7 6 5 4 3 2 1 0 | .
+ * | | .
+ * write . .
+ * . .
+ * v .
+ * +-------+ .
+ * | |
+ * | 7 6 5 4 3 2 1 0 |
+ * | |
+ * write+1 .
+ * .
+ * v
+ * +-------+
+ * | |
+ * | 7 6 5 4 3 2 1 0 |
+ * | |
+ * write+2
+ *
+ */
+
static FT_Error
tt_sbit_decoder_load_bit_aligned( TT_SBitDecoder decoder,
FT_Byte* p,
@@ -514,6 +549,8 @@
}
/* now do the blit */
+
+ /* adjust `line' to point to the first byte of the bitmap */
line += y_pos * pitch + ( x_pos >> 3 );
x_pos &= 7;
@@ -524,21 +561,23 @@
for ( h = height; h > 0; h--, line += pitch )
{
FT_Byte* write = line;
- FT_Int w = width;
+ FT_Int w = width;
+ /* handle initial byte (in target bitmap) specially if necessary */
if ( x_pos )
{
w = ( width < 8 - x_pos ) ? width : 8 - x_pos;
if ( h == height )
{
- rval |= *p++;
- nbits += x_pos;
+ rval = *p++;
+ nbits = x_pos;
}
else if ( nbits < w )
{
- rval |= *p++;
+ if ( p < limit )
+ rval |= *p++;
nbits += 8 - w;
}
else
@@ -554,6 +593,7 @@
w = width - w;
}
+ /* handle medial bytes */
for ( ; w >= 8; w -= 8 )
{
rval |= *p++;
@@ -562,11 +602,13 @@
rval <<= 8;
}
+ /* handle final byte if necessary */
if ( w > 0 )
{
if ( nbits < w )
{
- rval |= *p++;
+ if ( p < limit )
+ rval |= *p++;
*write |= ( ( rval >> nbits ) & 0xFF ) & ( 0xFF00U >> w );
nbits += 8 - w;
diff --git a/src/3rdparty/freetype/src/smooth/Jamfile b/src/3rdparty/freetype/src/smooth/Jamfile
index 8a792df056..a8496aa2c2 100644
--- a/src/3rdparty/freetype/src/smooth/Jamfile
+++ b/src/3rdparty/freetype/src/smooth/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) smooth ;
if $(FT2_MULTI)
{
- _sources = ftgrays ftsmooth ;
+ _sources = ftgrays ftsmooth ftspic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/smooth/ftgrays.c b/src/3rdparty/freetype/src/smooth/ftgrays.c
index 10fa2ae727..846e454e66 100644
--- a/src/3rdparty/freetype/src/smooth/ftgrays.c
+++ b/src/3rdparty/freetype/src/smooth/ftgrays.c
@@ -4,7 +4,7 @@
/* */
/* A new `perfect' anti-aliasing renderer (body). */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2005, 2006, 2007, 2008 by */
+/* Copyright 2000-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -170,6 +170,34 @@
#endif /* !FT_DEBUG_LEVEL_TRACE */
+#define FT_DEFINE_OUTLINE_FUNCS( class_, \
+ move_to_, line_to_, \
+ conic_to_, cubic_to_, \
+ shift_, delta_ ) \
+ static const FT_Outline_Funcs class_ = \
+ { \
+ move_to_, \
+ line_to_, \
+ conic_to_, \
+ cubic_to_, \
+ shift_, \
+ delta_ \
+ };
+
+#define FT_DEFINE_RASTER_FUNCS( class_, glyph_format_, \
+ raster_new_, raster_reset_, \
+ raster_set_mode_, raster_render_, \
+ raster_done_ ) \
+ const FT_Raster_Funcs class_ = \
+ { \
+ glyph_format_, \
+ raster_new_, \
+ raster_reset_, \
+ raster_set_mode_, \
+ raster_render_, \
+ raster_done_ \
+ };
+
#else /* !_STANDALONE_ */
@@ -181,6 +209,8 @@
#include "ftsmerrs.h"
+#include "ftspic.h"
+
#define ErrRaster_Invalid_Mode Smooth_Err_Cannot_Render_Glyph
#define ErrRaster_Invalid_Outline Smooth_Err_Invalid_Outline
#define ErrRaster_Memory_Overflow Smooth_Err_Out_Of_Memory
@@ -188,7 +218,6 @@
#endif /* !_STANDALONE_ */
-
#ifndef FT_MEM_SET
#define FT_MEM_SET( d, s, c ) ft_memset( d, s, c )
#endif
@@ -201,27 +230,19 @@
#ifndef FT_STATIC_RASTER
-
#define RAS_ARG PWorker worker
#define RAS_ARG_ PWorker worker,
#define RAS_VAR worker
#define RAS_VAR_ worker,
-#define ras (*worker)
-
-
#else /* FT_STATIC_RASTER */
-
#define RAS_ARG /* empty */
#define RAS_ARG_ /* empty */
#define RAS_VAR /* empty */
#define RAS_VAR_ /* empty */
- static TWorker ras;
-
-
#endif /* FT_STATIC_RASTER */
@@ -254,7 +275,7 @@
/* need to define them to "float" or "double" when experimenting with */
/* new algorithms */
- typedef int TCoord; /* integer scanline/pixel coordinate */
+ typedef long TCoord; /* integer scanline/pixel coordinate */
typedef long TPos; /* sub-pixel coordinate */
/* determine the type used to store cell areas. This normally takes at */
@@ -285,8 +306,8 @@
typedef struct TCell_
{
- int x;
- int cover;
+ TPos x; /* same with TWorker.ex */
+ TCoord cover; /* same with TWorker.cover */
TArea area;
PCell next;
@@ -301,12 +322,12 @@
TPos count_ex, count_ey;
TArea area;
- int cover;
+ TCoord cover;
int invalid;
PCell cells;
- int max_cells;
- int num_cells;
+ FT_PtrDist max_cells;
+ FT_PtrDist num_cells;
TCoord cx, cy;
TPos x, y;
@@ -338,11 +359,18 @@
long buffer_size;
PCell* ycells;
- int ycount;
+ TPos ycount;
} TWorker, *PWorker;
+#ifndef FT_STATIC_RASTER
+#define ras (*worker)
+#else
+ static TWorker ras;
+#endif
+
+
typedef struct TRaster_
{
void* buffer;
@@ -428,7 +456,7 @@
gray_find_cell( RAS_ARG )
{
PCell *pcell, cell;
- int x = ras.ex;
+ TPos x = ras.ex;
if ( x > ras.count_ex )
@@ -560,9 +588,9 @@
TPos x2,
TCoord y2 )
{
- TCoord ex1, ex2, fx1, fx2, delta;
+ TCoord ex1, ex2, fx1, fx2, delta, mod, lift, rem;
long p, first, dx;
- int incr, lift, mod, rem;
+ int incr;
dx = x2 - x1;
@@ -584,7 +612,7 @@
if ( ex1 == ex2 )
{
delta = y2 - y1;
- ras.area += (TArea)( fx1 + fx2 ) * delta;
+ ras.area += (TArea)(( fx1 + fx2 ) * delta);
ras.cover += delta;
return;
}
@@ -612,7 +640,7 @@
mod += (TCoord)dx;
}
- ras.area += (TArea)( fx1 + first ) * delta;
+ ras.area += (TArea)(( fx1 + first ) * delta);
ras.cover += delta;
ex1 += incr;
@@ -642,7 +670,7 @@
delta++;
}
- ras.area += (TArea)ONE_PIXEL * delta;
+ ras.area += (TArea)(ONE_PIXEL * delta);
ras.cover += delta;
y1 += delta;
ex1 += incr;
@@ -651,7 +679,7 @@
}
delta = y2 - y1;
- ras.area += (TArea)( fx2 + ONE_PIXEL - first ) * delta;
+ ras.area += (TArea)(( fx2 + ONE_PIXEL - first ) * delta);
ras.cover += delta;
}
@@ -664,10 +692,10 @@
gray_render_line( RAS_ARG_ TPos to_x,
TPos to_y )
{
- TCoord ey1, ey2, fy1, fy2;
+ TCoord ey1, ey2, fy1, fy2, mod;
TPos dx, dy, x, x2;
long p, first;
- int delta, rem, mod, lift, incr;
+ int delta, rem, lift, incr;
ey1 = TRUNC( ras.last_ey );
@@ -711,7 +739,7 @@
{
TCoord ex = TRUNC( ras.x );
TCoord two_fx = (TCoord)( ( ras.x - SUBPIXELS( ex ) ) << 1 );
- TPos area;
+ TArea area;
first = ONE_PIXEL;
@@ -726,7 +754,7 @@
ras.cover += delta;
ey1 += incr;
- gray_set_cell( &ras, ex, ey1 );
+ gray_set_cell( RAS_VAR_ ex, ey1 );
delta = (int)( first + first - ONE_PIXEL );
area = (TArea)two_fx * delta;
@@ -736,7 +764,7 @@
ras.cover += delta;
ey1 += incr;
- gray_set_cell( &ras, ex, ey1 );
+ gray_set_cell( RAS_VAR_ ex, ey1 );
}
delta = (int)( fy2 - ONE_PIXEL + first );
@@ -1104,13 +1132,13 @@
/* record current cell, if any */
- gray_record_cell( worker );
+ gray_record_cell( RAS_VAR );
/* start to a new position */
x = UPSCALE( to->x );
y = UPSCALE( to->y );
- gray_start_cell( worker, TRUNC( x ), TRUNC( y ) );
+ gray_start_cell( RAS_VAR_ TRUNC( x ), TRUNC( y ) );
worker->x = x;
worker->y = y;
@@ -1122,7 +1150,7 @@
gray_line_to( const FT_Vector* to,
PWorker worker )
{
- gray_render_line( worker, UPSCALE( to->x ), UPSCALE( to->y ) );
+ gray_render_line( RAS_VAR_ UPSCALE( to->x ), UPSCALE( to->y ) );
return 0;
}
@@ -1132,7 +1160,7 @@
const FT_Vector* to,
PWorker worker )
{
- gray_render_conic( worker, control, to );
+ gray_render_conic( RAS_VAR_ control, to );
return 0;
}
@@ -1143,7 +1171,7 @@
const FT_Vector* to,
PWorker worker )
{
- gray_render_cubic( worker, control1, control2, to );
+ gray_render_cubic( RAS_VAR_ control1, control2, to );
return 0;
}
@@ -1203,7 +1231,7 @@
gray_hline( RAS_ARG_ TCoord x,
TCoord y,
TPos area,
- int acount )
+ TCoord acount )
{
FT_Span* span;
int count;
@@ -1243,6 +1271,10 @@
if ( x >= 32767 )
x = 32767;
+ /* FT_Span.y is an integer, so limit our coordinates appropriately */
+ if ( y >= FT_INT_MAX )
+ y = FT_INT_MAX;
+
if ( coverage )
{
/* see whether we can add this span to the current list */
@@ -1281,7 +1313,7 @@
#endif /* FT_DEBUG_LEVEL_TRACE */
ras.num_gray_spans = 0;
- ras.span_y = y;
+ ras.span_y = (int)y;
count = 0;
span = ras.gray_spans;
@@ -1317,7 +1349,7 @@
printf( "%3d:", yindex );
for ( cell = ras.ycells[yindex]; cell != NULL; cell = cell->next )
- printf( " (%3d, c:%4d, a:%6d)", cell->x, cell->cover, cell->area );
+ printf( " (%3ld, c:%4ld, a:%6d)", cell->x, cell->cover, cell->area );
printf( "\n" );
}
}
@@ -1349,7 +1381,7 @@
for ( ; cell != NULL; cell = cell->next )
{
- TArea area;
+ TPos area;
if ( cell->x > x && cover != 0 )
@@ -1666,23 +1698,25 @@
} TBand;
-
- static int
- gray_convert_glyph_inner( RAS_ARG )
- {
- static
- const FT_Outline_Funcs func_interface =
- {
+ FT_DEFINE_OUTLINE_FUNCS(func_interface,
(FT_Outline_MoveTo_Func) gray_move_to,
(FT_Outline_LineTo_Func) gray_line_to,
(FT_Outline_ConicTo_Func)gray_conic_to,
(FT_Outline_CubicTo_Func)gray_cubic_to,
0,
0
- };
+ )
+
+ static int
+ gray_convert_glyph_inner( RAS_ARG )
+ {
volatile int error = 0;
+#ifdef FT_CONFIG_OPTION_PIC
+ FT_Outline_Funcs func_interface;
+ Init_Class_func_interface(&func_interface);
+#endif
if ( ft_setjmp( ras.jump_buffer ) == 0 )
{
@@ -1829,7 +1863,7 @@
if ( middle == bottom )
{
#ifdef FT_DEBUG_LEVEL_TRACE
- FT_TRACE7(( "gray_convert_glyph: Rotten glyph!\n" ));
+ FT_TRACE7(( "gray_convert_glyph: rotten glyph\n" ));
#endif
return 1;
}
@@ -1917,7 +1951,7 @@
ras.clip_box.yMax = 32767L;
}
- gray_init_cells( worker, raster->buffer, raster->buffer_size );
+ gray_init_cells( RAS_VAR_ raster->buffer, raster->buffer_size );
ras.outline = *outline;
ras.num_cells = 0;
@@ -1937,7 +1971,7 @@
ras.render_span_data = &ras;
}
- return gray_convert_glyph( worker );
+ return gray_convert_glyph( RAS_VAR );
}
@@ -2037,8 +2071,7 @@
}
- const FT_Raster_Funcs ft_grays_raster =
- {
+ FT_DEFINE_RASTER_FUNCS(ft_grays_raster,
FT_GLYPH_FORMAT_OUTLINE,
(FT_Raster_New_Func) gray_raster_new,
@@ -2046,7 +2079,7 @@
(FT_Raster_Set_Mode_Func)0,
(FT_Raster_Render_Func) gray_raster_render,
(FT_Raster_Done_Func) gray_raster_done
- };
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/smooth/ftgrays.h b/src/3rdparty/freetype/src/smooth/ftgrays.h
index 2d409543dc..f20f55f14b 100644
--- a/src/3rdparty/freetype/src/smooth/ftgrays.h
+++ b/src/3rdparty/freetype/src/smooth/ftgrays.h
@@ -28,6 +28,7 @@
#include "ftimage.h"
#else
#include <ft2build.h>
+#include FT_CONFIG_CONFIG_H /* for FT_CONFIG_OPTION_PIC */
#include FT_IMAGE_H
#endif
diff --git a/src/3rdparty/freetype/src/smooth/ftsmooth.c b/src/3rdparty/freetype/src/smooth/ftsmooth.c
index a6db5048d3..eed6353157 100644
--- a/src/3rdparty/freetype/src/smooth/ftsmooth.c
+++ b/src/3rdparty/freetype/src/smooth/ftsmooth.c
@@ -17,10 +17,12 @@
#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_OBJECTS_H
#include FT_OUTLINE_H
#include "ftsmooth.h"
#include "ftgrays.h"
+#include "ftspic.h"
#include "ftsmerrs.h"
@@ -153,7 +155,7 @@
slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
}
- /* allocate new one, depends on pixel format */
+ /* allocate new one */
pitch = width;
if ( hmul )
{
@@ -194,6 +196,19 @@
#endif
+#if FT_UINT_MAX > 0xFFFFU
+
+ /* Required check is ( pitch * height < FT_ULONG_MAX ), */
+ /* but we care realistic cases only. Always pitch <= width. */
+ if ( width > 0xFFFFU || height > 0xFFFFU )
+ {
+ FT_ERROR(( "ft_smooth_render_generic: glyph too large: %d x %d\n",
+ width, height ));
+ return Smooth_Err_Raster_Overflow;
+ }
+
+#endif
+
bitmap->pixel_mode = FT_PIXEL_MODE_GRAY;
bitmap->num_grays = 256;
bitmap->width = width;
@@ -310,12 +325,19 @@
FT_Outline_Translate( outline, x_shift, y_shift );
+ /*
+ * XXX: on 16bit system, we return an error for huge bitmap
+ * to prevent an overflow.
+ */
+ if ( x_left > FT_INT_MAX || y_top > FT_INT_MAX )
+ return Smooth_Err_Invalid_Pixel_Size;
+
if ( error )
goto Exit;
slot->format = FT_GLYPH_FORMAT_BITMAP;
- slot->bitmap_left = x_left;
- slot->bitmap_top = y_top;
+ slot->bitmap_left = (FT_Int)x_left;
+ slot->bitmap_top = (FT_Int)y_top;
Exit:
if ( outline && origin )
@@ -376,10 +398,8 @@
}
- FT_CALLBACK_TABLE_DEF
- const FT_Renderer_Class ft_smooth_renderer_class =
- {
- {
+ FT_DEFINE_RENDERER(ft_smooth_renderer_class,
+
FT_MODULE_RENDERER,
sizeof( FT_RendererRec ),
@@ -392,7 +412,7 @@
(FT_Module_Constructor)ft_smooth_init,
(FT_Module_Destructor) 0,
(FT_Module_Requester) 0
- },
+ ,
FT_GLYPH_FORMAT_OUTLINE,
@@ -401,14 +421,12 @@
(FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox,
(FT_Renderer_SetModeFunc) ft_smooth_set_mode,
- (FT_Raster_Funcs*) &ft_grays_raster
- };
+ (FT_Raster_Funcs*) &FT_GRAYS_RASTER_GET
+ )
- FT_CALLBACK_TABLE_DEF
- const FT_Renderer_Class ft_smooth_lcd_renderer_class =
- {
- {
+ FT_DEFINE_RENDERER(ft_smooth_lcd_renderer_class,
+
FT_MODULE_RENDERER,
sizeof( FT_RendererRec ),
@@ -421,7 +439,7 @@
(FT_Module_Constructor)ft_smooth_init,
(FT_Module_Destructor) 0,
(FT_Module_Requester) 0
- },
+ ,
FT_GLYPH_FORMAT_OUTLINE,
@@ -430,15 +448,11 @@
(FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox,
(FT_Renderer_SetModeFunc) ft_smooth_set_mode,
- (FT_Raster_Funcs*) &ft_grays_raster
- };
+ (FT_Raster_Funcs*) &FT_GRAYS_RASTER_GET
+ )
+ FT_DEFINE_RENDERER(ft_smooth_lcdv_renderer_class,
-
- FT_CALLBACK_TABLE_DEF
- const FT_Renderer_Class ft_smooth_lcdv_renderer_class =
- {
- {
FT_MODULE_RENDERER,
sizeof( FT_RendererRec ),
@@ -451,7 +465,7 @@
(FT_Module_Constructor)ft_smooth_init,
(FT_Module_Destructor) 0,
(FT_Module_Requester) 0
- },
+ ,
FT_GLYPH_FORMAT_OUTLINE,
@@ -460,8 +474,8 @@
(FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox,
(FT_Renderer_SetModeFunc) ft_smooth_set_mode,
- (FT_Raster_Funcs*) &ft_grays_raster
- };
+ (FT_Raster_Funcs*) &FT_GRAYS_RASTER_GET
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/smooth/ftsmooth.h b/src/3rdparty/freetype/src/smooth/ftsmooth.h
index 62cced4487..3708790df1 100644
--- a/src/3rdparty/freetype/src/smooth/ftsmooth.h
+++ b/src/3rdparty/freetype/src/smooth/ftsmooth.h
@@ -28,15 +28,15 @@ FT_BEGIN_HEADER
#ifndef FT_CONFIG_OPTION_NO_STD_RASTER
- FT_EXPORT_VAR( const FT_Renderer_Class ) ft_std_renderer_class;
+ FT_DECLARE_RENDERER( ft_std_renderer_class )
#endif
#ifndef FT_CONFIG_OPTION_NO_SMOOTH_RASTER
- FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_renderer_class;
+ FT_DECLARE_RENDERER( ft_smooth_renderer_class )
- FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_lcd_renderer_class;
+ FT_DECLARE_RENDERER( ft_smooth_lcd_renderer_class )
- FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_lcd_v_renderer_class;
+ FT_DECLARE_RENDERER( ft_smooth_lcd_v_renderer_class )
#endif
diff --git a/src/3rdparty/freetype/src/smooth/ftspic.c b/src/3rdparty/freetype/src/smooth/ftspic.c
new file mode 100644
index 0000000000..aa547fceb6
--- /dev/null
+++ b/src/3rdparty/freetype/src/smooth/ftspic.c
@@ -0,0 +1,97 @@
+/***************************************************************************/
+/* */
+/* ftspic.c */
+/* */
+/* The FreeType position independent code services for smooth module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "ftspic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from ftgrays.c */
+ void FT_Init_Class_ft_grays_raster(FT_Raster_Funcs*);
+
+ void
+ ft_smooth_renderer_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->smooth )
+ {
+ SmoothPIC* container = (SmoothPIC*)pic_container->smooth;
+ if(--container->ref_count)
+ return;
+ FT_FREE( container );
+ pic_container->smooth = NULL;
+ }
+ }
+
+
+ FT_Error
+ ft_smooth_renderer_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ SmoothPIC* container;
+ FT_Memory memory = library->memory;
+
+ /* since this function also serve smooth_lcd and smooth_lcdv renderers,
+ it implements reference counting */
+ if(pic_container->smooth)
+ {
+ ((SmoothPIC*)pic_container->smooth)->ref_count++;
+ return error;
+ }
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->smooth = container;
+ container->ref_count = 1;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ FT_Init_Class_ft_grays_raster(&container->ft_grays_raster);
+/*Exit:*/
+ if(error)
+ ft_smooth_renderer_class_pic_free(library);
+ return error;
+ }
+
+ /* re-route these init and free functions to the above functions */
+ FT_Error ft_smooth_lcd_renderer_class_pic_init(FT_Library library)
+ {
+ return ft_smooth_renderer_class_pic_init(library);
+ }
+ void ft_smooth_lcd_renderer_class_pic_free(FT_Library library)
+ {
+ ft_smooth_renderer_class_pic_free(library);
+ }
+ FT_Error ft_smooth_lcdv_renderer_class_pic_init(FT_Library library)
+ {
+ return ft_smooth_renderer_class_pic_init(library);
+ }
+ void ft_smooth_lcdv_renderer_class_pic_free(FT_Library library)
+ {
+ ft_smooth_renderer_class_pic_free(library);
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/smooth/ftspic.h b/src/3rdparty/freetype/src/smooth/ftspic.h
new file mode 100644
index 0000000000..c7e0ce9d89
--- /dev/null
+++ b/src/3rdparty/freetype/src/smooth/ftspic.h
@@ -0,0 +1,50 @@
+/***************************************************************************/
+/* */
+/* ftspic.h */
+/* */
+/* The FreeType position independent code services for smooth module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __FTSPIC_H__
+#define __FTSPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+#define FT_GRAYS_RASTER_GET ft_grays_raster
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+ typedef struct SmoothPIC_
+ {
+ int ref_count;
+ FT_Raster_Funcs ft_grays_raster;
+ } SmoothPIC;
+
+#define GET_PIC(lib) ((SmoothPIC*)((lib)->pic_container.smooth))
+#define FT_GRAYS_RASTER_GET (GET_PIC(library)->ft_grays_raster)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __FTSPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/smooth/smooth.c b/src/3rdparty/freetype/src/smooth/smooth.c
index ff6be3e400..a8ac51f9f8 100644
--- a/src/3rdparty/freetype/src/smooth/smooth.c
+++ b/src/3rdparty/freetype/src/smooth/smooth.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "ftspic.c"
#include "ftgrays.c"
#include "ftsmooth.c"
diff --git a/src/3rdparty/freetype/src/tools/apinames.c b/src/3rdparty/freetype/src/tools/apinames.c
index 19aec500bf..7f191e19c9 100644
--- a/src/3rdparty/freetype/src/tools/apinames.c
+++ b/src/3rdparty/freetype/src/tools/apinames.c
@@ -10,7 +10,7 @@
* accepted if you are using GCC for compilation (and probably by
* other compilers too).
*
- * Author: David Turner, 2005, 2006, 2008
+ * Author: David Turner, 2005, 2006, 2008, 2009
*
* This code is explicitly placed into the public domain.
*
@@ -265,7 +265,7 @@ read_header_file( FILE* file, int verbose )
if ( p > name )
{
if ( verbose )
- fprintf( stderr, ">>> %.*s\n", p-name, name );
+ fprintf( stderr, ">>> %.*s\n", (int)(p - name), name );
names_add( name, p );
}
diff --git a/src/3rdparty/freetype/src/tools/chktrcmp.py b/src/3rdparty/freetype/src/tools/chktrcmp.py
new file mode 100644
index 0000000000..d0f342e6bd
--- /dev/null
+++ b/src/3rdparty/freetype/src/tools/chktrcmp.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# Check trace components in FreeType 2 source.
+# Author: suzuki toshiya, 2009
+#
+# This code is explicitly into the public domain.
+
+
+import sys
+import os
+import re
+
+SRC_FILE_LIST = []
+USED_COMPONENT = {}
+KNOWN_COMPONENT = {}
+
+SRC_FILE_DIRS = [ "src" ]
+TRACE_DEF_FILES = [ "include/freetype/internal/fttrace.h" ]
+
+
+# --------------------------------------------------------------
+# Parse command line options
+#
+
+for i in range( 1, len( sys.argv ) ):
+ if sys.argv[i].startswith( "--help" ):
+ print "Usage: %s [option]" % sys.argv[0]
+ print "Search used-but-defined and defined-but-not-used trace_XXX macros"
+ print ""
+ print " --help:"
+ print " Show this help"
+ print ""
+ print " --src-dirs=dir1:dir2:..."
+ print " Specify the directories of C source files to be checked"
+ print " Default is %s" % ":".join( SRC_FILE_DIRS )
+ print ""
+ print " --def-files=file1:file2:..."
+ print " Specify the header files including FT_TRACE_DEF()"
+ print " Default is %s" % ":".join( TRACE_DEF_FILES )
+ print ""
+ exit(0)
+ if sys.argv[i].startswith( "--src-dirs=" ):
+ SRC_FILE_DIRS = sys.argv[i].replace( "--src-dirs=", "", 1 ).split( ":" )
+ elif sys.argv[i].startswith( "--def-files=" ):
+ TRACE_DEF_FILES = sys.argv[i].replace( "--def-files=", "", 1 ).split( ":" )
+
+
+# --------------------------------------------------------------
+# Scan C source and header files using trace macros.
+#
+
+c_pathname_pat = re.compile( '^.*\.[ch]$', re.IGNORECASE )
+trace_use_pat = re.compile( '^[ \t]*#define[ \t]+FT_COMPONENT[ \t]+trace_' )
+
+for d in SRC_FILE_DIRS:
+ for ( p, dlst, flst ) in os.walk( d ):
+ for f in flst:
+ if c_pathname_pat.match( f ) != None:
+ src_pathname = os.path.join( p, f )
+
+ line_num = 0
+ for src_line in open( src_pathname, 'r' ):
+ line_num = line_num + 1
+ src_line = src_line.strip()
+ if trace_use_pat.match( src_line ) != None:
+ component_name = trace_use_pat.sub( '', src_line )
+ if component_name in USED_COMPONENT:
+ USED_COMPONENT[component_name].append( "%s:%d" % ( src_pathname, line_num ) )
+ else:
+ USED_COMPONENT[component_name] = [ "%s:%d" % ( src_pathname, line_num ) ]
+
+
+# --------------------------------------------------------------
+# Scan header file(s) defining trace macros.
+#
+
+trace_def_pat_opn = re.compile( '^.*FT_TRACE_DEF[ \t]*\([ \t]*' )
+trace_def_pat_cls = re.compile( '[ \t\)].*$' )
+
+for f in TRACE_DEF_FILES:
+ line_num = 0
+ for hdr_line in open( f, 'r' ):
+ line_num = line_num + 1
+ hdr_line = hdr_line.strip()
+ if trace_def_pat_opn.match( hdr_line ) != None:
+ component_name = trace_def_pat_opn.sub( '', hdr_line )
+ component_name = trace_def_pat_cls.sub( '', component_name )
+ if component_name in KNOWN_COMPONENT:
+ print "trace component %s is defined twice, see %s and fttrace.h:%d" % \
+ ( component_name, KNOWN_COMPONENT[component_name], line_num )
+ else:
+ KNOWN_COMPONENT[component_name] = "%s:%d" % \
+ ( os.path.basename( f ), line_num )
+
+
+# --------------------------------------------------------------
+# Compare the used and defined trace macros.
+#
+
+print "# Trace component used in the implementations but not defined in fttrace.h."
+cmpnt = USED_COMPONENT.keys()
+cmpnt.sort()
+for c in cmpnt:
+ if c not in KNOWN_COMPONENT:
+ print "Trace component %s (used in %s) is not defined." % ( c, ", ".join( USED_COMPONENT[c] ) )
+
+print "# Trace component is defined but not used in the implementations."
+cmpnt = KNOWN_COMPONENT.keys()
+cmpnt.sort()
+for c in cmpnt:
+ if c not in USED_COMPONENT:
+ if c != "any":
+ print "Trace component %s (defined in %s) is not used." % ( c, KNOWN_COMPONENT[c] )
+
diff --git a/src/3rdparty/freetype/src/tools/docmaker/content.py b/src/3rdparty/freetype/src/tools/docmaker/content.py
index 0d76d19de3..b398955b81 100644
--- a/src/3rdparty/freetype/src/tools/docmaker/content.py
+++ b/src/3rdparty/freetype/src/tools/docmaker/content.py
@@ -540,7 +540,7 @@ class DocBlock:
while start < end and not string.strip( source[end] ):
end = end - 1
- if start == end:
+ if start == end and not string.strip( source[start] ):
self.code = []
else:
self.code = source[start:end + 1]
diff --git a/src/3rdparty/freetype/src/tools/test_afm.c b/src/3rdparty/freetype/src/tools/test_afm.c
index d53cb33256..f5f99363ca 100644
--- a/src/3rdparty/freetype/src/tools/test_afm.c
+++ b/src/3rdparty/freetype/src/tools/test_afm.c
@@ -63,7 +63,7 @@
int
dummy_get_index( const char* name,
- FT_UInt len,
+ FT_Offset len,
void* user_data )
{
if ( len )
diff --git a/src/3rdparty/freetype/src/truetype/Jamfile b/src/3rdparty/freetype/src/truetype/Jamfile
index a166909f4c..a8cccfe137 100644
--- a/src/3rdparty/freetype/src/truetype/Jamfile
+++ b/src/3rdparty/freetype/src/truetype/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) truetype ;
if $(FT2_MULTI)
{
- _sources = ttdriver ttobjs ttpload ttgload ttinterp ttgxvar ;
+ _sources = ttdriver ttobjs ttpload ttgload ttinterp ttgxvar ttpic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/truetype/truetype.c b/src/3rdparty/freetype/src/truetype/truetype.c
index b36473a72d..4bd1209787 100644
--- a/src/3rdparty/freetype/src/truetype/truetype.c
+++ b/src/3rdparty/freetype/src/truetype/truetype.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "ttpic.c"
#include "ttdriver.c" /* driver interface */
#include "ttpload.c" /* tables loader */
#include "ttgload.c" /* glyph loader */
diff --git a/src/3rdparty/freetype/src/truetype/ttdriver.c b/src/3rdparty/freetype/src/truetype/ttdriver.c
index 42feb05ede..d723b57ae9 100644
--- a/src/3rdparty/freetype/src/truetype/ttdriver.c
+++ b/src/3rdparty/freetype/src/truetype/ttdriver.c
@@ -4,7 +4,8 @@
/* */
/* TrueType font driver implementation (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -20,7 +21,6 @@
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_SFNT_H
-#include FT_TRUETYPE_IDS_H
#include FT_SERVICE_XFREE86_NAME_H
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
@@ -41,6 +41,7 @@
#include "tterrors.h"
+#include "ttpic.h"
/*************************************************************************/
/* */
@@ -298,7 +299,15 @@
if ( !size )
return TT_Err_Invalid_Size_Handle;
- if ( !face || glyph_index >= (FT_UInt)face->num_glyphs )
+ if ( !face )
+ return TT_Err_Invalid_Argument;
+
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ if ( glyph_index >= (FT_UInt)face->num_glyphs &&
+ !face->internal->incremental_interface )
+#else
+ if ( glyph_index >= (FT_UInt)face->num_glyphs )
+#endif
return TT_Err_Invalid_Argument;
if ( load_flags & FT_LOAD_NO_HINTING )
@@ -344,14 +353,13 @@
/*************************************************************************/
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
- static const FT_Service_MultiMastersRec tt_service_gx_multi_masters =
- {
+ FT_DEFINE_SERVICE_MULTIMASTERSREC(tt_service_gx_multi_masters,
(FT_Get_MM_Func) NULL,
(FT_Set_MM_Design_Func) NULL,
(FT_Set_MM_Blend_Func) TT_Set_MM_Blend,
(FT_Get_MM_Var_Func) TT_Get_MM_Var,
(FT_Set_Var_Design_Func)TT_Set_Var_Design
- };
+ )
#endif
static const FT_Service_TrueTypeEngineRec tt_service_truetype_engine =
@@ -371,22 +379,24 @@
#endif /* TT_USE_BYTECODE_INTERPRETER */
};
- static const FT_Service_TTGlyfRec tt_service_truetype_glyf =
- {
+ FT_DEFINE_SERVICE_TTGLYFREC(tt_service_truetype_glyf,
(TT_Glyf_GetLocationFunc)tt_face_get_location
- };
+ )
- static const FT_ServiceDescRec tt_services[] =
- {
- { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_TRUETYPE },
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
- { FT_SERVICE_ID_MULTI_MASTERS, &tt_service_gx_multi_masters },
+ FT_DEFINE_SERVICEDESCREC4(tt_services,
+ FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_TRUETYPE,
+ FT_SERVICE_ID_MULTI_MASTERS, &FT_TT_SERVICE_GX_MULTI_MASTERS_GET,
+ FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine,
+ FT_SERVICE_ID_TT_GLYF, &FT_TT_SERVICE_TRUETYPE_GLYF_GET
+ )
+#else
+ FT_DEFINE_SERVICEDESCREC3(tt_services,
+ FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_TRUETYPE,
+ FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine,
+ FT_SERVICE_ID_TT_GLYF, &FT_TT_SERVICE_TRUETYPE_GLYF_GET
+ )
#endif
- { FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine },
- { FT_SERVICE_ID_TT_GLYF, &tt_service_truetype_glyf },
- { NULL, NULL }
- };
-
FT_CALLBACK_DEF( FT_Module_Interface )
tt_get_interface( FT_Module driver, /* TT_Driver */
@@ -396,11 +406,13 @@
FT_Module sfntd;
SFNT_Service sfnt;
-
- result = ft_service_list_lookup( tt_services, tt_interface );
+ result = ft_service_list_lookup( FT_TT_SERVICES_GET, tt_interface );
if ( result != NULL )
return result;
+ if ( !driver )
+ return NULL;
+
/* only return the default interface from the SFNT module */
sfntd = FT_Get_Module( driver->library, "sfnt" );
if ( sfntd )
@@ -416,18 +428,25 @@
/* The FT_DriverInterface structure is defined in ftdriver.h. */
- FT_CALLBACK_TABLE_DEF
- const FT_Driver_ClassRec tt_driver_class =
- {
- {
- FT_MODULE_FONT_DRIVER |
- FT_MODULE_DRIVER_SCALABLE |
#ifdef TT_USE_BYTECODE_INTERPRETER
- FT_MODULE_DRIVER_HAS_HINTER,
+#define TT_HINTER_FLAG FT_MODULE_DRIVER_HAS_HINTER
+#else
+#define TT_HINTER_FLAG 0
+#endif
+
+#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
+#define TT_SIZE_SELECT tt_size_select
#else
- 0,
+#define TT_SIZE_SELECT 0
#endif
+ FT_DEFINE_DRIVER(tt_driver_class,
+
+
+ FT_MODULE_FONT_DRIVER |
+ FT_MODULE_DRIVER_SCALABLE |
+ TT_HINTER_FLAG,
+
sizeof ( TT_DriverRec ),
"truetype", /* driver name */
@@ -439,7 +458,6 @@
tt_driver_init,
tt_driver_done,
tt_get_interface,
- },
sizeof ( TT_FaceRec ),
sizeof ( TT_SizeRec ),
@@ -452,10 +470,9 @@
tt_slot_init,
0, /* FT_Slot_DoneFunc */
-#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- ft_stub_set_char_sizes,
- ft_stub_set_pixel_sizes,
-#endif
+ ft_stub_set_char_sizes, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ ft_stub_set_pixel_sizes, /* FT_CONFIG_OPTION_OLD_INTERNALS */
+
Load_Glyph,
tt_get_kerning,
@@ -463,12 +480,8 @@
tt_get_advances,
tt_size_request,
-#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
- tt_size_select
-#else
- 0 /* FT_Size_SelectFunc */
-#endif
- };
+ TT_SIZE_SELECT
+ )
/* END */
diff --git a/src/3rdparty/freetype/src/truetype/ttdriver.h b/src/3rdparty/freetype/src/truetype/ttdriver.h
index f6f26e4b59..aae00f2617 100644
--- a/src/3rdparty/freetype/src/truetype/ttdriver.h
+++ b/src/3rdparty/freetype/src/truetype/ttdriver.h
@@ -27,7 +27,7 @@
FT_BEGIN_HEADER
- FT_EXPORT_VAR( const FT_Driver_ClassRec ) tt_driver_class;
+ FT_DECLARE_DRIVER( tt_driver_class )
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/truetype/ttgload.c b/src/3rdparty/freetype/src/truetype/ttgload.c
index 06e9ccd1d8..57ea0baa77 100644
--- a/src/3rdparty/freetype/src/truetype/ttgload.c
+++ b/src/3rdparty/freetype/src/truetype/ttgload.c
@@ -4,7 +4,8 @@
/* */
/* TrueType Glyph Loader (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
+/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -69,7 +70,7 @@
/* `check' is true, take care of monospaced fonts by returning the */
/* advance width maximum. */
/* */
- FT_LOCAL_DEF(void)
+ FT_LOCAL_DEF( void )
TT_Get_HMetrics( TT_Face face,
FT_UInt idx,
FT_Bool check,
@@ -80,6 +81,9 @@
if ( check && face->postscript.isFixedPitch )
*aw = face->horizontal.advance_Width_Max;
+
+ FT_TRACE5(( " advance width (font units): %d\n", *aw ));
+ FT_TRACE5(( " left side bearing (font units): %d\n", *lsb ));
}
@@ -96,7 +100,7 @@
/* The monospace `check' is probably not meaningful here, but we leave */
/* it in for a consistent interface. */
/* */
- FT_LOCAL_DEF(void)
+ FT_LOCAL_DEF( void )
TT_Get_VMetrics( TT_Face face,
FT_UInt idx,
FT_Bool check,
@@ -131,6 +135,91 @@
#endif
+ FT_TRACE5(( " advance height (font units): %d\n", *ah ));
+ FT_TRACE5(( " top side bearing (font units): %d\n", *tsb ));
+ }
+
+
+ static void
+ tt_get_metrics( TT_Loader loader,
+ FT_UInt glyph_index )
+ {
+ TT_Face face = (TT_Face)loader->face;
+
+ FT_Short left_bearing = 0, top_bearing = 0;
+ FT_UShort advance_width = 0, advance_height = 0;
+
+
+ TT_Get_HMetrics( face, glyph_index,
+ (FT_Bool)!( loader->load_flags &
+ FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ),
+ &left_bearing,
+ &advance_width );
+ TT_Get_VMetrics( face, glyph_index,
+ (FT_Bool)!( loader->load_flags &
+ FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ),
+ &top_bearing,
+ &advance_height );
+
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+
+ /* If this is an incrementally loaded font check whether there are */
+ /* overriding metrics for this glyph. */
+ if ( face->root.internal->incremental_interface &&
+ face->root.internal->incremental_interface->funcs->get_glyph_metrics )
+ {
+ FT_Incremental_MetricsRec metrics;
+ FT_Error error;
+
+
+ metrics.bearing_x = left_bearing;
+ metrics.bearing_y = 0;
+ metrics.advance = advance_width;
+ metrics.advance_v = 0;
+
+ error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
+ face->root.internal->incremental_interface->object,
+ glyph_index, FALSE, &metrics );
+ if ( error )
+ goto Exit;
+
+ left_bearing = (FT_Short)metrics.bearing_x;
+ advance_width = (FT_UShort)metrics.advance;
+
+#if 0
+
+ /* GWW: Do I do the same for vertical metrics? */
+ metrics.bearing_x = 0;
+ metrics.bearing_y = top_bearing;
+ metrics.advance = advance_height;
+
+ error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
+ face->root.internal->incremental_interface->object,
+ glyph_index, TRUE, &metrics );
+ if ( error )
+ goto Exit;
+
+ top_bearing = (FT_Short)metrics.bearing_y;
+ advance_height = (FT_UShort)metrics.advance;
+
+#endif /* 0 */
+
+ }
+
+ Exit:
+
+#endif /* FT_CONFIG_OPTION_INCREMENTAL */
+
+ loader->left_bearing = left_bearing;
+ loader->advance = advance_width;
+ loader->top_bearing = top_bearing;
+ loader->vadvance = advance_height;
+
+ if ( !loader->linear_def )
+ {
+ loader->linear_def = 1;
+ loader->linear = advance_width;
+ }
}
@@ -317,7 +406,7 @@
if ( n_ins > face->max_profile.maxSizeOfInstructions )
{
- FT_TRACE0(( "TT_Load_Simple_Glyph: Too many instructions (%d)\n",
+ FT_TRACE0(( "TT_Load_Simple_Glyph: too many instructions (%d)\n",
n_ins ));
error = TT_Err_Too_Many_Hints;
goto Fail;
@@ -325,7 +414,7 @@
if ( ( limit - p ) < n_ins )
{
- FT_TRACE0(( "TT_Load_Simple_Glyph: Instruction count mismatch!\n" ));
+ FT_TRACE0(( "TT_Load_Simple_Glyph: instruction count mismatch\n" ));
error = TT_Err_Too_Many_Hints;
goto Fail;
}
@@ -633,7 +722,13 @@
#ifdef TT_USE_BYTECODE_INTERPRETER
- n_ins = loader->glyph->control_len;
+ if ( loader->glyph->control_len > 0xFFFFL )
+ {
+ FT_TRACE1(( "TT_Hint_Glyph: too long instructions " ));
+ FT_TRACE1(( "(0x%lx byte) is truncated\n",
+ loader->glyph->control_len ));
+ }
+ n_ins = (FT_UInt)( loader->glyph->control_len );
#endif
origin = zone->cur[zone->n_points - 4].x;
@@ -680,6 +775,9 @@
FT_Bool debug;
FT_Error error;
+ FT_GlyphLoader gloader = loader->gloader;
+ FT_Outline current_outline = gloader->current.outline;
+
error = TT_Set_CodeRange( loader->exec, tt_coderange_glyph,
loader->exec->glyphIns, n_ins );
@@ -695,6 +793,10 @@
error = TT_Run_Context( loader->exec, debug );
if ( error && loader->exec->pedantic_hinting )
return error;
+
+ /* store drop-out mode in bits 5-7; set bit 2 also as a marker */
+ current_outline.tags[0] |=
+ ( loader->exec->GS.scan_type << 5 ) | FT_CURVE_TAG_HAS_SCANMODE;
}
#endif
@@ -929,15 +1031,15 @@
/* This algorithm is a guess and works much better than the above. */
/* */
FT_Fixed mac_xscale = FT_SqrtFixed(
- FT_MulFix( subglyph->transform.xx,
- subglyph->transform.xx ) +
- FT_MulFix( subglyph->transform.xy,
- subglyph->transform.xy ) );
+ (FT_Int32)FT_MulFix( subglyph->transform.xx,
+ subglyph->transform.xx ) +
+ (FT_Int32)FT_MulFix( subglyph->transform.xy,
+ subglyph->transform.xy ) );
FT_Fixed mac_yscale = FT_SqrtFixed(
- FT_MulFix( subglyph->transform.yy,
- subglyph->transform.yy ) +
- FT_MulFix( subglyph->transform.yx,
- subglyph->transform.yx ) );
+ (FT_Int32)FT_MulFix( subglyph->transform.yy,
+ subglyph->transform.yy ) +
+ (FT_Int32)FT_MulFix( subglyph->transform.yx,
+ subglyph->transform.yx ) );
x = FT_MulFix( x, mac_xscale );
@@ -1030,7 +1132,7 @@
/* check it */
if ( n_ins > ((TT_Face)loader->face)->max_profile.maxSizeOfInstructions )
{
- FT_TRACE0(( "TT_Process_Composite_Glyph: Too many instructions (%d)\n",
+ FT_TRACE0(( "TT_Process_Composite_Glyph: too many instructions (%d)\n",
n_ins ));
return TT_Err_Too_Many_Hints;
@@ -1053,8 +1155,7 @@
/* Some points are likely touched during execution of */
/* instructions on components. So let's untouch them. */
for ( i = start_point; i < loader->zone.n_points; i++ )
- loader->zone.tags[i] &= ~( FT_CURVE_TAG_TOUCH_X |
- FT_CURVE_TAG_TOUCH_Y );
+ loader->zone.tags[i] &= ~FT_CURVE_TAG_TOUCH_BOTH;
loader->zone.n_points += 4;
@@ -1090,9 +1191,10 @@
static FT_Error
load_truetype_glyph( TT_Loader loader,
FT_UInt glyph_index,
- FT_UInt recurse_count )
+ FT_UInt recurse_count,
+ FT_Bool header_only )
{
- FT_Error error;
+ FT_Error error = TT_Err_Ok;
FT_Fixed x_scale, y_scale;
FT_ULong offset;
TT_Face face = (TT_Face)loader->face;
@@ -1139,75 +1241,7 @@
y_scale = 0x10000L;
}
- /* get metrics, horizontal and vertical */
- {
- FT_Short left_bearing = 0, top_bearing = 0;
- FT_UShort advance_width = 0, advance_height = 0;
-
-
- TT_Get_HMetrics( face, glyph_index,
- (FT_Bool)!( loader->load_flags &
- FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ),
- &left_bearing,
- &advance_width );
- TT_Get_VMetrics( face, glyph_index,
- (FT_Bool)!( loader->load_flags &
- FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ),
- &top_bearing,
- &advance_height );
-
-#ifdef FT_CONFIG_OPTION_INCREMENTAL
-
- /* If this is an incrementally loaded font see if there are */
- /* overriding metrics for this glyph. */
- if ( face->root.internal->incremental_interface &&
- face->root.internal->incremental_interface->funcs->get_glyph_metrics )
- {
- FT_Incremental_MetricsRec metrics;
-
-
- metrics.bearing_x = left_bearing;
- metrics.bearing_y = 0;
- metrics.advance = advance_width;
- error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
- face->root.internal->incremental_interface->object,
- glyph_index, FALSE, &metrics );
- if ( error )
- goto Exit;
- left_bearing = (FT_Short)metrics.bearing_x;
- advance_width = (FT_UShort)metrics.advance;
-
-#if 0
-
- /* GWW: Do I do the same for vertical metrics? */
- metrics.bearing_x = 0;
- metrics.bearing_y = top_bearing;
- metrics.advance = advance_height;
- error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
- face->root.internal->incremental_interface->object,
- glyph_index, TRUE, &metrics );
- if ( error )
- goto Exit;
- top_bearing = (FT_Short)metrics.bearing_y;
- advance_height = (FT_UShort)metrics.advance;
-
-#endif /* 0 */
-
- }
-
-#endif /* FT_CONFIG_OPTION_INCREMENTAL */
-
- loader->left_bearing = left_bearing;
- loader->advance = advance_width;
- loader->top_bearing = top_bearing;
- loader->vadvance = advance_height;
-
- if ( !loader->linear_def )
- {
- loader->linear_def = 1;
- loader->linear = advance_width;
- }
- }
+ tt_get_metrics( loader, glyph_index );
/* Set `offset' to the start of the glyph relative to the start of */
/* the `glyf' table, and `byte_len' to the length of the glyph in */
@@ -1245,9 +1279,15 @@
if ( loader->byte_len > 0 )
{
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ /* for the incremental interface, `glyf_offset' is always zero */
+ if ( !loader->glyf_offset &&
+ !face->root.internal->incremental_interface )
+#else
if ( !loader->glyf_offset )
+#endif /* FT_CONFIG_OPTION_INCREMENTAL */
{
- FT_TRACE2(( "no `glyf' table but non-zero `loca' entry!\n" ));
+ FT_TRACE2(( "no `glyf' table but non-zero `loca' entry\n" ));
error = TT_Err_Invalid_Table;
goto Exit;
}
@@ -1260,9 +1300,9 @@
opened_frame = 1;
- /* read first glyph header */
+ /* read glyph header first */
error = face->read_glyph_header( loader );
- if ( error )
+ if ( error || header_only )
goto Exit;
}
@@ -1273,6 +1313,9 @@
loader->bbox.yMin = 0;
loader->bbox.yMax = 0;
+ if ( header_only )
+ goto Exit;
+
TT_LOADER_SET_PP( loader );
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
@@ -1388,8 +1431,11 @@
{
if ( subglyph->flags & ARGS_ARE_XY_VALUES )
{
- subglyph->arg1 += deltas[i].x;
- subglyph->arg2 += deltas[i].y;
+ /* XXX: overflow check for subglyph->{arg1,arg2}. */
+ /* deltas[i].{x,y} must be within signed 16-bit, */
+ /* but the restriction of summed delta is not clear */
+ subglyph->arg1 += (FT_Int16)deltas[i].x;
+ subglyph->arg2 += (FT_Int16)deltas[i].y;
}
}
@@ -1459,7 +1505,7 @@
num_base_points = gloader->base.outline.n_points;
error = load_truetype_glyph( loader, subglyph->index,
- recurse_count + 1 );
+ recurse_count + 1, FALSE );
if ( error )
goto Exit;
@@ -1579,17 +1625,35 @@
glyph->metrics.horiBearingY = bbox.yMax;
glyph->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
- /* Now take care of vertical metrics. In the case where there is */
- /* no vertical information within the font (relatively common), make */
- /* up some metrics by `hand'... */
+ /* adjust advance width to the value contained in the hdmx table */
+ if ( !face->postscript.isFixedPitch &&
+ IS_HINTED( loader->load_flags ) )
+ {
+ FT_Byte* widthp;
+
+
+ widthp = tt_face_get_device_metrics( face,
+ size->root.metrics.x_ppem,
+ glyph_index );
+
+ if ( widthp )
+ glyph->metrics.horiAdvance = *widthp << 6;
+ }
+ /* set glyph dimensions */
+ glyph->metrics.width = bbox.xMax - bbox.xMin;
+ glyph->metrics.height = bbox.yMax - bbox.yMin;
+
+ /* Now take care of vertical metrics. In the case where there is */
+ /* no vertical information within the font (relatively common), */
+ /* create some metrics manually */
{
FT_Pos top; /* scaled vertical top side bearing */
FT_Pos advance; /* scaled vertical advance height */
/* Get the unscaled top bearing and advance height. */
- if ( face->vertical_info &&
+ if ( face->vertical_info &&
face->vertical.number_Of_VMetrics > 0 )
{
top = (FT_Short)FT_DivFix( loader->pp3.y - bbox.yMax,
@@ -1664,37 +1728,19 @@
/* scale the metrics */
if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) )
{
- top = FT_MulFix( top, y_scale );
+ top = FT_MulFix( top, y_scale );
advance = FT_MulFix( advance, y_scale );
}
/* XXX: for now, we have no better algorithm for the lsb, but it */
/* should work fine. */
/* */
- glyph->metrics.vertBearingX = ( bbox.xMin - bbox.xMax ) / 2;
+ glyph->metrics.vertBearingX = glyph->metrics.horiBearingX -
+ glyph->metrics.horiAdvance / 2;
glyph->metrics.vertBearingY = top;
glyph->metrics.vertAdvance = advance;
}
- /* adjust advance width to the value contained in the hdmx table */
- if ( !face->postscript.isFixedPitch &&
- IS_HINTED( loader->load_flags ) )
- {
- FT_Byte* widthp;
-
-
- widthp = tt_face_get_device_metrics( face,
- size->root.metrics.x_ppem,
- glyph_index );
-
- if ( widthp )
- glyph->metrics.horiAdvance = *widthp << 6;
- }
-
- /* set glyph dimensions */
- glyph->metrics.width = bbox.xMax - bbox.xMin;
- glyph->metrics.height = bbox.yMax - bbox.yMin;
-
return 0;
}
@@ -1742,6 +1788,7 @@
glyph->metrics.vertAdvance = (FT_Pos)metrics.vertAdvance << 6;
glyph->format = FT_GLYPH_FORMAT_BITMAP;
+
if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
{
glyph->bitmap_left = metrics.vertBearingX;
@@ -1764,7 +1811,8 @@
tt_loader_init( TT_Loader loader,
TT_Size size,
TT_GlyphSlot glyph,
- FT_Int32 load_flags )
+ FT_Int32 load_flags,
+ FT_Bool glyf_table_only )
{
TT_Face face;
FT_Stream stream;
@@ -1778,7 +1826,7 @@
#ifdef TT_USE_BYTECODE_INTERPRETER
/* load execution context */
- if ( IS_HINTED( load_flags ) )
+ if ( IS_HINTED( load_flags ) && !glyf_table_only )
{
TT_ExecContext exec;
FT_Bool grayscale;
@@ -1851,7 +1899,7 @@
loader->glyf_offset = 0;
else if ( error )
{
- FT_ERROR(( "TT_Load_Glyph: could not access glyph table\n" ));
+ FT_ERROR(( "tt_loader_init: could not access glyph table\n" ));
return error;
}
else
@@ -1859,6 +1907,7 @@
}
/* get face's glyph loader */
+ if ( !glyf_table_only )
{
FT_GlyphLoader gloader = glyph->internal->loader;
@@ -1930,7 +1979,25 @@
{
error = load_sbit_image( size, glyph, glyph_index, load_flags );
if ( !error )
+ {
+ FT_Face root = &face->root;
+
+
+ if ( FT_IS_SCALABLE( root ) )
+ {
+ /* for the bbox we need the header only */
+ (void)tt_loader_init( &loader, size, glyph, load_flags, TRUE );
+ (void)load_truetype_glyph( &loader, glyph_index, 0, TRUE );
+ glyph->linearHoriAdvance = loader.linear;
+ glyph->linearVertAdvance = loader.top_bearing + loader.bbox.yMax -
+ loader.vadvance;
+ if ( face->postscript.isFixedPitch &&
+ ( load_flags & FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ) == 0 )
+ glyph->linearHoriAdvance = face->horizontal.advance_Width_Max;
+ }
+
return TT_Err_Ok;
+ }
}
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
@@ -1942,7 +2009,7 @@
if ( load_flags & FT_LOAD_SBITS_ONLY )
return TT_Err_Invalid_Argument;
- error = tt_loader_init( &loader, size, glyph, load_flags );
+ error = tt_loader_init( &loader, size, glyph, load_flags, FALSE );
if ( error )
return error;
@@ -1951,7 +2018,7 @@
glyph->outline.flags = 0;
/* main loading loop */
- error = load_truetype_glyph( &loader, glyph_index, 0 );
+ error = load_truetype_glyph( &loader, glyph_index, 0, FALSE );
if ( !error )
{
if ( glyph->format == FT_GLYPH_FORMAT_COMPOSITE )
@@ -1998,7 +2065,7 @@
break;
}
}
- else
+ else
glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
}
diff --git a/src/3rdparty/freetype/src/truetype/ttgxvar.c b/src/3rdparty/freetype/src/truetype/ttgxvar.c
index 515e734b8a..ef25aafb5b 100644
--- a/src/3rdparty/freetype/src/truetype/ttgxvar.c
+++ b/src/3rdparty/freetype/src/truetype/ttgxvar.c
@@ -4,7 +4,7 @@
/* */
/* TrueType GX Font Variation loader */
/* */
-/* Copyright 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -16,30 +16,31 @@
/***************************************************************************/
-/***************************************************************************/
-/* */
-/* Apple documents the `fvar', `gvar', `cvar', and `avar' tables at */
-/* */
-/* http://developer.apple.com/fonts/TTRefMan/RM06/Chap6[fgca]var.html */
-/* */
-/* The documentation for `fvar' is inconsistent. At one point it says */
-/* that `countSizePairs' should be 3, at another point 2. It should be 2. */
-/* */
-/* The documentation for `gvar' is not intelligible; `cvar' refers you to */
-/* `gvar' and is thus also incomprehensible. */
-/* */
-/* The documentation for `avar' appears correct, but Apple has no fonts */
-/* with an `avar' table, so it is hard to test. */
-/* */
-/* Many thanks to John Jenkins (at Apple) in figuring this out. */
-/* */
-/* */
-/* Apple's `kern' table has some references to tuple indices, but as there */
-/* is no indication where these indices are defined, nor how to */
-/* interpolate the kerning values (different tuples have different */
-/* classes) this issue is ignored. */
-/* */
-/***************************************************************************/
+ /*************************************************************************/
+ /* */
+ /* Apple documents the `fvar', `gvar', `cvar', and `avar' tables at */
+ /* */
+ /* http://developer.apple.com/fonts/TTRefMan/RM06/Chap6[fgca]var.html */
+ /* */
+ /* The documentation for `fvar' is inconsistent. At one point it says */
+ /* that `countSizePairs' should be 3, at another point 2. It should */
+ /* be 2. */
+ /* */
+ /* The documentation for `gvar' is not intelligible; `cvar' refers you */
+ /* to `gvar' and is thus also incomprehensible. */
+ /* */
+ /* The documentation for `avar' appears correct, but Apple has no fonts */
+ /* with an `avar' table, so it is hard to test. */
+ /* */
+ /* Many thanks to John Jenkins (at Apple) in figuring this out. */
+ /* */
+ /* */
+ /* Apple's `kern' table has some references to tuple indices, but as */
+ /* there is no indication where these indices are defined, nor how to */
+ /* interpolate the kerning values (different tuples have different */
+ /* classes) this issue is ignored. */
+ /* */
+ /*************************************************************************/
#include <ft2build.h>
@@ -47,11 +48,9 @@
#include FT_CONFIG_CONFIG_H
#include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_SFNT_H
-#include FT_TRUETYPE_IDS_H
#include FT_TRUETYPE_TAGS_H
#include FT_MULTIPLE_MASTERS_H
-#include "ttdriver.h"
#include "ttpload.h"
#include "ttgxvar.h"
@@ -95,11 +94,8 @@
#define ALL_POINTS (FT_UShort*)( -1 )
- enum
- {
- GX_PT_POINTS_ARE_WORDS = 0x80,
- GX_PT_POINT_RUN_COUNT_MASK = 0x7F
- };
+#define GX_PT_POINTS_ARE_WORDS 0x80
+#define GX_PT_POINT_RUN_COUNT_MASK 0x7F
/*************************************************************************/
@@ -158,6 +154,9 @@
runcnt = runcnt & GX_PT_POINT_RUN_COUNT_MASK;
first = points[i++] = FT_GET_USHORT();
+ if ( runcnt < 1 )
+ goto Exit;
+
/* first point not included in runcount */
for ( j = 0; j < runcnt; ++j )
points[i++] = (FT_UShort)( first += FT_GET_USHORT() );
@@ -166,11 +165,15 @@
{
first = points[i++] = FT_GET_BYTE();
+ if ( runcnt < 1 )
+ goto Exit;
+
for ( j = 0; j < runcnt; ++j )
points[i++] = (FT_UShort)( first += FT_GET_BYTE() );
}
}
+ Exit:
return points;
}
@@ -205,12 +208,12 @@
/* */
static FT_Short*
ft_var_readpackeddeltas( FT_Stream stream,
- FT_Int delta_cnt )
+ FT_Offset delta_cnt )
{
FT_Short *deltas;
- FT_Int runcnt;
- FT_Int i;
- FT_Int j;
+ FT_UInt runcnt;
+ FT_Offset i;
+ FT_UInt j;
FT_Memory memory = stream->memory;
FT_Error error = TT_Err_Ok;
@@ -1132,7 +1135,7 @@
if ( blend == NULL )
{
- FT_TRACE2(( "no blend specified!\n" ));
+ FT_TRACE2(( "tt_face_vary_cvt: no blend specified\n" ));
error = TT_Err_Ok;
goto Exit;
@@ -1140,7 +1143,7 @@
if ( face->cvt == NULL )
{
- FT_TRACE2(( "no `cvt ' table!\n" ));
+ FT_TRACE2(( "tt_face_vary_cvt: no `cvt ' table\n" ));
error = TT_Err_Ok;
goto Exit;
@@ -1149,7 +1152,7 @@
error = face->goto_table( face, TTAG_cvar, stream, &table_len );
if ( error )
{
- FT_TRACE2(( "is missing!\n" ));
+ FT_TRACE2(( "is missing\n" ));
error = TT_Err_Ok;
goto Exit;
@@ -1164,7 +1167,7 @@
table_start = FT_Stream_FTell( stream );
if ( FT_GET_LONG() != 0x00010000L )
{
- FT_TRACE2(( "bad table version!\n" ));
+ FT_TRACE2(( "bad table version\n" ));
error = TT_Err_Ok;
goto FExit;
diff --git a/src/3rdparty/freetype/src/truetype/ttgxvar.h b/src/3rdparty/freetype/src/truetype/ttgxvar.h
index 706cb4d369..82dfc4431f 100644
--- a/src/3rdparty/freetype/src/truetype/ttgxvar.h
+++ b/src/3rdparty/freetype/src/truetype/ttgxvar.h
@@ -84,7 +84,7 @@ FT_BEGIN_HEADER
FT_Fixed* normalizedcoords;
FT_MM_Var* mmvar;
- FT_Int mmvar_len;
+ FT_Offset mmvar_len;
FT_Bool avar_checked;
GX_AVarSegment avar_segment;
diff --git a/src/3rdparty/freetype/src/truetype/ttinterp.c b/src/3rdparty/freetype/src/truetype/ttinterp.c
index 3be2502b1f..13aa9a27c4 100644
--- a/src/3rdparty/freetype/src/truetype/ttinterp.c
+++ b/src/3rdparty/freetype/src/truetype/ttinterp.c
@@ -791,9 +791,9 @@
/* allocate object */
if ( FT_NEW( exec ) )
- goto Exit;
+ goto Fail;
- /* initialize it */
+ /* initialize it; in case of error this deallocates `exec' too */
error = Init_Context( exec, memory );
if ( error )
goto Fail;
@@ -802,11 +802,10 @@
driver->context = exec;
}
- Exit:
return driver->context;
Fail:
- return 0;
+ return NULL;
}
@@ -2195,7 +2194,7 @@
FT_ASSERT( !CUR.face->unpatented_hinting );
#endif
- return TT_DotFix14( dx, dy,
+ return TT_DotFix14( (FT_UInt32)dx, (FT_UInt32)dy,
CUR.GS.projVector.x,
CUR.GS.projVector.y );
}
@@ -2221,7 +2220,7 @@
Dual_Project( EXEC_OP_ FT_Pos dx,
FT_Pos dy )
{
- return TT_DotFix14( dx, dy,
+ return TT_DotFix14( (FT_UInt32)dx, (FT_UInt32)dy,
CUR.GS.dualVector.x,
CUR.GS.dualVector.y );
}
@@ -4291,13 +4290,21 @@
CUR.numFDefs++;
}
+ /* Although FDEF takes unsigned 32-bit integer, */
+ /* func # must be within unsigned 16-bit integer */
+ if ( n > 0xFFFFU )
+ {
+ CUR.error = TT_Err_Too_Many_Function_Defs;
+ return;
+ }
+
rec->range = CUR.curRange;
- rec->opc = n;
+ rec->opc = (FT_UInt16)n;
rec->start = CUR.IP + 1;
rec->active = TRUE;
if ( n > CUR.maxFunc )
- CUR.maxFunc = n;
+ CUR.maxFunc = (FT_UInt16)n;
/* Now skip the whole function definition. */
/* We don't allow nested IDEFS & FDEFs. */
@@ -4554,13 +4561,20 @@
CUR.numIDefs++;
}
- def->opc = args[0];
+ /* opcode must be unsigned 8-bit integer */
+ if ( 0 > args[0] || args[0] > 0x00FF )
+ {
+ CUR.error = TT_Err_Too_Many_Instruction_Defs;
+ return;
+ }
+
+ def->opc = (FT_Byte)args[0];
def->start = CUR.IP+1;
def->range = CUR.curRange;
def->active = TRUE;
if ( (FT_ULong)args[0] > CUR.maxIns )
- CUR.maxIns = args[0];
+ CUR.maxIns = (FT_Byte)args[0];
/* Now skip the whole function definition. */
/* We don't allow nested IDEFs & FDEFs. */
@@ -5528,20 +5542,20 @@
{
if ( CUR.GS.both_x_axis )
{
- dx = TT_MulFix14( args[0], 0x4000 );
+ dx = TT_MulFix14( (FT_UInt32)args[0], 0x4000 );
dy = 0;
}
else
{
dx = 0;
- dy = TT_MulFix14( args[0], 0x4000 );
+ dy = TT_MulFix14( (FT_UInt32)args[0], 0x4000 );
}
}
else
#endif
{
- dx = TT_MulFix14( args[0], CUR.GS.freeVector.x );
- dy = TT_MulFix14( args[0], CUR.GS.freeVector.y );
+ dx = TT_MulFix14( (FT_UInt32)args[0], CUR.GS.freeVector.x );
+ dy = TT_MulFix14( (FT_UInt32)args[0], CUR.GS.freeVector.y );
}
while ( CUR.GS.loop > 0 )
@@ -5707,8 +5721,8 @@
if ( CUR.GS.gep0 == 0 ) /* If in twilight zone */
{
- CUR.zp0.org[point].x = TT_MulFix14( distance, CUR.GS.freeVector.x );
- CUR.zp0.org[point].y = TT_MulFix14( distance, CUR.GS.freeVector.y ),
+ CUR.zp0.org[point].x = TT_MulFix14( (FT_UInt32)distance, CUR.GS.freeVector.x );
+ CUR.zp0.org[point].y = TT_MulFix14( (FT_UInt32)distance, CUR.GS.freeVector.y ),
CUR.zp0.cur[point] = CUR.zp0.org[point];
}
@@ -5895,10 +5909,12 @@
if ( CUR.GS.gep1 == 0 )
{
CUR.zp1.org[point].x = CUR.zp0.org[CUR.GS.rp0].x +
- TT_MulFix14( cvt_dist, CUR.GS.freeVector.x );
+ TT_MulFix14( (FT_UInt32)cvt_dist,
+ CUR.GS.freeVector.x );
CUR.zp1.org[point].y = CUR.zp0.org[CUR.GS.rp0].y +
- TT_MulFix14( cvt_dist, CUR.GS.freeVector.y );
+ TT_MulFix14( (FT_UInt32)cvt_dist,
+ CUR.GS.freeVector.y );
CUR.zp1.cur[point] = CUR.zp0.cur[point];
}
diff --git a/src/3rdparty/freetype/src/truetype/ttobjs.c b/src/3rdparty/freetype/src/truetype/ttobjs.c
index 2649a670dd..11d662d2d4 100644
--- a/src/3rdparty/freetype/src/truetype/ttobjs.c
+++ b/src/3rdparty/freetype/src/truetype/ttobjs.c
@@ -18,9 +18,7 @@
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_STREAM_H
-#include FT_TRUETYPE_IDS_H
#include FT_TRUETYPE_TAGS_H
#include FT_INTERNAL_SFNT_H
@@ -150,7 +148,9 @@
static FT_Bool
tt_check_trickyness( FT_String* name )
{
- static const char* const trick_names[] =
+#define TRICK_NAMES_MAX_CHARACTERS 16
+#define TRICK_NAMES_COUNT 7
+ static const char trick_names[TRICK_NAMES_COUNT][TRICK_NAMES_MAX_CHARACTERS+1] =
{
"DFKaiSho-SB", /* dfkaisb.ttf */
"DFKaiShu",
@@ -159,7 +159,6 @@
"MingLiU", /* mingliu.ttf & mingliu.ttc */
"PMingLiU", /* mingliu.ttc */
"MingLi43", /* mingli.ttf */
- NULL
};
int nn;
@@ -169,7 +168,7 @@
/* Note that we only check the face name at the moment; it might */
/* be worth to do more checks for a few special cases. */
- for ( nn = 0; trick_names[nn] != NULL; nn++ )
+ for ( nn = 0; nn < TRICK_NAMES_COUNT; nn++ )
if ( ft_strstr( name, trick_names[nn] ) )
return TRUE;
@@ -612,18 +611,15 @@
/* Set default metrics */
{
- FT_Size_Metrics* metrics = &size->metrics;
- TT_Size_Metrics* metrics2 = &size->ttmetrics;
+ TT_Size_Metrics* metrics = &size->ttmetrics;
- metrics->x_ppem = 0;
- metrics->y_ppem = 0;
- metrics2->rotated = FALSE;
- metrics2->stretched = FALSE;
+ metrics->rotated = FALSE;
+ metrics->stretched = FALSE;
/* set default compensation (all 0) */
for ( i = 0; i < 4; i++ )
- metrics2->compensations[i] = 0;
+ metrics->compensations[i] = 0;
}
/* allocate function defs, instruction defs, cvt, and storage area */
diff --git a/src/3rdparty/freetype/src/truetype/ttobjs.h b/src/3rdparty/freetype/src/truetype/ttobjs.h
index d4b82285e5..30c8669cb2 100644
--- a/src/3rdparty/freetype/src/truetype/ttobjs.h
+++ b/src/3rdparty/freetype/src/truetype/ttobjs.h
@@ -4,7 +4,7 @@
/* */
/* Objects manager (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -196,43 +196,11 @@ FT_BEGIN_HEADER
/*************************************************************************/
/* */
- /* Subglyph loading record. Used to load composite components. */
- /* */
- typedef struct TT_SubglyphRec_
- {
- FT_Long index; /* subglyph index; initialized with -1 */
- FT_Bool is_scaled; /* is the subglyph scaled? */
- FT_Bool is_hinted; /* should it be hinted? */
- FT_Bool preserve_pps; /* preserve phantom points? */
-
- FT_Long file_offset;
-
- FT_BBox bbox;
- FT_Pos left_bearing;
- FT_Pos advance;
-
- TT_GlyphZoneRec zone;
-
- FT_Long arg1; /* first argument */
- FT_Long arg2; /* second argument */
-
- FT_UShort element_flag; /* current load element flag */
-
- TT_Transform transform; /* transformation matrix */
-
- FT_Vector pp1, pp2; /* phantom points (horizontal) */
- FT_Vector pp3, pp4; /* phantom points (vertical) */
-
- } TT_SubGlyphRec, *TT_SubGlyph_Stack;
-
-
- /*************************************************************************/
- /* */
/* A note regarding non-squared pixels: */
/* */
/* (This text will probably go into some docs at some time; for now, it */
- /* is kept here to explain some definitions in the TIns_Metrics */
- /* record). */
+ /* is kept here to explain some definitions in the TT_Size_Metrics */
+ /* record). */
/* */
/* The CVT is a one-dimensional array containing values that control */
/* certain important characteristics in a font, like the height of all */
diff --git a/src/3rdparty/freetype/src/truetype/ttpic.c b/src/3rdparty/freetype/src/truetype/ttpic.c
new file mode 100644
index 0000000000..27ec4a1d5e
--- /dev/null
+++ b/src/3rdparty/freetype/src/truetype/ttpic.c
@@ -0,0 +1,79 @@
+/***************************************************************************/
+/* */
+/* ttpic.c */
+/* */
+/* The FreeType position independent code services for truetype module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "ttpic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from ttdriver.c */
+ FT_Error FT_Create_Class_tt_services( FT_Library, FT_ServiceDescRec**);
+ void FT_Destroy_Class_tt_services( FT_Library, FT_ServiceDescRec*);
+ void FT_Init_Class_tt_service_gx_multi_masters(FT_Service_MultiMastersRec*);
+ void FT_Init_Class_tt_service_truetype_glyf(FT_Service_TTGlyfRec*);
+
+ void
+ tt_driver_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->truetype )
+ {
+ TTModulePIC* container = (TTModulePIC*)pic_container->truetype;
+ if(container->tt_services)
+ FT_Destroy_Class_tt_services(library, container->tt_services);
+ container->tt_services = NULL;
+ FT_FREE( container );
+ pic_container->truetype = NULL;
+ }
+ }
+
+ FT_Error
+ tt_driver_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ TTModulePIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->truetype = container;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ error = FT_Create_Class_tt_services(library, &container->tt_services);
+ if(error)
+ goto Exit;
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ FT_Init_Class_tt_service_gx_multi_masters(&container->tt_service_gx_multi_masters);
+#endif
+ FT_Init_Class_tt_service_truetype_glyf(&container->tt_service_truetype_glyf);
+Exit:
+ if(error)
+ tt_driver_class_pic_free(library);
+ return error;
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/truetype/ttpic.h b/src/3rdparty/freetype/src/truetype/ttpic.h
new file mode 100644
index 0000000000..84de0fee9e
--- /dev/null
+++ b/src/3rdparty/freetype/src/truetype/ttpic.h
@@ -0,0 +1,59 @@
+/***************************************************************************/
+/* */
+/* ttpic.h */
+/* */
+/* The FreeType position independent code services for truetype module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __TTPIC_H__
+#define __TTPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#ifndef FT_CONFIG_OPTION_PIC
+#define FT_TT_SERVICES_GET tt_services
+#define FT_TT_SERVICE_GX_MULTI_MASTERS_GET tt_service_gx_multi_masters
+#define FT_TT_SERVICE_TRUETYPE_GLYF_GET tt_service_truetype_glyf
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#include FT_MULTIPLE_MASTERS_H
+#include FT_SERVICE_MULTIPLE_MASTERS_H
+#include FT_SERVICE_TRUETYPE_GLYF_H
+
+ typedef struct TTModulePIC_
+ {
+ FT_ServiceDescRec* tt_services;
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ FT_Service_MultiMastersRec tt_service_gx_multi_masters;
+#endif
+ FT_Service_TTGlyfRec tt_service_truetype_glyf;
+ } TTModulePIC;
+
+#define GET_PIC(lib) ((TTModulePIC*)((lib)->pic_container.truetype))
+#define FT_TT_SERVICES_GET (GET_PIC(library)->tt_services)
+#define FT_TT_SERVICE_GX_MULTI_MASTERS_GET (GET_PIC(library)->tt_service_gx_multi_masters)
+#define FT_TT_SERVICE_TRUETYPE_GLYF_GET (GET_PIC(library)->tt_service_truetype_glyf)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __TTPIC_H__ */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/truetype/ttpload.c b/src/3rdparty/freetype/src/truetype/ttpload.c
index f5d985eb48..a311b03c00 100644
--- a/src/3rdparty/freetype/src/truetype/ttpload.c
+++ b/src/3rdparty/freetype/src/truetype/ttpload.c
@@ -4,7 +4,7 @@
/* */
/* TrueType-specific tables loader (body). */
/* */
-/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -58,7 +58,6 @@
/* <Return> */
/* FreeType error code. 0 means success. */
/* */
-
FT_LOCAL_DEF( FT_Error )
tt_face_load_loca( TT_Face face,
FT_Stream stream )
@@ -92,11 +91,11 @@
if ( table_len >= 0x40000L )
{
- FT_TRACE2(( "table too large!\n" ));
+ FT_TRACE2(( "table too large\n" ));
error = TT_Err_Invalid_Table;
goto Exit;
}
- face->num_locations = (FT_UInt)( table_len >> shift );
+ face->num_locations = table_len >> shift;
}
else
{
@@ -104,20 +103,20 @@
if ( table_len >= 0x20000L )
{
- FT_TRACE2(( "table too large!\n" ));
+ FT_TRACE2(( "table too large\n" ));
error = TT_Err_Invalid_Table;
goto Exit;
}
- face->num_locations = (FT_UInt)( table_len >> shift );
+ face->num_locations = table_len >> shift;
}
- if ( face->num_locations != (FT_UInt)face->root.num_glyphs )
+ if ( face->num_locations != (FT_ULong)face->root.num_glyphs )
{
FT_TRACE2(( "glyph count mismatch! loca: %d, maxp: %d\n",
face->num_locations, face->root.num_glyphs ));
/* we only handle the case where `maxp' gives a larger value */
- if ( face->num_locations < (FT_UInt)face->root.num_glyphs )
+ if ( face->num_locations < (FT_ULong)face->root.num_glyphs )
{
FT_Long new_loca_len = (FT_Long)face->root.num_glyphs << shift;
@@ -140,7 +139,7 @@
if ( new_loca_len <= dist )
{
- face->num_locations = (FT_Long)face->root.num_glyphs;
+ face->num_locations = face->root.num_glyphs;
table_len = new_loca_len;
FT_TRACE2(( "adjusting num_locations to %d\n",
@@ -204,12 +203,11 @@
}
}
- /* It isn't mentioned explicitly that the `loca' table must be */
- /* ordered, but implicitly it refers to the length of an entry */
- /* as the difference between the current and the next position. */
- /* Anyway, there do exist (malformed) fonts which don't obey */
- /* this rule, so we are only able to provide an upper bound for */
- /* the size. */
+ /* The `loca' table must be ordered; it refers to the length of */
+ /* an entry as the difference between the current and the next */
+ /* position. However, there do exist (malformed) fonts which */
+ /* don't obey this rule, so we are only able to provide an */
+ /* upper bound for the size. */
/* */
/* We get (intentionally) a wrong, non-zero result in case the */
/* `glyf' table is missing. */
@@ -267,7 +265,7 @@
error = face->goto_table( face, TTAG_cvt, stream, &table_len );
if ( error )
{
- FT_TRACE2(( "is missing!\n" ));
+ FT_TRACE2(( "is missing\n" ));
face->cvt_size = 0;
face->cvt = NULL;
@@ -352,7 +350,7 @@
face->font_program_size = 0;
error = TT_Err_Ok;
- FT_TRACE2(( "is missing!\n" ));
+ FT_TRACE2(( "is missing\n" ));
}
else
{
@@ -413,7 +411,7 @@
face->cvt_program_size = 0;
error = TT_Err_Ok;
- FT_TRACE2(( "is missing!\n" ));
+ FT_TRACE2(( "is missing\n" ));
}
else
{
@@ -534,10 +532,10 @@
tt_face_free_hdmx( TT_Face face )
{
FT_Stream stream = face->root.stream;
- FT_Memory memory = stream ? stream->memory : NULL;
+ FT_Memory memory = stream->memory;
+
- if ( face->hdmx_record_sizes )
- FT_FREE( face->hdmx_record_sizes );
+ FT_FREE( face->hdmx_record_sizes );
FT_FRAME_RELEASE( face->hdmx_table );
}
diff --git a/src/3rdparty/freetype/src/type1/t1afm.c b/src/3rdparty/freetype/src/type1/t1afm.c
index 5aea58820e..ef343901a4 100644
--- a/src/3rdparty/freetype/src/type1/t1afm.c
+++ b/src/3rdparty/freetype/src/type1/t1afm.c
@@ -4,7 +4,7 @@
/* */
/* AFM support for Type 1 fonts (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -50,13 +50,17 @@
/* read a glyph name and return the equivalent glyph index */
static FT_Int
t1_get_index( const char* name,
- FT_UInt len,
+ FT_Offset len,
void* user_data )
{
T1_Font type1 = (T1_Font)user_data;
FT_Int n;
+ /* PS string/name length must be < 16-bit */
+ if ( len > 0xFFFFU )
+ return 0;
+
for ( n = 0; n < type1->num_glyphs; n++ )
{
char* gname = (char*)type1->glyph_names[n];
@@ -281,13 +285,15 @@
{
t1_font->font_bbox = fi->FontBBox;
- t1_face->bbox.xMin = fi->FontBBox.xMin >> 16;
- t1_face->bbox.yMin = fi->FontBBox.yMin >> 16;
- t1_face->bbox.xMax = ( fi->FontBBox.xMax + 0xFFFFU ) >> 16;
- t1_face->bbox.yMax = ( fi->FontBBox.yMax + 0xFFFFU ) >> 16;
+ t1_face->bbox.xMin = fi->FontBBox.xMin >> 16;
+ t1_face->bbox.yMin = fi->FontBBox.yMin >> 16;
+ /* no `U' suffix here to 0xFFFF! */
+ t1_face->bbox.xMax = ( fi->FontBBox.xMax + 0xFFFF ) >> 16;
+ t1_face->bbox.yMax = ( fi->FontBBox.yMax + 0xFFFF ) >> 16;
- t1_face->ascender = (FT_Short)( ( fi->Ascender + 0x8000U ) >> 16 );
- t1_face->descender = (FT_Short)( ( fi->Descender + 0x8000U ) >> 16 );
+ /* no `U' suffix here to 0x8000! */
+ t1_face->ascender = (FT_Short)( ( fi->Ascender + 0x8000 ) >> 16 );
+ t1_face->descender = (FT_Short)( ( fi->Descender + 0x8000 ) >> 16 );
if ( fi->NumKernPair )
{
diff --git a/src/3rdparty/freetype/src/type1/t1driver.h b/src/3rdparty/freetype/src/type1/t1driver.h
index ad429440de..9fecbeb0f8 100644
--- a/src/3rdparty/freetype/src/type1/t1driver.h
+++ b/src/3rdparty/freetype/src/type1/t1driver.h
@@ -26,6 +26,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_EXPORT_VAR( const FT_Driver_ClassRec ) t1_driver_class;
diff --git a/src/3rdparty/freetype/src/type1/t1gload.c b/src/3rdparty/freetype/src/type1/t1gload.c
index c3ac13f59f..f3fad4f5df 100644
--- a/src/3rdparty/freetype/src/type1/t1gload.c
+++ b/src/3rdparty/freetype/src/type1/t1gload.c
@@ -4,7 +4,7 @@
/* */
/* Type 1 Glyph Loader (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,6 +18,7 @@
#include <ft2build.h>
#include "t1gload.h"
+#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_OUTLINE_H
@@ -62,6 +63,11 @@
T1_Font type1 = &face->type1;
FT_Error error = T1_Err_Ok;
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ FT_Incremental_InterfaceRec *inc =
+ face->root.internal->incremental_interface;
+#endif
+
decoder->font_matrix = type1->font_matrix;
decoder->font_offset = type1->font_offset;
@@ -70,10 +76,9 @@
/* For incremental fonts get the character data using the */
/* callback function. */
- if ( face->root.internal->incremental_interface )
- error = face->root.internal->incremental_interface->funcs->get_glyph_data(
- face->root.internal->incremental_interface->object,
- glyph_index, char_string );
+ if ( inc )
+ error = inc->funcs->get_glyph_data( inc->object,
+ glyph_index, char_string );
else
#endif /* FT_CONFIG_OPTION_INCREMENTAL */
@@ -92,22 +97,22 @@
#ifdef FT_CONFIG_OPTION_INCREMENTAL
/* Incremental fonts can optionally override the metrics. */
- if ( !error && face->root.internal->incremental_interface &&
- face->root.internal->incremental_interface->funcs->get_glyph_metrics )
+ if ( !error && inc && inc->funcs->get_glyph_metrics )
{
FT_Incremental_MetricsRec metrics;
- metrics.bearing_x = decoder->builder.left_bearing.x;
- metrics.bearing_y = decoder->builder.left_bearing.y;
- metrics.advance = decoder->builder.advance.x;
- error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
- face->root.internal->incremental_interface->object,
- glyph_index, FALSE, &metrics );
- decoder->builder.left_bearing.x = metrics.bearing_x;
- decoder->builder.left_bearing.y = metrics.bearing_y;
- decoder->builder.advance.x = metrics.advance;
- decoder->builder.advance.y = 0;
+ metrics.bearing_x = FIXED_TO_INT( decoder->builder.left_bearing.x );
+ metrics.bearing_y = 0;
+ metrics.advance = FIXED_TO_INT( decoder->builder.advance.x );
+ metrics.advance_v = FIXED_TO_INT( decoder->builder.advance.y );
+
+ error = inc->funcs->get_glyph_metrics( inc->object,
+ glyph_index, FALSE, &metrics );
+
+ decoder->builder.left_bearing.x = INT_TO_FIXED( metrics.bearing_x );
+ decoder->builder.advance.x = INT_TO_FIXED( metrics.advance );
+ decoder->builder.advance.y = INT_TO_FIXED( metrics.advance_v );
}
#endif /* FT_CONFIG_OPTION_INCREMENTAL */
@@ -215,8 +220,6 @@
FT_UInt nn;
FT_Error error;
- FT_UNUSED( load_flags );
-
if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
{
@@ -252,7 +255,7 @@
{
error = T1_Parse_Glyph( &decoder, first + nn );
if ( !error )
- advances[nn] = decoder.builder.advance.x;
+ advances[nn] = FIXED_TO_INT( decoder.builder.advance.x );
else
advances[nn] = 0;
}
@@ -284,7 +287,12 @@
#endif
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+ if ( glyph_index >= (FT_UInt)face->root.num_glyphs &&
+ !face->root.internal->incremental_interface )
+#else
if ( glyph_index >= (FT_UInt)face->root.num_glyphs )
+#endif /* FT_CONFIG_OPTION_INCREMENTAL */
{
error = T1_Err_Invalid_Argument;
goto Exit;
@@ -370,11 +378,14 @@
FT_Slot_Internal internal = glyph->root.internal;
- glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x;
- glyph->root.metrics.horiAdvance = decoder.builder.advance.x;
- internal->glyph_matrix = font_matrix;
- internal->glyph_delta = font_offset;
- internal->glyph_transformed = 1;
+ glyph->root.metrics.horiBearingX =
+ FIXED_TO_INT( decoder.builder.left_bearing.x );
+ glyph->root.metrics.horiAdvance =
+ FIXED_TO_INT( decoder.builder.advance.x );
+
+ internal->glyph_matrix = font_matrix;
+ internal->glyph_delta = font_offset;
+ internal->glyph_transformed = 1;
}
else
{
@@ -384,14 +395,26 @@
/* copy the _unscaled_ advance width */
- metrics->horiAdvance = decoder.builder.advance.x;
- glyph->root.linearHoriAdvance = decoder.builder.advance.x;
+ metrics->horiAdvance =
+ FIXED_TO_INT( decoder.builder.advance.x );
+ glyph->root.linearHoriAdvance =
+ FIXED_TO_INT( decoder.builder.advance.x );
glyph->root.internal->glyph_transformed = 0;
- /* make up vertical ones */
- metrics->vertAdvance = ( face->type1.font_bbox.yMax -
- face->type1.font_bbox.yMin ) >> 16;
- glyph->root.linearVertAdvance = metrics->vertAdvance;
+ if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
+ {
+ /* make up vertical ones */
+ metrics->vertAdvance = ( face->type1.font_bbox.yMax -
+ face->type1.font_bbox.yMin ) >> 16;
+ glyph->root.linearVertAdvance = metrics->vertAdvance;
+ }
+ else
+ {
+ metrics->vertAdvance =
+ FIXED_TO_INT( decoder.builder.advance.y );
+ glyph->root.linearVertAdvance =
+ FIXED_TO_INT( decoder.builder.advance.y );
+ }
glyph->root.format = FT_GLYPH_FORMAT_OUTLINE;
@@ -451,9 +474,12 @@
metrics->horiBearingX = cbox.xMin;
metrics->horiBearingY = cbox.yMax;
- /* make up vertical ones */
- ft_synthesize_vertical_metrics( metrics,
- metrics->vertAdvance );
+ if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
+ {
+ /* make up vertical ones */
+ ft_synthesize_vertical_metrics( metrics,
+ metrics->vertAdvance );
+ }
}
/* Set control data to the glyph charstrings. Note that this is */
diff --git a/src/3rdparty/freetype/src/type1/t1load.c b/src/3rdparty/freetype/src/type1/t1load.c
index 06e72cca68..d867e942c9 100644
--- a/src/3rdparty/freetype/src/type1/t1load.c
+++ b/src/3rdparty/freetype/src/type1/t1load.c
@@ -65,6 +65,7 @@
#include FT_CONFIG_CONFIG_H
#include FT_MULTIPLE_MASTERS_H
#include FT_INTERNAL_TYPE1_TYPES_H
+#include FT_INTERNAL_CALC_H
#include "t1load.h"
#include "t1errors.h"
@@ -213,10 +214,6 @@
}
-#define FT_INT_TO_FIXED( a ) ( (a) << 16 )
-#define FT_FIXED_TO_INT( a ) ( FT_RoundFix( a ) >> 16 )
-
-
/*************************************************************************/
/* */
/* Given a normalized (blend) coordinate, figure out the design */
@@ -230,7 +227,7 @@
if ( ncv <= axismap->blend_points[0] )
- return FT_INT_TO_FIXED( axismap->design_points[0] );
+ return INT_TO_FIXED( axismap->design_points[0] );
for ( j = 1; j < axismap->num_points; ++j )
{
@@ -241,7 +238,7 @@
axismap->blend_points[j] -
axismap->blend_points[j - 1] );
- return FT_INT_TO_FIXED( axismap->design_points[j - 1] ) +
+ return INT_TO_FIXED( axismap->design_points[j - 1] ) +
FT_MulDiv( t,
axismap->design_points[j] -
axismap->design_points[j - 1],
@@ -249,7 +246,7 @@
}
}
- return FT_INT_TO_FIXED( axismap->design_points[axismap->num_points - 1] );
+ return INT_TO_FIXED( axismap->design_points[axismap->num_points - 1] );
}
@@ -331,8 +328,8 @@
for ( i = 0 ; i < mmaster.num_axis; ++i )
{
mmvar->axis[i].name = mmaster.axis[i].name;
- mmvar->axis[i].minimum = FT_INT_TO_FIXED( mmaster.axis[i].minimum);
- mmvar->axis[i].maximum = FT_INT_TO_FIXED( mmaster.axis[i].maximum);
+ mmvar->axis[i].minimum = INT_TO_FIXED( mmaster.axis[i].minimum);
+ mmvar->axis[i].maximum = INT_TO_FIXED( mmaster.axis[i].maximum);
mmvar->axis[i].def = ( mmvar->axis[i].minimum +
mmvar->axis[i].maximum ) / 2;
/* Does not apply. But this value is in range */
@@ -502,7 +499,7 @@
if ( num_coords <= 4 && num_coords > 0 )
{
for ( i = 0; i < num_coords; ++i )
- lcoords[i] = FT_FIXED_TO_INT( coords[i] );
+ lcoords[i] = FIXED_TO_INT( coords[i] );
error = T1_Set_MM_Design( face, num_coords, lcoords );
}
@@ -654,8 +651,8 @@
}
if ( num_designs == 0 || num_designs > T1_MAX_MM_DESIGNS )
{
- FT_ERROR(( "parse_blend_design_positions:" ));
- FT_ERROR(( " incorrect number of designs: %d\n",
+ FT_ERROR(( "parse_blend_design_positions:"
+ " incorrect number of designs: %d\n",
num_designs ));
error = T1_Err_Invalid_File_Format;
goto Exit;
@@ -687,8 +684,8 @@
{
if ( n_axis <= 0 || n_axis > T1_MAX_MM_AXIS )
{
- FT_ERROR(( "parse_blend_design_positions:" ));
- FT_ERROR(( " invalid number of axes: %d\n",
+ FT_ERROR(( "parse_blend_design_positions:"
+ " invalid number of axes: %d\n",
n_axis ));
error = T1_Err_Invalid_File_Format;
goto Exit;
@@ -842,8 +839,8 @@
}
if ( num_designs == 0 || num_designs > T1_MAX_MM_DESIGNS )
{
- FT_ERROR(( "parse_weight_vector:" ));
- FT_ERROR(( " incorrect number of designs: %d\n",
+ FT_ERROR(( "parse_weight_vector:"
+ " incorrect number of designs: %d\n",
num_designs ));
error = T1_Err_Invalid_File_Format;
goto Exit;
@@ -859,9 +856,9 @@
else if ( blend->num_designs != (FT_UInt)num_designs )
{
FT_ERROR(( "parse_weight_vector:"
- " /BlendDesignPosition and /WeightVector have\n" ));
- FT_ERROR(( " "
- " different number of elements!\n" ));
+ " /BlendDesignPosition and /WeightVector have\n"
+ " "
+ " different number of elements\n" ));
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@@ -1143,7 +1140,7 @@
cur = parser->root.cursor;
if ( cur >= limit )
{
- FT_ERROR(( "parse_encoding: out of bounds!\n" ));
+ FT_ERROR(( "parse_encoding: out of bounds\n" ));
parser->root.error = T1_Err_Invalid_File_Format;
return;
}
@@ -2156,7 +2153,7 @@
#endif
if ( !loader.charstrings.init )
{
- FT_ERROR(( "T1_Open_Face: no `/CharStrings' array in face!\n" ));
+ FT_ERROR(( "T1_Open_Face: no `/CharStrings' array in face\n" ));
error = T1_Err_Invalid_File_Format;
}
@@ -2185,8 +2182,8 @@
/* the index is then stored in type1.encoding.char_index, and */
/* a the name to type1.encoding.char_name */
- min_char = +32000;
- max_char = -32000;
+ min_char = 0;
+ max_char = 0;
charcode = 0;
for ( ; charcode < loader.encoding_table.max_elems; charcode++ )
@@ -2212,25 +2209,14 @@
{
if ( charcode < min_char )
min_char = charcode;
- if ( charcode > max_char )
- max_char = charcode;
+ if ( charcode >= max_char )
+ max_char = charcode + 1;
}
break;
}
}
}
- /*
- * Yes, this happens: Certain PDF-embedded fonts have only a
- * `.notdef' glyph defined!
- */
-
- if ( min_char > max_char )
- {
- min_char = 0;
- max_char = loader.encoding_table.max_elems;
- }
-
type1->encoding.code_first = min_char;
type1->encoding.code_last = max_char;
type1->encoding.num_chars = loader.num_chars;
diff --git a/src/3rdparty/freetype/src/type1/t1objs.c b/src/3rdparty/freetype/src/type1/t1objs.c
index 2f90dd62f6..b1de687196 100644
--- a/src/3rdparty/freetype/src/type1/t1objs.c
+++ b/src/3rdparty/freetype/src/type1/t1objs.c
@@ -4,7 +4,7 @@
/* */
/* Type 1 objects manager (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -17,6 +17,7 @@
#include <ft2build.h>
+#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_TRUETYPE_IDS_H
@@ -440,10 +441,11 @@
root->num_fixed_sizes = 0;
root->available_sizes = 0;
- root->bbox.xMin = type1->font_bbox.xMin >> 16;
- root->bbox.yMin = type1->font_bbox.yMin >> 16;
- root->bbox.xMax = ( type1->font_bbox.xMax + 0xFFFFU ) >> 16;
- root->bbox.yMax = ( type1->font_bbox.yMax + 0xFFFFU ) >> 16;
+ root->bbox.xMin = type1->font_bbox.xMin >> 16;
+ root->bbox.yMin = type1->font_bbox.yMin >> 16;
+ /* no `U' suffix here to 0xFFFF! */
+ root->bbox.xMax = ( type1->font_bbox.xMax + 0xFFFF ) >> 16;
+ root->bbox.yMax = ( type1->font_bbox.yMax + 0xFFFF ) >> 16;
/* Set units_per_EM if we didn't set it in parse_font_matrix. */
if ( !root->units_per_EM )
@@ -467,7 +469,7 @@
/* in case of error, keep the standard width */
if ( !error )
- root->max_advance_width = (FT_Short)max_advance;
+ root->max_advance_width = (FT_Short)FIXED_TO_INT( max_advance );
else
error = T1_Err_Ok; /* clear error */
}
diff --git a/src/3rdparty/freetype/src/type1/t1parse.c b/src/3rdparty/freetype/src/type1/t1parse.c
index 36f5c82c86..2a762279fd 100644
--- a/src/3rdparty/freetype/src/type1/t1parse.c
+++ b/src/3rdparty/freetype/src/type1/t1parse.c
@@ -4,7 +4,7 @@
/* */
/* Type 1 parser (body). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -35,7 +35,6 @@
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_POSTSCRIPT_AUX_H
@@ -298,8 +297,8 @@
/* and allocate private dictionary buffer */
if ( parser->private_len == 0 )
{
- FT_ERROR(( "T1_Get_Private_Dict:" ));
- FT_ERROR(( " invalid private dictionary section\n" ));
+ FT_ERROR(( "T1_Get_Private_Dict:"
+ " invalid private dictionary section\n" ));
error = T1_Err_Invalid_File_Format;
goto Fail;
}
@@ -354,8 +353,8 @@
cur++;
if ( cur >= limit )
{
- FT_ERROR(( "T1_Get_Private_Dict:" ));
- FT_ERROR(( " could not find `eexec' keyword\n" ));
+ FT_ERROR(( "T1_Get_Private_Dict:"
+ " could not find `eexec' keyword\n" ));
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@@ -398,18 +397,21 @@
T1_Skip_PS_Token( parser );
cur = parser->root.cursor;
- if ( *cur == '\r' )
- {
- cur++;
- if ( *cur == '\n' )
- cur++;
- }
- else if ( *cur == '\n' )
- cur++;
- else
+
+ /* according to the Type1 spec, the first cipher byte must not be */
+ /* an ASCII whitespace character code (blank, tab, carriage return */
+ /* or line feed). We have seen Type 1 fonts with two line feed */
+ /* characters... So skip now all whitespace character codes. */
+ while ( cur < limit &&
+ ( *cur == ' ' ||
+ *cur == '\t' ||
+ *cur == '\r' ||
+ *cur == '\n' ) )
+ ++cur;
+ if ( cur >= limit )
{
- FT_ERROR(( "T1_Get_Private_Dict:" ));
- FT_ERROR(( " `eexec' not properly terminated\n" ));
+ FT_ERROR(( "T1_Get_Private_Dict:"
+ " `eexec' not properly terminated\n" ));
error = T1_Err_Invalid_File_Format;
goto Exit;
}
diff --git a/src/3rdparty/freetype/src/type42/t42drivr.h b/src/3rdparty/freetype/src/type42/t42drivr.h
index 98b7410b67..4717e4613f 100644
--- a/src/3rdparty/freetype/src/type42/t42drivr.h
+++ b/src/3rdparty/freetype/src/type42/t42drivr.h
@@ -25,6 +25,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
FT_EXPORT_VAR( const FT_Driver_ClassRec ) t42_driver_class;
diff --git a/src/3rdparty/freetype/src/type42/t42objs.c b/src/3rdparty/freetype/src/type42/t42objs.c
index 16e9809ce1..9081ffc6d2 100644
--- a/src/3rdparty/freetype/src/type42/t42objs.c
+++ b/src/3rdparty/freetype/src/type42/t42objs.c
@@ -4,7 +4,8 @@
/* */
/* Type 42 objects manager (body). */
/* */
-/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Roberto Alameda. */
+/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 */
+/* by Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
@@ -19,7 +20,6 @@
#include "t42parse.h"
#include "t42error.h"
#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_STREAM_H
#include FT_LIST_H
@@ -70,7 +70,7 @@
if ( !loader.charstrings.init )
{
- FT_ERROR(( "T42_Open_Face: no charstrings array in face!\n" ));
+ FT_ERROR(( "T42_Open_Face: no charstrings array in face\n" ));
error = T42_Err_Invalid_File_Format;
}
@@ -100,8 +100,8 @@
/* The index is then stored in type1.encoding.char_index, and */
/* the name in type1.encoding.char_name */
- min_char = +32000;
- max_char = -32000;
+ min_char = 0;
+ max_char = 0;
charcode = 0;
for ( ; charcode < loader.encoding_table.max_elems; charcode++ )
@@ -127,13 +127,14 @@
{
if ( charcode < min_char )
min_char = charcode;
- if ( charcode > max_char )
- max_char = charcode;
+ if ( charcode >= max_char )
+ max_char = charcode + 1;
}
break;
}
}
}
+
type1->encoding.code_first = min_char;
type1->encoding.code_last = max_char;
type1->encoding.num_chars = loader.num_chars;
diff --git a/src/3rdparty/freetype/src/type42/t42parse.c b/src/3rdparty/freetype/src/type42/t42parse.c
index b9e408c452..13bda64c83 100644
--- a/src/3rdparty/freetype/src/type42/t42parse.c
+++ b/src/3rdparty/freetype/src/type42/t42parse.c
@@ -20,7 +20,6 @@
#include "t42error.h"
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
-#include FT_LIST_H
#include FT_INTERNAL_POSTSCRIPT_AUX_H
@@ -304,7 +303,7 @@
cur = parser->root.cursor;
if ( cur >= limit )
{
- FT_ERROR(( "t42_parse_encoding: out of bounds!\n" ));
+ FT_ERROR(( "t42_parse_encoding: out of bounds\n" ));
parser->root.error = T42_Err_Invalid_File_Format;
return;
}
@@ -472,7 +471,7 @@
else
{
- FT_ERROR(( "t42_parse_encoding: invalid token!\n" ));
+ FT_ERROR(( "t42_parse_encoding: invalid token\n" ));
parser->root.error = T42_Err_Invalid_File_Format;
}
}
@@ -525,7 +524,7 @@
if ( parser->root.cursor >= limit || *parser->root.cursor++ != '[' )
{
- FT_ERROR(( "t42_parse_sfnts: can't find begin of sfnts vector!\n" ));
+ FT_ERROR(( "t42_parse_sfnts: can't find begin of sfnts vector\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -570,7 +569,7 @@
if ( allocated )
{
FT_ERROR(( "t42_parse_sfnts: "
- "can't handle mixed binary and hex strings!\n" ));
+ "can't handle mixed binary and hex strings\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -586,7 +585,7 @@
parser->root.cursor += string_size + 1;
if ( parser->root.cursor >= limit )
{
- FT_ERROR(( "t42_parse_sfnts: too many binary data!\n" ));
+ FT_ERROR(( "t42_parse_sfnts: too many binary data\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -594,7 +593,7 @@
if ( !string_buf )
{
- FT_ERROR(( "t42_parse_sfnts: invalid data in sfnts array!\n" ));
+ FT_ERROR(( "t42_parse_sfnts: invalid data in sfnts array\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -605,7 +604,7 @@
if ( !string_size )
{
- FT_ERROR(( "t42_parse_sfnts: invalid string!\n" ));
+ FT_ERROR(( "t42_parse_sfnts: invalid string\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -670,7 +669,7 @@
/* all other tables are just copied */
if ( count >= ttf_size )
{
- FT_ERROR(( "t42_parse_sfnts: too many binary data!\n" ));
+ FT_ERROR(( "t42_parse_sfnts: too many binary data\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -717,7 +716,7 @@
if ( parser->root.cursor >= limit )
{
- FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" ));
+ FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -759,14 +758,14 @@
}
else
{
- FT_ERROR(( "t42_parse_charstrings: invalid token!\n" ));
+ FT_ERROR(( "t42_parse_charstrings: invalid token\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
if ( parser->root.cursor >= limit )
{
- FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" ));
+ FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -826,7 +825,7 @@
if ( cur + 1 >= limit )
{
- FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" ));
+ FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -857,7 +856,7 @@
(void)T1_ToInt( parser );
if ( parser->root.cursor >= limit )
{
- FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" ));
+ FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -880,7 +879,7 @@
if ( !notdef_found )
{
- FT_ERROR(( "t42_parse_charstrings: no /.notdef glyph!\n" ));
+ FT_ERROR(( "t42_parse_charstrings: no /.notdef glyph\n" ));
error = T42_Err_Invalid_File_Format;
goto Fail;
}
@@ -984,6 +983,10 @@
dummy_object = &face->type1.font_info;
break;
+ case T1_FIELD_LOCATION_FONT_EXTRA:
+ dummy_object = &face->type1.font_extra;
+ break;
+
case T1_FIELD_LOCATION_BBOX:
dummy_object = &face->type1.font_bbox;
break;
diff --git a/src/3rdparty/freetype/src/winfonts/winfnt.c b/src/3rdparty/freetype/src/winfonts/winfnt.c
index f6e9859b44..6b3a4e17f2 100644
--- a/src/3rdparty/freetype/src/winfonts/winfnt.c
+++ b/src/3rdparty/freetype/src/winfonts/winfnt.c
@@ -4,7 +4,7 @@
/* */
/* FreeType font driver for Windows FNT/FON files */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* Copyright 2003 Huw D M Davies for Codeweavers */
/* Copyright 2007 Dmitry Timoshkov for Codeweavers */
@@ -342,7 +342,7 @@
if ( !font_count || !font_offset )
{
- FT_TRACE2(( "this file doesn't contain any FNT resources!\n" ));
+ FT_TRACE2(( "this file doesn't contain any FNT resources\n" ));
error = FNT_Err_Invalid_File_Format;
goto Exit;
}
@@ -619,7 +619,7 @@
}
- static FT_UInt
+ static FT_UInt32
fnt_cmap_char_next( FNT_CMap cmap,
FT_UInt32 *pchar_code )
{
@@ -833,7 +833,7 @@
if ( font->header.face_name_offset >= font->header.file_size )
{
- FT_TRACE2(( "invalid family name offset!\n" ));
+ FT_TRACE2(( "invalid family name offset\n" ));
error = FNT_Err_Invalid_File_Format;
goto Fail;
}
@@ -980,7 +980,7 @@
if ( offset >= font->header.file_size )
{
- FT_TRACE2(( "invalid FNT offset!\n" ));
+ FT_TRACE2(( "invalid FNT offset\n" ));
error = FNT_Err_Invalid_File_Format;
goto Exit;
}
diff --git a/src/3rdparty/freetype/src/winfonts/winfnt.h b/src/3rdparty/freetype/src/winfonts/winfnt.h
index ca75c9501a..70a90861ab 100644
--- a/src/3rdparty/freetype/src/winfonts/winfnt.h
+++ b/src/3rdparty/freetype/src/winfonts/winfnt.h
@@ -28,6 +28,10 @@
FT_BEGIN_HEADER
+#ifdef FT_CONFIG_OPTION_PIC
+#error "this module does not support PIC yet"
+#endif
+
typedef struct WinMZ_HeaderRec_
{
FT_UShort magic;