UPDATE: freetype 2.8.1

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

UPDATE: freetype 2.8.1

David Coppa

Here's the update to FreeType-2.8.1.

I don't know if there's enough time to have it in for 6.2.

It's a bugfixing release, btw...

# ./check_sym
/usr/X11R6/lib/libfreetype.so.28.1 --> obj/libfreetype.so.28.1
Dynamic export changes:
added:
        FT_Get_Var_Axis_Flags
        tt_cmap_unicode_class_rec

Ciao!
David

P.S.: also as attachment, freetype-2.8.1.diff.gz

Index: CMakeLists.txt
===================================================================
RCS file: /cvs/xenocara/lib/freetype/CMakeLists.txt,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 CMakeLists.txt
--- CMakeLists.txt 23 Jun 2017 16:15:17 -0000 1.12
+++ CMakeLists.txt 20 Sep 2017 16:54:24 -0000
@@ -154,7 +154,7 @@ endif ()
 
 set(VERSION_MAJOR "2")
 set(VERSION_MINOR "8")
-set(VERSION_PATCH "0")
+set(VERSION_PATCH "1")
 
 set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
 set(SHARED_LIBRARY_VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
Index: ChangeLog
===================================================================
RCS file: /cvs/xenocara/lib/freetype/ChangeLog,v
retrieving revision 1.31
diff -u -p -u -p -r1.31 ChangeLog
--- ChangeLog 23 Jun 2017 16:15:17 -0000 1.31
+++ ChangeLog 20 Sep 2017 16:54:25 -0000
@@ -1,3 +1,1106 @@
+2017-09-16  Werner Lemberg  <[hidden email]>
+
+ * Version 2.8.1 released.
+ =========================
+
+
+ Tag sources with `VER-2-8-1'.
+
+ * docs/VERSION.TXT: Add entry for version 2.8.1.
+ * docs/CHANGES: Updated.
+
+ * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
+ builds/windows/vc2005/index.html,
+ builds/windows/vc2008/freetype.vcproj,
+ builds/windows/vc2008/index.html,
+ builds/windows/vc2010/freetype.vcxproj,
+ builds/windows/vc2010/index.html,
+ builds/windows/visualc/freetype.dsp,
+ builds/windows/visualc/freetype.vcproj,
+ builds/windows/visualc/index.html,
+ builds/windows/visualce/freetype.dsp,
+ builds/windows/visualce/freetype.vcproj,
+ builds/windows/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.8/2.8.1/, s/28/281/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
+
+ * builds/unix/configure.raw (version_info): Set to 21:0:15.
+ * CMakeLists.txt (VERSION_PATCH): Set to 1.
+
+2017-09-13  suzuki toshiya  <[hidden email]>
+
+ [sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7.
+
+ __builtin_shuffle() was introduced in gcc-4.7.  The lowest
+ gcc to enable vector operation is delayed from 4.6 to 4.7.
+
+ * src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to
+ enable the vector operation, to change the lowest gcc version
+ from 4.6 to 4.7.
+
+2017-09-13  suzuki toshiya  <[hidden email]>
+
+ [cache] Fix a possible overflow by signed integer comparison.
+
+ Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 ,
+ issues are found by Behdad Esfahbod and Werner Lemberg.
+
+ * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace
+ a subtraction to check higher bit by a bit operation,
+ and cpp-conditionalize for appropriate systems.  Add better
+ documentation to the comment.
+ (FTC_ImageCache_LookupScaler): Ditto.
+ (FTC_SBitCache_Lookup): Ditto.
+ (FTC_SBitCache_LookupScaler): Ditto.
+
+2017-09-13  Werner Lemberg  <[hidden email]>
+
+ [autofit] Really fix #41334 (#52000).
+
+ * src/autofit/aflatin.c (af_latin_hints_compute_segments): Set
+ `segment->delta' everywhere.
+
+2017-09-12  suzuki toshiya  <[hidden email]>
+
+ [autofit, sfnt] Fix for `make multi'.
+
+ * src/autofit/afshaper.c: Include FT_ADVANCE_H, to use
+ FT_Get_Advance() in it.
+ * src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H
+ to use PS_Unicodes in it, also include `ttpost.h' to use
+ tt_face_get_ps_name() in it.
+
+2017-09-11  Azzuro  <[hidden email]>
+
+ [build] Improve builds with different MS Visual Studio versions.
+
+ * builds/windows/vc2010/freetype.vcxproj: Switch platform toolset
+ according to the Visual Studio version.
+
+2017-09-11  Werner Lemberg  <[hidden email]>
+
+ * src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables.
+
+ Reported by Behdad.
+
+2017-09-09  Werner Lemberg  <[hidden email]>
+
+ [autofit] Improve communication with ftgrid.
+
+ * src/autofit/afhints.c (af_glyph_hints_get_segment_offset):
+ Provide values in font units.
+
+2017-09-08  suzuki toshiya  <[hidden email]>
+
+ [base] Remove a check for resource ID in the resource fork driver.
+
+ LastResort.dfont has a marginal resource ID 0xFFFF for sfnt
+ resource.  Inside Macintosh: More Macintosh Toolbox, `Resource IDs'
+ (1-46), tells that some IDs are reserved and should not be used.
+ FreeType2 just uses resource ID to sort the fragmented resource.
+ To accept the marginal fonts, the checking is removed.
+
+ * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id
+ validity check, fix a trace message format.
+
+2017-09-08  suzuki toshiya  <[hidden email]>
+
+ [sfnt, truetype] Register the tags for marginal fonts.
+
+ The first 32bit of standard TrueType variants is 0x00010000,
+ `OTTO', `ttcf', `true' or `typ1'.  2 marginal dfonts on legacy Mac
+ OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources
+ starting 0xA5 followed by `kbd' or `lst'.  Considering the following
+ data could be parsed as conventional TrueType fonts, the header
+ checking is updated to allow these tags.  It seems that recent Mac
+ OS X has already switched to normal TTF for these fonts.
+
+ See the discussion at
+ http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0
+
+ * include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header
+ tags for Keyboard.dfont and LastResort.dfont.
+ * src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource
+ starts with TTAG_0xA5kbd or TTAG_0xA5lst.
+ * src/truetype/ttobjs.c (tt_face_init): Accept the face with the
+ format tag is TTAG_0xA5kbd or TTAG_0xA5lst.
+
+2017-09-05  Werner Lemberg  <[hidden email]>
+
+ Fix multiple calls of `FT_Bitmap_Convert'.
+
+ The documentation of `FT_Bitmap_Convert' says that multiple calls do
+ proper reallocation of the target FT_Bitmap object.  However, this
+ failed for the sequence
+
+  non-empty bitmap
+  empty bitmap
+  non-empty bitmap
+
+ Reason was that `FT_Bitmap_Convert' only reallocated the bitmap
+ buffer if it became too small; it didn't make the buffer smaller.
+ For an empty bitmap following a non-empty one, only the buffer
+ dimension got set to zero, without deallocation.  If the next call
+ was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was
+ triggered.
+
+ * src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target
+ buffer to the correct size.
+
+ * docs/CHANGES: Document it.
+
+2017-09-05  Werner Lemberg  <[hidden email]>
+
+ [bdf] Fix size and resolution handling.
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if
+ `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are
+ missing.
+
+ * docs/CHANGES: Document it.
+
+2017-08-25  Alexei Podtelezhnikov  <[hidden email]>
+
+ Swap `ALLOC_MULT' arguments (#51833).
+
+ * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated.
+ * src/winfonts/winfnt.c (FNT_Load_Glyph): Updated.
+ * src/raster/ftrend1.c (ft_raster1_render): Updated.
+
+2017-08-23  Werner Lemberg  <[hidden email]>
+
+ [sfnt] Fix clang compilation (#51788).
+
+ * src/sfnt/pngshim.c (premultiply_data): Use vectors instead of
+ scalars.
+ (vector_shuffle): New macro to take care of a different built-in
+ function name on clang.
+
+2017-08-22  Werner Lemberg  <[hidden email]>
+
+ [base] Don't zero out allocated memory twice (#51816).
+
+ Patch applied from bug report.
+
+ * src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
+ avoid unnecessary overhead.
+
+2017-08-22  Werner Lemberg  <[hidden email]>
+
+ [truetype] Integer overflow.
+
+ Changes triggered by
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107
+
+ * src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use
+ NEG_LONG.
+
+2017-08-17  Alexei Podtelezhnikov  <[hidden email]>
+
+ [sfnt] Avoid synthetic unicode for symbol fonts with PUA.
+
+ Reported as
+
+  https://bugs.chromium.org/p/chromium/issues/detail?id=754574
+
+ * src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL.
+
+2017-08-16  Werner Lemberg  <[hidden email]>
+
+ * src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings.
+
+2017-08-15  Behdad Esfahbod  <[hidden email]>
+
+ [sfnt] Speed up PNG image loading.
+
+ This reduces the overhead of `premultiply_data' by 60%.
+
+ * src/sfnt/pngshim.c (premultiply_data): Provide code which uses
+ gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a
+ time.
+
+2017-08-11  Werner Lemberg  <[hidden email]>
+
+ [sfnt, truetype] Improve handling of missing sbits.
+
+ Requested by Behdad.
+
+ Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain
+ entries in the bitmap strike(s) for empty glyphs.  Instead, they
+ rely that a space glyph gets created from the font's metrics data.
+ This commit makes FreeType behave accordingly.
+
+ * include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error
+ code.
+
+ * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes
+ to make a distinction between a missing bitmap in a composite and a
+ simple missing bitmap.
+
+ * src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a
+ bitmap-only font), synthesize an empty bitmap glyph if metrics are
+ available.
+
+2017-08-10  Werner Lemberg  <[hidden email]>
+
+ [base] Minor API improvement for default variation axis setting.
+
+ * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
+ FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
+ FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0.
+
+ * docs/CHANGES: Updated.
+
+2017-08-08  Werner Lemberg  <[hidden email]>
+
+ [psnames] Really fix issue #49949.
+
+ We now use a separate preprocessor macro to handle both definition
+ and declaration of the glyph name arrays.
+
+ * src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.
+
+ * src/tools/glnames.py (StringTable::dump,
+ StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
+ (dump_encoding): Ditto.
+ (main): Use `wb' mode for writing the output file, which works on
+ Windows also.
+
+ * src/psnames/pstables.h: Regenerated.
+
+2017-08-08  Alexei Podtelezhnikov  <[hidden email]>
+
+ [smooth] Harmony LCD rendering.
+
+ This is a new technology for LCD-optimized rendering. It capitalizes
+ on the fact that each color channel grid is shifted by a third of a
+ pixel.  Therefore it is logical to render 3 separate monochrome
+ bitmaps shifting the outline by 1/3 pixel, and then combine them.
+ Importantly, the resulting output does not require additional LCD
+ filtering.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic)
+ [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
+ rendering.
+
+ * include/freetype/ftlcdfil.h, include/freetype/freetype.h,
+ include/freetype/config/ftoption.h, devel/ftoption.h: Updated
+ documentation.
+
+2017-08-08  Alexei Podtelezhnikov  <[hidden email]>
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.
+
+2017-08-08  Alexei Podtelezhnikov  <[hidden email]>
+
+ * src/sfnt/ttpost.c (format): Use otspec-compliant versions.
+
+2017-08-05  Werner Lemberg  <[hidden email]>
+
+ [truetype] Integer overflow.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868
+
+ * src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.
+
+2017-08-05  Werner Lemberg  <[hidden email]>
+
+ [base, truetype] New function `FT_Get_Var_Axis_Flags'.
+
+ The reserved `flags' field got a value in OpenType version 1.8.2;
+ unfortunately, the public `FT_Var_Axis' structure misses the
+ corresponding element.  Since we can't add a new field, we add an
+ access function.
+
+ * src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.
+
+ * include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
+ Updated.
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
+ of `mmvar' to hold axis flags.
+ Fill the axis flags array.
+
+ * docs/CHANGES: Updated.
+
+2017-08-03  Nikolaus Waxweiler  <[hidden email]>
+
+ [truetype] Fix metrics of B/W hinting in v40 mode.
+
+ Phantom points are now saved outside v40 backwards compatibility
+ mode.  This fixes the jumping glyphs when switching between v35 and
+ v40 monochrome mode.
+
+ * src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.
+
+2017-08-03  Nikolaus Waxweiler  <[hidden email]>
+
+ [truetype] Do not set any ClearType flags in v40 monochrome mode.
+
+ This fixes weird behavior of instructions that resulted in rendering
+ differences between v35 and v40 in monochrome mode, e.g., in
+ `timesbi.ttf'.
+
+ * src/truetype/ttinterp.c (Ins_GETINFO)
+ [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
+ `subpixel_hinting_lean'.
+
+2017-08-01  Werner Lemberg  <[hidden email]>
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.
+
+2017-08-01  Behdad Esfahbod  <[hidden email]>
+
+ [truetype] Fix loading of named instances.
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
+ while loading the `avar' table.
+
+2017-08-01  Werner Lemberg  <[hidden email]>
+
+ [sfnt, truetype] Minor adjustments for OpenType 1.8.2.
+
+ * src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
+ (tighter) limits.
+
+ * src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
+ version explicitly allows all negative values for the number of
+ contours if we have a composite glyph (this is for better backwards
+ compatibility I guess), but it still recommends value -1.
+
+2017-07-26  Werner Lemberg  <[hidden email]>
+
+ [cff] Integer overflow.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738
+
+ * src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
+ cf2_glyphpath_curveTo): Use ADD_INT32.
+
+2017-07-13  Werner Lemberg  <[hidden email]>
+
+ [base] Fix memory leak.
+
+ Reported as
+
+  https://bugs.chromium.org/p/chromium/issues/detail?id=738362
+
+ * src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
+ of error.
+
+2017-07-12  Werner Lemberg  <[hidden email]>
+
+ [base] Integer overflow.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573
+
+ * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
+ FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.
+
+2017-07-12  Werner Lemberg  <[hidden email]>
+
+ * src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.
+
+ Also improve tracing message.
+
+ Problem reported as
+
+  https://bugs.chromium.org/p/chromium/issues/detail?id=738919
+
+2017-07-07  Werner Lemberg  <[hidden email]>
+
+ [cff] Integer overflow.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517
+
+ * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.
+
+2017-07-05  Werner Lemberg  <[hidden email]>
+
+ * src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.
+
+2017-07-05  Werner Lemberg  <[hidden email]>
+
+ * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).
+
+2017-07-04  Werner Lemberg  <[hidden email]>
+
+ [truetype] Prevent address overflow (#51365).
+
+ * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.
+
+2017-07-03  Alexei Podtelezhnikov  <[hidden email]>
+
+ * src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.
+
+2017-07-03  Werner Lemberg  <[hidden email]>
+
+ [truetype] Integer overflow.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455
+
+ * src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG.
+
+2017-07-01  Alexei Podtelezhnikov  <[hidden email]>
+
+ * src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.
+
+2017-06-28  Ben Wagner  <[hidden email]>
+
+ Avoid Microsoft compiler warnings (#51331).
+
+ While clang's sanitizer recommends a cast to unsigned for safe
+ negation (to handle -INT_MIN), both MSVC and Visualc emit warning
+ C4146 if an unsigned value gets negated.
+
+ * include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
+ src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
+ subtraction.
+
+2017-06-27  Werner Lemberg  <[hidden email]>
+
+ * src/cff/cffparse.c (do_fixed): Fix typo.
+
+ Spotted by chris <[hidden email]>.
+
+2017-06-27  Werner Lemberg  <[hidden email]>
+
+ [truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391
+
+ * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
+ NEG_LONG.
+
+ * src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.
+
+2017-06-24  Werner Lemberg  <[hidden email]>
+
+ [truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364
+
+ * src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.
+
+2017-06-22  Werner Lemberg  <[hidden email]>
+
+ [cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328
+
+ * src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
+ SUB_INT32.
+
+ * src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.
+
+2017-06-21  Alexei Podtelezhnikov  <[hidden email]>
+
+ [sfnt] Synthesize a Unicode charmap if one is missing.
+
+ * src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
+ * src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
+ tt_cmap_unicode_done, tt_cmap_unicode_char_index,
+ tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
+ synthetic Unicode charmap class.
+ (tt_get_cmap_info): Make sure the callback is available.
+
+ * src/sfnt/sfobjs.c (sfnt_load_face)
+ [FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
+ synthesize one.
+
+ * include/freetype/config/ftoption.h: Document it.
+ * devel/ftoption.h: Ditto.
+
+2017-06-20  Tony Theodore  <[hidden email]>
+
+ Fix pkg-config in freetype-config for cross-compiling (#51274).
+
+ * builds/unix/unix-def.in (PKG_CONFIG): New variable.
+ (freetype-config): Use it in sed expression.
+
+ * builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.
+
+2017-06-20  Werner Lemberg  <[hidden email]>
+
+ [cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313
+
+ * src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.
+
+ * src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.
+
+2017-06-17  Alexei Podtelezhnikov  <[hidden email]>
+
+ [base, smooth] LCD filtering cleanups.
+
+ * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
+ Clean up, start filtering from the bottom-left origin.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
+
+2017-06-16  Werner Lemberg  <[hidden email]>
+
+ [truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276
+
+ * src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
+ ADD_LONG and SUB_LONG.
+
+2017-06-15  Werner Lemberg  <[hidden email]>
+
+ [bdf, cff] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
+ direct code to avoid value negation.
+
+ * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
+ ADD_INT32.
+
+2017-06-13  Werner Lemberg  <[hidden email]>
+
+ * src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.
+
+ FreeType only sets a default active encoding for Unicode.
+
+2017-06-13  Werner Lemberg  <[hidden email]>
+
+ [cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218
+
+ * src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.
+
+ * src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG.
+
+2017-06-11  Werner Lemberg  <[hidden email]>
+
+ [cff] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210
+
+ * src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
+ ADD_INT32.
+
+ * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
+ ADD_INT32.
+
+2017-06-10  Werner Lemberg  <[hidden email]>
+
+ [truetype] Fix TT_Set_Var_Design.
+
+ Reported by Nikolaus Waxweiler <[hidden email]>.
+
+ * src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
+ case where we have less input coordinates than axes.
+
+2017-06-10  Werner Lemberg  <[hidden email]>
+
+ * src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.
+
+ Bug introduced 2017-05-28.
+
+2017-06-09  Werner Lemberg  <[hidden email]>
+
+ [cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186
+
+ * src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.
+
+ * src/truetype/ttinterp.c (Round_None, Round_To_Grid,
+ Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
+ Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
+ SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
+ FT_PAD_ROUND_LONG
+ (Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
+ (_iup_worker_shift): Use SUB_LONG and ADD_LONG.
+
+2017-06-09  Werner Lemberg  <[hidden email]>
+
+ Provide more macros for flooring, ceiling, and rounding.
+
+ These versions don't produce run-time errors due to integer
+ overflow.
+
+ * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
+ (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
+ FT_PIX_CEIL_LONG): New macros.
+ (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
+ FT_PIX_CEIL_INT32): New macros.
+
+2017-06-09  Werner Lemberg  <[hidden email]>
+
+ Remove unused macros.
+
+ * include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
+ NEG_INT): Deleted.
+
+2017-06-09  Werner Lemberg  <[hidden email]>
+
+ */*: Remove `OVERFLOW_' prefix.
+
+ This increases readability.
+
+2017-06-07  Werner Lemberg  <[hidden email]>
+
+ [cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137
+
+ * src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.
+
+ * src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
+ OVERFLOW_SUB_LONG.
+
+2017-06-06  Werner Lemberg  <[hidden email]>
+
+ [cff] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122
+
+ * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
+
+ * src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
+ branches.
+
+2017-06-05  Werner Lemberg  <[hidden email]>
+
+ [cff] Integer overflow.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089
+
+ * src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.
+
+2017-06-04  Werner Lemberg  <[hidden email]>
+
+ [cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088
+
+ * src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.
+
+ * src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
+ OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.
+
+2017-06-03  Werner Lemberg  <[hidden email]>
+
+ [base, cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068
+
+ * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
+ OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
+
+ * src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
+ (cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.
+
+ * src/truetype/ttgload.c (compute_glyph_metrics): User
+ OVERFLOW_SUB_LONG.
+
+ * src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
+ Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
+ Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
+ OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
+
+2017-06-03  Werner Lemberg  <[hidden email]>
+
+ * builds/unix/freetype-config.in: Fix pkg-config test (#51162).
+
+ Patch directly taken from bug report.
+
+2017-06-03  Werner Lemberg  <[hidden email]>
+
+ [bdf] Synchronize sanity checks with pcf driver.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
+ Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
+ RESOLUTION_Y properties.
+
+2017-06-03  Werner Lemberg  <[hidden email]>
+
+ [cff, truetype] Integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057
+
+ * src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.
+
+ * src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
+ (Ins_SUB): Use OVERFLOW_SUB_LONG.
+ (Ins_NEG): Use NEG_LONG.
+
+2017-06-03  Werner Lemberg  <[hidden email]>
+
+ ftcalc.h: Avoid left-shift of negative numbers.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055
+
+ * include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
+ INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.
+
+2017-06-02  Werner Lemberg  <[hidden email]>
+
+ [cff] Even more integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046
+
+ * src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
+ OVERFLOW_ADD_INT32.
+
+2017-06-02  Werner Lemberg  <[hidden email]>
+
+ [cff] More integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032
+
+ * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
+
+2017-06-02  Werner Lemberg  <[hidden email]>
+
+ [bdf] Don't left-shift negative numbers.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.
+
+2017-06-02  Werner Lemberg  <[hidden email]>
+
+ [bdf] Fix integer scanning routines.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029
+
+ * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
+ Stop scanning if result would overflow.
+
+2017-06-02  Werner Lemberg  <[hidden email]>
+
+ [cff] Fix integer overflows.
+
+ Reported as
+
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028
+
+ * src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
+ (cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.
+
+2017-06-01  Werner Lemberg  <[hidden email]>
+
+ [smooth] Some 32bit integer overflow run-time errors.
+
+ * src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
+ OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
+ [!STANDALONE]: Include FT_INTERNAL_CALC_H.
+ (gray_render_cubic): Use those macros where appropriate.
+
+2017-06-01  Werner Lemberg  <[hidden email]>
+
+ * src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.
+
+2017-06-01  Werner Lemberg  <[hidden email]>
+
+ [psaux] 32bit integer overflow tun-time errors (#46149).
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
+ OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.
+
+2017-06-01  Werner Lemberg  <[hidden email]>
+
+ * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.
+
+ Problem reported by Marek Ka????k <[hidden email]>.
+
+ The problematic font that exceeds the old limit is Padauk-Bold,
+ version 3.002, containing bytecode generated by a buggy version of
+ ttfautohint.
+
+2017-05-31  Werner Lemberg  <[hidden email]>
+
+ [cff] 32bit integer overflow run-time errors 2/2 (#46149).
+
+ This commit handles the new engine.
+
+ * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
+ OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
+ NEG_INT32): New macros.
+
+ * src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.
+
+ * src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
+ cf2_hintmap_map, cf2_glyphpath_hintPoint,
+ cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
+ cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
+ OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
+ NEG_INT32 where appropriate.
+
+ * src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
+ cf2_interpT2CharString): Ditto.
+ Also add some other code where needed to avoid overflow.
+
+2017-05-30  Werner Lemberg  <[hidden email]>
+
+ [cff] 32bit integer overflow run-time errors 1/2 (#46149).
+
+ This commit handles the old engine.
+
+ * src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
+ (cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
+ OVERFLOW_SUB_LONG where needed.
+
+ * src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
+ (power_ten_limits): New static array.
+ (do_fixed): Use it to prevent multiplication overflow.
+ (cff_parser_run): Use OVERFLOW_ADD_LONG.
+
+2017-05-30  Werner Lemberg  <[hidden email]>
+
+ [psaux] Correctly handle sequences of multiple number signs.
+
+ * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
+ if we encounter more than a single sign.
+
+2017-05-29  Werner Lemberg  <[hidden email]>
+
+ [pcf] 32bit integer overflow run-time errors (#46149).
+
+ * src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
+ `fontAscent' and `fontDescent'.
+ (pcf_load_font): Add sanity checks for global height.
+ Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
+ RESOLUTION_X, and RESOLUTION_Y properties.
+
+2017-05-29  Werner Lemberg  <[hidden email]>
+
+ Handle some integer overflow run-time errors (#46149, #48979).
+
+ This commit (mainly for 32bit CPUs) is the first of a series of
+ similar commits to handle known integer overflows.  Basically, all
+ of them are harmless, since they affect rendering of glyphs only,
+ not posing security threats.  It is expected that fuzzying will show
+ up more overflows, to be fixed in due course.
+
+ The idea is to mark places where overflows can occur, using macros
+ that simply cast to unsigned integers, because overflow arithmetic
+ is well defined in this case.  Doing so suppresses run-time errors
+ of sanitizers without adding computational overhead.
+
+ * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
+ OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
+ OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.
+
+ * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
+ FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
+ ft_corner_orientation): Use new macros.
+
+ * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.
+
+2017-05-28  Werner Lemberg  <[hidden email]>
+
+ * include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.
+
+ This macro is not used.
+
+2017-05-28  Werner Lemberg  <[hidden email]>
+
+ [cff] s/cf2_floatToFixed/cf2_doubleToFixed/.
+
+ The new name better describes what the macro actually does;
+ additionally, we don't need a trailing `f' for literals (there was
+ only a single such instance in the code, but this caused a clang
+ warning because the macro itself uses `double' literals).
+
+ * src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
+ src/cff/cf2font.c, src/cff/cf2hints.c: Updated.
+
+2017-05-28  Werner Lemberg  <[hidden email]>
+
+ Fix negation of INT_MIN and LONG_MIN (#46149).
+
+ * src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
+ value, to be used as the result.
+ (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
+ FT_Vector_NormLen): Updated.
+
+2017-05-27  Werner Lemberg  <[hidden email]>
+
+ [truetype] Fix handling of design coordinates (#51127).
+
+ * src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
+ coordinates if we have to create the `blends->coord' array.
+ (TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
+ coordinates if no instance is selected yet.
+
+2017-05-24  Werner Lemberg  <[hidden email]>
+
+ [bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).
+
+ Problem reported by Marek Ka????k <[hidden email]>, cf.
+
+  https://bugzilla.redhat.com/show_bug.cgi?id=1451795
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
+ (PCF_Face_Init): Implement it.
+
+2017-05-20  Nikolaus Waxweiler  <[hidden email]>
+
+ [truetype] Always use interpreter v35 for B/W rendering (#51051).
+
+ * src/truetype/ttgload.c (tt_loader_init)
+ [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
+ `subpixel_hinting_lean', `grayscale_cleartype', and
+ `vertical_lcd_lean' accordingly.
+
+ * src/truetype/ttinterp.c (Ins_GETINFO): Updated.
+ (TT_RunIns): Update `backward_compatibility' flag.
+
+2017-05-20  Alexei Podtelezhnikov  <[hidden email]>
+
+ [smooth] Implement minimal dynamic padding for LCD filtering.
+
+ Extra bitmap padding for LCD filtering depends on the filter.  The
+ default 5-tap filter needs 2 extra subpixels.  The light 3-tap filter
+ needs only 1 extra subpixel.  This space could be already available
+ due to rounding.  In order to optimize the padding, we now expand
+ CBox for the given filter weights before rounding.
+
+ This change breaks current Skia (and Firefox).
+
+ * include/freetype/internal/ftobjs.h (FT_LibraryRec)
+ [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.
+
+ * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
+ FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
+ LCD padding.
+
+2017-05-15  Werner Lemberg  <[hidden email]>
+
+ [sfnt] Return proper scaling values for SBIX bitmaps.
+
+ Problem reported by Hin-Tak Leung <[hidden email]>.
+
+ * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it.
+
+2017-05-15  Werner Lemberg  <[hidden email]>
+
+ [truetype] Fix error handling for embedded bitmaps.
+
+ Problem reported by Hin-Tak Leung <[hidden email]>.
+
+ * src/truetype/ttgload.c (TT_Load_Glyph)
+ [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
+ scalable.
+
+2017-05-15  Alexei Podtelezhnikov  <[hidden email]>
+
+ [autofit] Make autohint warping NORMAL option.
+
+ This moves warping option from LIGHT to NORMAL mode.  This makes LIGHT
+ truly void of hinting in x-direction, with left side bearing never
+ changed and right side bearing only altered by advance rounding.
+ Therefore, LIGHT is now ready to return fractional advance.  As a
+ NORMAL option, warping substitutes normal hinting.
+
+ * src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
+ * src/autofit/aflatin.c (af_latin_hints_apply): Updated.
+ * src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.
+
+ * src/autofit/afloader.c (af_loader_load_glyph): Handle warping
+ phantom points as normal.
+
+2017-05-14  Werner Lemberg  <[hidden email]>
+
+ Remove remnants of raster pool.
+
+ * include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
+ `raster_pool' and `raster_pool_size' fields.
+
+ * src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
+ (ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.
+
 2017-05-13  Werner Lemberg  <[hidden email]>
 
  * Version 2.8 released.
@@ -327,7 +1430,7 @@
 
  [truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).
 
- * src/truetype/ttobs.h (TT_SizeRec): Add field `hinted_metrics' to
+ * src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to
  hold hinted metrics.
  Make `metrics' a pointer so that `tt_glyph_load' can easily switch
  between metrics.
@@ -1096,7 +2199,7 @@
 
  * src/sfnt/sfdriver.c (search_name_id): Rename to...
  (sfnt_get_name_id): ... this.
- (sfnt_get_ps_name, sfnt_interface): Udpated.
+ (sfnt_get_ps_name, sfnt_interface): Updated.
 
 2017-03-04  Werner Lemberg  <[hidden email]>
 
@@ -1522,7 +2625,7 @@
  * include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
  (FT_Get_Sfnt_LangTag): New declaration.
 
- * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New funtion.
+ * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function.
 
  * docs/CHANGES: Updated.
 
@@ -2521,7 +3624,7 @@
  [cff] Implement CFF2 support (2/2).
 
  The font variation code.  All parts dependent on the GX code in the
- `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
+ `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
  In other words, you can still compile the `cff' module without
  defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
  support without font variation).
@@ -3545,7 +4648,7 @@
 
   https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
 
- * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
+ * src/cff/cf2intrp.c (cf2_interpT2CharString): Initialize `storage'
  array to handle a `get' opcode without a previous `put'.
 
 2016-09-05  Alexei Podtelezhnikov  <[hidden email]>
Index: ChangeLog.24
===================================================================
RCS file: /cvs/xenocara/lib/freetype/ChangeLog.24,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 ChangeLog.24
--- ChangeLog.24 23 Jun 2017 16:15:17 -0000 1.5
+++ ChangeLog.24 20 Sep 2017 16:54:25 -0000
@@ -1860,10 +1860,10 @@
  Fix `checking if gcc static flag -static works' test.
 
  On my linux build tree, I receive yes answer in every package I
- build except freetype for this test checking if gcc static flag
+ build except FreeType for this test checking if gcc static flag
  `-static' works
 
- On freetype, no is received, unless bzip2 and zlib are disabled using
+ In FreeType, no is received, unless bzip2 and zlib are disabled using
 
   ./configure --without-bzip2 --without-zlib
 
Index: ChangeLog.25
===================================================================
RCS file: /cvs/xenocara/lib/freetype/ChangeLog.25,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 ChangeLog.25
--- ChangeLog.25 23 Jun 2017 16:15:17 -0000 1.4
+++ ChangeLog.25 20 Sep 2017 16:54:26 -0000
@@ -2116,7 +2116,7 @@
  builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle
  HarfBuzz.
 
- * docs/INSTALL.UNIX: Document interdependency of Freetype with
+ * docs/INSTALL.UNIX: Document interdependency of FreeType with
  HarfBuzz.
 
 2014-02-28  Alexei Podtelezhnikov  <[hidden email]>
Index: Jamfile
===================================================================
RCS file: /cvs/xenocara/lib/freetype/Jamfile,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 Jamfile
--- Jamfile 23 Jun 2017 16:15:17 -0000 1.30
+++ Jamfile 20 Sep 2017 16:54:26 -0000
@@ -210,7 +210,7 @@ actions RefDoc
 {
   python $(FT2_SRC)/tools/docmaker/docmaker.py
          --prefix=ft2
-         --title=FreeType-2.8
+         --title=FreeType-2.8.1
          --output=$(DOC_DIR)
          $(FT2_INCLUDE)/freetype/*.h
          $(FT2_INCLUDE)/freetype/config/*.h
Index: Makefile
===================================================================
RCS file: /cvs/xenocara/lib/freetype/Makefile,v
retrieving revision 1.49
diff -u -p -u -p -r1.49 Makefile
--- Makefile 23 Jun 2017 16:15:17 -0000 1.49
+++ Makefile 20 Sep 2017 16:54:26 -0000
@@ -3,7 +3,7 @@
 FREETYPESRC= ${.CURDIR}/src
 
 # Get it from builds/unix/configure.ac
-FT_VERSION_INFO= 20.0.14
+FT_VERSION_INFO= 21.0.15
 
 INSTALL_PROGRAM = ${INSTALL} ${INSTALL_COPY} -m 755 -o $(BINOWN) -g $(BINGRP)
 
Index: README
===================================================================
RCS file: /cvs/xenocara/lib/freetype/README,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 README
--- README 23 Jun 2017 16:15:17 -0000 1.30
+++ README 20 Sep 2017 16:54:26 -0000
@@ -1,5 +1,5 @@
-  FreeType 2.8
-  ============
+  FreeType 2.8.1
+  ==============
 
   Homepage: http://www.freetype.org
 
@@ -24,9 +24,9 @@
 
   and download one of the following files.
 
-    freetype-doc-2.8.tar.bz2
-    freetype-doc-2.8.tar.gz
-    ftdoc28.zip
+    freetype-doc-2.8.1.tar.bz2
+    freetype-doc-2.8.1.tar.gz
+    ftdoc281.zip
 
   To view the documentation online, go to
 
Index: shlib_version
===================================================================
RCS file: /cvs/xenocara/lib/freetype/shlib_version,v
retrieving revision 1.26
diff -u -p -u -p -r1.26 shlib_version
--- shlib_version 23 Jun 2017 16:15:17 -0000 1.26
+++ shlib_version 20 Sep 2017 16:54:26 -0000
@@ -1,2 +1,2 @@
 major=28
-minor=1
+minor=2
Index: vms_make.com
===================================================================
RCS file: /cvs/xenocara/lib/freetype/vms_make.com,v
retrieving revision 1.6
diff -u -p -u -p -r1.6 vms_make.com
--- vms_make.com 23 Jun 2017 16:15:17 -0000 1.6
+++ vms_make.com 20 Sep 2017 16:54:26 -0000
@@ -1,4 +1,4 @@
-$! make Freetype2 under OpenVMS
+$! make FreeType 2 under OpenVMS
 $!
 $! Copyright 2003-2017 by
 $! David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -10,7 +10,7 @@ $! indicate that you have read the licen
 $! fully.
 $!
 $!
-$! External libraries (like Freetype, XPM, etc.) are supported via the
+$! External libraries (like FreeType, XPM, etc.) are supported via the
 $! config file VMSLIB.DAT. Please check the sample file, which is part of this
 $! distribution, for the information you need to provide
 $!
@@ -26,12 +26,12 @@ $! In case of problems with the install
 $! [hidden email] (preferred) or
 $! [hidden email] (work)
 $!
-$! Make procedure history for Freetype2
+$! Make procedure history for FreeType 2
 $!
 $!------------------------------------------------------------------------------
 $! Version history
 $! 0.01 20040401 First version to receive a number
-$! 0.02 20041030 Add error handling, Freetype 2.1.9
+$! 0.02 20041030 Add error handling, FreeType 2.1.9
 $!
 $ on error then goto err_exit
 $ true  = 1
@@ -128,7 +128,7 @@ $ERR_LIB:
 $ write sys$output "Error reading config file vmslib.dat"
 $ goto err_exit
 $FT2_ERR:
-$ write sys$output "Could not locate Freetype 2 include files"
+$ write sys$output "Could not locate FreeType 2 include files"
 $ goto err_exit
 $ERR_EXIT:
 $ set message/facil/ident/sever/text
@@ -1070,7 +1070,7 @@ $ then
 $   type/out=vmslib.dat sys$input
 !
 ! This is a simple driver file with information used by vms_make.com to
-! check if external libraries (like t1lib and freetype) are available on
+! check if external libraries (like t1lib and FreeType) are available on
 ! the system.
 !
 ! Layout of the file:
@@ -1148,7 +1148,7 @@ $ if f$locate("EXE",libtype) .lt. f$leng
 $ write optf libloc , lqual
 $ if (f$trnlnm("topt") .nes. "") then write topt libloc , lqual
 $!
-$! Nasty hack to get the freetype includes to work
+$! Nasty hack to get the FreeType includes to work
 $!
 $ ft2def = false
 $ if ((libname .eqs. "FREETYPE") .and. -
Index: builds/mac/ftmac.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/mac/ftmac.c,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 ftmac.c
--- builds/mac/ftmac.c 23 Jun 2017 16:15:17 -0000 1.11
+++ builds/mac/ftmac.c 20 Sep 2017 16:54:26 -0000
@@ -1423,7 +1423,7 @@ typedef short ResourceIndex;
   /*    accepts an FSRef instead of a path.                                */
   /*                                                                       */
   /* This function is deprecated because Carbon data types (FSRef)         */
-  /* are not cross-platform, and thus not suitable for the freetype API.   */
+  /* are not cross-platform, and thus not suitable for the FreeType API.   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face_From_FSRef( FT_Library    library,
                           const FSRef*  ref,
@@ -1481,7 +1481,7 @@ typedef short ResourceIndex;
   /*    accepts an FSSpec instead of a path.                               */
   /*                                                                       */
   /* This function is deprecated because Carbon data types (FSSpec)        */
-  /* are not cross-platform, and thus not suitable for the freetype API.   */
+  /* are not cross-platform, and thus not suitable for the FreeType API.   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face_From_FSSpec( FT_Library     library,
                            const FSSpec*  spec,
Index: builds/unix/config.guess
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/unix/config.guess,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 config.guess
--- builds/unix/config.guess 23 Jun 2017 16:15:17 -0000 1.12
+++ builds/unix/config.guess 20 Sep 2017 16:54:26 -0000
@@ -2,7 +2,7 @@
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2017-03-05'
+timestamp='2017-09-12'
 
 # 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
@@ -259,6 +259,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
     *:Sortix:*:*)
  echo ${UNAME_MACHINE}-unknown-sortix
  exit ;;
+    *:Redox:*:*)
+ echo ${UNAME_MACHINE}-unknown-redox
+ exit ;;
     alpha:OSF1:*:*)
  case $UNAME_RELEASE in
  *4.0)
@@ -315,15 +318,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
  exitcode=$?
  trap '' 0
  exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
-    21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
     Amiga*:UNIX_System_V:4.0:*)
  echo m68k-unknown-sysv4
  exit ;;
@@ -855,10 +849,6 @@ EOF
     *:MSYS*:*)
  echo ${UNAME_MACHINE}-pc-msys
  exit ;;
-    i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
     i*:PW*:*)
  echo ${UNAME_MACHINE}-pc-pw32
  exit ;;
@@ -874,27 +864,12 @@ EOF
  echo ia64-unknown-interix${UNAME_RELEASE}
  exit ;;
  esac ;;
-    [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
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
     i*:UWIN*:*)
  echo ${UNAME_MACHINE}-pc-uwin
  exit ;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
  echo x86_64-unknown-cygwin
  exit ;;
-    p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
     prep*:SunOS:5.*:*)
  echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
  exit ;;
@@ -1304,14 +1279,21 @@ EOF
  if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
     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
+       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+       grep IS_64BIT_ARCH >/dev/null
  then
     case $UNAME_PROCESSOR in
  i386) UNAME_PROCESSOR=x86_64 ;;
  powerpc) UNAME_PROCESSOR=powerpc64 ;;
     esac
  fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+       grep IS_PPC >/dev/null
+ then
+    UNAME_PROCESSOR=powerpc
+ fi
     fi
  elif test "$UNAME_PROCESSOR" = i386 ; then
     # Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1335,16 +1317,16 @@ EOF
     *:QNX:*:4*)
  echo i386-pc-qnx
  exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
+    NEO-*:NONSTOP_KERNEL:*:*)
  echo neo-tandem-nsk${UNAME_RELEASE}
  exit ;;
     NSE-*:NONSTOP_KERNEL:*:*)
  echo nse-tandem-nsk${UNAME_RELEASE}
  exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
+    NSR-*:NONSTOP_KERNEL:*:*)
  echo nsr-tandem-nsk${UNAME_RELEASE}
  exit ;;
-    NSX-?:NONSTOP_KERNEL:*:*)
+    NSX-*:NONSTOP_KERNEL:*:*)
  echo nsx-tandem-nsk${UNAME_RELEASE}
  exit ;;
     *:NonStop-UX:*:*)
@@ -1422,8 +1404,8 @@ cat >&2 <<EOF
 $0: unable to guess system type
 
 This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite
-config.guess and config.sub with the latest versions from:
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
 
   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
Index: builds/unix/config.sub
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/unix/config.sub,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 config.sub
--- builds/unix/config.sub 23 Jun 2017 16:15:17 -0000 1.12
+++ builds/unix/config.sub 20 Sep 2017 16:54:26 -0000
@@ -2,7 +2,7 @@
 # Configuration validation subroutine script.
 #   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2017-04-02'
+timestamp='2017-09-13'
 
 # 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
@@ -229,9 +229,6 @@ case $os in
  -ptx*)
  basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
  ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
  -psos*)
  os=-psos
  ;;
@@ -1259,6 +1256,9 @@ case $basic_machine in
  basic_machine=hppa1.1-winbond
  os=-proelf
  ;;
+ x64)
+ basic_machine=x86_64-pc
+ ;;
  xbox)
  basic_machine=i686-pc
  os=-mingw32
@@ -1366,8 +1366,8 @@ esac
 if [ x"$os" != x"" ]
 then
 case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # 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
@@ -1387,9 +1387,9 @@ case $os in
  -gnu/linux*)
  os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
  ;;
- # First accept the basic system types.
+ # Now accept the basic system types.
  # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
+ # 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* | -cnk* | -sunos | -sunos[34]*\
Index: builds/unix/configure
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/unix/configure,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 configure
--- builds/unix/configure 23 Jun 2017 16:15:17 -0000 1.14
+++ builds/unix/configure 20 Sep 2017 16:54:27 -0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for FreeType 2.8.
+# Generated by GNU Autoconf 2.69 for FreeType 2.8.1.
 #
 # Report bugs to <[hidden email]>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='FreeType'
 PACKAGE_TARNAME='freetype'
-PACKAGE_VERSION='2.8'
-PACKAGE_STRING='FreeType 2.8'
+PACKAGE_VERSION='2.8.1'
+PACKAGE_STRING='FreeType 2.8.1'
 PACKAGE_BUGREPORT='[hidden email]'
 PACKAGE_URL=''
 
@@ -1329,7 +1329,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.8 to adapt to many kinds of systems.
+\`configure' configures FreeType 2.8.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1394,7 +1394,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of FreeType 2.8:";;
+     short | recursive ) echo "Configuration of FreeType 2.8.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1541,7 +1541,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-FreeType configure 2.8
+FreeType configure 2.8.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2139,7 +2139,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.8, which was
+It was created by FreeType $as_me 2.8.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2495,7 +2495,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Don't forget to update `docs/VERSIONS.TXT'!
 
-version_info='20:0:14'
+version_info='21:0:15'
 
 ft_version=`echo $version_info | tr : .`
 
@@ -13193,8 +13193,8 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok, add it to XX_ANSIFLAGS" >&5
-$as_echo "ok, add it to XX_ANSIFLAGS" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok, adding to XX_ANSIFLAGS" >&5
+$as_echo "ok, adding to XX_ANSIFLAGS" >&6; }
          XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}"
 
 else
@@ -15017,7 +15017,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # 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.8, which was
+This file was extended by FreeType $as_me 2.8.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15083,7 +15083,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-FreeType config.status 2.8
+FreeType config.status 2.8.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
Index: builds/unix/configure.ac
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/unix/configure.ac,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 configure.ac
--- builds/unix/configure.ac 23 Jun 2017 16:15:17 -0000 1.29
+++ builds/unix/configure.ac 20 Sep 2017 16:54:27 -0000
@@ -11,13 +11,13 @@
 # indicate that you have read the license and understand and accept it
 # fully.
 
-AC_INIT([FreeType], [2.8], [[hidden email]], [freetype])
+AC_INIT([FreeType], [2.8.1], [[hidden email]], [freetype])
 AC_CONFIG_SRCDIR([ftconfig.in])
 
 
 # Don't forget to update `docs/VERSIONS.TXT'!
 
-version_info='20:0:14'
+version_info='21:0:15'
 AC_SUBST([version_info])
 ft_version=`echo $version_info | tr : .`
 AC_SUBST([ft_version])
@@ -275,7 +275,7 @@ if test "x$GCC" = xyes; then
             }
 
           ])],
-        [AC_MSG_RESULT([ok, add it to XX_ANSIFLAGS])
+        [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS])
          XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}"
         ],
         [AC_MSG_RESULT([no])])
Index: builds/unix/configure.raw
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/unix/configure.raw,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 configure.raw
--- builds/unix/configure.raw 23 Jun 2017 16:15:17 -0000 1.29
+++ builds/unix/configure.raw 20 Sep 2017 16:54:27 -0000
@@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.in])
 
 # Don't forget to update `docs/VERSIONS.TXT'!
 
-version_info='20:0:14'
+version_info='21:0:15'
 AC_SUBST([version_info])
 ft_version=`echo $version_info | tr : .`
 AC_SUBST([ft_version])
@@ -275,7 +275,7 @@ if test "x$GCC" = xyes; then
             }
 
           ])],
-        [AC_MSG_RESULT([ok, add it to XX_ANSIFLAGS])
+        [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS])
          XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}"
         ],
         [AC_MSG_RESULT([no])])
Index: builds/unix/freetype-config.in
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/unix/freetype-config.in,v
retrieving revision 1.15
diff -u -p -u -p -r1.15 freetype-config.in
--- builds/unix/freetype-config.in 23 Jun 2017 16:15:17 -0000 1.15
+++ builds/unix/freetype-config.in 20 Sep 2017 16:54:27 -0000
@@ -14,7 +14,7 @@ export LC_ALL
 
 
 # if `pkg-config' is available, use values from `freetype2.pc'
-pkg-config --version >/dev/null 2>&1
+%PKG_CONFIG% --atleast-pkgconfig-version 0.24 >/dev/null 2>&1
 if test $? -eq 0 ; then
   # note that option `--variable' is not affected by the
   # PKG_CONFIG_SYSROOT_DIR environment variable
@@ -23,17 +23,17 @@ if test $? -eq 0 ; then
     export PKG_CONFIG_SYSROOT_DIR
   fi
 
-  prefix=`pkg-config --variable prefix freetype2`
-  exec_prefix=`pkg-config --variable exec_prefix freetype2`
+  prefix=`%PKG_CONFIG% --variable prefix freetype2`
+  exec_prefix=`%PKG_CONFIG% --variable exec_prefix freetype2`
 
-  includedir=`pkg-config --variable includedir freetype2`
-  libdir=`pkg-config --variable libdir freetype2`
+  includedir=`%PKG_CONFIG% --variable includedir freetype2`
+  libdir=`%PKG_CONFIG% --variable libdir freetype2`
 
-  version=`pkg-config --modversion freetype2`
+  version=`%PKG_CONFIG% --modversion freetype2`
 
-  cflags=`pkg-config --cflags freetype2`
-  dynamic_libs=`pkg-config --libs freetype2`
-  static_libs=`pkg-config --static --libs freetype2`
+  cflags=`%PKG_CONFIG% --cflags freetype2`
+  dynamic_libs=`%PKG_CONFIG% --libs freetype2`
+  static_libs=`%PKG_CONFIG% --static --libs freetype2`
 else
   prefix="%prefix%"
   exec_prefix="%exec_prefix%"
Index: builds/unix/unix-def.in
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/unix/unix-def.in,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 unix-def.in
--- builds/unix/unix-def.in 23 Jun 2017 16:15:17 -0000 1.11
+++ builds/unix/unix-def.in 20 Sep 2017 16:54:27 -0000
@@ -62,6 +62,7 @@ version_info := @version_info@
 
 # Variables needed for `freetype-config' and `freetype.pc'.
 #
+PKG_CONFIG         := @PKG_CONFIG@
 REQUIRES_PRIVATE   := @REQUIRES_PRIVATE@
 LIBS_PRIVATE       := @LIBS_PRIVATE@
 LIBSSTATIC_CONFIG  := @LIBSSTATIC_CONFIG@
@@ -102,6 +103,7 @@ NO_OUTPUT := 2> /dev/null
 $(OBJ_BUILD)/freetype-config: $(TOP_DIR)/builds/unix/freetype-config.in
  rm -f $@ $@.tmp
  sed -e 's|%LIBSSTATIC_CONFIG%|$(LIBSSTATIC_CONFIG)|'   \
+    -e 's|%PKG_CONFIG%|$(PKG_CONFIG)|'                 \
     -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \
     -e 's|%exec_prefix%|$(exec_prefix)|'               \
     -e 's|%ft_version%|$(ft_version)|'                 \
Index: builds/wince/vc2005-ce/freetype.vcproj
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/wince/vc2005-ce/freetype.vcproj,v
retrieving revision 1.26
diff -u -p -u -p -r1.26 freetype.vcproj
--- builds/wince/vc2005-ce/freetype.vcproj 23 Jun 2017 16:15:17 -0000 1.26
+++ builds/wince/vc2005-ce/freetype.vcproj 20 Sep 2017 16:54:28 -0000
@@ -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\freetype28.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281.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\freetype28.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281.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\freetype28.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281.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\freetype28.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281.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\freetype28.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281.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\freetype28.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281.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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT.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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT.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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT.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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT.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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT.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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT.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\freetype28ST.lib" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST.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\freetype28ST.lib" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST.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\freetype28ST.lib" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST.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\freetype28ST.lib" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST.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\freetype28ST.lib" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST.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\freetype28ST.lib" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST.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\freetype28_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281_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\freetype28_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281_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\freetype28_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281_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\freetype28_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281_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\freetype28_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281_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\freetype28_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281_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\freetype28ST_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST_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\freetype28ST_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST_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\freetype28ST_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST_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\freetype28ST_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST_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\freetype28ST_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST_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\freetype28ST_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281ST_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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT_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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT_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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT_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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT_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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT_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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT_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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT.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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype281MT_D.lib" SuppressStartupBanner="true" />
       <Tool Name="VCALinkTool" />
       <Tool Name="VCXDCMakeTool" />
       <Tool Name="VCBscMakeTool" />
Index: builds/wince/vc2005-ce/index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/wince/vc2005-ce/index.html,v
retrieving revision 1.26
diff -u -p -u -p -r1.26 index.html
--- builds/wince/vc2005-ce/index.html 23 Jun 2017 16:15:17 -0000 1.26
+++ builds/wince/vc2005-ce/index.html 20 Sep 2017 16:54:28 -0000
@@ -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.8 sources:</p>
+It compiles the following libraries from the FreeType 2.8.1 sources:</p>
 
 <ul>
   <pre>
-    freetype28.lib     - release build; single threaded
-    freetype28_D.lib   - debug build;   single threaded
-    freetype28MT.lib   - release build; multi-threaded
-    freetype28MT_D.lib - debug build;   multi-threaded</pre>
+    freetype281.lib     - release build; single threaded
+    freetype281_D.lib   - debug build;   single threaded
+    freetype281MT.lib   - release build; multi-threaded
+    freetype281MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
Index: builds/wince/vc2008-ce/freetype.vcproj
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/wince/vc2008-ce/freetype.vcproj,v
retrieving revision 1.26
diff -u -p -u -p -r1.26 freetype.vcproj
--- builds/wince/vc2008-ce/freetype.vcproj 23 Jun 2017 16:15:18 -0000 1.26
+++ builds/wince/vc2008-ce/freetype.vcproj 20 Sep 2017 16:54:29 -0000
@@ -88,7 +88,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -177,7 +177,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -266,7 +266,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -355,7 +355,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -444,7 +444,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -533,7 +533,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -621,7 +621,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -709,7 +709,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -797,7 +797,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -885,7 +885,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -973,7 +973,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1061,7 +1061,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1149,7 +1149,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1236,7 +1236,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1323,7 +1323,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1410,7 +1410,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1497,7 +1497,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1584,7 +1584,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1668,7 +1668,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1753,7 +1753,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1838,7 +1838,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1923,7 +1923,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2008,7 +2008,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2093,7 +2093,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2178,7 +2178,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2263,7 +2263,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2348,7 +2348,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2433,7 +2433,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2518,7 +2518,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2603,7 +2603,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2689,7 +2689,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2775,7 +2775,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2861,7 +2861,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2947,7 +2947,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3033,7 +3033,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3119,7 +3119,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3205,7 +3205,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3279,7 +3279,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
Index: builds/wince/vc2008-ce/index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/wince/vc2008-ce/index.html,v
retrieving revision 1.26
diff -u -p -u -p -r1.26 index.html
--- builds/wince/vc2008-ce/index.html 23 Jun 2017 16:15:18 -0000 1.26
+++ builds/wince/vc2008-ce/index.html 20 Sep 2017 16:54:29 -0000
@@ -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.8 sources:</p>
+It compiles the following libraries from the FreeType 2.8.1 sources:</p>
 
 <ul>
   <pre>
-    freetype28.lib     - release build; single threaded
-    freetype28_D.lib   - debug build;   single threaded
-    freetype28MT.lib   - release build; multi-threaded
-    freetype28MT_D.lib - debug build;   multi-threaded</pre>
+    freetype281.lib     - release build; single threaded
+    freetype281_D.lib   - debug build;   single threaded
+    freetype281MT.lib   - release build; multi-threaded
+    freetype281MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
Index: builds/windows/detect.mk
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/detect.mk,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 detect.mk
--- builds/windows/detect.mk 23 Jun 2017 16:15:18 -0000 1.5
+++ builds/windows/detect.mk 20 Sep 2017 16:54:29 -0000
@@ -77,7 +77,7 @@ ifeq ($(PLATFORM),windows)
   # So we need to hack.
   #
   # Kudos to Eli Zaretskii (DJGPP guru) that helped debug it.
-  # Details are available in threads of the freetype mailing list
+  # Details are available in threads of the FreeType mailing list
   # (2004-11-11), and then in the devel mailing list (2004-11-20 to -23).
   #
   ifeq ($(OS),Windows_NT)
Index: builds/windows/vc2005/freetype.vcproj
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/vc2005/freetype.vcproj,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 freetype.vcproj
--- builds/windows/vc2005/freetype.vcproj 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/vc2005/freetype.vcproj 20 Sep 2017 16:54:29 -0000
@@ -16,7 +16,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />
       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
       <Tool Name="VCPreLinkEventTool" />
-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype28.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype281.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\freetype28MT.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype281MT.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\freetype28ST.lib" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype281ST.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\freetype28_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype281_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\freetype28ST_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype281ST_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\freetype28MT_D.lib" SuppressStartupBanner="true" />
+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype281MT_D.lib" SuppressStartupBanner="true" />
       <Tool Name="VCALinkTool" />
       <Tool Name="VCXDCMakeTool" />
       <Tool Name="VCBscMakeTool" />
Index: builds/windows/vc2005/index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/vc2005/index.html,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 index.html
--- builds/windows/vc2005/index.html 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/vc2005/index.html 20 Sep 2017 16:54:29 -0000
@@ -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.8 sources:</p>
+compiles the following libraries from the FreeType 2.8.1 sources:</p>
 
 <ul>
   <pre>
-    freetype28.lib     - release build; single threaded
-    freetype28_D.lib   - debug build;   single threaded
-    freetype28MT.lib   - release build; multi-threaded
-    freetype28MT_D.lib - debug build;   multi-threaded</pre>
+    freetype281.lib     - release build; single threaded
+    freetype281_D.lib   - debug build;   single threaded
+    freetype281MT.lib   - release build; multi-threaded
+    freetype281MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
Index: builds/windows/vc2008/freetype.vcproj
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/vc2008/freetype.vcproj,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 freetype.vcproj
--- builds/windows/vc2008/freetype.vcproj 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/vc2008/freetype.vcproj 20 Sep 2017 16:54:29 -0000
@@ -70,7 +70,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype28.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -145,7 +145,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype28MT.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -220,7 +220,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype28ST.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -292,7 +292,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype28_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -365,7 +365,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -439,7 +439,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
Index: builds/windows/vc2008/index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/vc2008/index.html,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 index.html
--- builds/windows/vc2008/index.html 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/vc2008/index.html 20 Sep 2017 16:54:29 -0000
@@ -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.8 sources:</p>
+compiles the following libraries from the FreeType 2.8.1 sources:</p>
 
 <ul>
   <pre>
-    freetype28.lib     - release build; single threaded
-    freetype28_D.lib   - debug build;   single threaded
-    freetype28MT.lib   - release build; multi-threaded
-    freetype28MT_D.lib - debug build;   multi-threaded</pre>
+    freetype281.lib     - release build; single threaded
+    freetype281_D.lib   - debug build;   single threaded
+    freetype281MT.lib   - release build; multi-threaded
+    freetype281MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
Index: builds/windows/vc2010/freetype.vcxproj
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/vc2010/freetype.vcxproj,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 freetype.vcxproj
--- builds/windows/vc2010/freetype.vcxproj 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/vc2010/freetype.vcxproj 20 Sep 2017 16:54:29 -0000
@@ -50,6 +50,32 @@
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
+    <!--
+    Switch the PlatformToolset based on the Visual Studio Version
+-->
+<PropertyGroup>
+    <!-- Assume Visual Studio 2010 / 4.0 as the default -->
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">4.0</VisualStudioVersion>
+</PropertyGroup>
+<!-- Visual Studio 2010 (4.0) -->
+<PropertyGroup Condition="'$(VisualStudioVersion)' == '4.0'">
+    <PlatformToolset>v100</PlatformToolset>
+</PropertyGroup>
+<!-- Visual Studio 2013 (12.0) -->
+<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'">
+    <PlatformToolset>v120</PlatformToolset>
+</PropertyGroup>
+<!-- Visual Studio 2015 (14.0) -->
+<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'">
+    <PlatformToolset>v140</PlatformToolset>
+</PropertyGroup>
+<!-- Visual Studio 2017 (15.0) -->
+<PropertyGroup Condition="'$(VisualStudioVersion)' == '15.0'">
+    <PlatformToolset>v141</PlatformToolset>
+</PropertyGroup>
+<!--
+    End of: Switch the PlatformToolset based on the Visual Studio Version
+-->
   <PropertyGroup Label="Globals">
     <ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>
   </PropertyGroup>
@@ -58,73 +84,61 @@
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v100</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -191,18 +205,18 @@
     <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'" />
     <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'" />
     <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'" />
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">freetype28d</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">freetype28d</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|Win32'">freetype28MTd</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|x64'">freetype28MTd</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|Win32'">freetype28STd</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|x64'">freetype28STd</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">freetype28</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">freetype28</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|Win32'">freetype28MT</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|x64'">freetype28MT</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'">freetype28ST</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'">freetype28ST</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">freetype281d</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">freetype281d</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|Win32'">freetype281MTd</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|x64'">freetype281MTd</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|Win32'">freetype281STd</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|x64'">freetype281STd</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">freetype281</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">freetype281</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|Win32'">freetype281MT</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|x64'">freetype281MT</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'">freetype281ST</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'">freetype281ST</TargetName>
   </PropertyGroup>
   <Import Project="$(SolutionDir)\freetype.user.props" Condition="exists('$(SolutionDir)\freetype.user.props')" Label="UserProperties" />
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
Index: builds/windows/vc2010/index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/vc2010/index.html,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 index.html
--- builds/windows/vc2010/index.html 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/vc2010/index.html 20 Sep 2017 16:54:29 -0000
@@ -12,16 +12,16 @@
 <p>This directory contains a project file for Visual C++ (VS.NET&nbsp;2010
 or newer), named <tt>freetype.vcxproj</tt>, and Visual Studio, called
 <tt>freetype.sln</tt>.  It compiles the following libraries from the
-FreeType 2.8 sources:</p>
+FreeType 2.8.1 sources:</p>
 
 <ul>
   <pre>
-    freetype28.lib    - release build
-    freetype28d.lib   - debug build
-    freetype28ST.lib  - release build; single threaded
-    freetype28STd.lib - debug build;   single threaded
-    freetype28MT.lib  - release build; multi-threaded
-    freetype28MTd.lib - debug build;   multi-threaded</pre>
+    freetype281.lib    - release build
+    freetype281d.lib   - debug build
+    freetype281ST.lib  - release build; single threaded
+    freetype281STd.lib - debug build;   single threaded
+    freetype281MT.lib  - release build; multi-threaded
+    freetype281MTd.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Both Win32 and x64 builds are supported.</p>
Index: builds/windows/visualc/freetype.dsp
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/visualc/freetype.dsp,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 freetype.dsp
--- builds/windows/visualc/freetype.dsp 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/visualc/freetype.dsp 20 Sep 2017 16:54:29 -0000
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LIB32=link.exe -lib
 # ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281.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\freetype28_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281_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\freetype28_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT_D.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype281_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT_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\freetype28.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype281.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT.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\freetype28.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype28ST.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype281ST.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\freetype28_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28ST_D.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281ST_D.lib"
 
 !ENDIF
 
Index: builds/windows/visualc/freetype.vcproj
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/visualc/freetype.vcproj,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 freetype.vcproj
--- builds/windows/visualc/freetype.vcproj 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/visualc/freetype.vcproj 20 Sep 2017 16:54:30 -0000
@@ -69,7 +69,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -144,7 +144,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -219,7 +219,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -291,7 +291,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -364,7 +364,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -438,7 +438,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
Index: builds/windows/visualc/index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/visualc/index.html,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 index.html
--- builds/windows/visualc/index.html 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/visualc/index.html 20 Sep 2017 16:54:30 -0000
@@ -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.8 sources:</p>
+compiles the following libraries from the FreeType 2.8.1 sources:</p>
 
 <ul>
   <pre>
-    freetype28.lib     - release build; single threaded
-    freetype28_D.lib   - debug build;   single threaded
-    freetype28MT.lib   - release build; multi-threaded
-    freetype28MT_D.lib - debug build;   multi-threaded</pre>
+    freetype281.lib     - release build; single threaded
+    freetype281_D.lib   - debug build;   single threaded
+    freetype281MT.lib   - release build; multi-threaded
+    freetype281MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
Index: builds/windows/visualce/freetype.dsp
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/visualce/freetype.dsp,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 freetype.dsp
--- builds/windows/visualce/freetype.dsp 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/visualce/freetype.dsp 20 Sep 2017 16:54:30 -0000
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LIB32=link.exe -lib
 # ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281.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\freetype28_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281_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\freetype28_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT_D.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype281_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT_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\freetype28.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28MT.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype281.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281MT.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\freetype28.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype28ST.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype281ST.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\freetype28_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype28ST_D.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype281_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype281ST_D.lib"
 
 !ENDIF
 
Index: builds/windows/visualce/freetype.vcproj
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/visualce/freetype.vcproj,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 freetype.vcproj
--- builds/windows/visualce/freetype.vcproj 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/visualce/freetype.vcproj 20 Sep 2017 16:54:30 -0000
@@ -87,7 +87,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -162,7 +162,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -237,7 +237,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -309,7 +309,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -382,7 +382,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -456,7 +456,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -534,7 +534,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -619,7 +619,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -704,7 +704,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -785,7 +785,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -867,7 +867,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -950,7 +950,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1036,7 +1036,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1121,7 +1121,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1206,7 +1206,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1287,7 +1287,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1369,7 +1369,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1452,7 +1452,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1538,7 +1538,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1623,7 +1623,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1708,7 +1708,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -1789,7 +1789,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1871,7 +1871,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -1954,7 +1954,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2040,7 +2040,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2125,7 +2125,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2210,7 +2210,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -2291,7 +2291,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2373,7 +2373,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2456,7 +2456,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2542,7 +2542,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2627,7 +2627,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2712,7 +2712,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -2793,7 +2793,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2875,7 +2875,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -2958,7 +2958,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3044,7 +3044,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28.lib"
+ OutputFile="..\..\..\objs\freetype281.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3129,7 +3129,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT.lib"
+ OutputFile="..\..\..\objs\freetype281MT.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3214,7 +3214,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST.lib"
+ OutputFile="..\..\..\objs\freetype281ST.lib"
  />
  <Tool
  Name="VCALinkTool"
@@ -3295,7 +3295,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28_D.lib"
+ OutputFile="..\..\..\objs\freetype281_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3377,7 +3377,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28ST_D.lib"
+ OutputFile="..\..\..\objs\freetype281ST_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
@@ -3460,7 +3460,7 @@
  />
  <Tool
  Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype28MT_D.lib"
+ OutputFile="..\..\..\objs\freetype281MT_D.lib"
  SuppressStartupBanner="true"
  />
  <Tool
Index: builds/windows/visualce/index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/builds/windows/visualce/index.html,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 index.html
--- builds/windows/visualce/index.html 23 Jun 2017 16:15:18 -0000 1.12
+++ builds/windows/visualce/index.html 20 Sep 2017 16:54:30 -0000
@@ -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.8 sources:</p>
+It compiles the following libraries from the FreeType 2.8.1 sources:</p>
 
 <ul>
   <pre>
-    freetype28.lib     - release build; single threaded
-    freetype28_D.lib   - debug build;   single threaded
-    freetype28MT.lib   - release build; multi-threaded
-    freetype28MT_D.lib - debug build;   multi-threaded</pre>
+    freetype281.lib     - release build; single threaded
+    freetype281_D.lib   - debug build;   single threaded
+    freetype281MT.lib   - release build; multi-threaded
+    freetype281MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
Index: devel/ftoption.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/devel/ftoption.h,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 ftoption.h
--- devel/ftoption.h 23 Jun 2017 16:15:18 -0000 1.21
+++ devel/ftoption.h 20 Sep 2017 16:54:30 -0000
@@ -107,22 +107,19 @@ FT_BEGIN_HEADER
 
   /*************************************************************************/
   /*                                                                       */
-  /* Uncomment the line below if you want to activate sub-pixel rendering  */
-  /* (a.k.a. LCD rendering, or ClearType) in this build of the library.    */
+  /* Uncomment the line below if you want to activate LCD rendering        */
+  /* technology similar to ClearType in this build of the library.  This   */
+  /* technology triples the resolution in the direction color subpixels.   */
+  /* To mitigate color fringes inherent to this technology, you also need  */
+  /* to explicitly set up LCD filtering.                                   */
   /*                                                                       */
   /* Note that this feature is covered by several Microsoft patents        */
   /* and should not be activated in any default build of the library.      */
+  /* When this macro is not defined, FreeType offers alternative LCD       */
+  /* rendering technology that produces excellent output without LCD       */
+  /* filtering.                                                            */
   /*                                                                       */
-  /* 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 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.                */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
 
   /*************************************************************************/
@@ -327,7 +324,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*   - The TrueType driver will provide its own set of glyph names,      */
   /*     if you build it to support postscript names in the TrueType       */
-  /*     `post' table.                                                     */
+  /*     `post' table, but will not synthesize a missing Unicode charmap.  */
   /*                                                                       */
   /*   - The Type 1 driver will not be able to synthesize a Unicode        */
   /*     charmap out of the glyphs found in the fonts.                     */
Index: docs/CHANGES
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/CHANGES,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 CHANGES
--- docs/CHANGES 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/CHANGES 20 Sep 2017 16:54:31 -0000
@@ -1,4 +1,87 @@
 
+CHANGES BETWEEN 2.8 and 2.8.1
+
+  I. IMPORTANT BUG FIXES
+
+    - B/W  hinting   of  TrueType   fonts  didn't  work   properly  if
+      interpreter version 38 or 40 was selected.
+
+    - Some severe  problems within the handling  of TrueType Variation
+      Fonts were found and fixed.
+
+    - Function `FT_Set_Var_Design_Coordinates' didn't correctly handle
+      the case with less input coordinates than axes.
+
+
+  II. IMPORTANT CHANGES
+
+    - By default,  FreeType  now offers  high  quality  LCD-optimized
+      output  without resorting to ClearType techniques of resolution
+      tripling and filtering.  In this method,  called Harmony,  each
+      color channel is generated separately  after shifting the glyph
+      outline,  capitalizing on the fact  that the color grids on LCD
+      panels  are  shifted  by  a third  of  a pixel.  This output is
+      indistinguishable from ClearType with a light 3-tap filter.
+
+
+  III. MISCELLANEOUS
+
+    - Using the  new function `FT_Get_Var_Axis_Flags',  an application
+      can access the `flags' field  of a variation axis (introduced in
+      OpenType version 1.8.2)
+
+    - More sanity checks.
+
+    - The  internal representation  of buffers  for LCD  rendering has
+      changed (to be more precise, the amount of padding gets computed
+      differently).  Applications  that use  the FreeType API  are not
+      affected.
+
+    - To  reset all  design axis  values of  a variation  font to  its
+      default values you can now say
+
+        error = FT_Set_Var_Design_Coordinates( face, 0, NULL );
+
+      This  also works  with functions  `FT_Set_MM_Design_Coordinates'
+      and `FT_Set_MM_Blend_Coordinates'.
+
+    - FreeType  now synthesizes  a  missing Unicode  cmap for  (older)
+      TrueType fonts also if glyph names are available.
+
+    - FreeType  has  improved  handling   of  BDF  fonts  without  the
+      `POINT_SIZE', `RESOLUTION_X', or  `RESOLUTION_Y' properties; the
+      library now  uses the values of  the `SIZE' keyword if  they are
+      missing.   Previously,   `SIZE'  was  completely   ignored,  and
+      FreeType used heuristic values instead.
+
+    - Multiple calls to `FT_Bitmap_Convert' do work now as advertised.
+      Previously,  they failed with an assertion error if there was an
+      empty bitmap between non-empty ones.
+
+    - The warping option  has moved  from `light'  to `normal' hinting
+      where  it replaces  the original hinting algorithm.  The `light'
+      mode is now always void of any hinting in x-direction.
+
+    - 16bit  compiler  support is  now  officially  ended.  We  didn't
+      provide any maintenance  since many years,  and given that there
+      were no error  or problem reports either it seems  that it is no
+      longer needed.
+
+    - The `ftgrid' demo program can now toggle the display of grid lines
+      with the `G' key.
+
+    - The `ftgrid' demo program can toggle a different set of colors
+      (suitable to color-blind people) with the `C' key.
+
+    - The `ftgrid' demo program now supports the `-e' command line option
+      to select a cmap.
+
+    - The `ftdump' demo program has a new command line option `-t' to
+      output the SFNT table list.
+
+
+======================================================================
+
 CHANGES BETWEEN 2.7.1 and 2.8
 
   I. IMPORTANT CHANGES
@@ -44,6 +127,20 @@ CHANGES BETWEEN 2.7.1 and 2.8
       configuration option.   However, it  is strongly  recommended to
       avoid that, adjusting font sizes instead.
 
+    - Global size  metrics values  in the  `FT_Size_Metrics' structure
+      can be  different for TrueType  fonts.  Reason is that  in older
+      FreeType  versions  the  metrics  were  rounded  differently  to
+      integer pixels compared  to all other font  formats, yielding an
+      inconsistent behaviour if you used non-native hinting.  Starting
+      with this  version, global size  metrics for TrueType  fonts are
+      handled the same as other  font formats: `ascender' gets rounded
+      up,  `descender'  gets  rounded  down,  `height'  gets  normally
+      rounded, and `max_advance' gets normally rounded, too.
+
+      If you need more precise values of (global) ascender, descender,
+      height, or  `max_advance', please take the  corresponding values
+      from the `FT_Face' structure and scale them manually.
+
     - If a TrueType font gets loaded with FT_LOAD_NO_HINTING, FreeType
       now scales  the font linearly  again (bug introduced  in version
       2.4.6).
@@ -748,7 +845,7 @@ CHANGES BETWEEN 2.5.2 and 2.5.3
            and install FreeType again.
 
       With FreeType's  `configure' script the procedure  boils down to
-      configure, build, and install Freetype, then configure, compile,
+      configure, build, and install FreeType, then configure, compile,
       and  install  HarfBuzz,  then configure,  compile,  and  install
       FreeType again (after executing `make distclean').
 
Index: docs/INSTALL.VMS
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/INSTALL.VMS,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 INSTALL.VMS
--- docs/INSTALL.VMS 23 Jun 2017 16:15:18 -0000 1.4
+++ docs/INSTALL.VMS 20 Sep 2017 16:54:31 -0000
@@ -1,7 +1,7 @@
-How to build the freetype2 library on VMS
+How to build the FreeType 2 library on VMS
 -----------------------------------------
 
-It is actually very  straightforward to install the Freetype2 library.
+It is actually very straightforward to install the FreeType 2 library.
 Just  execute vms_make.com from  the toplevel  directory to  build the
 library.  This procedure currently accepts the following options:
 
@@ -15,10 +15,10 @@ ccopt=<value>
   Options to pass to the C compiler e.g. ccopt=/float=ieee
 
 In case you did download the demos, place them in a separate directory
-sharing the same toplevel as the directory of Freetype2 and follow the
-same  instructions as  above  for  the demos  from  there.  The  build
-process relies on this to figure the location of the Freetype2 include
-files.
+sharing the same top level  as the directory of FreeType 2  and follow
+the same instructions as above for  the demos from  there.  The  build
+process relies on this  to figure out  the location  of the FreeType 2
+include files.
 
 
 To rebuild  the  sources it is necessary to  have MMS/MMK installed on
Index: docs/VERSIONS.TXT
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/VERSIONS.TXT,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 VERSIONS.TXT
--- docs/VERSIONS.TXT 23 Jun 2017 16:15:18 -0000 1.4
+++ docs/VERSIONS.TXT 20 Sep 2017 16:54:31 -0000
@@ -52,6 +52,7 @@ on _most_ systems, but not all of them:
 
     release     libtool     so
   -------------------------------
+     2.8.1      21.0.15   6.15.0
      2.8.0      20.0.14   6.14.0
      2.7.1      19.0.13   6.13.0
      2.7.0      18.6.12   6.12.6
@@ -99,7 +100,7 @@ other release numbers.
 #include <ft2build.h>
 #include FT_FREETYPE_H
 #if (FREETYPE_MAJOR*1000 + FREETYPE_MINOR)*1000 + FREETYPE_PATCH < 2000009
-#error Freetype version too low.
+#error FreeType version too low.
 #endif
   ],
   [AC_MSG_RESULT(yes)
Index: docs/freetype-config.1
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/freetype-config.1,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 freetype-config.1
--- docs/freetype-config.1 23 Jun 2017 16:15:18 -0000 1.11
+++ docs/freetype-config.1 20 Sep 2017 16:54:31 -0000
@@ -1,4 +1,4 @@
-.TH FREETYPE-CONFIG 1 "May 2017" "FreeType 2.8"
+.TH FREETYPE-CONFIG 1 "September 2017" "FreeType 2.8.1"
 .
 .
 .SH NAME
Index: docs/reference/ft2-auto_hinter.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-auto_hinter.html,v
retrieving revision 1.15
diff -u -p -u -p -r1.15 ft2-auto_hinter.html
--- docs/reference/ft2-auto_hinter.html 23 Jun 2017 16:15:18 -0000 1.15
+++ docs/reference/ft2-auto_hinter.html 20 Sep 2017 16:54:31 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="auto_hinter">The auto-hinter</h1>
 <h2>Synopsis</h2>
@@ -373,7 +373,7 @@
 
 <p><b>Experimental</b> <b>only</b></p>
 <p>If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to activate the warp hinting code in the auto-hinter, this property switches warping on and off.</p>
-<p>Warping only works in &lsquo;light&rsquo; auto-hinting mode. The idea of the code is to slightly scale and shift a glyph along the non-hinted dimension (which is usually the horizontal axis) so that as much of its segments are aligned (more or less) to the grid. To find out a glyph's optimal scaling and shifting value, various parameter combinations are tried and scored.</p>
+<p>Warping only works in &lsquo;normal&rsquo; auto-hinting mode replacing it. The idea of the code is to slightly scale and shift a glyph along the non-hinted dimension (which is usually the horizontal axis) so that as much of its segments are aligned (more or less) to the grid. To find out a glyph's optimal scaling and shifting value, various parameter combinations are tried and scored.</p>
 <p>By default, warping is off. The example below shows how to switch on warping (omitting the error handling).</p>
 <pre class="colored">
   FT_Library  library;
@@ -390,7 +390,7 @@
 <p>This property can be used with <a href="ft2-module_management.html#FT_Property_Get">FT_Property_Get</a> also.</p>
 <p>This property can be set via the &lsquo;FREETYPE_PROPERTIES&rsquo; environment variable (using values 1 and 0 for &lsquo;on&rsquo; and &lsquo;off&rsquo;, respectively).</p>
 <p>The warping code can also change advance widths. Have a look at the &lsquo;lsb_delta&rsquo; and &lsquo;rsb_delta&rsquo; fields in the <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a> structure for details on improving inter-glyph distances while rendering.</p>
-<p>Since warping is a global property of the auto-hinter it is best to change its value before rendering any face. Otherwise, you should reload all faces that get auto-hinted in &lsquo;light&rsquo; hinting mode.</p>
+<p>Since warping is a global property of the auto-hinter it is best to change its value before rendering any face. Otherwise, you should reload all faces that get auto-hinted in &lsquo;normal&rsquo; hinting mode.</p>
 
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
Index: docs/reference/ft2-base_interface.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-base_interface.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-base_interface.html
--- docs/reference/ft2-base_interface.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-base_interface.html 20 Sep 2017 16:54:31 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="base_interface">Base Interface</h1>
 <h2>Synopsis</h2>
@@ -244,7 +244,7 @@
 <p>The currently active charmap is available as &lsquo;face-&gt;charmap&rsquo;. You should call <a href="ft2-base_interface.html#FT_Set_Charmap">FT_Set_Charmap</a> to change it.</p>
 
 <h4>note</h4>
-<p>When a new face is created (either through <a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a> or <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>), the library looks for a Unicode charmap within the list and automatically activates it.</p>
+<p>When a new face is created (either through <a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a> or <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>), the library looks for a Unicode charmap within the list and automatically activates it. If there is no Unicode charmap, FreeType doesn't set an &lsquo;active&rsquo; charmap.</p>
 
 <h4>also</h4>
 <p>See <a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a> for the publicly accessible fields of a given character map.</p>
@@ -814,7 +814,11 @@
 </table>
 
 <h4>note</h4>
-<p>The scaling values, if relevant, are determined first during a size changing operation. The remaining fields are then set by the driver. For scalable formats, they are usually set to scaled values of the corresponding fields in <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a>. Some values like ascender or descender are rounded for historical reasons; more precise values (for outline fonts) can be derived by scaling the corresponding <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> values manually.</p>
+<p>The scaling values, if relevant, are determined first during a size changing operation. The remaining fields are then set by the driver. For scalable formats, they are usually set to scaled values of the corresponding fields in <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a>. Some values like ascender or descender are rounded for historical reasons; more precise values (for outline fonts) can be derived by scaling the corresponding <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> values manually, with code similar to the following.</p>
+<pre class="colored">
+  scaled_ascender = FT_MulFix( face-&gt;root.ascender,
+                               size_metrics-&gt;y_scale );
+</pre>
 <p>Note that due to glyph hinting and the selected rendering mode these values are usually not exact; consequently, they must be treated as unreliable with an error margin of at least one pixel!</p>
 <p>Indeed, the only way to get the exact metrics is to render <i>all</i> glyphs. As this would be a definite performance hit, it is up to client applications to perform such computations.</p>
 <p>The &lsquo;FT_Size_Metrics&rsquo; structure is valid for bitmap fonts also.</p>
@@ -952,7 +956,7 @@
      and add it to `origin_x'&gt;
 
     origin_x += slot-&gt;advance.x;
-    origin_x += slot-&gt;rsb_delta - slot-&gt;lsb_relta;
+    origin_x += slot-&gt;rsb_delta - slot-&gt;lsb_delta;
   endfor
 </pre>
 <p>Here is another small pseudo code fragment that shows how to use &lsquo;lsb_delta&rsquo; and &lsquo;rsb_delta&rsquo; to improve integer positioning of glyphs:</p>
@@ -968,9 +972,9 @@
 
     &lt;load glyph with `FT_Load_Glyph'&gt;
 
-    if ( prev_rsb_delta - slot-&gt;lsb_delta &gt;= 32 )
+    if ( prev_rsb_delta - slot-&gt;lsb_delta &gt;  32 )
       origin_x -= 64;
-    else if ( prev_rsb_delta - slot-&gt;lsb_delta &lt; -32 )
+    else if ( prev_rsb_delta - slot-&gt;lsb_delta &lt; -31 )
       origin_x += 64;
 
     prev_rsb_delta = slot-&gt;rsb_delta;
@@ -2278,7 +2282,7 @@
 </table>
 
 <h4>note</h4>
-<p>The LCD-optimized glyph bitmaps produced by &lsquo;FT_Render_Glyph&rsquo; can be filtered to reduce color-fringes by using <a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a> (not active in the default builds). It is up to the caller to either call &lsquo;FT_Library_SetLcdFilter&rsquo; (if available) or do the filtering itself.</p>
+<p>Should you define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your &lsquo;ftoption.h&rsquo;, which enables patented ClearType-style rendering, the LCD-optimized glyph bitmaps should be filtered to reduce color fringes inherent to this technology. You can either set up LCD filtering with <a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a> or <a href="ft2-base_interface.html#FT_Face_Properties">FT_Face_Properties</a>, or do the filtering yourself. The default FreeType LCD rendering technology does not require filtering.</p>
 <p>The selected render mode only affects vector glyphs of a font. Embedded bitmaps often have a different pixel mode like <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a>. You can use <a href="ft2-bitmap_handling.html#FT_Bitmap_Convert">FT_Bitmap_Convert</a> to transform them into 8-bit pixmaps.</p>
 
 <hr>
Index: docs/reference/ft2-basic_types.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-basic_types.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-basic_types.html
--- docs/reference/ft2-basic_types.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-basic_types.html 20 Sep 2017 16:54:31 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="basic_types">Basic Data Types</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-bdf_fonts.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-bdf_fonts.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-bdf_fonts.html
--- docs/reference/ft2-bdf_fonts.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-bdf_fonts.html 20 Sep 2017 16:54:31 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="bdf_fonts">BDF and PCF Files</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-bitmap_handling.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-bitmap_handling.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-bitmap_handling.html
--- docs/reference/ft2-bitmap_handling.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-bitmap_handling.html 20 Sep 2017 16:54:31 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="bitmap_handling">Bitmap Handling</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-bzip2.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-bzip2.html,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 ft2-bzip2.html
--- docs/reference/ft2-bzip2.html 23 Jun 2017 16:15:18 -0000 1.21
+++ docs/reference/ft2-bzip2.html 20 Sep 2017 16:54:31 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="bzip2">BZIP2 Streams</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-cache_subsystem.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-cache_subsystem.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-cache_subsystem.html
--- docs/reference/ft2-cache_subsystem.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-cache_subsystem.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="cache_subsystem">Cache Sub-System</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-cff_driver.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-cff_driver.html,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 ft2-cff_driver.html
--- docs/reference/ft2-cff_driver.html 23 Jun 2017 16:15:18 -0000 1.14
+++ docs/reference/ft2-cff_driver.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="cff_driver">The CFF driver</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-cid_fonts.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-cid_fonts.html,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 ft2-cid_fonts.html
--- docs/reference/ft2-cid_fonts.html 23 Jun 2017 16:15:18 -0000 1.29
+++ docs/reference/ft2-cid_fonts.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="cid_fonts">CID Fonts</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-computations.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-computations.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-computations.html
--- docs/reference/ft2-computations.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-computations.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="computations">Computations</h1>
 <h2>Synopsis</h2>
@@ -229,6 +229,9 @@
 <h4>return</h4>
 <p>&lsquo;a&rsquo; rounded to the nearest 16.16 fixed integer, halfway cases away from zero.</p>
 
+<h4>note</h4>
+<p>The function uses wrap-around arithmetic.</p>
+
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
 
@@ -252,6 +255,9 @@
 <h4>return</h4>
 <p>&lsquo;a&rsquo; rounded towards plus infinity.</p>
 
+<h4>note</h4>
+<p>The function uses wrap-around arithmetic.</p>
+
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
 
@@ -336,6 +342,7 @@
 
 <h4>note</h4>
 <p>The result is undefined if either &lsquo;a&rsquo; or &lsquo;b&rsquo; is zero.</p>
+<p>Since the function uses wrap-around arithmetic, results become meaningless if the arguments are very large.</p>
 
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
Index: docs/reference/ft2-error_code_values.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-error_code_values.html,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 ft2-error_code_values.html
--- docs/reference/ft2-error_code_values.html 23 Jun 2017 16:15:18 -0000 1.7
+++ docs/reference/ft2-error_code_values.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="error_code_values">Error Code Values</h1>
 <h2>Synopsis</h2>
@@ -295,6 +295,8 @@
                 "invalid PostScript (post) table" )
   FT_ERRORDEF_( DEF_In_Glyf_Bytecode,                        0x9C,
                 "found FDEF or IDEF opcode in glyf bytecode" )
+  FT_ERRORDEF_( Missing_Bitmap,                              0x9D,
+                "missing bitmap in strike" )
 
   /* CFF, CID, and Type 1 errors */
 
Index: docs/reference/ft2-error_enumerations.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-error_enumerations.html,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 ft2-error_enumerations.html
--- docs/reference/ft2-error_enumerations.html 23 Jun 2017 16:15:18 -0000 1.7
+++ docs/reference/ft2-error_enumerations.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,15 +100,15 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="error_enumerations">Error Enumerations</h1>
 
 <p>The header file &lsquo;fterrors.h&rsquo; (which is automatically included by &lsquo;freetype.h&rsquo; defines the handling of FreeType's enumeration constants. It can also be used to generate error message strings with a small macro trick explained below.</p>
 <p><b>Error</b> <b>Formats</b></p>
-<p>The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be defined in &lsquo;ftoption.h&rsquo; in order to make the higher byte indicate the module where the error has happened (this is not compatible with standard builds of FreeType&amp;nbsp;2, however). See the file &lsquo;ftmoderr.h&rsquo; for more details.</p>
+<p>The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be defined in &lsquo;ftoption.h&rsquo; in order to make the higher byte indicate the module where the error has happened (this is not compatible with standard builds of FreeType&nbsp;2, however). See the file &lsquo;ftmoderr.h&rsquo; for more details.</p>
 <p><b>Error</b> <b>Message</b> <b>Strings</b></p>
-<p>Error definitions are set up with special macros that allow client applications to build a table of error message strings. The strings are not included in a normal build of FreeType&amp;nbsp;2 to save space (most client applications do not use them).</p>
+<p>Error definitions are set up with special macros that allow client applications to build a table of error message strings. The strings are not included in a normal build of FreeType&nbsp;2 to save space (most client applications do not use them).</p>
 <p>To do so, you have to define the following macros before including this file.</p>
 <pre class="colored">
   FT_ERROR_START_LIST
Index: docs/reference/ft2-font_formats.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-font_formats.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-font_formats.html
--- docs/reference/ft2-font_formats.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-font_formats.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="font_formats">Font Formats</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-gasp_table.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-gasp_table.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-gasp_table.html
--- docs/reference/ft2-gasp_table.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-gasp_table.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="gasp_table">Gasp Table</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-glyph_management.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-glyph_management.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-glyph_management.html
--- docs/reference/ft2-glyph_management.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-glyph_management.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="glyph_management">Glyph Management</h1>
 <h2>Synopsis</h2>
@@ -287,6 +287,9 @@
 
 <h4>return</h4>
 <p>FreeType error code. 0&nbsp;means success.</p>
+
+<h4>note</h4>
+<p>Because &lsquo;*aglyph-&gt;advance.x&rsquo; and '*aglyph-&gt;advance.y' are 16.16 fixed-point numbers, &lsquo;slot-&gt;advance.x&rsquo; and &lsquo;slot-&gt;advance.y&rsquo; (which are in 26.6 fixed-point format) must be in the range ]-32768;32768[.</p>
 
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
Index: docs/reference/ft2-glyph_stroker.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-glyph_stroker.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-glyph_stroker.html
--- docs/reference/ft2-glyph_stroker.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-glyph_stroker.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="glyph_stroker">Glyph Stroker</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-glyph_variants.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-glyph_variants.html,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 ft2-glyph_variants.html
--- docs/reference/ft2-glyph_variants.html 23 Jun 2017 16:15:18 -0000 1.29
+++ docs/reference/ft2-glyph_variants.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="glyph_variants">Unicode Variation Sequences</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-gx_validation.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-gx_validation.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-gx_validation.html
--- docs/reference/ft2-gx_validation.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-gx_validation.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="gx_validation">TrueTypeGX/AAT Validation</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-gzip.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-gzip.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-gzip.html
--- docs/reference/ft2-gzip.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-gzip.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="gzip">GZIP Streams</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-header_file_macros.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-header_file_macros.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-header_file_macros.html
--- docs/reference/ft2-header_file_macros.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-header_file_macros.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="header_file_macros">Header File Macros</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-header_inclusion.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-header_inclusion.html,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 ft2-header_inclusion.html
--- docs/reference/ft2-header_inclusion.html 23 Jun 2017 16:15:18 -0000 1.11
+++ docs/reference/ft2-header_inclusion.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="header_inclusion">FreeType's header inclusion scheme</h1>
 
Index: docs/reference/ft2-incremental.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-incremental.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-incremental.html
--- docs/reference/ft2-incremental.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-incremental.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="incremental">Incremental Loading</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-index.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-index.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-index.html
--- docs/reference/ft2-index.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-index.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,280 +100,281 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <table class="index">
-<tr><td><a href="ft2-header_file_macros.html#':'">':'</a></td><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_CARDINAL</a></td><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_INTEGER</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_NONE</a></td><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_GetCounts">FT_Stroker_GetCounts</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_Property">BDF_Property</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_Stroker_LineCap</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_LcdFilter">FT_LCD_FILTER_LEGACY1</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</a></td></tr>
-<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PropertyType</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_LineTo">FT_Stroker_LineTo</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceDict">CID_FaceDict</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_New">FT_Stroker_New</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ParseOutline">FT_Stroker_ParseOutline</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceInfo">CID_FaceInfo</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_Stroker_Rewind">FT_Stroker_Rewind</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a></td><td><a href="ft2-base_interface.html#FT_Library">FT_Library</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Set">FT_Stroker_Set</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_FontDict">CID_FontDict</a></td><td><a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#CID_Info">CID_Info</a></td><td><a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilterWeights">FT_Library_SetLcdFilterWeights</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-auto_hinter.html#darkening-parameters(autofit)">darkening-parameters (autofit)</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_WORDS</a></td></tr>
-<tr><td><a href="ft2-cff_driver.html#darkening-parameters(cff)">darkening-parameters (cff)</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_ARGS_ARE_XY_VALUES</a></td></tr>
-<tr><td><a href="ft2-auto_hinter.html#default-script">default-script</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_ROUND_XY_TO_GRID</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_Destructor">FT_List_Destructor</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-version.html#FREETYPE_XXX">FREETYPE_MINOR</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_USE_MY_METRICS</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_Find">FT_List_Find</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_XXX</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_FLAG_XXX">FT_SUBGLYPH_FLAG_XY_SCALE</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_Iterate">FT_List_Iterate</a></td><td><a href="ft2-base_interface.html#FT_SubGlyph">FT_SubGlyph</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_Iterator">FT_List_Iterator</a></td><td><a href="ft2-header_file_macros.html#FT_SYNTHESIS_H">FT_SYNTHESIS_H</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_List_Remove">FT_List_Remove</a></td><td><a href="ft2-header_file_macros.html#FT_SYSTEM_H">FT_SYSTEM_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_List_Up">FT_List_Up</a></td><td><a href="ft2-basic_types.html#FT_Tag">FT_Tag</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_ListNode">FT_ListNode</a></td><td><a href="ft2-computations.html#FT_Tan">FT_Tan</a></td></tr>
-<tr><td><a href="ft2-system_interface.html#FT_Alloc_Func">FT_Alloc_Func</a></td><td><a href="ft2-list_processing.html#FT_ListNodeRec">FT_ListNodeRec</a></td><td><a href="ft2-header_file_macros.html#FT_TRIGONOMETRY_H">FT_TRIGONOMETRY_H</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_ANGLE_2PI">FT_ANGLE_2PI</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_DRIVER_H">FT_TRUETYPE_DRIVER_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_BITMAP_METRICS_ONLY</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_NONE</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_COLOR</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_PATENTED</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_COMPUTE_METRICS</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">FT_Angle</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_IDS_H">FT_TRUETYPE_IDS_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_DEFAULT</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_Atan2">FT_Atan2</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_TAGS_H">FT_TRUETYPE_TAGS_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_IGNORE_GLOBAL_ADVANCE_WIDTH</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TrueTypeEngineType</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_IGNORE_TRANSFORM</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Free">FT_TrueTypeGX_Free</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_AUTOHINTER_H">FT_AUTOHINTER_H</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_Validate">FT_TrueTypeGX_Validate</a></td></tr>
-<tr><td><a href="ft2-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_CJK</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_TYPE1_TABLES_H">FT_TYPE1_TABLES_H</a></td></tr>
-<tr><td><a href="ft2-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_INDIC</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_TYPES_H">FT_TYPES_H</a></td></tr>
-<tr><td><a href="ft2-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_LATIN</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_UFWord">FT_UFWord</a></td></tr>
-<tr><td><a href="ft2-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_NONE</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_UInt">FT_UInt</a></td></tr>
-<tr><td><a href="ft2-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_XXX</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_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_SCALE</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_PEDANTIC</a></td><td><a href="ft2-basic_types.html#FT_UInt64">FT_UInt64</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_RENDER</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_BITMAP_H">FT_BITMAP_H</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-basic_types.html#FT_Bitmap">FT_Bitmap</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_Convert">FT_Bitmap_Convert</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_Copy">FT_Bitmap_Copy</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_Done">FT_Bitmap_Done</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_Embolden">FT_Bitmap_Embolden</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-bitmap_handling.html#FT_Bitmap_Init">FT_Bitmap_Init</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-base_interface.html#FT_Bitmap_Size">FT_Bitmap_Size</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_BitmapGlyph">FT_BitmapGlyph</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-glyph_management.html#FT_BitmapGlyphRec">FT_BitmapGlyphRec</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_Bool">FT_Bool</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_Byte">FT_Byte</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-basic_types.html#FT_Bytes">FT_Bytes</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_BZIP2_H">FT_BZIP2_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_CHARMAP_H">FT_CACHE_CHARMAP_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_H">FT_CACHE_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-header_file_macros.html#FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</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-header_file_macros.html#FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</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-computations.html#FT_CeilFix">FT_CeilFix</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-header_file_macros.html#FT_CFF_DRIVER_H">FT_CFF_DRIVER_H</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-cff_driver.html#FT_CFF_HINTING_XXX">FT_CFF_HINTING_ADOBE</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-cff_driver.html#FT_CFF_HINTING_XXX">FT_CFF_HINTING_FREETYPE</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-cff_driver.html#FT_CFF_HINTING_XXX">FT_CFF_HINTING_XXX</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-basic_types.html#FT_Char">FT_Char</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-base_interface.html#FT_CharMap">FT_CharMap</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-base_interface.html#FT_CharMapRec">FT_CharMapRec</a></td><td><a href="ft2-module_management.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_CID_H">FT_CID_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-gx_validation.html#FT_ClassicKern_Free">FT_ClassicKern_Free</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-gx_validation.html#FT_ClassicKern_Validate">FT_ClassicKern_Validate</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-header_file_macros.html#FT_CONFIG_CONFIG_H">FT_CONFIG_CONFIG_H</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-header_file_macros.html#FT_CONFIG_MODULES_H">FT_CONFIG_MODULES_H</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-header_file_macros.html#FT_CONFIG_OPTIONS_H">FT_CONFIG_OPTIONS_H</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-header_file_macros.html#FT_CONFIG_STANDARD_LIBRARY_H">FT_CONFIG_STANDARD_LIBRARY_H</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-computations.html#FT_Cos">FT_Cos</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-basic_types.html#FT_Data">FT_Data</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-computations.html#FT_DivFix">FT_DivFix</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_Done_Face">FT_Done_Face</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_Done_FreeType">FT_Done_FreeType</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-glyph_management.html#FT_Done_Glyph">FT_Done_Glyph</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-module_management.html#FT_Done_Library">FT_Done_Library</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-sizes_management.html#FT_Done_Size">FT_Done_Size</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-module_management.html#FT_Driver">FT_Driver</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_ENC_TAG">FT_ENC_TAG</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_ADOBE_CUSTOM</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_ADOBE_EXPERT</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_ADOBE_LATIN_1</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_ADOBE_STANDARD</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_APPLE_ROMAN</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_BIG5</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_JOHAB</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_BIG5</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_MS_GB2312</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_MS_JOHAB</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_MS_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_MS_SYMBOL</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_MS_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_NONE</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-base_interface.html#FT_Encoding">FT_ENCODING_OLD_LATIN_2</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-base_interface.html#FT_Encoding">FT_ENCODING_PRC</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-base_interface.html#FT_Encoding">FT_ENCODING_SJIS</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">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-base_interface.html#FT_Encoding">FT_ENCODING_UNICODE</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_Encoding">FT_ENCODING_WANSUNG</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">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_Encoding">FT_Encoding</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">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-header_file_macros.html#FT_ERRORS_H">FT_ERRORS_H</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">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-error_code_values.html#FT_Err_XXX">FT_Err_XXX</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">FT_OUTLINE_NONE</a></td><td><a href="ft2-cache_subsystem.html#FTC_FaceID">FTC_FaceID</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_OUTLINE_XXX">FT_OUTLINE_OWNER</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</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_XXX">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-basic_types.html#FT_F2Dot14">FT_F2Dot14</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">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_CID_KEYED</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">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_COLOR</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">FT_OUTLINE_XXX</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_EXTERNAL_STREAM</a></td><td><a href="ft2-outline_processing.html#FT_Outline">FT_Outline</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_FAST_GLYPHS</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">FTC_Manager</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_ConicToFunc">FT_Outline_ConicToFunc</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_FIXED_WIDTH</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_LookupFace">FTC_Manager_LookupFace</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_CubicToFunc">FT_Outline_CubicToFunc</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_HINTER</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_New">FTC_Manager_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_Done">FT_Outline_Done</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_FLAG_XXX">FT_FACE_FLAG_KERNING</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_Reset">FTC_Manager_Reset</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_EmboldenXY">FT_Outline_EmboldenXY</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node">FTC_Node</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_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-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SFNT</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-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</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-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_VERTICAL</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-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</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">FT_Face</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_CheckTrueTypePatents">FT_Face_CheckTrueTypePatents</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-glyph_variants.html#FT_Face_GetCharsOfVariant">FT_Face_GetCharsOfVariant</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-glyph_variants.html#FT_Face_GetCharVariantIndex">FT_Face_GetCharVariantIndex</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-glyph_variants.html#FT_Face_GetCharVariantIsDefault">FT_Face_GetCharVariantIsDefault</a></td><td><a href="ft2-outline_processing.html#FT_Outline_New">FT_Outline_New</a></td><td><a href="ft2-auto_hinter.html#fallback-script">fallback-script</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_Render">FT_Outline_Render</a></td><td><a href="ft2-auto_hinter.html#glyph-to-script-map">glyph-to-script-map</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_Reverse">FT_Outline_Reverse</a></td><td><a href="ft2-cff_driver.html#hinting-engine(cff)">hinting-engine (cff)</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Face_Internal">FT_Face_Internal</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Transform">FT_Outline_Transform</a></td><td><a href="ft2-auto_hinter.html#increase-x-height">increase-x-height</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_Face_Properties">FT_Face_Properties</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Translate">FT_Outline_Translate</a></td><td><a href="ft2-tt_driver.html#interpreter-version">interpreter-version</a></td></tr>
-<tr><td><a href="ft2-version.html#FT_Face_SetUnpatentedHinting">FT_Face_SetUnpatentedHinting</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a></td><td><a href="ft2-pcf_driver.html#no-long-family-names">no-long-family-names</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a></td><td><a href="ft2-auto_hinter.html#no-stem-darkening(autofit)">no-stem-darkening (autofit)</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a></td><td><a href="ft2-sfnt_names.html#FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY">FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY</a></td><td><a href="ft2-cff_driver.html#no-stem-darkening(cff)">no-stem-darkening (cff)</a></td></tr>
-<tr><td><a href="ft2-computations.html#FT_FloorFix">FT_FloorFix</a></td><td><a href="ft2-sfnt_names.html#FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY">FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_FUZZ</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_FONT_FORMATS_H">FT_FONT_FORMATS_H</a></td><td><a href="ft2-incremental.html#FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_SCALE</a></td></tr>
-<tr><td><a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a></td><td><a href="ft2-lcd_filtering.html#FT_PARAM_TAG_LCD_FILTER_WEIGHTS">FT_PARAM_TAG_LCD_FILTER_WEIGHTS</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_SHIFT</a></td></tr>
-<tr><td><a href="ft2-system_interface.html#FT_Free_Func">FT_Free_Func</a></td><td><a href="ft2-cff_driver.html#FT_PARAM_TAG_RANDOM_SEED">FT_PARAM_TAG_RANDOM_SEED</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_VALUE</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-auto_hinter.html#FT_PARAM_TAG_STEM_DARKENING">FT_PARAM_TAG_STEM_DARKENING</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_CHAR_STRING</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_EDITABLE_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-type1_tables.html#PS_Dict_Keys">PS_DICT_CHAR_STRING_KEY</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_INSTALLABLE_EMBEDDING</a></td><td><a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_ENCODING_ENTRY</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_NO_SUBSETTING</a></td><td><a href="ft2-header_file_macros.html#FT_PCF_DRIVER_H">FT_PCF_DRIVER_H</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_ENCODING_TYPE</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-header_file_macros.html#FT_PFR_H">FT_PFR_H</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FAMILY_BLUE</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-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_BGRA</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FAMILY_NAME</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_Pixel_Mode">FT_PIXEL_MODE_GRAY</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FAMILY_OTHER_BLUE</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_FWord">FT_FWord</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY2</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_BBOX</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_Pixel_Mode">FT_PIXEL_MODE_GRAY4</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_MATRIX</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_LCD</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_NAME</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_LCD_V</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_TYPE</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_MONO</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FORCE_BOLD</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_NONE</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FS_TYPE</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</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FULL_NAME</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_Pointer">FT_Pointer</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_IS_FIXED_PITCH</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_Pos">FT_Pos</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_ITALIC_ANGLE</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Generic_Finalizer">FT_Generic_Finalizer</a></td><td><a href="ft2-auto_hinter.html#FT_Prop_GlyphToScriptMap">FT_Prop_GlyphToScriptMap</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_LANGUAGE_GROUP</a></td></tr>
-<tr><td><a href="ft2-quick_advance.html#FT_Get_Advance">FT_Get_Advance</a></td><td><a href="ft2-auto_hinter.html#FT_Prop_IncreaseXHeight">FT_Prop_IncreaseXHeight</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_LEN_IV</a></td></tr>
-<tr><td><a href="ft2-quick_advance.html#FT_Get_Advances">FT_Get_Advances</a></td><td><a href="ft2-module_management.html#FT_Property_Get">FT_Property_Get</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_MIN_FEATURE</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-module_management.html#FT_Property_Set">FT_Property_Set</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_NOTICE</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_BLUE_VALUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_CHAR_STRINGS</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_FAMILY_BLUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_FAMILY_OTHER_BLUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_OTHER_BLUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_STEM_SNAP_H</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_STEM_SNAP_V</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_SUBRS</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-type1_tables.html#PS_Dict_Keys">PS_DICT_OTHER_BLUE</a></td></tr>
-<tr><td><a href="ft2-font_formats.html#FT_Get_Font_Format">FT_Get_Font_Format</a></td><td><a href="ft2-raster.html#FT_Raster_DoneFunc">FT_Raster_DoneFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_PAINT_TYPE</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_Funcs">FT_Raster_Funcs</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_PASSWORD</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_NewFunc">FT_Raster_NewFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_RND_STEM_UP</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_Params">FT_Raster_Params</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STD_HW</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_RenderFunc">FT_Raster_RenderFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STD_VW</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_ResetFunc">FT_Raster_ResetFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STEM_SNAP_H</a></td></tr>
-<tr><td><a href="ft2-multiple_masters.html#FT_Get_MM_Blend_Coordinates">FT_Get_MM_Blend_Coordinates</a></td><td><a href="ft2-raster.html#FT_Raster_SetModeFunc">FT_Raster_SetModeFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STEM_SNAP_V</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-header_file_macros.html#FT_RENDER_H">FT_RENDER_H</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_SUBR</a></td></tr>
-<tr><td><a href="ft2-module_management.html#FT_Get_Module">FT_Get_Module</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_Dict_Keys">PS_DICT_UNDERLINE_POSITION</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-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_UNDERLINE_THICKNESS</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_LIGHT</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_UNIQUE_ID</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_MONO</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_VERSION</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_NORMAL</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_WEIGHT</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-system_interface.html#FT_Realloc_Func">FT_Realloc_Func</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_Dict_Keys</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_Reference_Face">FT_Reference_Face</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_Postscript_Name">FT_Get_Postscript_Name</a></td><td><a href="ft2-module_management.html#FT_Reference_Library">FT_Reference_Library</a></td><td><a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</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#PS_Private">PS_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-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a></td></tr>
-<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Value">FT_Get_PS_Font_Value</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a></td><td><a href="ft2-cff_driver.html#random-seed">random-seed</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_Renderer">FT_Renderer</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_BLUE_SCALE</a></td></tr>
-<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_LangTag">FT_Get_Sfnt_LangTag</a></td><td><a href="ft2-module_management.html#FT_Renderer_Class">FT_Renderer_Class</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_BLUE_SHIFT</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_Request_Size">FT_Request_Size</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_BLUE_VALUES</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-computations.html#FT_RoundFix">FT_RoundFix</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_FAMILY_BLUES</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_Select_Charmap">FT_Select_Charmap</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_FAMILY_OTHER_BLUES</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-base_interface.html#FT_Select_Size">FT_Select_Size</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_FORCE_BOLD</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_Set_Char_Size">FT_Set_Char_Size</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_ITALIC_ANGLE</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_Set_Charmap">FT_Set_Charmap</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_OTHER_BLUES</a></td></tr>
-<tr><td><a href="ft2-multiple_masters.html#FT_Get_Var_Blend_Coordinates">FT_Get_Var_Blend_Coordinates</a></td><td><a href="ft2-module_management.html#FT_Set_Debug_Hook">FT_Set_Debug_Hook</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_STANDARD_HEIGHT</a></td></tr>
-<tr><td><a href="ft2-multiple_masters.html#FT_Get_Var_Design_Coordinates">FT_Get_Var_Design_Coordinates</a></td><td><a href="ft2-module_management.html#FT_Set_Default_Properties">FT_Set_Default_Properties</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_STANDARD_WIDTH</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-multiple_masters.html#FT_Set_MM_Blend_Coordinates">FT_Set_MM_Blend_Coordinates</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_STEM_SNAP_HEIGHTS</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-multiple_masters.html#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_STEM_SNAP_WIDTHS</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_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_UNDERLINE_POSITION</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_Renderer">FT_Set_Renderer</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_UNDERLINE_THICKNESS</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_Transform">FT_Set_Transform</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_Blend_Flags</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_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_ARRAY</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-multiple_masters.html#FT_Set_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_EXPERT</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-truetype_tables.html#FT_Sfnt_Tag">FT_SFNT_HEAD</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_ISOLATIN1</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-truetype_tables.html#FT_Sfnt_Tag">FT_SFNT_HHEA</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_NONE</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Tag">FT_SFNT_MAXP</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_STANDARD</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a></td><td><a href="ft2-header_file_macros.html#FT_SFNT_NAMES_H">FT_SFNT_NAMES_H</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_EncodingType</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_OS2</a></td><td><a href="ft2-type1_tables.html#T1_FontInfo">T1_FontInfo</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_Tag">FT_SFNT_PCLT</a></td><td><a href="ft2-type1_tables.html#T1_Private">T1_Private</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_POST</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-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Tag">FT_SFNT_VHEA</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-glyph_management.html#FT_Glyph">FT_Glyph</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_ADOBE_ID_XXX">TT_ADOBE_ID_LATIN_1</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-truetype_tables.html#FT_Sfnt_Tag">FT_Sfnt_Tag</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-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-sfnt_names.html#FT_SfntLangTag">FT_SfntLangTag</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-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</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-glyph_management.html#FT_Glyph_Get_CBox">FT_Glyph_Get_CBox</a></td><td><a href="ft2-basic_types.html#FT_Short">FT_Short</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_FULL_UNICODE</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_BBOX</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-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</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_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_1_1</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_Request_Type">FT_SIZE_REQUEST_TYPE_NOMINAL</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-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</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_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_32</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_Type">FT_SIZE_REQUEST_TYPE_SCALES</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_GlyphRec">FT_GlyphRec</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_APPLE_ID_XXX">TT_APPLE_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</a></td><td><a href="ft2-truetype_tables.html#TT_Header">TT_Header</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">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</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_Internal">FT_Size_Internal</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_35</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_Size_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_38</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_Size_Request">FT_Size_Request</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_40</a></td></tr>
-<tr><td><a href="ft2-gzip.html#FT_Gzip_Uncompress">FT_Gzip_Uncompress</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_XXX</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_COLOR">FT_HAS_COLOR</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_ISO_ID_XXX">TT_ISO_ID_10646</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-base_interface.html#FT_SizeRec">FT_SizeRec</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-base_interface.html#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</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_ISO_ID_XXX">TT_ISO_ID_8859_1</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-raster.html#FT_Span">FT_Span</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-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</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_XXX</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_StrokerBorder">FT_STROKER_BORDER_LEFT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_LANGID_XXX">TT_MAC_LANGID_XXX</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_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_HAS_VERTICAL">FT_HAS_VERTICAL</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_MS_ID_XXX">TT_MS_ID_BIG_5</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_BUTT</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-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</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_MS_ID_XXX">TT_MS_ID_PRC</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_LineCap">FT_STROKER_LINECAP_SQUARE</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-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_BEVEL</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">FT_Incremental</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_MS_ID_XXX">TT_MS_ID_UCS_4</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_FIXED</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-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_VARIABLE</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-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</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_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</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_MS_LANGID_XXX">TT_MS_LANGID_XXX</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</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_NAME_ID_XXX">TT_NAME_ID_XXX</a></td></tr>
-<tr><td><a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</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_OS2">TT_OS2</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_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</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_Stream_CloseFunc">FT_Stream_CloseFunc</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_Init_FreeType">FT_Init_FreeType</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_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-bzip2.html#FT_Stream_OpenBzip2">FT_Stream_OpenBzip2</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr>
-<tr><td><a href="ft2-basic_types.html#FT_Int64">FT_Int64</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</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_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</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_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr>
-<tr><td><a href="ft2-base_interface.html#FT_IS_NAMED_INSTANCE">FT_IS_NAMED_INSTANCE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_UCR_XXX">TT_UCR_XXX</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_BeginSubPath">FT_Stroker_BeginSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</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_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-auto_hinter.html#warping">warping</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_CubicTo">FT_Stroker_CubicTo</a></td><td></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_Done">FT_Stroker_Done</a></td><td></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#':'">':'</a></td><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_CARDINAL</a></td><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_INTEGER</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetCounts">FT_Stroker_GetCounts</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_NONE</a></td><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_LineCap">FT_Stroker_LineCap</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_Property">BDF_Property</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</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_LcdFilter">FT_LCD_FILTER_LEGACY1</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineTo">FT_Stroker_LineTo</a></td></tr>
+<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PropertyType</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_New">FT_Stroker_New</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceDict">CID_FaceDict</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_ParseOutline">FT_Stroker_ParseOutline</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceInfo">CID_FaceInfo</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_Stroker_Set">FT_Stroker_Set</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a></td><td><a href="ft2-base_interface.html#FT_Library">FT_Library</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_FontDict">CID_FontDict</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_2X2</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#CID_Info">CID_Info</a></td><td><a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilterWeights">FT_Library_SetLcdFilterWeights</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-auto_hinter.html#darkening-parameters(autofit)">darkening-parameters (autofit)</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-cff_driver.html#darkening-parameters(cff)">darkening-parameters (cff)</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-auto_hinter.html#default-script">default-script</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-version.html#FREETYPE_XXX">FREETYPE_MAJOR</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-version.html#FREETYPE_XXX">FREETYPE_MINOR</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_PATCH</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_XXX</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-sizes_management.html#FT_Activate_Size">FT_Activate_Size</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-quick_advance.html#FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</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-header_file_macros.html#FT_ADVANCES_H">FT_ADVANCES_H</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-module_management.html#FT_Add_Default_Modules">FT_Add_Default_Modules</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-module_management.html#FT_Add_Module">FT_Add_Module</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-system_interface.html#FT_Alloc_Func">FT_Alloc_Func</a></td><td><a href="ft2-list_processing.html#FT_ListNodeRec">FT_ListNodeRec</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_DRIVER_H">FT_TRUETYPE_DRIVER_H</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_ANGLE_2PI">FT_ANGLE_2PI</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_NONE</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_BITMAP_METRICS_ONLY</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_PATENTED</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_COLOR</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_PI4">FT_ANGLE_PI4</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_COMPUTE_METRICS</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">FT_Angle</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_Diff">FT_Angle_Diff</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_Atan2">FT_Atan2</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-base_interface.html#FT_Attach_File">FT_Attach_File</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-base_interface.html#FT_Attach_Stream">FT_Attach_Stream</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-header_file_macros.html#FT_AUTOHINTER_H">FT_AUTOHINTER_H</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-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_CJK</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-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_INDIC</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-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_LATIN</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-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_NONE</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-auto_hinter.html#FT_AUTOHINTER_SCRIPT_XXX">FT_AUTOHINTER_SCRIPT_XXX</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-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_SCALE</a></td><td><a href="ft2-basic_types.html#FT_UInt64">FT_UInt64</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_PEDANTIC</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_RENDER</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_TARGET_XXX">FT_LOAD_TARGET_LCD</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_V</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_LIGHT</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_MODE">FT_LOAD_TARGET_MODE</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_XXX">FT_LOAD_TARGET_MONO</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_NORMAL</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_Init">FT_Bitmap_Init</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_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_XXX">FT_LOAD_VERTICAL_LAYOUT</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_XXX</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_Char">FT_Load_Char</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_Glyph">FT_Load_Glyph</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-truetype_tables.html#FT_Load_Sfnt_Table">FT_Load_Sfnt_Table</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-basic_types.html#FT_Long">FT_Long</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_BZIP2_H">FT_BZIP2_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_GXXXX">FT_VALIDATE_GXXXX</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-header_file_macros.html#FT_MAC_H">FT_MAC_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_H">FT_CACHE_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_just</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-basic_types.html#FT_Matrix">FT_Matrix</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_kern</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-computations.html#FT_Matrix_Invert">FT_Matrix_Invert</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_lcar</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_CeilFix">FT_CeilFix</a></td><td><a href="ft2-computations.html#FT_Matrix_Multiply">FT_Matrix_Multiply</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_CFF_DRIVER_H">FT_CFF_DRIVER_H</a></td><td><a href="ft2-system_interface.html#FT_Memory">FT_Memory</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_MS</a></td></tr>
+<tr><td><a href="ft2-cff_driver.html#FT_CFF_HINTING_XXX">FT_CFF_HINTING_ADOBE</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_mort</a></td></tr>
+<tr><td><a href="ft2-cff_driver.html#FT_CFF_HINTING_XXX">FT_CFF_HINTING_FREETYPE</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_morx</a></td></tr>
+<tr><td><a href="ft2-cff_driver.html#FT_CFF_HINTING_XXX">FT_CFF_HINTING_XXX</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_OT</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Char">FT_Char</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_OTXXX</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_CharMap">FT_CharMap</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_opbd</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a></td><td><a href="ft2-module_management.html#FT_Module">FT_Module</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_CID_H">FT_CID_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_trak</a></td></tr>
+<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Free">FT_ClassicKern_Free</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_AXIS_FLAG_XXX">FT_VAR_AXIS_FLAG_HIDDEN</a></td></tr>
+<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Validate">FT_ClassicKern_Validate</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_FLAG_XXX">FT_VAR_AXIS_FLAG_XXX</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-module_management.html#FT_Module_Requester">FT_Module_Requester</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Axis">FT_Var_Axis</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_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</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-header_file_macros.html#FT_CONFIG_OPTIONS_H">FT_CONFIG_OPTIONS_H</a></td><td><a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a></td><td><a href="ft2-basic_types.html#FT_Vector">FT_Vector</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-computations.html#FT_MulFix">FT_MulFix</a></td><td><a href="ft2-computations.html#FT_Vector_From_Polar">FT_Vector_From_Polar</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_Cos">FT_Cos</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_Length">FT_Vector_Length</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Data">FT_Data</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_Polarize">FT_Vector_Polarize</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_DivFix">FT_DivFix</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_Rotate">FT_Vector_Rotate</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</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_Transform">FT_Vector_Transform</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Done_FreeType">FT_Done_FreeType</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-computations.html#FT_Vector_Unit">FT_Vector_Unit</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Done_Glyph">FT_Done_Glyph</a></td><td><a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a></td><td><a href="ft2-header_file_macros.html#FT_WINFONTS_H">FT_WINFONTS_H</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Done_Library">FT_Done_Library</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_Header">FT_WinFNT_Header</a></td></tr>
+<tr><td><a href="ft2-sizes_management.html#FT_Done_Size">FT_Done_Size</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_HeaderRec">FT_WinFNT_HeaderRec</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Driver">FT_Driver</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_CP1250</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_ENC_TAG">FT_ENC_TAG</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_CP1251</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_CUSTOM</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_CP1252</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_EXPERT</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_CP1253</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_OPEN_XXX">FT_OPEN_PATHNAME</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_ADOBE_STANDARD</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_CP1255</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_APPLE_ROMAN</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_CP1256</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_BIG5</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_CP1257</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_Args">FT_Open_Args</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_BIG5</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_CP1361</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_GB2312</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_CP874</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_JOHAB</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_CP932</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_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_CP936</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SYMBOL</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_CP949</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_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_CP950</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_NONE</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_DEFAULT</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_OLD_LATIN_2</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_MAC</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_PRC</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_OEM</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_OUTLINE_XXX">FT_OUTLINE_EVEN_ODD_FILL</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-base_interface.html#FT_Encoding">FT_ENCODING_UNICODE</a></td><td><a href="ft2-header_file_macros.html#FT_OUTLINE_H">FT_OUTLINE_H</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-base_interface.html#FT_Encoding">FT_ENCODING_WANSUNG</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">FT_OUTLINE_HIGH_PRECISION</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_Encoding">FT_Encoding</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">FT_OUTLINE_IGNORE_DROPOUTS</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_Lookup">FTC_CMapCache_Lookup</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_OUTLINE_XXX">FT_OUTLINE_INCLUDE_STUBS</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_New">FTC_CMapCache_New</a></td></tr>
+<tr><td><a href="ft2-error_code_values.html#FT_Err_XXX">FT_Err_XXX</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">FT_OUTLINE_NONE</a></td><td><a href="ft2-cache_subsystem.html#FTC_Face_Requester">FTC_Face_Requester</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_OUTLINE_XXX">FT_OUTLINE_OWNER</a></td><td><a href="ft2-cache_subsystem.html#FTC_FaceID">FTC_FaceID</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_XXX">FT_OUTLINE_REVERSE_FILL</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</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_XXX">FT_OUTLINE_SINGLE_PASS</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_CID_KEYED</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">FT_OUTLINE_SMART_DROPOUTS</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_COLOR</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_XXX">FT_OUTLINE_XXX</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_EXTERNAL_STREAM</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_FAST_GLYPHS</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_FIXED_SIZES</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_FIXED_WIDTH</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_GLYPH_NAMES</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_HINTER</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_FLAG_XXX">FT_FACE_FLAG_HORIZONTAL</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-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_KERNING</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-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_MULTIPLE_MASTERS</a></td><td><a href="ft2-outline_processing.html#FT_Outline_EmboldenXY">FT_Outline_EmboldenXY</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Reset">FTC_Manager_Reset</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_Funcs">FT_Outline_Funcs</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node">FTC_Node</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_Get_BBox">FT_Outline_Get_BBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</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_Get_Bitmap">FT_Outline_Get_Bitmap</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBit">FTC_SBit</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_Get_CBox">FT_Outline_Get_CBox</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_FLAG_XXX">FT_FACE_FLAG_XXX</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_Lookup">FTC_SBitCache_Lookup</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Face">FT_Face</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_LookupScaler">FTC_SBitCache_LookupScaler</a></td></tr>
+<tr><td><a href="ft2-version.html#FT_Face_CheckTrueTypePatents">FT_Face_CheckTrueTypePatents</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_New">FTC_SBitCache_New</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_LineToFunc">FT_Outline_LineToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitRec">FTC_SBitRec</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_MoveToFunc">FT_Outline_MoveToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Scaler">FTC_Scaler</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_New">FT_Outline_New</a></td><td><a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</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_Render">FT_Outline_Render</a></td><td><a href="ft2-auto_hinter.html#fallback-script">fallback-script</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_Reverse">FT_Outline_Reverse</a></td><td><a href="ft2-auto_hinter.html#glyph-to-script-map">glyph-to-script-map</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Face_Internal">FT_Face_Internal</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Transform">FT_Outline_Transform</a></td><td><a href="ft2-cff_driver.html#hinting-engine(cff)">hinting-engine (cff)</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_Face_Properties">FT_Face_Properties</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Translate">FT_Outline_Translate</a></td><td><a href="ft2-auto_hinter.html#increase-x-height">increase-x-height</a></td></tr>
+<tr><td><a href="ft2-version.html#FT_Face_SetUnpatentedHinting">FT_Face_SetUnpatentedHinting</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a></td><td><a href="ft2-tt_driver.html#interpreter-version">interpreter-version</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a></td><td><a href="ft2-pcf_driver.html#no-long-family-names">no-long-family-names</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a></td><td><a href="ft2-sfnt_names.html#FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY">FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY</a></td><td><a href="ft2-auto_hinter.html#no-stem-darkening(autofit)">no-stem-darkening (autofit)</a></td></tr>
+<tr><td><a href="ft2-computations.html#FT_FloorFix">FT_FloorFix</a></td><td><a href="ft2-sfnt_names.html#FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY">FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY</a></td><td><a href="ft2-cff_driver.html#no-stem-darkening(cff)">no-stem-darkening (cff)</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_FONT_FORMATS_H">FT_FONT_FORMATS_H</a></td><td><a href="ft2-incremental.html#FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_FUZZ</a></td></tr>
+<tr><td><a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a></td><td><a href="ft2-lcd_filtering.html#FT_PARAM_TAG_LCD_FILTER_WEIGHTS">FT_PARAM_TAG_LCD_FILTER_WEIGHTS</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_SCALE</a></td></tr>
+<tr><td><a href="ft2-system_interface.html#FT_Free_Func">FT_Free_Func</a></td><td><a href="ft2-cff_driver.html#FT_PARAM_TAG_RANDOM_SEED">FT_PARAM_TAG_RANDOM_SEED</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_SHIFT</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-auto_hinter.html#FT_PARAM_TAG_STEM_DARKENING">FT_PARAM_TAG_STEM_DARKENING</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_BLUE_VALUE</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_EDITABLE_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-type1_tables.html#PS_Dict_Keys">PS_DICT_CHAR_STRING</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_INSTALLABLE_EMBEDDING</a></td><td><a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_CHAR_STRING_KEY</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_NO_SUBSETTING</a></td><td><a href="ft2-header_file_macros.html#FT_PCF_DRIVER_H">FT_PCF_DRIVER_H</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_ENCODING_ENTRY</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-header_file_macros.html#FT_PFR_H">FT_PFR_H</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_ENCODING_TYPE</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-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_BGRA</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FAMILY_BLUE</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_Pixel_Mode">FT_PIXEL_MODE_GRAY</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FAMILY_NAME</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_FWord">FT_FWord</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY2</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FAMILY_OTHER_BLUE</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_Pixel_Mode">FT_PIXEL_MODE_GRAY4</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_BBOX</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_LCD</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_MATRIX</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_LCD_V</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_NAME</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_MONO</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FONT_TYPE</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_NONE</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FORCE_BOLD</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</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FS_TYPE</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_Pointer">FT_Pointer</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_FULL_NAME</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_Pos">FT_Pos</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_IS_FIXED_PITCH</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Generic_Finalizer">FT_Generic_Finalizer</a></td><td><a href="ft2-auto_hinter.html#FT_Prop_GlyphToScriptMap">FT_Prop_GlyphToScriptMap</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_ITALIC_ANGLE</a></td></tr>
+<tr><td><a href="ft2-quick_advance.html#FT_Get_Advance">FT_Get_Advance</a></td><td><a href="ft2-auto_hinter.html#FT_Prop_IncreaseXHeight">FT_Prop_IncreaseXHeight</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_LANGUAGE_GROUP</a></td></tr>
+<tr><td><a href="ft2-quick_advance.html#FT_Get_Advances">FT_Get_Advances</a></td><td><a href="ft2-module_management.html#FT_Property_Get">FT_Property_Get</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_LEN_IV</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-module_management.html#FT_Property_Set">FT_Property_Set</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_MIN_FEATURE</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NOTICE</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_BLUE_VALUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_CHAR_STRINGS</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_FAMILY_BLUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_FAMILY_OTHER_BLUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_OTHER_BLUES</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_STEM_SNAP_H</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_STEM_SNAP_V</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-type1_tables.html#PS_Dict_Keys">PS_DICT_NUM_SUBRS</a></td></tr>
+<tr><td><a href="ft2-font_formats.html#FT_Get_Font_Format">FT_Get_Font_Format</a></td><td><a href="ft2-raster.html#FT_Raster_DoneFunc">FT_Raster_DoneFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_OTHER_BLUE</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_Funcs">FT_Raster_Funcs</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_PAINT_TYPE</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_NewFunc">FT_Raster_NewFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_PASSWORD</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_Params">FT_Raster_Params</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_RND_STEM_UP</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_RenderFunc">FT_Raster_RenderFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STD_HW</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_ResetFunc">FT_Raster_ResetFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STD_VW</a></td></tr>
+<tr><td><a href="ft2-multiple_masters.html#FT_Get_MM_Blend_Coordinates">FT_Get_MM_Blend_Coordinates</a></td><td><a href="ft2-raster.html#FT_Raster_SetModeFunc">FT_Raster_SetModeFunc</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STEM_SNAP_H</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-header_file_macros.html#FT_RENDER_H">FT_RENDER_H</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_STEM_SNAP_V</a></td></tr>
+<tr><td><a href="ft2-module_management.html#FT_Get_Module">FT_Get_Module</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_Dict_Keys">PS_DICT_SUBR</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-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_UNDERLINE_POSITION</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_LIGHT</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_UNDERLINE_THICKNESS</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_MONO</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_UNIQUE_ID</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_NORMAL</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_VERSION</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-system_interface.html#FT_Realloc_Func">FT_Realloc_Func</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_DICT_WEIGHT</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_Reference_Face">FT_Reference_Face</a></td><td><a href="ft2-type1_tables.html#PS_Dict_Keys">PS_Dict_Keys</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-module_management.html#FT_Reference_Library">FT_Reference_Library</a></td><td><a href="ft2-type1_tables.html#PS_FontInfo">PS_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#PS_FontInfoRec">PS_FontInfoRec</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-type1_tables.html#PS_Private">PS_Private</a></td></tr>
+<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Value">FT_Get_PS_Font_Value</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a></td><td><a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</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_Renderer">FT_Renderer</a></td><td><a href="ft2-cff_driver.html#random-seed">random-seed</a></td></tr>
+<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_LangTag">FT_Get_Sfnt_LangTag</a></td><td><a href="ft2-module_management.html#FT_Renderer_Class">FT_Renderer_Class</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_BLUE_SCALE</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_Request_Size">FT_Request_Size</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_BLUE_SHIFT</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-computations.html#FT_RoundFix">FT_RoundFix</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_BLUE_VALUES</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_Select_Charmap">FT_Select_Charmap</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_FAMILY_BLUES</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-base_interface.html#FT_Select_Size">FT_Select_Size</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_FAMILY_OTHER_BLUES</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_Set_Char_Size">FT_Set_Char_Size</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_FORCE_BOLD</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_Set_Charmap">FT_Set_Charmap</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_ITALIC_ANGLE</a></td></tr>
+<tr><td><a href="ft2-multiple_masters.html#FT_Get_Var_Axis_Flags">FT_Get_Var_Axis_Flags</a></td><td><a href="ft2-module_management.html#FT_Set_Debug_Hook">FT_Set_Debug_Hook</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_OTHER_BLUES</a></td></tr>
+<tr><td><a href="ft2-multiple_masters.html#FT_Get_Var_Blend_Coordinates">FT_Get_Var_Blend_Coordinates</a></td><td><a href="ft2-module_management.html#FT_Set_Default_Properties">FT_Set_Default_Properties</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_STANDARD_HEIGHT</a></td></tr>
+<tr><td><a href="ft2-multiple_masters.html#FT_Get_Var_Design_Coordinates">FT_Get_Var_Design_Coordinates</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-type1_tables.html#T1_Blend_Flags">T1_BLEND_STANDARD_WIDTH</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-multiple_masters.html#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_STEM_SNAP_HEIGHTS</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_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_STEM_SNAP_WIDTHS</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-module_management.html#FT_Set_Renderer">FT_Set_Renderer</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_UNDERLINE_POSITION</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-base_interface.html#FT_Set_Transform">FT_Set_Transform</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_BLEND_UNDERLINE_THICKNESS</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_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_Blend_Flags</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_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_ARRAY</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-truetype_tables.html#FT_Sfnt_Tag">FT_SFNT_HEAD</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_EXPERT</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-truetype_tables.html#FT_Sfnt_Tag">FT_SFNT_HHEA</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_ISOLATIN1</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-truetype_tables.html#FT_Sfnt_Tag">FT_SFNT_MAXP</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_NONE</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-type1_tables.html#T1_EncodingType">T1_ENCODING_TYPE_STANDARD</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_Tag">FT_SFNT_OS2</a></td><td><a href="ft2-type1_tables.html#T1_EncodingType">T1_EncodingType</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_PCLT</a></td><td><a href="ft2-type1_tables.html#T1_FontInfo">T1_FontInfo</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_Tag">FT_SFNT_POST</a></td><td><a href="ft2-type1_tables.html#T1_Private">T1_Private</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_VHEA</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-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</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_ADOBE_ID_XXX">TT_ADOBE_ID_EXPERT</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</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_ADOBE_ID_XXX">TT_ADOBE_ID_LATIN_1</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-sfnt_names.html#FT_SfntLangTag">FT_SfntLangTag</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-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</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-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-basic_types.html#FT_Short">FT_Short</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-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_BBOX</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_FULL_UNICODE</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_CELL</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-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</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_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_1_1</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_Request_Type">FT_SIZE_REQUEST_TYPE_REAL_DIM</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-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</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_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_32</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Transform">FT_Glyph_Transform</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_APPLE_ID_XXX">TT_APPLE_ID_VARIANT_SELECTOR</a></td></tr>
+<tr><td><a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</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-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-base_interface.html#FT_Size">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_Header">TT_Header</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_Internal">FT_Size_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</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_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_35</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_Size_Request">FT_Size_Request</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_38</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_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_40</a></td></tr>
+<tr><td><a href="ft2-gzip.html#FT_Gzip_Uncompress">FT_Gzip_Uncompress</a></td><td><a href="ft2-base_interface.html#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_XXX</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_HAS_COLOR">FT_HAS_COLOR</a></td><td><a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</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-base_interface.html#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</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_ISO_ID_XXX">TT_ISO_ID_7BIT_ASCII</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_Span">FT_Span</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-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td><a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</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-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</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_XXX</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_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_LANGID_XXX">TT_MAC_LANGID_XXX</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-header_file_macros.html#FT_STROKER_H">FT_STROKER_H</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</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_BUTT</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-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_ROUND</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-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</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_MS_ID_XXX">TT_MS_ID_PRC</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_BEVEL</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-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_MITER</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">FT_Incremental</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_FIXED</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-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_VARIABLE</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-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</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_MS_ID_XXX">TT_MS_ID_WANSUNG</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</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_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</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_MS_LANGID_XXX">TT_MS_LANGID_XXX</a></td></tr>
+<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</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_NAME_ID_XXX">TT_NAME_ID_XXX</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_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_OS2">TT_OS2</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_Stream_CloseFunc">FT_Stream_CloseFunc</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</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_Stream_IoFunc">FT_Stream_IoFunc</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_Init_FreeType">FT_Init_FreeType</a></td><td><a href="ft2-bzip2.html#FT_Stream_OpenBzip2">FT_Stream_OpenBzip2</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr>
+<tr><td><a href="ft2-basic_types.html#FT_Int64">FT_Int64</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</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_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</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_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr>
+<tr><td><a href="ft2-base_interface.html#FT_IS_NAMED_INSTANCE">FT_IS_NAMED_INSTANCE</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_UCR_XXX">TT_UCR_XXX</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_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</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_CubicTo">FT_Stroker_CubicTo</a></td><td><a href="ft2-auto_hinter.html#warping">warping</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_Done">FT_Stroker_Done</a></td><td></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_EndSubPath">FT_Stroker_EndSubPath</a></td><td></td></tr>
 </table>
 <hr>
 <table class="index-toc-link"><tr><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
 
-<div class="timestamp">generated on Sat May 13 12:45:59 2017</div></body>
+<div class="timestamp">generated on Sat Sep 16 19:09:11 2017</div></body>
 </html>
Index: docs/reference/ft2-lcd_filtering.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-lcd_filtering.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-lcd_filtering.html
--- docs/reference/ft2-lcd_filtering.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-lcd_filtering.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="lcd_filtering">LCD Filtering</h1>
 <h2>Synopsis</h2>
@@ -110,8 +110,8 @@
 </table>
 
 
-<p>Subpixel rendering exploits the color-striped structure of LCD pixels, increasing the available resolution in the direction of the stripe (usually horizontal RGB) by a factor of&nbsp;3. Since these subpixels are color pixels, using them unfiltered creates severe color fringes. Use the <a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a> API to specify a low-pass filter, which is then applied to subpixel-rendered bitmaps generated through <a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a>. The filter sacrifices some of the higher resolution to reduce color fringes, making the glyph image slightly blurrier. Positional improvements will remain.</p>
-<p>Note that no filter is active by default, and that this function is <b>not</b> implemented in default builds of the library. You need to #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your &lsquo;ftoption.h&rsquo; file in order to activate it and explicitly call <a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a> to enable it.</p>
+<p>Should you #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your &lsquo;ftoption.h&rsquo;, which enables patented ClearType-style rendering, the LCD-optimized glyph bitmaps should be filtered to reduce color fringes inherent to this technology. The default FreeType LCD rendering uses different technology, and API described below, although available, does nothing.</p>
+<p>ClearType-style LCD rendering exploits the color-striped structure of LCD pixels, increasing the available resolution in the direction of the stripe (usually horizontal RGB) by a factor of&nbsp;3. Since these subpixels are color pixels, using them unfiltered creates severe color fringes. Use the <a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a> API to specify a low-pass filter, which is then applied to subpixel-rendered bitmaps generated through <a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a>. The filter sacrifices some of the higher resolution to reduce color fringes, making the glyph image slightly blurrier. Positional improvements will remain.</p>
 <p>A filter should have two properties:</p>
 <p>1) It should be normalized, meaning the sum of the 5&nbsp;components should be 256 (0x100). It is possible to go above or under this target sum, however: going under means tossing out contrast, going over means invoking clamping and thereby non-linearities that increase contrast somewhat at the expense of greater distortion and color-fringing. Contrast is better enhanced through stem darkening.</p>
 <p>2) It should be color-balanced, meaning a filter &lsquo;{&nbsp;a, b, c, b, a&nbsp;}&rsquo; where a&nbsp;+ b&nbsp;=&nbsp;c. It distributes the computed coverage for one subpixel to all subpixels equally, sacrificing some won resolution but drastically reducing color-fringing. Positioning improvements remain! Note that color-fringing can only really be minimized when using a color-balanced filter and alpha-blending the glyph onto a surface in linear space; see <a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a>.</p>
Index: docs/reference/ft2-list_processing.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-list_processing.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-list_processing.html
--- docs/reference/ft2-list_processing.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-list_processing.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="list_processing">List Processing</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-lzw.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-lzw.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-lzw.html
--- docs/reference/ft2-lzw.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-lzw.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="lzw">LZW Streams</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-mac_specific.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-mac_specific.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-mac_specific.html
--- docs/reference/ft2-mac_specific.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-mac_specific.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="mac_specific">Mac Specific Interface</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-module_management.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-module_management.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-module_management.html
--- docs/reference/ft2-module_management.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-module_management.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="module_management">Module Management</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-multiple_masters.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-multiple_masters.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-multiple_masters.html
--- docs/reference/ft2-multiple_masters.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-multiple_masters.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,18 +100,19 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="multiple_masters">Multiple Masters</h1>
 <h2>Synopsis</h2>
 <table class="synopsis">
-<tr><td><a href="#FT_MM_Axis">FT_MM_Axis</a></td><td><a href="#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td></tr>
-<tr><td><a href="#FT_Multi_Master">FT_Multi_Master</a></td><td><a href="#FT_Set_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td></tr>
-<tr><td><a href="#FT_Var_Axis">FT_Var_Axis</a></td><td><a href="#FT_Get_Var_Design_Coordinates">FT_Get_Var_Design_Coordinates</a></td></tr>
-<tr><td><a href="#FT_Var_Named_Style">FT_Var_Named_Style</a></td><td><a href="#FT_Set_MM_Blend_Coordinates">FT_Set_MM_Blend_Coordinates</a></td></tr>
-<tr><td><a href="#FT_MM_Var">FT_MM_Var</a></td><td><a href="#FT_Get_MM_Blend_Coordinates">FT_Get_MM_Blend_Coordinates</a></td></tr>
-<tr><td><a href="#FT_Get_Multi_Master">FT_Get_Multi_Master</a></td><td><a href="#FT_Set_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td></tr>
-<tr><td><a href="#FT_Get_MM_Var">FT_Get_MM_Var</a></td><td><a href="#FT_Get_Var_Blend_Coordinates">FT_Get_Var_Blend_Coordinates</a></td></tr>
+<tr><td><a href="#FT_MM_Axis">FT_MM_Axis</a></td><td><a href="#FT_Set_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td></tr>
+<tr><td><a href="#FT_Multi_Master">FT_Multi_Master</a></td><td><a href="#FT_Get_Var_Design_Coordinates">FT_Get_Var_Design_Coordinates</a></td></tr>
+<tr><td><a href="#FT_Var_Axis">FT_Var_Axis</a></td><td><a href="#FT_Set_MM_Blend_Coordinates">FT_Set_MM_Blend_Coordinates</a></td></tr>
+<tr><td><a href="#FT_Var_Named_Style">FT_Var_Named_Style</a></td><td><a href="#FT_Get_MM_Blend_Coordinates">FT_Get_MM_Blend_Coordinates</a></td></tr>
+<tr><td><a href="#FT_MM_Var">FT_MM_Var</a></td><td><a href="#FT_Set_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td></tr>
+<tr><td><a href="#FT_Get_Multi_Master">FT_Get_Multi_Master</a></td><td><a href="#FT_Get_Var_Blend_Coordinates">FT_Get_Var_Blend_Coordinates</a></td></tr>
+<tr><td><a href="#FT_Get_MM_Var">FT_Get_MM_Var</a></td><td><a href="#FT_VAR_AXIS_FLAG_XXX">FT_VAR_AXIS_FLAG_XXX</a></td></tr>
+<tr><td><a href="#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td><td><a href="#FT_Get_Var_Axis_Flags">FT_Get_Var_Axis_Flags</a></td></tr>
 </table>
 
 
@@ -255,7 +256,7 @@
 <p>The entry in &lsquo;name&rsquo; table identifying this instance.</p>
 </td></tr>
 <tr><td class="val" id="psid">psid</td><td class="desc">
-<p>The entry in &lsquo;name&rsquo; table identifying a PostScript name for this instance.</p>
+<p>The entry in &lsquo;name&rsquo; table identifying a PostScript name for this instance. Value 0xFFFF indicates a missing entry.</p>
 </td></tr>
 </table>
 
@@ -277,7 +278,7 @@
   } <b>FT_MM_Var</b>;
 </pre>
 
-<p>A structure to model the axes and space of a Adobe MM, TrueType GX, or OpenType variation font.</p>
+<p>A structure to model the axes and space of an Adobe MM, TrueType GX, or OpenType variation font.</p>
 <p>Some fields are specific to one format and not to the others.</p>
 
 <h4>fields</h4>
@@ -400,6 +401,9 @@
 <h4>return</h4>
 <p>FreeType error code. 0&nbsp;means success.</p>
 
+<h4>note</h4>
+<p>To reset all axes to the default values, call the function with &lsquo;num_coords&rsquo; set to zero and &lsquo;coords&rsquo; set to NULL (new feature in FreeType version 2.8.1).</p>
+
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
 
@@ -436,6 +440,9 @@
 <h4>return</h4>
 <p>FreeType error code. 0&nbsp;means success.</p>
 
+<h4>note</h4>
+<p>To reset all axes to the default values, call the function with &lsquo;num_coords&rsquo; set to zero and &lsquo;coords&rsquo; set to NULL (new feature in FreeType version 2.8.1).</p>
+
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
 
@@ -508,6 +515,9 @@
 <h4>return</h4>
 <p>FreeType error code. 0&nbsp;means success.</p>
 
+<h4>note</h4>
+<p>To reset all axes to the default values, call the function with &lsquo;num_coords&rsquo; set to zero and &lsquo;coords&rsquo; set to NULL (new feature in FreeType version 2.8.1).</p>
+
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
 
@@ -573,6 +583,61 @@
 </pre>
 
 <p>This is another name of <a href="ft2-multiple_masters.html#FT_Get_MM_Blend_Coordinates">FT_Get_MM_Blend_Coordinates</a>.</p>
+
+<hr>
+<table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
+
+<div class="section">
+<h3 id="FT_VAR_AXIS_FLAG_XXX">FT_VAR_AXIS_FLAG_XXX</h3>
+<p>Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h).</p>
+<pre>
+#define <a href="ft2-multiple_masters.html#FT_VAR_AXIS_FLAG_HIDDEN">FT_VAR_AXIS_FLAG_HIDDEN</a>  1
+</pre>
+
+<p>A list of bit flags used in the return value of <a href="ft2-multiple_masters.html#FT_Get_Var_Axis_Flags">FT_Get_Var_Axis_Flags</a>.</p>
+
+<h4>values</h4>
+<table class="fields">
+<tr><td class="val" id="FT_VAR_AXIS_FLAG_HIDDEN">FT_VAR_AXIS_FLAG_HIDDEN</td><td class="desc">
+<p>The variation axis should not be exposed to user interfaces.</p>
+</td></tr>
+</table>
+
+<hr>
+<table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
+
+<div class="section">
+<h3 id="FT_Get_Var_Axis_Flags">FT_Get_Var_Axis_Flags</h3>
+<p>Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h).</p>
+<pre>
+  FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> )
+  <b>FT_Get_Var_Axis_Flags</b>( <a href="ft2-multiple_masters.html#FT_MM_Var">FT_MM_Var</a>*  master,
+                         <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a>     axis_index,
+                         <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a>*    flags );
+</pre>
+
+<p>Get the &lsquo;flags&rsquo; field of an OpenType Variation Axis Record.</p>
+<p>Not meaningful for Adobe MM fonts (&lsquo;*flags&rsquo; is always zero).</p>
+
+<h4>input</h4>
+<table class="fields">
+<tr><td class="val" id="master">master</td><td class="desc">
+<p>The variation descriptor.</p>
+</td></tr>
+<tr><td class="val" id="axis_index">axis_index</td><td class="desc">
+<p>The index of the requested variation axis.</p>
+</td></tr>
+</table>
+
+<h4>output</h4>
+<table class="fields">
+<tr><td class="val" id="flags">flags</td><td class="desc">
+<p>The &lsquo;flags&rsquo; field. See <a href="ft2-multiple_masters.html#FT_VAR_AXIS_FLAG_XXX">FT_VAR_AXIS_FLAG_XXX</a> for possible values.</p>
+</td></tr>
+</table>
+
+<h4>return</h4>
+<p>FreeType error code. 0&nbsp;means success.</p>
 
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
Index: docs/reference/ft2-ot_validation.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-ot_validation.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-ot_validation.html
--- docs/reference/ft2-ot_validation.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-ot_validation.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="ot_validation">OpenType Validation</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-outline_processing.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-outline_processing.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-outline_processing.html
--- docs/reference/ft2-outline_processing.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-outline_processing.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="outline_processing">Outline Processing</h1>
 <h2>Synopsis</h2>
@@ -409,6 +409,9 @@
 </pre>
 
 <p>Embolden an outline. The new outline will be &lsquo;xstrength&rsquo; pixels wider and &lsquo;ystrength&rsquo; pixels higher. Otherwise, it is similar to <a href="ft2-outline_processing.html#FT_Outline_Embolden">FT_Outline_Embolden</a>, which uses the same strength in both directions.</p>
+
+<h4>since</h4>
+<p>2.4.10</p>
 
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
Index: docs/reference/ft2-pcf_driver.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-pcf_driver.html,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 ft2-pcf_driver.html
--- docs/reference/ft2-pcf_driver.html 23 Jun 2017 16:15:18 -0000 1.1
+++ docs/reference/ft2-pcf_driver.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="pcf_driver">The PCF driver</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-pfr_fonts.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-pfr_fonts.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-pfr_fonts.html
--- docs/reference/ft2-pfr_fonts.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-pfr_fonts.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="pfr_fonts">PFR Fonts</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-quick_advance.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-quick_advance.html,v
retrieving revision 1.27
diff -u -p -u -p -r1.27 ft2-quick_advance.html
--- docs/reference/ft2-quick_advance.html 23 Jun 2017 16:15:18 -0000 1.27
+++ docs/reference/ft2-quick_advance.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="quick_advance">Quick retrieval of advance values</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-raster.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-raster.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-raster.html
--- docs/reference/ft2-raster.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-raster.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="raster">Scanline Converter</h1>
 <h2>Synopsis</h2>
@@ -370,8 +370,8 @@
 #define FT_Raster_Reset_Func  <b>FT_Raster_ResetFunc</b>
 </pre>
 
-<p>FreeType used to provide an area of memory called the &lsquo;render pool&rsquo; available to all registered rasters. This was not thread safe however and now FreeType never allocates this pool. NULL is always passed in as pool_base.</p>
-<p>This function is called each time the render pool changes, or just after a new raster object is created.</p>
+<p>FreeType used to provide an area of memory called the &lsquo;render pool&rsquo; available to all registered rasterizers. This was not thread safe, however, and now FreeType never allocates this pool.</p>
+<p>This function is called after a new raster object is created.</p>
 
 <h4>input</h4>
 <table class="fields">
@@ -379,15 +379,15 @@
 <p>A handle to the new raster object.</p>
 </td></tr>
 <tr><td class="val" id="pool_base">pool_base</td><td class="desc">
-<p>The address in memory of the render pool.</p>
+<p>Previously, the address in memory of the render pool. Set this to NULL.</p>
 </td></tr>
 <tr><td class="val" id="pool_size">pool_size</td><td class="desc">
-<p>The size in bytes of the render pool.</p>
+<p>Previously, the size in bytes of the render pool. Set this to 0.</p>
 </td></tr>
 </table>
 
 <h4>note</h4>
-<p>Rasters should ignore the render pool and rely on dynamic or stack allocation if they want to (a handle to the memory allocator is passed to the raster constructor).</p>
+<p>Rasterizers should rely on dynamic or stack allocation if they want to (a handle to the memory allocator is passed to the rasterizer constructor).</p>
 
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
Index: docs/reference/ft2-sfnt_names.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-sfnt_names.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-sfnt_names.html
--- docs/reference/ft2-sfnt_names.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-sfnt_names.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="sfnt_names">SFNT Names</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-sizes_management.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-sizes_management.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-sizes_management.html
--- docs/reference/ft2-sizes_management.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-sizes_management.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="sizes_management">Size Management</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-system_interface.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-system_interface.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-system_interface.html
--- docs/reference/ft2-system_interface.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-system_interface.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="system_interface">System Interface</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-toc.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-toc.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-toc.html
--- docs/reference/ft2-toc.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-toc.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1>Table of Contents</h1>
 <div class="section">
@@ -280,5 +280,5 @@
 <hr>
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td></tr></table>
 
-<div class="timestamp">generated on Sat May 13 12:45:59 2017</div></body>
+<div class="timestamp">generated on Sat Sep 16 19:09:11 2017</div></body>
 </html>
Index: docs/reference/ft2-truetype_engine.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-truetype_engine.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-truetype_engine.html
--- docs/reference/ft2-truetype_engine.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-truetype_engine.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="truetype_engine">The TrueType Engine</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-truetype_tables.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-truetype_tables.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-truetype_tables.html
--- docs/reference/ft2-truetype_tables.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-truetype_tables.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="truetype_tables">TrueType Tables</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-tt_driver.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-tt_driver.html,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 ft2-tt_driver.html
--- docs/reference/ft2-tt_driver.html 23 Jun 2017 16:15:18 -0000 1.13
+++ docs/reference/ft2-tt_driver.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="tt_driver">The TrueType driver</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-type1_tables.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-type1_tables.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-type1_tables.html
--- docs/reference/ft2-type1_tables.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-type1_tables.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="type1_tables">Type 1 Tables</h1>
 <h2>Synopsis</h2>
Index: docs/reference/ft2-user_allocation.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-user_allocation.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-user_allocation.html
--- docs/reference/ft2-user_allocation.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-user_allocation.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="user_allocation">User allocation</h1>
 
Index: docs/reference/ft2-version.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-version.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-version.html
--- docs/reference/ft2-version.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-version.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="version">FreeType Version</h1>
 <h2>Synopsis</h2>
@@ -223,7 +223,7 @@
 <pre>
 #define <a href="ft2-version.html#FREETYPE_MAJOR">FREETYPE_MAJOR</a>  2
 #define <a href="ft2-version.html#FREETYPE_MINOR">FREETYPE_MINOR</a>  8
-#define <a href="ft2-version.html#FREETYPE_PATCH">FREETYPE_PATCH</a>  0
+#define <a href="ft2-version.html#FREETYPE_PATCH">FREETYPE_PATCH</a>  1
 </pre>
 
 <p>These three macros identify the FreeType source code version. Use <a href="ft2-version.html#FT_Library_Version">FT_Library_Version</a> to access them at runtime.</p>
Index: docs/reference/ft2-winfnt_fonts.html
===================================================================
RCS file: /cvs/xenocara/lib/freetype/docs/reference/ft2-winfnt_fonts.html,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 ft2-winfnt_fonts.html
--- docs/reference/ft2-winfnt_fonts.html 23 Jun 2017 16:15:18 -0000 1.30
+++ docs/reference/ft2-winfnt_fonts.html 20 Sep 2017 16:54:32 -0000
@@ -3,7 +3,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.8 API Reference</title>
+<title>FreeType-2.8.1 API Reference</title>
 <style type="text/css">
   a:link { color: #0000EF; }
   a:visited { color: #51188E; }
@@ -100,7 +100,7 @@
 <body>
 
 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.8 API Reference</h1>
+<h1>FreeType-2.8.1 API Reference</h1>
 
 <h1 id="winfnt_fonts">Window FNT Files</h1>
 <h2>Synopsis</h2>
Index: include/freetype/freetype.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/freetype.h,v
retrieving revision 1.26
diff -u -p -u -p -r1.26 freetype.h
--- include/freetype/freetype.h 23 Jun 2017 16:15:18 -0000 1.26
+++ include/freetype/freetype.h 20 Sep 2017 16:54:33 -0000
@@ -575,7 +575,8 @@ FT_BEGIN_HEADER
   /* <Note>                                                                */
   /*    When a new face is created (either through @FT_New_Face or         */
   /*    @FT_Open_Face), the library looks for a Unicode charmap within     */
-  /*    the list and automatically activates it.                           */
+  /*    the list and automatically activates it.  If there is no Unicode   */
+  /*    charmap, FreeType doesn't set an `active' charmap.                 */
   /*                                                                       */
   /* <Also>                                                                */
   /*    See @FT_CharMapRec for the publicly accessible fields of a given   */
@@ -1529,7 +1530,13 @@ FT_BEGIN_HEADER
   /*    values of the corresponding fields in @FT_FaceRec.  Some values    */
   /*    like ascender or descender are rounded for historical reasons;     */
   /*    more precise values (for outline fonts) can be derived by scaling  */
-  /*    the corresponding @FT_FaceRec values manually.                     */
+  /*    the corresponding @FT_FaceRec values manually, with code similar   */
+  /*    to the following.                                                  */
+  /*                                                                       */
+  /*    {                                                                  */
+  /*      scaled_ascender = FT_MulFix( face->root.ascender,                */
+  /*                                   size_metrics->y_scale );            */
+  /*    }                                                                  */
   /*                                                                       */
   /*    Note that due to glyph hinting and the selected rendering mode     */
   /*    these values are usually not exact; consequently, they must be     */
@@ -1774,7 +1781,7 @@ FT_BEGIN_HEADER
   /*         and add it to `origin_x'>                                     */
   /*                                                                       */
   /*        origin_x += slot->advance.x;                                   */
-  /*        origin_x += slot->rsb_delta - slot->lsb_relta;                 */
+  /*        origin_x += slot->rsb_delta - slot->lsb_delta;                 */
   /*      endfor                                                           */
   /*    }                                                                  */
   /*                                                                       */
@@ -1794,9 +1801,9 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*        <load glyph with `FT_Load_Glyph'>                              */
   /*                                                                       */
-  /*        if ( prev_rsb_delta - slot->lsb_delta >= 32 )                  */
+  /*        if ( prev_rsb_delta - slot->lsb_delta >  32 )                  */
   /*          origin_x -= 64;                                              */
-  /*        else if ( prev_rsb_delta - slot->lsb_delta < -32 )             */
+  /*        else if ( prev_rsb_delta - slot->lsb_delta < -31 )             */
   /*          origin_x += 64;                                              */
   /*                                                                       */
   /*        prev_rsb_delta = slot->rsb_delta;                              */
@@ -3124,11 +3131,13 @@ FT_BEGIN_HEADER
   /*      glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode.   */
   /*                                                                       */
   /* <Note>                                                                */
-  /*    The LCD-optimized glyph bitmaps produced by `FT_Render_Glyph' can  */
-  /*    be filtered to reduce color-fringes by using                       */
-  /*    @FT_Library_SetLcdFilter (not active in the default builds).  It   */
-  /*    is up to the caller to either call `FT_Library_SetLcdFilter' (if   */
-  /*    available) or do the filtering itself.                             */
+  /*    Should you define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your      */
+  /*    `ftoption.h', which enables patented ClearType-style rendering,    */
+  /*    the LCD-optimized glyph bitmaps should be filtered to reduce color */
+  /*    fringes inherent to this technology.  You can either set up LCD    */
+  /*    filtering with @FT_Library_SetLcdFilter or @FT_Face_Properties,    */
+  /*    or do the filtering yourself.  The default FreeType LCD rendering  */
+  /*    technology does not require filtering.                             */
   /*                                                                       */
   /*    The selected render mode only affects vector glyphs of a font.     */
   /*    Embedded bitmaps often have a different pixel mode like            */
@@ -4327,6 +4336,9 @@ FT_BEGIN_HEADER
   /*    `a' rounded to the nearest 16.16 fixed integer, halfway cases away */
   /*    from zero.                                                         */
   /*                                                                       */
+  /* <Note>                                                                */
+  /*    The function uses wrap-around arithmetic.                          */
+  /*                                                                       */
   FT_EXPORT( FT_Fixed )
   FT_RoundFix( FT_Fixed  a );
 
@@ -4345,6 +4357,9 @@ FT_BEGIN_HEADER
   /* <Return>                                                              */
   /*    `a' rounded towards plus infinity.                                 */
   /*                                                                       */
+  /* <Note>                                                                */
+  /*    The function uses wrap-around arithmetic.                          */
+  /*                                                                       */
   FT_EXPORT( FT_Fixed )
   FT_CeilFix( FT_Fixed  a );
 
@@ -4442,7 +4457,7 @@ FT_BEGIN_HEADER
    */
 #define FREETYPE_MAJOR  2
 #define FREETYPE_MINOR  8
-#define FREETYPE_PATCH  0
+#define FREETYPE_PATCH  1
 
 
   /*************************************************************************/
Index: include/freetype/ftautoh.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/ftautoh.h,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 ftautoh.h
--- include/freetype/ftautoh.h 23 Jun 2017 16:15:18 -0000 1.10
+++ include/freetype/ftautoh.h 20 Sep 2017 16:54:33 -0000
@@ -404,12 +404,12 @@ FT_BEGIN_HEADER
    *   activate the warp hinting code in the auto-hinter, this property
    *   switches warping on and off.
    *
-   *   Warping only works in `light' auto-hinting mode.  The idea of the
-   *   code is to slightly scale and shift a glyph along the non-hinted
-   *   dimension (which is usually the horizontal axis) so that as much of
-   *   its segments are aligned (more or less) to the grid.  To find out a
-   *   glyph's optimal scaling and shifting value, various parameter
-   *   combinations are tried and scored.
+   *   Warping only works in `normal' auto-hinting mode replacing it.
+   *   The idea of the code is to slightly scale and shift a glyph along
+   *   the non-hinted dimension (which is usually the horizontal axis) so
+   *   that as much of its segments are aligned (more or less) to the grid.
+   *   To find out a glyph's optimal scaling and shifting value, various
+   *   parameter combinations are tried and scored.
    *
    *   By default, warping is off.  The example below shows how to switch on
    *   warping (omitting the error handling).
@@ -437,7 +437,7 @@ FT_BEGIN_HEADER
    *
    *   Since warping is a global property of the auto-hinter it is best to
    *   change its value before rendering any face.  Otherwise, you should
-   *   reload all faces that get auto-hinted in `light' hinting mode.
+   *   reload all faces that get auto-hinted in `normal' hinting mode.
    *
    */
 
Index: include/freetype/fterrdef.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/fterrdef.h,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 fterrdef.h
--- include/freetype/fterrdef.h 23 Jun 2017 16:15:18 -0000 1.12
+++ include/freetype/fterrdef.h 20 Sep 2017 16:54:33 -0000
@@ -233,6 +233,8 @@
                 "invalid PostScript (post) table" )
   FT_ERRORDEF_( DEF_In_Glyf_Bytecode,                        0x9C,
                 "found FDEF or IDEF opcode in glyf bytecode" )
+  FT_ERRORDEF_( Missing_Bitmap,                              0x9D,
+                "missing bitmap in strike" )
 
   /* CFF, CID, and Type 1 errors */
 
Index: include/freetype/fterrors.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/fterrors.h,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 fterrors.h
--- include/freetype/fterrors.h 23 Jun 2017 16:15:18 -0000 1.7
+++ include/freetype/fterrors.h 20 Sep 2017 16:54:33 -0000
@@ -38,15 +38,15 @@
   /*   The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be   */
   /*   defined in `ftoption.h' in order to make the higher byte indicate   */
   /*   the module where the error has happened (this is not compatible     */
-  /*   with standard builds of FreeType&nbsp;2, however).  See the file    */
+  /*   with standard builds of FreeType~2, however).  See the file         */
   /*   `ftmoderr.h' for more details.                                      */
   /*                                                                       */
   /*   *Error* *Message* *Strings*                                         */
   /*                                                                       */
   /*   Error definitions are set up with special macros that allow client  */
   /*   applications to build a table of error message strings.  The        */
-  /*   strings are not included in a normal build of FreeType&nbsp;2 to    */
-  /*   save space (most client applications do not use them).              */
+  /*   strings are not included in a normal build of FreeType~2 to save    */
+  /*   space (most client applications do not use them).                   */
   /*                                                                       */
   /*   To do so, you have to define the following macros before including  */
   /*   this file.                                                          */
Index: include/freetype/ftglyph.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/ftglyph.h,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 ftglyph.h
--- include/freetype/ftglyph.h 23 Jun 2017 16:15:18 -0000 1.12
+++ include/freetype/ftglyph.h 20 Sep 2017 16:54:33 -0000
@@ -231,6 +231,12 @@ FT_BEGIN_HEADER
   /* <Return>                                                              */
   /*    FreeType error code.  0~means success.                             */
   /*                                                                       */
+  /* <Note>                                                                */
+  /*    Because `*aglyph->advance.x' and '*aglyph->advance.y' are 16.16    */
+  /*    fixed-point numbers, `slot->advance.x' and `slot->advance.y'       */
+  /*    (which are in 26.6 fixed-point format) must be in the range        */
+  /*    ]-32768;32768[.                                                    */
+  /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Get_Glyph( FT_GlyphSlot  slot,
                 FT_Glyph     *aglyph );
@@ -565,6 +571,9 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /* <Note>                                                                */
   /*    The result is undefined if either `a' or `b' is zero.              */
+  /*                                                                       */
+  /*    Since the function uses wrap-around arithmetic, results become     */
+  /*    meaningless if the arguments are very large.                       */
   /*                                                                       */
   FT_EXPORT( void )
   FT_Matrix_Multiply( const FT_Matrix*  a,
Index: include/freetype/ftimage.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/ftimage.h,v
retrieving revision 1.15
diff -u -p -u -p -r1.15 ftimage.h
--- include/freetype/ftimage.h 23 Jun 2017 16:15:18 -0000 1.15
+++ include/freetype/ftimage.h 20 Sep 2017 16:54:33 -0000
@@ -1064,24 +1064,24 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /* <Description>                                                         */
   /*    FreeType used to provide an area of memory called the `render      */
-  /*    pool' available to all registered rasters.  This was not thread    */
-  /*    safe however and now FreeType never allocates this pool.  NULL     */
-  /*    is always passed in as pool_base.                                  */
+  /*    pool' available to all registered rasterizers.  This was not       */
+  /*    thread safe, however, and now FreeType never allocates this pool.  */
   /*                                                                       */
-  /*    This function is called each time the render pool changes, or just */
-  /*    after a new raster object is created.                              */
+  /*    This function is called after a new raster object is created.      */
   /*                                                                       */
   /* <Input>                                                               */
   /*    raster    :: A handle to the new raster object.                    */
   /*                                                                       */
-  /*    pool_base :: The address in memory of the render pool.             */
+  /*    pool_base :: Previously, the address in memory of the render pool. */
+  /*                 Set this to NULL.                                     */
   /*                                                                       */
-  /*    pool_size :: The size in bytes of the render pool.                 */
+  /*    pool_size :: Previously, the size in bytes of the render pool.     */
+  /*                 Set this to 0.                                        */
   /*                                                                       */
   /* <Note>                                                                */
-  /*    Rasters should ignore the render pool and rely on dynamic or stack */
-  /*    allocation if they want to (a handle to the memory allocator is    */
-  /*    passed to the raster constructor).                                 */
+  /*    Rasterizers should rely on dynamic or stack allocation if they     */
+  /*    want to (a handle to the memory allocator is passed to the         */
+  /*    rasterizer constructor).                                           */
   /*                                                                       */
   typedef void
   (*FT_Raster_ResetFunc)( FT_Raster       raster,
Index: include/freetype/ftlcdfil.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/ftlcdfil.h,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 ftlcdfil.h
--- include/freetype/ftlcdfil.h 23 Jun 2017 16:15:18 -0000 1.11
+++ include/freetype/ftlcdfil.h 20 Sep 2017 16:54:33 -0000
@@ -44,21 +44,22 @@ FT_BEGIN_HEADER
    *   Reduce color fringes of subpixel-rendered bitmaps.
    *
    * @description:
-   *   Subpixel rendering exploits the color-striped structure of LCD
-   *   pixels, increasing the available resolution in the direction of the
-   *   stripe (usually horizontal RGB) by a factor of~3.  Since these
+   *   Should you #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your
+   *   `ftoption.h', which enables patented ClearType-style rendering,
+   *   the LCD-optimized glyph bitmaps should be filtered to reduce color
+   *   fringes inherent to this technology.  The default FreeType LCD
+   *   rendering uses different technology, and API described below,
+   *   although available, does nothing.
+   *
+   *   ClearType-style LCD rendering exploits the color-striped structure of
+   *   LCD pixels, increasing the available resolution in the direction of
+   *   the stripe (usually horizontal RGB) by a factor of~3.  Since these
    *   subpixels are color pixels, using them unfiltered creates severe
    *   color fringes.  Use the @FT_Library_SetLcdFilter API to specify a
    *   low-pass filter, which is then applied to subpixel-rendered bitmaps
    *   generated through @FT_Render_Glyph.  The filter sacrifices some of
    *   the higher resolution to reduce color fringes, making the glyph image
    *   slightly blurrier.  Positional improvements will remain.
-   *
-   *   Note that no filter is active by default, and that this function is
-   *   *not* implemented in default builds of the library.  You need to
-   *   #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file
-   *   in order to activate it and explicitly call @FT_Library_SetLcdFilter
-   *   to enable it.
    *
    *   A filter should have two properties:
    *
Index: include/freetype/ftmac.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/ftmac.h,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 ftmac.h
--- include/freetype/ftmac.h 23 Jun 2017 16:15:18 -0000 1.7
+++ include/freetype/ftmac.h 20 Sep 2017 16:54:33 -0000
@@ -35,11 +35,12 @@
 FT_BEGIN_HEADER
 
 
-/* gcc-3.4.1 and later can warn about functions tagged as deprecated */
+  /* gcc-3.1 and later can warn about functions tagged as deprecated */
 #ifndef FT_DEPRECATED_ATTRIBUTE
-#if defined(__GNUC__)                                               && \
-    ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
-#define FT_DEPRECATED_ATTRIBUTE  __attribute__((deprecated))
+#if defined( __GNUC__ )                                     && \
+    ( ( __GNUC__ >= 4 )                                  ||    \
+      ( ( __GNUC__ == 3 ) && ( __GNUC_MINOR__ >= 1 ) ) )
+#define FT_DEPRECATED_ATTRIBUTE  __attribute__(( deprecated ))
 #else
 #define FT_DEPRECATED_ATTRIBUTE
 #endif
Index: include/freetype/ftmm.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/ftmm.h,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 ftmm.h
--- include/freetype/ftmm.h 23 Jun 2017 16:15:18 -0000 1.10
+++ include/freetype/ftmm.h 20 Sep 2017 16:54:34 -0000
@@ -178,7 +178,8 @@ FT_BEGIN_HEADER
   /*    strid  :: The entry in `name' table identifying this instance.     */
   /*                                                                       */
   /*    psid   :: The entry in `name' table identifying a PostScript name  */
-  /*              for this instance.                                       */
+  /*              for this instance.  Value 0xFFFF indicates a missing     */
+  /*              entry.                                                   */
   /*                                                                       */
   typedef struct  FT_Var_Named_Style_
   {
@@ -195,7 +196,7 @@ FT_BEGIN_HEADER
   /*    FT_MM_Var                                                          */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    A structure to model the axes and space of a Adobe MM, TrueType    */
+  /*    A structure to model the axes and space of an Adobe MM, TrueType   */
   /*    GX, or OpenType variation font.                                    */
   /*                                                                       */
   /*    Some fields are specific to one format and not to the others.      */
@@ -321,6 +322,11 @@ FT_BEGIN_HEADER
   /* <Return>                                                              */
   /*    FreeType error code.  0~means success.                             */
   /*                                                                       */
+  /* <Note>                                                                */
+  /*    To reset all axes to the default values, call the function with    */
+  /*    `num_coords' set to zero and `coords' set to NULL (new feature in  */
+  /*    FreeType version 2.8.1).                                           */
+  /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Set_MM_Design_Coordinates( FT_Face   face,
                                 FT_UInt   num_coords,
@@ -351,6 +357,11 @@ FT_BEGIN_HEADER
   /* <Return>                                                              */
   /*    FreeType error code.  0~means success.                             */
   /*                                                                       */
+  /* <Note>                                                                */
+  /*    To reset all axes to the default values, call the function with    */
+  /*    `num_coords' set to zero and `coords' set to NULL (new feature in  */
+  /*    FreeType version 2.8.1).                                           */
+  /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Set_Var_Design_Coordinates( FT_Face    face,
                                  FT_UInt    num_coords,
@@ -415,6 +426,11 @@ FT_BEGIN_HEADER
   /* <Return>                                                              */
   /*    FreeType error code.  0~means success.                             */
   /*                                                                       */
+  /* <Note>                                                                */
+  /*    To reset all axes to the default values, call the function with    */
+  /*    `num_coords' set to zero and `coords' set to NULL (new feature in  */
+  /*    FreeType version 2.8.1).                                           */
+  /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Set_MM_Blend_Coordinates( FT_Face    face,
                                FT_UInt    num_coords,
@@ -478,6 +494,50 @@ FT_BEGIN_HEADER
   FT_Get_Var_Blend_Coordinates( FT_Face    face,
                                 FT_UInt    num_coords,
                                 FT_Fixed*  coords );
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Enum>                                                                */
+  /*    FT_VAR_AXIS_FLAG_XXX                                               */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    A list of bit flags used in the return value of                    */
+  /*    @FT_Get_Var_Axis_Flags.                                            */
+  /*                                                                       */
+  /* <Values>                                                              */
+  /*    FT_VAR_AXIS_FLAG_HIDDEN ::                                         */
+  /*      The variation axis should not be exposed to user interfaces.     */
+  /*                                                                       */
+#define FT_VAR_AXIS_FLAG_HIDDEN  1
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Get_Var_Axis_Flags                                              */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Get the `flags' field of an OpenType Variation Axis Record.        */
+  /*                                                                       */
+  /*    Not meaningful for Adobe MM fonts (`*flags' is always zero).       */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    master     :: The variation descriptor.                            */
+  /*                                                                       */
+  /*    axis_index :: The index of the requested variation axis.           */
+  /*                                                                       */
+  /* <Output>                                                              */
+  /*    flags      :: The `flags' field.  See @FT_VAR_AXIS_FLAG_XXX for    */
+  /*                  possible values.                                     */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0~means success.                             */
+  /*                                                                       */
+  FT_EXPORT( FT_Error )
+  FT_Get_Var_Axis_Flags( FT_MM_Var*  master,
+                         FT_UInt     axis_index,
+                         FT_UInt*    flags );
 
   /* */
 
Index: include/freetype/ftoutln.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/ftoutln.h,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 ftoutln.h
--- include/freetype/ftoutln.h 23 Jun 2017 16:15:18 -0000 1.14
+++ include/freetype/ftoutln.h 20 Sep 2017 16:54:34 -0000
@@ -385,6 +385,9 @@ FT_BEGIN_HEADER
   /*    @FT_Outline_Embolden, which uses the same strength in both         */
   /*    directions.                                                        */
   /*                                                                       */
+  /* <Since>                                                               */
+  /*    2.4.10                                                             */
+  /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Outline_EmboldenXY( FT_Outline*  outline,
                          FT_Pos       xstrength,
Index: include/freetype/tttags.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/tttags.h,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 tttags.h
--- include/freetype/tttags.h 23 Jun 2017 16:15:18 -0000 1.9
+++ include/freetype/tttags.h 20 Sep 2017 16:54:34 -0000
@@ -106,6 +106,12 @@ FT_BEGIN_HEADER
 #define TTAG_VVAR  FT_MAKE_TAG( 'V', 'V', 'A', 'R' )
 #define TTAG_wOFF  FT_MAKE_TAG( 'w', 'O', 'F', 'F' )
 
+/* used by "Keyboard.dfont" on legacy Mac OS X */
+#define TTAG_0xA5kbd  FT_MAKE_TAG( 0xA5, 'k', 'b', 'd' )
+
+/* used by "LastResort.dfont" on legacy Mac OS X */
+#define TTAG_0xA5lst  FT_MAKE_TAG( 0xA5, 'l', 's', 't' )
+
 
 FT_END_HEADER
 
Index: include/freetype/config/ftoption.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/config/ftoption.h,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 ftoption.h
--- include/freetype/config/ftoption.h 23 Jun 2017 16:15:18 -0000 1.20
+++ include/freetype/config/ftoption.h 20 Sep 2017 16:54:34 -0000
@@ -107,20 +107,17 @@ FT_BEGIN_HEADER
 
   /*************************************************************************/
   /*                                                                       */
-  /* Uncomment the line below if you want to activate sub-pixel rendering  */
-  /* (a.k.a. LCD rendering, or ClearType) in this build of the library.    */
+  /* Uncomment the line below if you want to activate LCD rendering        */
+  /* technology similar to ClearType in this build of the library.  This   */
+  /* technology triples the resolution in the direction color subpixels.   */
+  /* To mitigate color fringes inherent to this technology, you also need  */
+  /* to explicitly set up LCD filtering.                                   */
   /*                                                                       */
   /* Note that this feature is covered by several Microsoft patents        */
   /* and should not be activated in any default build of the library.      */
-  /*                                                                       */
-  /* 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 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.                */
+  /* When this macro is not defined, FreeType offers alternative LCD       */
+  /* rendering technology that produces excellent output without LCD       */
+  /* filtering.                                                            */
   /*                                                                       */
 /* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
@@ -327,7 +324,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*   - The TrueType driver will provide its own set of glyph names,      */
   /*     if you build it to support postscript names in the TrueType       */
-  /*     `post' table.                                                     */
+  /*     `post' table, but will not synthesize a missing Unicode charmap.  */
   /*                                                                       */
   /*   - The Type 1 driver will not be able to synthesize a Unicode        */
   /*     charmap out of the glyphs found in the fonts.                     */
Index: include/freetype/internal/ftcalc.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/internal/ftcalc.h,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 ftcalc.h
--- include/freetype/internal/ftcalc.h 23 Jun 2017 16:15:18 -0000 1.12
+++ include/freetype/internal/ftcalc.h 20 Sep 2017 16:54:34 -0000
@@ -399,15 +399,41 @@ FT_BEGIN_HEADER
 #endif /* 0 */
 
 
-#define INT_TO_F26DOT6( x )    ( (FT_Long)(x) << 6  )
-#define INT_TO_F2DOT14( x )    ( (FT_Long)(x) << 14 )
-#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 INT_TO_F26DOT6( x )    ( (FT_Long)(x) * 64  )    /* << 6  */
+#define INT_TO_F2DOT14( x )    ( (FT_Long)(x) * 16384 )  /* << 14 */
+#define INT_TO_FIXED( x )      ( (FT_Long)(x) * 65536 )  /* << 16 */
+#define F2DOT14_TO_FIXED( x )  ( (FT_Long)(x) * 4 )      /* << 2  */
 #define FIXED_TO_INT( x )      ( FT_RoundFix( x ) >> 16 )
 
 #define ROUND_F26DOT6( x )     ( x >= 0 ? (    ( (x) + 32 ) & -64 )     \
                                         : ( -( ( 32 - (x) ) & -64 ) ) )
+
+  /*
+   *  The following macros have two purposes.
+   *
+   *  . Tag places where overflow is expected and harmless.
+   *
+   *  . Avoid run-time sanitizer errors.
+   *
+   *  Use with care!
+   */
+#define ADD_LONG( a, b )                             \
+          (FT_Long)( (FT_ULong)(a) + (FT_ULong)(b) )
+#define SUB_LONG( a, b )                             \
+          (FT_Long)( (FT_ULong)(a) - (FT_ULong)(b) )
+#define MUL_LONG( a, b )                             \
+          (FT_Long)( (FT_ULong)(a) * (FT_ULong)(b) )
+#define NEG_LONG( a )                                \
+          (FT_Long)( (FT_ULong)0 - (FT_ULong)(a) )
+
+#define ADD_INT32( a, b )                               \
+          (FT_Int32)( (FT_UInt32)(a) + (FT_UInt32)(b) )
+#define SUB_INT32( a, b )                               \
+          (FT_Int32)( (FT_UInt32)(a) - (FT_UInt32)(b) )
+#define MUL_INT32( a, b )                               \
+          (FT_Int32)( (FT_UInt32)(a) * (FT_UInt32)(b) )
+#define NEG_INT32( a )                                  \
+          (FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
 
 
 FT_END_HEADER
Index: include/freetype/internal/ftobjs.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/include/freetype/internal/ftobjs.h,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 ftobjs.h
--- include/freetype/internal/ftobjs.h 23 Jun 2017 16:15:18 -0000 1.16
+++ include/freetype/internal/ftobjs.h 20 Sep 2017 16:54:34 -0000
@@ -36,6 +36,7 @@
 #include FT_INTERNAL_AUTOHINT_H
 #include FT_INTERNAL_SERVICE_H
 #include FT_INTERNAL_PIC_H
+#include FT_INTERNAL_CALC_H
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
 #include FT_INCREMENTAL_H
@@ -85,13 +86,29 @@ FT_BEGIN_HEADER
 
   /* we use FT_TYPEOF to suppress signedness compilation warnings */
 #define FT_PAD_FLOOR( x, n )  ( (x) & ~FT_TYPEOF( x )( (n)-1 ) )
-#define FT_PAD_ROUND( x, n )  FT_PAD_FLOOR( (x) + ((n)/2), n )
-#define FT_PAD_CEIL( x, n )   FT_PAD_FLOOR( (x) + ((n)-1), n )
+#define FT_PAD_ROUND( x, n )  FT_PAD_FLOOR( (x) + (n)/2, n )
+#define FT_PAD_CEIL( x, n )   FT_PAD_FLOOR( (x) + (n)-1, n )
 
 #define FT_PIX_FLOOR( x )     ( (x) & ~FT_TYPEOF( x )63 )
 #define FT_PIX_ROUND( x )     FT_PIX_FLOOR( (x) + 32 )
 #define FT_PIX_CEIL( x )      FT_PIX_FLOOR( (x) + 63 )
 
+  /* specialized versions (for signed values)                   */
+  /* that don't produce run-time errors due to integer overflow */
+#define FT_PAD_ROUND_LONG( x, n )  FT_PAD_FLOOR( ADD_LONG( (x), (n) / 2 ), \
+                                                 n )
+#define FT_PAD_CEIL_LONG( x, n )   FT_PAD_FLOOR( ADD_LONG( (x), (n) - 1 ), \
+                                                 n )
+#define FT_PIX_ROUND_LONG( x )     FT_PIX_FLOOR( ADD_LONG( (x), 32 ) )
+#define FT_PIX_CEIL_LONG( x )      FT_PIX_FLOOR( ADD_LONG( (x), 63 ) )
+
+#define FT_PAD_ROUND_INT32( x, n )  FT_PAD_FLOOR( ADD_INT32( (x), (n) / 2 ), \
+                                                  n )
+#define FT_PAD_CEIL_INT32( x, n )   FT_PAD_FLOOR( ADD_INT32( (x), (n) - 1 ), \
+                                                  n )
+#define FT_PIX_ROUND_INT32( x )     FT_PIX_FLOOR( ADD_INT32( (x), 32 ) )
+#define FT_PIX_CEIL_INT32( x )      FT_PIX_FLOOR( ADD_INT32( (x), 63 ) )
+
 
   /*
    *  character classification functions -- since these are used to parse
@@ -856,11 +873,6 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*    auto_hinter      :: The auto-hinter module interface.              */
   /*                                                                       */
-  /*    raster_pool      :: The raster object's render pool.  This can     */
-  /*                        ideally be changed dynamically at run-time.    */
-  /*                                                                       */
-  /*    raster_pool_size :: The size of the render pool in bytes.          */
-  /*                                                                       */
   /*    debug_hooks      :: An array of four function pointers that allow  */
   /*                        debuggers to hook into a font format's         */
   /*                        interpreter.  Currently, only the TrueType     */
@@ -869,9 +881,6 @@ FT_BEGIN_HEADER
   /*    lcd_filter       :: If subpixel rendering is activated, the        */
   /*                        selected LCD filter mode.                      */
   /*                                                                       */
-  /*    lcd_extra        :: If subpixel rendering is activated, the number */
-  /*                        of extra pixels needed for the LCD filter.     */
-  /*                                                                       */
   /*    lcd_weights      :: If subpixel rendering is activated, the LCD    */
   /*                        filter weights, if any.                        */
   /*                                                                       */
@@ -903,15 +912,10 @@ FT_BEGIN_HEADER
     FT_Renderer        cur_renderer;     /* current outline renderer */
     FT_Module          auto_hinter;
 
-    FT_Byte*           raster_pool;      /* scan-line conversion */
-                                         /* render pool          */
-    FT_ULong           raster_pool_size; /* size of render pool in bytes */
-
     FT_DebugHook_Func  debug_hooks[4];
 
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
     FT_LcdFilter             lcd_filter;
-    FT_Int                   lcd_extra;        /* number of extra pixels */
     FT_LcdFiveTapFilter      lcd_weights;      /* filter weights, if any */
     FT_Bitmap_LcdFilterFunc  lcd_filter_func;  /* filtering callback     */
 #endif
Index: src/autofit/afblue.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afblue.c,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 afblue.c
--- src/autofit/afblue.c 23 Jun 2017 16:15:18 -0000 1.9
+++ src/autofit/afblue.c 20 Sep 2017 16:54:34 -0000
@@ -592,9 +592,6 @@
     { AF_BLUE_STRING_KAYAH_LI_DESCENDER,       0                                 },
     { AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER, 0                                 },
     { AF_BLUE_STRING_MAX,                      0                                 },
-    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
-    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          },
-    { AF_BLUE_STRING_MAX,            0                          },
     { AF_BLUE_STRING_KHMER_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP,   AF_BLUE_PROPERTY_LATIN_SUB_TOP    },
@@ -606,6 +603,9 @@
                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0                                 },
     { AF_BLUE_STRING_MAX,                         0                                 },
+    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
+    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          },
+    { AF_BLUE_STRING_MAX,            0                          },
     { AF_BLUE_STRING_LAO_TOP,            AF_BLUE_PROPERTY_LATIN_TOP      |
                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_LAO_BOTTOM,         0                                 },
@@ -701,6 +701,9 @@
     { AF_BLUE_STRING_TELUGU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_TELUGU_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,           0                          },
+    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP },
+    { AF_BLUE_STRING_TIFINAGH, 0                          },
+    { AF_BLUE_STRING_MAX,      0                          },
     { AF_BLUE_STRING_THAI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_THAI_BOTTOM,          0                                 },
@@ -710,9 +713,6 @@
     { AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0                                 },
     { AF_BLUE_STRING_THAI_DIGIT_TOP,       0                                 },
     { AF_BLUE_STRING_MAX,                  0                                 },
-    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP },
-    { AF_BLUE_STRING_TIFINAGH, 0                          },
-    { AF_BLUE_STRING_MAX,      0                          },
     { AF_BLUE_STRING_VAI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_VAI_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,        0                          },
Index: src/autofit/afblue.dat
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afblue.dat,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 afblue.dat
--- src/autofit/afblue.dat 23 Jun 2017 16:15:18 -0000 1.8
+++ src/autofit/afblue.dat 20 Sep 2017 16:54:34 -0000
@@ -872,11 +872,6 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSET
     { AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER, 0                                 }
     { AF_BLUE_STRING_MAX,                      0                                 }
 
-  AF_BLUE_STRINGSET_KNDA
-    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
-    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          }
-    { AF_BLUE_STRING_MAX,            0                          }
-
   AF_BLUE_STRINGSET_KHMR
     { AF_BLUE_STRING_KHMER_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
@@ -892,6 +887,11 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSET
     { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0                                 }
     { AF_BLUE_STRING_MAX,                         0                                 }
 
+  AF_BLUE_STRINGSET_KNDA
+    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
+    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          }
+    { AF_BLUE_STRING_MAX,            0                          }
+
   AF_BLUE_STRINGSET_LAO
     { AF_BLUE_STRING_LAO_TOP,            AF_BLUE_PROPERTY_LATIN_TOP      |
                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
@@ -1027,6 +1027,11 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSET
     { AF_BLUE_STRING_TELUGU_BOTTOM, 0                          }
     { AF_BLUE_STRING_MAX,           0                          }
 
+  AF_BLUE_STRINGSET_TFNG
+    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }
+    { AF_BLUE_STRING_TIFINAGH, 0                          }
+    { AF_BLUE_STRING_MAX,      0                          }
+
   AF_BLUE_STRINGSET_THAI
     { AF_BLUE_STRING_THAI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
@@ -1037,11 +1042,6 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSET
     { AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0                                 }
     { AF_BLUE_STRING_THAI_DIGIT_TOP,       0                                 }
     { AF_BLUE_STRING_MAX,                  0                                 }
-
-  AF_BLUE_STRINGSET_TFNG
-    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }
-    { AF_BLUE_STRING_TIFINAGH, 0                          }
-    { AF_BLUE_STRING_MAX,      0                          }
 
   AF_BLUE_STRINGSET_VAII
     { AF_BLUE_STRING_VAI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
Index: src/autofit/afblue.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afblue.h,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 afblue.h
--- src/autofit/afblue.h 23 Jun 2017 16:15:18 -0000 1.9
+++ src/autofit/afblue.h 20 Sep 2017 16:54:34 -0000
@@ -344,9 +344,9 @@ FT_BEGIN_HEADER
     AF_BLUE_STRINGSET_GURU = 116,
     AF_BLUE_STRINGSET_HEBR = 122,
     AF_BLUE_STRINGSET_KALI = 126,
-    AF_BLUE_STRINGSET_KNDA = 132,
-    AF_BLUE_STRINGSET_KHMR = 135,
-    AF_BLUE_STRINGSET_KHMS = 141,
+    AF_BLUE_STRINGSET_KHMR = 132,
+    AF_BLUE_STRINGSET_KHMS = 138,
+    AF_BLUE_STRINGSET_KNDA = 141,
     AF_BLUE_STRINGSET_LAO = 144,
     AF_BLUE_STRINGSET_LATN = 150,
     AF_BLUE_STRINGSET_LATB = 157,
@@ -367,8 +367,8 @@ FT_BEGIN_HEADER
     AF_BLUE_STRINGSET_TAML = 222,
     AF_BLUE_STRINGSET_TAVT = 225,
     AF_BLUE_STRINGSET_TELU = 228,
-    AF_BLUE_STRINGSET_THAI = 231,
-    AF_BLUE_STRINGSET_TFNG = 239,
+    AF_BLUE_STRINGSET_TFNG = 231,
+    AF_BLUE_STRINGSET_THAI = 234,
     AF_BLUE_STRINGSET_VAII = 242,
     af_blue_2_1 = 245,
 #ifdef AF_CONFIG_OPTION_CJK
Index: src/autofit/afcjk.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afcjk.c,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 afcjk.c
--- src/autofit/afcjk.c 23 Jun 2017 16:15:18 -0000 1.20
+++ src/autofit/afcjk.c 20 Sep 2017 16:54:34 -0000
@@ -2272,13 +2272,7 @@
       goto Exit;
 
     /* analyze glyph outline */
-#ifdef AF_CONFIG_OPTION_USE_WARPER
-    if ( ( metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
-           AF_HINTS_DO_WARP( hints )                                ) ||
-         AF_HINTS_DO_HORIZONTAL( hints )                              )
-#else
     if ( AF_HINTS_DO_HORIZONTAL( hints ) )
-#endif
     {
       error = af_cjk_hints_detect_features( hints, AF_DIMENSION_HORZ );
       if ( error )
@@ -2304,9 +2298,9 @@
       {
 
 #ifdef AF_CONFIG_OPTION_USE_WARPER
-        if ( dim == AF_DIMENSION_HORZ                                 &&
-             metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
-             AF_HINTS_DO_WARP( hints )                                )
+        if ( dim == AF_DIMENSION_HORZ                                  &&
+             metrics->root.scaler.render_mode == FT_RENDER_MODE_NORMAL &&
+             AF_HINTS_DO_WARP( hints )                                 )
         {
           AF_WarperRec  warper;
           FT_Fixed      scale;
Index: src/autofit/afhints.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afhints.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 afhints.c
--- src/autofit/afhints.c 23 Jun 2017 16:15:18 -0000 1.17
+++ src/autofit/afhints.c 20 Sep 2017 16:54:35 -0000
@@ -507,15 +507,15 @@
       return FT_THROW( Invalid_Argument );
 
     seg      = &axis->segments[idx];
-    *offset  = ( dim == AF_DIMENSION_HORZ ) ? seg->first->ox
-                                            : seg->first->oy;
+    *offset  = ( dim == AF_DIMENSION_HORZ ) ? seg->first->fx
+                                            : seg->first->fy;
     if ( seg->edge )
       *is_blue = (FT_Bool)( seg->edge->blue_edge != 0 );
     else
       *is_blue = FALSE;
 
     if ( *is_blue )
-      *blue_offset = seg->edge->blue_edge->cur;
+      *blue_offset = seg->edge->blue_edge->org;
     else
       *blue_offset = 0;
 
Index: src/autofit/aflatin.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/aflatin.c,v
retrieving revision 1.22
diff -u -p -u -p -r1.22 aflatin.c
--- src/autofit/aflatin.c 23 Jun 2017 16:15:18 -0000 1.22
+++ src/autofit/aflatin.c 20 Sep 2017 16:54:35 -0000
@@ -1690,9 +1690,11 @@
                 if ( prev_max_on_coord > max_on_coord )
                   max_on_coord = prev_max_on_coord;
 
-                prev_segment->last = point;
-                prev_segment->pos  = (FT_Short)( ( min_pos +
-                                                   max_pos ) >> 1 );
+                prev_segment->last  = point;
+                prev_segment->pos   = (FT_Short)( ( min_pos +
+                                                    max_pos ) >> 1 );
+                prev_segment->delta = (FT_Short)( ( max_pos -
+                                                    min_pos ) >> 1 );
 
                 if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL      &&
                      ( max_on_coord - min_on_coord ) < flat_threshold )
@@ -1720,9 +1722,11 @@
                   if ( max_pos > prev_max_pos )
                     prev_max_pos = max_pos;
 
-                  prev_segment->last = point;
-                  prev_segment->pos  = (FT_Short)( ( prev_min_pos +
-                                                     prev_max_pos ) >> 1 );
+                  prev_segment->last  = point;
+                  prev_segment->pos   = (FT_Short)( ( prev_min_pos +
+                                                      prev_max_pos ) >> 1 );
+                  prev_segment->delta = (FT_Short)( ( prev_max_pos -
+                                                      prev_min_pos ) >> 1 );
                 }
                 else
                 {
@@ -1733,8 +1737,9 @@
                   if ( prev_max_pos > max_pos )
                     max_pos = prev_max_pos;
 
-                  segment->last = point;
-                  segment->pos  = (FT_Short)( ( min_pos + max_pos ) >> 1 );
+                  segment->last  = point;
+                  segment->pos   = (FT_Short)( ( min_pos + max_pos ) >> 1 );
+                  segment->delta = (FT_Short)( ( max_pos - min_pos ) >> 1 );
 
                   if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL      &&
                        ( max_on_coord - min_on_coord ) < flat_threshold )
@@ -3492,13 +3497,7 @@
       goto Exit;
 
     /* analyze glyph outline */
-#ifdef AF_CONFIG_OPTION_USE_WARPER
-    if ( ( metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
-           AF_HINTS_DO_WARP( hints )                                ) ||
-         AF_HINTS_DO_HORIZONTAL( hints )                              )
-#else
     if ( AF_HINTS_DO_HORIZONTAL( hints ) )
-#endif
     {
       axis  = &metrics->axis[AF_DIMENSION_HORZ];
       error = af_latin_hints_detect_features( hints,
@@ -3528,9 +3527,9 @@
     for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ )
     {
 #ifdef AF_CONFIG_OPTION_USE_WARPER
-      if ( dim == AF_DIMENSION_HORZ                                 &&
-           metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
-           AF_HINTS_DO_WARP( hints )                                )
+      if ( dim == AF_DIMENSION_HORZ                                  &&
+           metrics->root.scaler.render_mode == FT_RENDER_MODE_NORMAL &&
+           AF_HINTS_DO_WARP( hints )                                 )
       {
         AF_WarperRec  warper;
         FT_Fixed      scale;
Index: src/autofit/aflatin2.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/aflatin2.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 aflatin2.c
--- src/autofit/aflatin2.c 23 Jun 2017 16:15:19 -0000 1.19
+++ src/autofit/aflatin2.c 20 Sep 2017 16:54:35 -0000
@@ -2340,13 +2340,7 @@
       goto Exit;
 
     /* analyze glyph outline */
-#ifdef AF_CONFIG_OPTION_USE_WARPER
-    if ( ( metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
-           AF_HINTS_DO_WARP( hints )                                ) ||
-         AF_HINTS_DO_HORIZONTAL( hints )                              )
-#else
     if ( AF_HINTS_DO_HORIZONTAL( hints ) )
-#endif
     {
       error = af_latin2_hints_detect_features( hints, AF_DIMENSION_HORZ );
       if ( error )
@@ -2366,9 +2360,9 @@
     for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ )
     {
 #ifdef AF_CONFIG_OPTION_USE_WARPER
-      if ( dim == AF_DIMENSION_HORZ                                 &&
-           metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
-           AF_HINTS_DO_WARP( hints )                                )
+      if ( dim == AF_DIMENSION_HORZ                                  &&
+           metrics->root.scaler.render_mode == FT_RENDER_MODE_NORMAL &&
+           AF_HINTS_DO_WARP( hints )                                 )
       {
         AF_WarperRec  warper;
         FT_Fixed      scale;
Index: src/autofit/afloader.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afloader.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 afloader.c
--- src/autofit/afloader.c 23 Jun 2017 16:15:19 -0000 1.17
+++ src/autofit/afloader.c 20 Sep 2017 16:54:35 -0000
@@ -483,8 +483,8 @@
           FT_Pos  pp2x = loader->pp2.x;
 
 
-          loader->pp1.x = FT_PIX_ROUND( pp1x );
-          loader->pp2.x = FT_PIX_ROUND( pp2x );
+          loader->pp1.x = FT_PIX_ROUND( pp1x + hints->xmin_delta );
+          loader->pp2.x = FT_PIX_ROUND( pp2x + hints->xmax_delta );
 
           slot->lsb_delta = loader->pp1.x - pp1x;
           slot->rsb_delta = loader->pp2.x - pp2x;
@@ -498,8 +498,8 @@
         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 );
+        loader->pp1.x = FT_PIX_ROUND( pp1x );
+        loader->pp2.x = FT_PIX_ROUND( pp2x );
 
         slot->lsb_delta = loader->pp1.x - pp1x;
         slot->rsb_delta = loader->pp2.x - pp2x;
Index: src/autofit/afscript.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afscript.h,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 afscript.h
--- src/autofit/afscript.h 23 Jun 2017 16:15:19 -0000 1.9
+++ src/autofit/afscript.h 20 Sep 2017 16:54:35 -0000
@@ -187,12 +187,6 @@
           HINTING_BOTTOM_TO_TOP,
           "\xEA\xA4\x8D \xEA\xA4\x80" ) /* ??? ??? */
 
-  SCRIPT( knda, KNDA,
-          "Kannada",
-          HB_SCRIPT_KANNADA,
-          HINTING_BOTTOM_TO_TOP,
-          "\xE0\xB3\xA6 \xE0\xB2\xAC" ) /* ??? ??? */
-
   /* only digit zero has a simple shape in the Khmer script */
   SCRIPT( khmr, KHMR,
           "Khmer",
@@ -206,6 +200,12 @@
           HINTING_BOTTOM_TO_TOP,
           "\xE1\xA7\xA1 \xE1\xA7\xAA" ) /* ??? ??? */
 
+  SCRIPT( knda, KNDA,
+          "Kannada",
+          HB_SCRIPT_KANNADA,
+          HINTING_BOTTOM_TO_TOP,
+          "\xE0\xB3\xA6 \xE0\xB2\xAC" ) /* ??? ??? */
+
   /* only digit zero has a simple shape in the Lao script */
   SCRIPT( lao, LAO,
           "Lao",
@@ -330,17 +330,17 @@
           HINTING_BOTTOM_TO_TOP,
           "\xE0\xB1\xA6 \xE0\xB1\xA7" ) /* ??? ??? */
 
-  SCRIPT( thai, THAI,
-          "Thai",
-          HB_SCRIPT_THAI,
-          HINTING_BOTTOM_TO_TOP,
-          "\xE0\xB8\xB2 \xE0\xB9\x85 \xE0\xB9\x90" ) /* ??? ??? ??? */
-
   SCRIPT( tfng, TFNG,
           "Tifinagh",
           HB_SCRIPT_TIFINAGH,
           HINTING_BOTTOM_TO_TOP,
           "\xE2\xB5\x94" ) /* ??? */
+
+  SCRIPT( thai, THAI,
+          "Thai",
+          HB_SCRIPT_THAI,
+          HINTING_BOTTOM_TO_TOP,
+          "\xE0\xB8\xB2 \xE0\xB9\x85 \xE0\xB9\x90" ) /* ??? ??? ??? */
 
   SCRIPT( vaii, VAII,
           "Vai",
Index: src/autofit/afshaper.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afshaper.c,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 afshaper.c
--- src/autofit/afshaper.c 23 Jun 2017 16:15:19 -0000 1.2
+++ src/autofit/afshaper.c 20 Sep 2017 16:54:35 -0000
@@ -18,6 +18,7 @@
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
+#include FT_ADVANCES_H
 #include "afglobal.h"
 #include "aftypes.h"
 #include "afshaper.h"
Index: src/autofit/afstyles.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/autofit/afstyles.h,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 afstyles.h
--- src/autofit/afstyles.h 23 Jun 2017 16:15:19 -0000 1.7
+++ src/autofit/afstyles.h 20 Sep 2017 16:54:35 -0000
@@ -255,13 +255,6 @@
          AF_BLUE_STRINGSET_KALI,
          AF_COVERAGE_DEFAULT )
 
-  STYLE( knda_dflt, KNDA_DFLT,
-         "Kannada default style",
-         AF_WRITING_SYSTEM_LATIN,
-         AF_SCRIPT_KNDA,
-         AF_BLUE_STRINGSET_KNDA,
-         AF_COVERAGE_DEFAULT )
-
   STYLE( khmr_dflt, KHMR_DFLT,
          "Khmer default style",
          AF_WRITING_SYSTEM_LATIN,
@@ -276,6 +269,13 @@
          AF_BLUE_STRINGSET_KHMS,
          AF_COVERAGE_DEFAULT )
 
+  STYLE( knda_dflt, KNDA_DFLT,
+         "Kannada default style",
+         AF_WRITING_SYSTEM_LATIN,
+         AF_SCRIPT_KNDA,
+         AF_BLUE_STRINGSET_KNDA,
+         AF_COVERAGE_DEFAULT )
+
   STYLE( lao_dflt, LAO_DFLT,
          "Lao default style",
          AF_WRITING_SYSTEM_LATIN,
@@ -420,18 +420,18 @@
          AF_BLUE_STRINGSET_TELU,
          AF_COVERAGE_DEFAULT )
 
-  STYLE( thai_dflt, THAI_DFLT,
-         "Thai default style",
-         AF_WRITING_SYSTEM_LATIN,
-         AF_SCRIPT_THAI,
-         AF_BLUE_STRINGSET_THAI,
-         AF_COVERAGE_DEFAULT )
-
   STYLE( tfng_dflt, TFNG_DFLT,
          "Tifinagh default style",
          AF_WRITING_SYSTEM_LATIN,
          AF_SCRIPT_TFNG,
          AF_BLUE_STRINGSET_TFNG,
+         AF_COVERAGE_DEFAULT )
+
+  STYLE( thai_dflt, THAI_DFLT,
+         "Thai default style",
+         AF_WRITING_SYSTEM_LATIN,
+         AF_SCRIPT_THAI,
+         AF_BLUE_STRINGSET_THAI,
          AF_COVERAGE_DEFAULT )
 
   STYLE( vaii_dflt, VAII_DFLT,
Index: src/base/ftbitmap.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftbitmap.c,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 ftbitmap.c
--- src/base/ftbitmap.c 23 Jun 2017 16:15:19 -0000 1.18
+++ src/base/ftbitmap.c 20 Sep 2017 16:54:35 -0000
@@ -226,7 +226,7 @@
     }
 
     /* otherwise allocate new buffer */
-    if ( FT_QALLOC_MULT( buffer, new_pitch, bitmap->rows + ypixels ) )
+    if ( FT_QALLOC_MULT( buffer, bitmap->rows + ypixels, new_pitch ) )
       return error;
 
     /* new rows get added at the top of the bitmap, */
@@ -534,8 +534,7 @@
              (FT_ULong)target->rows > FT_ULONG_MAX / (FT_ULong)target_pitch )
           return FT_THROW( Invalid_Argument );
 
-        if ( target->rows * (FT_ULong)target_pitch > old_size              &&
-             FT_QREALLOC( target->buffer,
+        if ( FT_QREALLOC( target->buffer,
                           old_size, target->rows * (FT_UInt)target_pitch ) )
           return error;
 
Index: src/base/ftcalc.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftcalc.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 ftcalc.c
--- src/base/ftcalc.c 23 Jun 2017 16:15:19 -0000 1.17
+++ src/base/ftcalc.c 20 Sep 2017 16:54:35 -0000
@@ -68,14 +68,15 @@
 #define FT_COMPONENT  trace_calc
 
 
-  /* transfer sign leaving a positive number */
-#define FT_MOVE_SIGN( x, s ) \
-  FT_BEGIN_STMNT             \
-    if ( x < 0 )             \
-    {                        \
-      x = -x;                \
-      s = -s;                \
-    }                        \
+  /* transfer sign, leaving a positive number;                        */
+  /* we need an unsigned value to safely negate INT_MIN (or LONG_MIN) */
+#define FT_MOVE_SIGN( x, x_unsigned, s ) \
+  FT_BEGIN_STMNT                         \
+    if ( x < 0 )                         \
+    {                                    \
+      x_unsigned = 0U - (x_unsigned);    \
+      s          = -s;                   \
+    }                                    \
   FT_END_STMNT
 
   /* The following three functions are available regardless of whether */
@@ -86,7 +87,7 @@
   FT_EXPORT_DEF( FT_Fixed )
   FT_RoundFix( FT_Fixed  a )
   {
-    return ( a + 0x8000L - ( a < 0 ) ) & ~0xFFFFL;
+    return ( ADD_LONG( a, 0x8000L - ( a < 0 ) ) ) & ~0xFFFFL;
   }
 
 
@@ -95,7 +96,7 @@
   FT_EXPORT_DEF( FT_Fixed )
   FT_CeilFix( FT_Fixed  a )
   {
-    return ( a + 0xFFFFL ) & ~0xFFFFL;
+    return ( ADD_LONG( a, 0xFFFFL ) ) & ~0xFFFFL;
   }
 
 
@@ -179,20 +180,20 @@
     FT_Long    d_;
 
 
-    FT_MOVE_SIGN( a_, s );
-    FT_MOVE_SIGN( b_, s );
-    FT_MOVE_SIGN( c_, s );
-
     a = (FT_UInt64)a_;
     b = (FT_UInt64)b_;
     c = (FT_UInt64)c_;
 
+    FT_MOVE_SIGN( a_, a, s );
+    FT_MOVE_SIGN( b_, b, s );
+    FT_MOVE_SIGN( c_, c, s );
+
     d = c > 0 ? ( a * b + ( c >> 1 ) ) / c
               : 0x7FFFFFFFUL;
 
     d_ = (FT_Long)d;
 
-    return s < 0 ? -d_ : d_;
+    return s < 0 ? NEG_LONG( d_ ) : d_;
   }
 
 
@@ -208,20 +209,20 @@
     FT_Long    d_;
 
 
-    FT_MOVE_SIGN( a_, s );
-    FT_MOVE_SIGN( b_, s );
-    FT_MOVE_SIGN( c_, s );
-
     a = (FT_UInt64)a_;
     b = (FT_UInt64)b_;
     c = (FT_UInt64)c_;
 
+    FT_MOVE_SIGN( a_, a, s );
+    FT_MOVE_SIGN( b_, b, s );
+    FT_MOVE_SIGN( c_, c, s );
+
     d = c > 0 ? a * b / c
               : 0x7FFFFFFFUL;
 
     d_ = (FT_Long)d;
 
-    return s < 0 ? -d_ : d_;
+    return s < 0 ? NEG_LONG( d_ ) : d_;
   }
 
 
@@ -257,18 +258,18 @@
     FT_Long    q_;
 
 
-    FT_MOVE_SIGN( a_, s );
-    FT_MOVE_SIGN( b_, s );
-
     a = (FT_UInt64)a_;
     b = (FT_UInt64)b_;
 
+    FT_MOVE_SIGN( a_, a, s );
+    FT_MOVE_SIGN( b_, b, s );
+
     q = b > 0 ? ( ( a << 16 ) + ( b >> 1 ) ) / b
               : 0x7FFFFFFFUL;
 
     q_ = (FT_Long)q;
 
-    return s < 0 ? -q_ : q_;
+    return s < 0 ? NEG_LONG( q_ ) : q_;
   }
 
 
@@ -422,14 +423,14 @@
 
     /* XXX: this function does not allow 64-bit arguments */
 
-    FT_MOVE_SIGN( a_, s );
-    FT_MOVE_SIGN( b_, s );
-    FT_MOVE_SIGN( c_, s );
-
     a = (FT_UInt32)a_;
     b = (FT_UInt32)b_;
     c = (FT_UInt32)c_;
 
+    FT_MOVE_SIGN( a_, a, s );
+    FT_MOVE_SIGN( b_, b, s );
+    FT_MOVE_SIGN( c_, c, s );
+
     if ( c == 0 )
       a = 0x7FFFFFFFUL;
 
@@ -455,7 +456,7 @@
 
     a_ = (FT_Long)a;
 
-    return s < 0 ? -a_ : a_;
+    return s < 0 ? NEG_LONG( a_ ) : a_;
   }
 
 
@@ -470,14 +471,14 @@
 
     /* XXX: this function does not allow 64-bit arguments */
 
-    FT_MOVE_SIGN( a_, s );
-    FT_MOVE_SIGN( b_, s );
-    FT_MOVE_SIGN( c_, s );
-
     a = (FT_UInt32)a_;
     b = (FT_UInt32)b_;
     c = (FT_UInt32)c_;
 
+    FT_MOVE_SIGN( a_, a, s );
+    FT_MOVE_SIGN( b_, b, s );
+    FT_MOVE_SIGN( c_, c, s );
+
     if ( c == 0 )
       a = 0x7FFFFFFFUL;
 
@@ -498,7 +499,7 @@
 
     a_ = (FT_Long)a;
 
-    return s < 0 ? -a_ : a_;
+    return s < 0 ? NEG_LONG( a_ ) : a_;
   }
 
 
@@ -575,12 +576,12 @@
 
     /* XXX: this function does not allow 64-bit arguments */
 
-    FT_MOVE_SIGN( a_, s );
-    FT_MOVE_SIGN( b_, s );
-
     a = (FT_UInt32)a_;
     b = (FT_UInt32)b_;
 
+    FT_MOVE_SIGN( a_, a, s );
+    FT_MOVE_SIGN( b_, b, s );
+
     if ( a + ( b >> 8 ) <= 8190UL )
       a = ( a * b + 0x8000UL ) >> 16;
     else
@@ -594,7 +595,7 @@
 
     a_ = (FT_Long)a;
 
-    return s < 0 ? -a_ : a_;
+    return s < 0 ? NEG_LONG( a_ ) : a_;
 
 #endif /* 0 */
 
@@ -614,12 +615,12 @@
 
     /* XXX: this function does not allow 64-bit arguments */
 
-    FT_MOVE_SIGN( a_, s );
-    FT_MOVE_SIGN( b_, s );
-
     a = (FT_UInt32)a_;
     b = (FT_UInt32)b_;
 
+    FT_MOVE_SIGN( a_, a, s );
+    FT_MOVE_SIGN( b_, b, s );
+
     if ( b == 0 )
     {
       /* check for division by 0 */
@@ -647,7 +648,7 @@
 
     q_ = (FT_Long)q;
 
-    return s < 0 ? -q_ : q_;
+    return s < 0 ? NEG_LONG( q_ ) : q_;
   }
 
 
@@ -666,13 +667,19 @@
     if ( !a || !b )
       return;
 
-    xx = FT_MulFix( a->xx, b->xx ) + FT_MulFix( a->xy, b->yx );
-    xy = FT_MulFix( a->xx, b->xy ) + FT_MulFix( a->xy, b->yy );
-    yx = FT_MulFix( a->yx, b->xx ) + FT_MulFix( a->yy, b->yx );
-    yy = FT_MulFix( a->yx, b->xy ) + FT_MulFix( a->yy, b->yy );
-
-    b->xx = xx;  b->xy = xy;
-    b->yx = yx;  b->yy = yy;
+    xx = ADD_LONG( FT_MulFix( a->xx, b->xx ),
+                   FT_MulFix( a->xy, b->yx ) );
+    xy = ADD_LONG( FT_MulFix( a->xx, b->xy ),
+                   FT_MulFix( a->xy, b->yy ) );
+    yx = ADD_LONG( FT_MulFix( a->yx, b->xx ),
+                   FT_MulFix( a->yy, b->yx ) );
+    yy = ADD_LONG( FT_MulFix( a->yx, b->xy ),
+                   FT_MulFix( a->yy, b->yy ) );
+
+    b->xx = xx;
+    b->xy = xy;
+    b->yx = yx;
+    b->yy = yy;
   }
 
 
@@ -722,13 +729,19 @@
     if ( !a || !b )
       return;
 
-    xx = FT_MulDiv( a->xx, b->xx, val ) + FT_MulDiv( a->xy, b->yx, val );
-    xy = FT_MulDiv( a->xx, b->xy, val ) + FT_MulDiv( a->xy, b->yy, val );
-    yx = FT_MulDiv( a->yx, b->xx, val ) + FT_MulDiv( a->yy, b->yx, val );
-    yy = FT_MulDiv( a->yx, b->xy, val ) + FT_MulDiv( a->yy, b->yy, val );
-
-    b->xx = xx;  b->xy = xy;
-    b->yx = yx;  b->yy = yy;
+    xx = ADD_LONG( FT_MulDiv( a->xx, b->xx, val ),
+                   FT_MulDiv( a->xy, b->yx, val ) );
+    xy = ADD_LONG( FT_MulDiv( a->xx, b->xy, val ),
+                   FT_MulDiv( a->xy, b->yy, val ) );
+    yx = ADD_LONG( FT_MulDiv( a->yx, b->xx, val ),
+                   FT_MulDiv( a->yy, b->yx, val ) );
+    yy = ADD_LONG( FT_MulDiv( a->yx, b->xy, val ),
+                   FT_MulDiv( a->yy, b->yy, val ) );
+
+    b->xx = xx;
+    b->xy = xy;
+    b->yx = yx;
+    b->yy = yy;
   }
 
 
@@ -747,11 +760,10 @@
     if ( !vector || !matrix )
       return;
 
-    xz = FT_MulDiv( vector->x, matrix->xx, val ) +
-         FT_MulDiv( vector->y, matrix->xy, val );
-
-    yz = FT_MulDiv( vector->x, matrix->yx, val ) +
-         FT_MulDiv( vector->y, matrix->yy, val );
+    xz = ADD_LONG( FT_MulDiv( vector->x, matrix->xx, val ),
+                   FT_MulDiv( vector->y, matrix->xy, val ) );
+    yz = ADD_LONG( FT_MulDiv( vector->x, matrix->yx, val ),
+                   FT_MulDiv( vector->y, matrix->yy, val ) );
 
     vector->x = xz;
     vector->y = yz;
@@ -770,12 +782,12 @@
     FT_Int     sx = 1, sy = 1, shift;
 
 
-    FT_MOVE_SIGN( x_, sx );
-    FT_MOVE_SIGN( y_, sy );
-
     x = (FT_UInt32)x_;
     y = (FT_UInt32)y_;
 
+    FT_MOVE_SIGN( x_, x, sx );
+    FT_MOVE_SIGN( y_, y, sy );
+
     /* trivial cases */
     if ( x == 0 )
     {
@@ -913,11 +925,13 @@
     FT_Int  result;
 
 
-    if ( (FT_ULong)FT_ABS( in_x ) + (FT_ULong)FT_ABS( out_y ) <= 131071UL &&
-         (FT_ULong)FT_ABS( in_y ) + (FT_ULong)FT_ABS( out_x ) <= 131071UL )
+    /* we silently ignore overflow errors, since such large values */
+    /* lead to even more (harmless) rendering errors later on      */
+    if ( ADD_LONG( FT_ABS( in_x ), FT_ABS( out_y ) ) <= 131071L &&
+         ADD_LONG( FT_ABS( in_y ), FT_ABS( out_x ) ) <= 131071L )
     {
-      FT_Long  z1 = in_x * out_y;
-      FT_Long  z2 = in_y * out_x;
+      FT_Long  z1 = MUL_LONG( in_x, out_y );
+      FT_Long  z2 = MUL_LONG( in_y, out_x );
 
 
       if ( z1 > z2 )
Index: src/base/ftglyph.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftglyph.c,v
retrieving revision 1.15
diff -u -p -u -p -r1.15 ftglyph.c
--- src/base/ftglyph.c 23 Jun 2017 16:15:19 -0000 1.15
+++ src/base/ftglyph.c 20 Sep 2017 16:54:35 -0000
@@ -408,12 +408,28 @@
       goto Exit;
 
     /* copy advance while converting 26.6 to 16.16 format */
+    if ( slot->advance.x >=  0x8000L * 64 ||
+         slot->advance.x <= -0x8000L * 64 )
+    {
+      FT_ERROR(( "FT_Get_Glyph: advance width too large\n" ));
+      error = FT_THROW( Invalid_Argument );
+      goto Exit2;
+    }
+    if ( slot->advance.y >=  0x8000L * 64 ||
+         slot->advance.y <= -0x8000L * 64 )
+    {
+      FT_ERROR(( "FT_Get_Glyph: advance height too large\n" ));
+      error = FT_THROW( Invalid_Argument );
+      goto Exit2;
+    }
+
     glyph->advance.x = slot->advance.x * 1024;
     glyph->advance.y = slot->advance.y * 1024;
 
     /* now import the image from the glyph slot */
     error = clazz->glyph_init( glyph, slot );
 
+  Exit2:
     /* if an error occurred, destroy the glyph */
     if ( error )
       FT_Done_Glyph( glyph );
Index: src/base/ftlcdfil.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftlcdfil.c,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 ftlcdfil.c
--- src/base/ftlcdfil.c 23 Jun 2017 16:15:19 -0000 1.10
+++ src/base/ftlcdfil.c 20 Sep 2017 16:54:35 -0000
@@ -29,141 +29,107 @@
 /* define USE_LEGACY to implement the legacy filter */
 #define  USE_LEGACY
 
+#define FT_SHIFTCLAMP( x )  ( x >>= 8, (FT_Byte)( x > 255 ? 255 : x ) )
+
   /* FIR filter used by the default and light filters */
   FT_BASE( void )
   ft_lcd_filter_fir( FT_Bitmap*           bitmap,
                      FT_Render_Mode       mode,
                      FT_LcdFiveTapFilter  weights )
   {
-    FT_UInt  width   = (FT_UInt)bitmap->width;
-    FT_UInt  height  = (FT_UInt)bitmap->rows;
+    FT_UInt   width  = (FT_UInt)bitmap->width;
+    FT_UInt   height = (FT_UInt)bitmap->rows;
+    FT_Int    pitch  = bitmap->pitch;
+    FT_Byte*  origin = bitmap->buffer;
+
 
+    /* take care of bitmap flow */
+    if ( pitch > 0 )
+      origin += pitch * (FT_Int)( height - 1 );
 
     /* horizontal in-place FIR filter */
-    if ( mode == FT_RENDER_MODE_LCD && width >= 4 )
+    if ( mode == FT_RENDER_MODE_LCD && width >= 2 )
     {
-      FT_Byte*  line = bitmap->buffer;
-
+      FT_Byte*  line = origin;
 
-      /* take care of bitmap flow */
-      if ( bitmap->pitch < 0 )
-        line -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
 
-      /* `fir' and `pix' must be at least 32 bit wide, since the sum of */
-      /* the values in `weights' can exceed 0xFF                        */
+      /* `fir' must be at least 32 bit wide, since the sum of */
+      /* the values in `weights' can exceed 0xFF              */
 
-      for ( ; height > 0; height--, line += bitmap->pitch )
+      for ( ; height > 0; height--, line -= pitch )
       {
-        FT_UInt  fir[4];        /* below, `pix' is used as the 5th element */
-        FT_UInt  val1, xx;
+        FT_UInt  fir[5];
+        FT_UInt  val, xx;
 
 
-        val1   = line[0];
-        fir[0] = weights[2] * val1;
-        fir[1] = weights[3] * val1;
-        fir[2] = weights[4] * val1;
-        fir[3] = 0;
-
-        val1    = line[1];
-        fir[0] += weights[1] * val1;
-        fir[1] += weights[2] * val1;
-        fir[2] += weights[3] * val1;
-        fir[3] += weights[4] * val1;
+        val    = line[0];
+        fir[2] = weights[2] * val;
+        fir[3] = weights[3] * val;
+        fir[4] = weights[4] * val;
+
+        val    = line[1];
+        fir[1] = fir[2] + weights[1] * val;
+        fir[2] = fir[3] + weights[2] * val;
+        fir[3] = fir[4] + weights[3] * val;
+        fir[4] =          weights[4] * val;
 
         for ( xx = 2; xx < width; xx++ )
         {
-          FT_UInt  val, pix;
-
-
           val    = line[xx];
-          pix    = fir[0] + weights[0] * val;
-          fir[0] = fir[1] + weights[1] * val;
-          fir[1] = fir[2] + weights[2] * val;
-          fir[2] = fir[3] + weights[3] * val;
-          fir[3] =          weights[4] * val;
-
-          pix        >>= 8;
-          pix         |= (FT_UInt)-(FT_Int)( pix >> 8 );
-          line[xx - 2] = (FT_Byte)pix;
-        }
+          fir[0] = fir[1] + weights[0] * val;
+          fir[1] = fir[2] + weights[1] * val;
+          fir[2] = fir[3] + weights[2] * val;
+          fir[3] = fir[4] + weights[3] * val;
+          fir[4] =          weights[4] * val;
 
-        {
-          FT_UInt  pix;
-
-
-          pix          = fir[0] >> 8;
-          pix         |= (FT_UInt)-(FT_Int)( pix >> 8 );
-          line[xx - 2] = (FT_Byte)pix;
-
-          pix          = fir[1] >> 8;
-          pix         |= (FT_UInt)-(FT_Int)( pix >> 8 );
-          line[xx - 1] = (FT_Byte)pix;
+          line[xx - 2] = FT_SHIFTCLAMP( fir[0] );
         }
+
+        line[xx - 2] = FT_SHIFTCLAMP( fir[1] );
+        line[xx - 1] = FT_SHIFTCLAMP( fir[2] );
       }
     }
 
     /* vertical in-place FIR filter */
-    else if ( mode == FT_RENDER_MODE_LCD_V && height >= 4 )
+    else if ( mode == FT_RENDER_MODE_LCD_V && height >= 2 )
     {
-      FT_Byte*  column = bitmap->buffer;
-      FT_Int    pitch  = bitmap->pitch;
-
+      FT_Byte*  column = origin;
 
-      /* take care of bitmap flow */
-      if ( bitmap->pitch < 0 )
-        column -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
 
       for ( ; width > 0; width--, column++ )
       {
         FT_Byte*  col = column;
-        FT_UInt   fir[4];       /* below, `pix' is used as the 5th element */
-        FT_UInt   val1, yy;
+        FT_UInt   fir[5];
+        FT_UInt   val, yy;
 
 
-        val1   = col[0];
-        fir[0] = weights[2] * val1;
-        fir[1] = weights[3] * val1;
-        fir[2] = weights[4] * val1;
-        fir[3] = 0;
-        col   += pitch;
-
-        val1    = col[0];
-        fir[0] += weights[1] * val1;
-        fir[1] += weights[2] * val1;
-        fir[2] += weights[3] * val1;
-        fir[3] += weights[4] * val1;
-        col    += pitch;
+        val    = col[0];
+        fir[2] = weights[2] * val;
+        fir[3] = weights[3] * val;
+        fir[4] = weights[4] * val;
+        col   -= pitch;
+
+        val    = col[0];
+        fir[1] = fir[2] + weights[1] * val;
+        fir[2] = fir[3] + weights[2] * val;
+        fir[3] = fir[4] + weights[3] * val;
+        fir[4] =          weights[4] * val;
+        col   -= pitch;
 
-        for ( yy = 2; yy < height; yy++ )
+        for ( yy = 2; yy < height; yy++, col -= pitch )
         {
-          FT_UInt  val, pix;
-
-
           val    = col[0];
-          pix    = fir[0] + weights[0] * val;
-          fir[0] = fir[1] + weights[1] * val;
-          fir[1] = fir[2] + weights[2] * val;
-          fir[2] = fir[3] + weights[3] * val;
-          fir[3] =          weights[4] * val;
-
-          pix           >>= 8;
-          pix            |= (FT_UInt)-(FT_Int)( pix >> 8 );
-          col[-2 * pitch] = (FT_Byte)pix;
-          col            += pitch;
-        }
-
-        {
-          FT_UInt  pix;
-
+          fir[0] = fir[1] + weights[0] * val;
+          fir[1] = fir[2] + weights[1] * val;
+          fir[2] = fir[3] + weights[2] * val;
+          fir[3] = fir[4] + weights[3] * val;
+          fir[4] =          weights[4] * val;
 
-          pix             = fir[0] >> 8;
-          pix            |= (FT_UInt)-(FT_Int)( pix >> 8 );
-          col[-2 * pitch] = (FT_Byte)pix;
-
-          pix         = fir[1] >> 8;
-          pix        |= (FT_UInt)-(FT_Int)( pix >> 8 );
-          col[-pitch] = (FT_Byte)pix;
+          col[pitch * 2]  = FT_SHIFTCLAMP( fir[0] );
         }
+
+        col[pitch * 2]  = FT_SHIFTCLAMP( fir[1] );
+        col[pitch]      = FT_SHIFTCLAMP( fir[2] );
       }
     }
   }
@@ -177,9 +143,10 @@
                          FT_Render_Mode  mode,
                          FT_Byte*        weights )
   {
-    FT_UInt  width  = (FT_UInt)bitmap->width;
-    FT_UInt  height = (FT_UInt)bitmap->rows;
-    FT_Int   pitch  = bitmap->pitch;
+    FT_UInt   width  = (FT_UInt)bitmap->width;
+    FT_UInt   height = (FT_UInt)bitmap->rows;
+    FT_Int    pitch  = bitmap->pitch;
+    FT_Byte*  origin = bitmap->buffer;
 
     static const unsigned int  filters[3][3] =
     {
@@ -191,33 +158,31 @@
     FT_UNUSED( weights );
 
 
+    /* take care of bitmap flow */
+    if ( pitch > 0 )
+      origin += pitch * (FT_Int)( height - 1 );
+
     /* horizontal in-place intra-pixel filter */
     if ( mode == FT_RENDER_MODE_LCD && width >= 3 )
     {
-      FT_Byte*  line = bitmap->buffer;
+      FT_Byte*  line = origin;
 
 
-      /* take care of bitmap flow */
-      if ( bitmap->pitch < 0 )
-        line -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
-
-      for ( ; height > 0; height--, line += pitch )
+      for ( ; height > 0; height--, line -= pitch )
       {
         FT_UInt  xx;
 
 
         for ( xx = 0; xx < width; xx += 3 )
         {
-          FT_UInt  r = 0;
-          FT_UInt  g = 0;
-          FT_UInt  b = 0;
+          FT_UInt  r, g, b;
           FT_UInt  p;
 
 
           p  = line[xx];
-          r += filters[0][0] * p;
-          g += filters[0][1] * p;
-          b += filters[0][2] * p;
+          r  = filters[0][0] * p;
+          g  = filters[0][1] * p;
+          b  = filters[0][2] * p;
 
           p  = line[xx + 1];
           r += filters[1][0] * p;
@@ -237,31 +202,24 @@
     }
     else if ( mode == FT_RENDER_MODE_LCD_V && height >= 3 )
     {
-      FT_Byte*  column = bitmap->buffer;
-
+      FT_Byte*  column = origin;
 
-      /* take care of bitmap flow */
-      if ( bitmap->pitch < 0 )
-        column -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
 
       for ( ; width > 0; width--, column++ )
       {
-        FT_Byte*  col     = column;
-        FT_Byte*  col_end = col + (FT_Int)height * pitch;
+        FT_Byte*  col = column - 2 * pitch;
 
 
-        for ( ; col < col_end; col += 3 * pitch )
+        for ( ; height > 0; height -= 3, col -= 3 * pitch )
         {
-          FT_UInt  r = 0;
-          FT_UInt  g = 0;
-          FT_UInt  b = 0;
+          FT_UInt  r, g, b;
           FT_UInt  p;
 
 
           p  = col[0];
-          r += filters[0][0] * p;
-          g += filters[0][1] * p;
-          b += filters[0][2] * p;
+          r  = filters[0][0] * p;
+          g  = filters[0][1] * p;
+          b  = filters[0][2] * p;
 
           p  = col[pitch];
           r += filters[1][0] * p;
@@ -275,7 +233,7 @@
 
           col[0]         = (FT_Byte)( r / 65536 );
           col[pitch]     = (FT_Byte)( g / 65536 );
-          col[2 * pitch] = (FT_Byte)( b / 65536 );
+          col[pitch * 2] = (FT_Byte)( b / 65536 );
         }
       }
     }
@@ -296,7 +254,6 @@
 
     ft_memcpy( library->lcd_weights, weights, FT_LCD_FILTER_FIVE_TAPS );
     library->lcd_filter_func = ft_lcd_filter_fir;
-    library->lcd_extra       = 2;
 
     return FT_Err_Ok;
   }
@@ -319,7 +276,6 @@
     {
     case FT_LCD_FILTER_NONE:
       library->lcd_filter_func = NULL;
-      library->lcd_extra       = 0;
       break;
 
     case FT_LCD_FILTER_DEFAULT:
@@ -327,7 +283,6 @@
                  default_weights,
                  FT_LCD_FILTER_FIVE_TAPS );
       library->lcd_filter_func = ft_lcd_filter_fir;
-      library->lcd_extra       = 2;
       break;
 
     case FT_LCD_FILTER_LIGHT:
@@ -335,7 +290,6 @@
                  light_weights,
                  FT_LCD_FILTER_FIVE_TAPS );
       library->lcd_filter_func = ft_lcd_filter_fir;
-      library->lcd_extra       = 2;
       break;
 
 #ifdef USE_LEGACY
@@ -343,7 +297,6 @@
     case FT_LCD_FILTER_LEGACY:
     case FT_LCD_FILTER_LEGACY1:
       library->lcd_filter_func = _ft_lcd_filter_legacy;
-      library->lcd_extra       = 0;
       break;
 
 #endif
Index: src/base/ftmac.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftmac.c,v
retrieving revision 1.15
diff -u -p -u -p -r1.15 ftmac.c
--- src/base/ftmac.c 23 Jun 2017 16:15:19 -0000 1.15
+++ src/base/ftmac.c 20 Sep 2017 16:54:35 -0000
@@ -1005,7 +1005,7 @@
   /*    accepts an FSRef instead of a path.                                */
   /*                                                                       */
   /* This function is deprecated because Carbon data types (FSRef)         */
-  /* are not cross-platform, and thus not suitable for the freetype API.   */
+  /* are not cross-platform, and thus not suitable for the FreeType API.   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face_From_FSRef( FT_Library    library,
                           const FSRef*  ref,
Index: src/base/ftmm.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftmm.c,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 ftmm.c
--- src/base/ftmm.c 23 Jun 2017 16:15:19 -0000 1.8
+++ src/base/ftmm.c 20 Sep 2017 16:54:35 -0000
@@ -158,7 +158,7 @@
 
     /* check of `face' delayed to `ft_face_get_mm_service' */
 
-    if ( !coords )
+    if ( num_coords && !coords )
       return FT_THROW( Invalid_Argument );
 
     error = ft_face_get_mm_service( face, &service );
@@ -194,7 +194,7 @@
 
     /* check of `face' delayed to `ft_face_get_mm_service' */
 
-    if ( !coords )
+    if ( num_coords && !coords )
       return FT_THROW( Invalid_Argument );
 
     error = ft_face_get_mm_service( face, &service_mm );
@@ -266,7 +266,7 @@
 
     /* check of `face' delayed to `ft_face_get_mm_service' */
 
-    if ( !coords )
+    if ( num_coords && !coords )
       return FT_THROW( Invalid_Argument );
 
     error = ft_face_get_mm_service( face, &service_mm );
@@ -313,7 +313,7 @@
 
     /* check of `face' delayed to `ft_face_get_mm_service' */
 
-    if ( !coords )
+    if ( num_coords && !coords )
       return FT_THROW( Invalid_Argument );
 
     error = ft_face_get_mm_service( face, &service_mm );
@@ -399,6 +399,30 @@
     }
 
     return error;
+  }
+
+
+  /* documentation is in ftmm.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_Var_Axis_Flags( FT_MM_Var*  master,
+                         FT_UInt     axis_index,
+                         FT_UInt*    flags )
+  {
+    FT_UShort*  axis_flags;
+
+
+    if ( !master || !flags )
+      return FT_THROW( Invalid_Argument );
+
+    if ( axis_index >= master->num_axis )
+      return FT_THROW( Invalid_Argument );
+
+    /* the axis flags array immediately follows the data of `master' */
+    axis_flags = (FT_UShort*)&( master[1] );
+    *flags     = axis_flags[axis_index];
+
+    return FT_Err_Ok;
   }
 
 
Index: src/base/ftobjs.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftobjs.c,v
retrieving revision 1.27
diff -u -p -u -p -r1.27 ftobjs.c
--- src/base/ftobjs.c 23 Jun 2017 16:15:19 -0000 1.27
+++ src/base/ftobjs.c 20 Sep 2017 16:54:36 -0000
@@ -579,34 +579,42 @@
     if ( vertical )
     {
       metrics->horiBearingX = FT_PIX_FLOOR( metrics->horiBearingX );
-      metrics->horiBearingY = FT_PIX_CEIL ( metrics->horiBearingY );
+      metrics->horiBearingY = FT_PIX_CEIL_LONG( metrics->horiBearingY );
 
-      right  = FT_PIX_CEIL( metrics->vertBearingX + metrics->width );
-      bottom = FT_PIX_CEIL( metrics->vertBearingY + metrics->height );
+      right  = FT_PIX_CEIL_LONG( ADD_LONG( metrics->vertBearingX,
+                                           metrics->width ) );
+      bottom = FT_PIX_CEIL_LONG( ADD_LONG( metrics->vertBearingY,
+                                           metrics->height ) );
 
       metrics->vertBearingX = FT_PIX_FLOOR( metrics->vertBearingX );
       metrics->vertBearingY = FT_PIX_FLOOR( metrics->vertBearingY );
 
-      metrics->width  = right - metrics->vertBearingX;
-      metrics->height = bottom - metrics->vertBearingY;
+      metrics->width  = SUB_LONG( right,
+                                  metrics->vertBearingX );
+      metrics->height = SUB_LONG( bottom,
+                                  metrics->vertBearingY );
     }
     else
     {
       metrics->vertBearingX = FT_PIX_FLOOR( metrics->vertBearingX );
       metrics->vertBearingY = FT_PIX_FLOOR( metrics->vertBearingY );
 
-      right  = FT_PIX_CEIL ( metrics->horiBearingX + metrics->width );
-      bottom = FT_PIX_FLOOR( metrics->horiBearingY - metrics->height );
+      right  = FT_PIX_CEIL_LONG( ADD_LONG( metrics->horiBearingX,
+                                           metrics->width ) );
+      bottom = FT_PIX_FLOOR( SUB_LONG( metrics->horiBearingY,
+                                       metrics->height ) );
 
       metrics->horiBearingX = FT_PIX_FLOOR( metrics->horiBearingX );
-      metrics->horiBearingY = FT_PIX_CEIL ( metrics->horiBearingY );
+      metrics->horiBearingY = FT_PIX_CEIL_LONG( metrics->horiBearingY );
 
-      metrics->width  = right - metrics->horiBearingX;
-      metrics->height = metrics->horiBearingY - bottom;
+      metrics->width  = SUB_LONG( right,
+                                  metrics->horiBearingX );
+      metrics->height = SUB_LONG( metrics->horiBearingY,
+                                  bottom );
     }
 
-    metrics->horiAdvance = FT_PIX_ROUND( metrics->horiAdvance );
-    metrics->vertAdvance = FT_PIX_ROUND( metrics->vertAdvance );
+    metrics->horiAdvance = FT_PIX_ROUND_LONG( metrics->horiAdvance );
+    metrics->vertAdvance = FT_PIX_ROUND_LONG( metrics->vertAdvance );
   }
 #endif /* GRID_FIT_METRICS */
 
@@ -4549,7 +4557,7 @@
     if ( !clazz )
       return FT_THROW( Invalid_Argument );
 
-    /* check freetype version */
+    /* check FreeType version */
     if ( clazz->module_requires > FREETYPE_VER_FIXED )
       return FT_THROW( Invalid_Version );
 
@@ -4972,10 +4980,6 @@
     if ( error )
       goto Fail;
 #endif
-
-    /* we don't use raster_pool anymore. */
-    library->raster_pool_size = 0;
-    library->raster_pool      = NULL;
 
     library->version_major = FREETYPE_MAJOR;
     library->version_minor = FREETYPE_MINOR;
Index: src/base/ftoutln.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftoutln.c,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 ftoutln.c
--- src/base/ftoutln.c 23 Jun 2017 16:15:19 -0000 1.18
+++ src/base/ftoutln.c 20 Sep 2017 16:54:36 -0000
@@ -1088,7 +1088,8 @@
         v_cur.x = points[n].x >> xshift;
         v_cur.y = points[n].y >> yshift;
 
-        area += ( v_cur.y - v_prev.y ) * ( v_cur.x + v_prev.x );
+        area = ADD_LONG( area,
+                         ( v_cur.y - v_prev.y ) * ( v_cur.x + v_prev.x ) );
 
         v_prev = v_cur;
       }
Index: src/base/ftrfork.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftrfork.c,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 ftrfork.c
--- src/base/ftrfork.c 23 Jun 2017 16:15:19 -0000 1.21
+++ src/base/ftrfork.c 20 Sep 2017 16:54:36 -0000
@@ -271,7 +271,13 @@
           if ( FT_STREAM_SKIP( 4 ) )  /* mbz */
             goto Exit;
 
-          if ( ref[j].res_id < 0 || temp < 0 )
+          /*
+           * According to Inside Macintosh: More Macintosh Toolbox,
+           * "Resource IDs" (1-46), there are some reserved IDs.
+           * However, FreeType2 is not a font synthesizer, no need
+           * to check the acceptable resource ID.
+           */
+          if ( temp < 0 )
           {
             error = FT_THROW( Invalid_Table );
             goto Exit;
@@ -281,7 +287,7 @@
 
           FT_TRACE3(( "             [%d]:"
                       " resource_id=0x%04x, offset=0x%08x\n",
-                      j, ref[j].res_id, ref[j].offset ));
+                      j, (FT_UShort)ref[j].res_id, ref[j].offset ));
         }
 
         if ( sort_by_res_id )
Index: src/base/ftsynth.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftsynth.c,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 ftsynth.c
--- src/base/ftsynth.c 23 Jun 2017 16:15:19 -0000 1.11
+++ src/base/ftsynth.c 20 Sep 2017 16:54:36 -0000
@@ -123,7 +123,7 @@
 
       /*
        * XXX: overflow check for 16-bit system, for compatibility
-       *      with FT_GlyphSlot_Embolden() since freetype-2.1.10.
+       *      with FT_GlyphSlot_Embolden() since FreeType 2.1.10.
        *      unfortunately, this function return no informations
        *      about the cause of error.
        */
Index: src/base/ftutil.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/base/ftutil.c,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 ftutil.c
--- src/base/ftutil.c 23 Jun 2017 16:15:19 -0000 1.8
+++ src/base/ftutil.c 20 Sep 2017 16:54:36 -0000
@@ -135,7 +135,7 @@
       ft_mem_free( memory, block );
       block = NULL;
     }
-    else if ( new_count > FT_INT_MAX/item_size )
+    else if ( new_count > FT_INT_MAX / item_size )
     {
       error = FT_THROW( Array_Too_Large );
     }
@@ -143,13 +143,15 @@
     {
       FT_ASSERT( !block );
 
-      block = ft_mem_alloc( memory, new_count*item_size, &error );
+      block = memory->alloc( memory, new_count * item_size );
+      if ( block == NULL )
+        error = FT_THROW( Out_Of_Memory );
     }
     else
     {
       FT_Pointer  block2;
-      FT_Long     cur_size = cur_count*item_size;
-      FT_Long     new_size = new_count*item_size;
+      FT_Long     cur_size = cur_count * item_size;
+      FT_Long     new_size = new_count * item_size;
 
 
       block2 = memory->realloc( memory, cur_size, new_size, block );
Index: src/bdf/bdfdrivr.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/bdf/bdfdrivr.c,v
retrieving revision 1.15
diff -u -p -u -p -r1.15 bdfdrivr.c
--- src/bdf/bdfdrivr.c 13 Jan 2017 11:19:59 -0000 1.15
+++ src/bdf/bdfdrivr.c 20 Sep 2017 16:54:36 -0000
@@ -373,7 +373,7 @@ THE SOFTWARE.
     /* we have a bdf font: let's construct the face object */
     face->bdffont = font;
 
-    /* BDF could not have multiple face in single font file.
+    /* BDF cannot have multiple faces in a single font file.
      * XXX: non-zero face_index is already invalid argument, but
      *      Type1, Type42 driver has a convention to return
      *      an invalid argument error when the font could be
@@ -437,46 +437,156 @@ THE SOFTWARE.
       {
         FT_Bitmap_Size*  bsize = bdfface->available_sizes;
         FT_Short         resolution_x = 0, resolution_y = 0;
+        long             value;
 
 
         FT_ZERO( bsize );
 
+        /* sanity checks */
+        if ( font->font_ascent > 0x7FFF || font->font_ascent < -0x7FFF )
+        {
+          font->font_ascent = font->font_ascent < 0 ? -0x7FFF : 0x7FFF;
+          FT_TRACE0(( "BDF_Face_Init: clamping font ascent to value %d\n",
+                      font->font_ascent ));
+        }
+        if ( font->font_descent > 0x7FFF || font->font_descent < -0x7FFF )
+        {
+          font->font_descent = font->font_descent < 0 ? -0x7FFF : 0x7FFF;
+          FT_TRACE0(( "BDF_Face_Init: clamping font descent to value %d\n",
+                      font->font_descent ));
+        }
+
         bsize->height = (FT_Short)( font->font_ascent + font->font_descent );
 
         prop = bdf_get_font_property( font, "AVERAGE_WIDTH" );
         if ( prop )
-          bsize->width = (FT_Short)( ( prop->value.l + 5 ) / 10 );
+        {
+#ifdef FT_DEBUG_LEVEL_TRACE
+          if ( prop->value.l < 0 )
+            FT_TRACE0(( "BDF_Face_Init: negative average width\n" ));
+#endif
+          if ( prop->value.l >    0x7FFFL * 10 - 5   ||
+               prop->value.l < -( 0x7FFFL * 10 - 5 ) )
+          {
+            bsize->width = 0x7FFF;
+            FT_TRACE0(( "BDF_Face_Init: clamping average width to value %d\n",
+                        bsize->width ));
+          }
+          else
+            bsize->width = FT_ABS( (FT_Short)( ( prop->value.l + 5 ) / 10 ) );
+        }
         else
-          bsize->width = (FT_Short)( bsize->height * 2/3 );
+        {
+          /* this is a heuristical value */
+          bsize->width = (FT_Short)FT_MulDiv( bsize->height, 2, 3 );
+        }
 
         prop = bdf_get_font_property( font, "POINT_SIZE" );
         if ( prop )
+        {
+#ifdef FT_DEBUG_LEVEL_TRACE
+          if ( prop->value.l < 0 )
+            FT_TRACE0(( "BDF_Face_Init: negative point size\n" ));
+#endif
           /* convert from 722.7 decipoints to 72 points per inch */
-          bsize->size =
-            (FT_Pos)( ( prop->value.l * 64 * 7200 + 36135L ) / 72270L );
+          if ( prop->value.l >  0x504C2L || /* 0x7FFF * 72270/7200 */
+               prop->value.l < -0x504C2L )
+          {
+            bsize->size = 0x7FFF;
+            FT_TRACE0(( "BDF_Face_Init: clamping point size to value %d\n",
+                        bsize->size ));
+          }
+          else
+            bsize->size = FT_MulDiv( FT_ABS( prop->value.l ),
+                                     64 * 7200,
+                                     72270L );
+        }
+        else if ( font->point_size )
+        {
+          if ( font->point_size > 0x7FFF )
+          {
+            bsize->size = 0x7FFF;
+            FT_TRACE0(( "BDF_Face_Init: clamping point size to value %d\n",
+                        bsize->size ));
+          }
+          else
+            bsize->size = (FT_Pos)font->point_size << 6;
+        }
         else
-          bsize->size = bsize->width << 6;
+        {
+          /* this is a heuristical value */
+          bsize->size = bsize->width * 64;
+        }
 
         prop = bdf_get_font_property( font, "PIXEL_SIZE" );
         if ( prop )
-          bsize->y_ppem = (FT_Short)prop->value.l << 6;
+        {
+#ifdef FT_DEBUG_LEVEL_TRACE
+          if ( prop->value.l < 0 )
+            FT_TRACE0(( "BDF_Face_Init: negative pixel size\n" ));
+#endif
+          if ( prop->value.l > 0x7FFF || prop->value.l < -0x7FFF )
+          {
+            bsize->y_ppem = 0x7FFF << 6;
+            FT_TRACE0(( "BDF_Face_Init: clamping pixel size to value %d\n",
+                        bsize->y_ppem ));
+          }
+          else
+            bsize->y_ppem = FT_ABS( (FT_Short)prop->value.l ) << 6;
+        }
 
         prop = bdf_get_font_property( font, "RESOLUTION_X" );
         if ( prop )
-          resolution_x = (FT_Short)prop->value.l;
+          value = prop->value.l;
+        else
+          value = (long)font->resolution_x;
+        if ( value )
+        {
+#ifdef FT_DEBUG_LEVEL_TRACE
+          if ( value < 0 )
+            FT_TRACE0(( "BDF_Face_Init: negative X resolution\n" ));
+#endif
+          if ( value > 0x7FFF || value < -0x7FFF )
+          {
+            resolution_x = 0x7FFF;
+            FT_TRACE0(( "BDF_Face_Init: clamping X resolution to value %d\n",
+                        resolution_x ));
+          }
+          else
+            resolution_x = FT_ABS( (FT_Short)value );
+        }
 
         prop = bdf_get_font_property( font, "RESOLUTION_Y" );
         if ( prop )
-          resolution_y = (FT_Short)prop->value.l;
+          value = prop->value.l;
+        else
+          value = (long)font->resolution_y;
+        if ( value )
+        {
+#ifdef FT_DEBUG_LEVEL_TRACE
+          if ( value < 0 )
+            FT_TRACE0(( "BDF_Face_Init: negative Y resolution\n" ));
+#endif
+          if ( value > 0x7FFF || value < -0x7FFF )
+          {
+            resolution_y = 0x7FFF;
+            FT_TRACE0(( "BDF_Face_Init: clamping Y resolution to value %d\n",
+                        resolution_y ));
+          }
+          else
+            resolution_y = FT_ABS( (FT_Short)value );
+        }
 
         if ( bsize->y_ppem == 0 )
         {
           bsize->y_ppem = bsize->size;
           if ( resolution_y )
-            bsize->y_ppem = bsize->y_ppem * resolution_y / 72;
+            bsize->y_ppem = FT_MulDiv( bsize->y_ppem, resolution_y, 72 );
         }
         if ( resolution_x && resolution_y )
-          bsize->x_ppem = bsize->y_ppem * resolution_x / resolution_y;
+          bsize->x_ppem = FT_MulDiv( bsize->y_ppem,
+                                     resolution_x,
+                                     resolution_y );
         else
           bsize->x_ppem = bsize->y_ppem;
       }
@@ -545,7 +655,11 @@ THE SOFTWARE.
               if ( !ft_strcmp( s, "10646" )                      ||
                    ( !ft_strcmp( s, "8859" ) &&
                      !ft_strcmp( face->charset_encoding, "1" ) ) )
-              unicode_charmap = 1;
+                unicode_charmap = 1;
+              /* another name for ASCII */
+              else if ( !ft_strcmp( s, "646.1991" )                 &&
+                        !ft_strcmp( face->charset_encoding, "IRV" ) )
+                unicode_charmap = 1;
             }
 
             {
@@ -566,12 +680,6 @@ THE SOFTWARE.
               }
 
               error = FT_CMap_New( &bdf_cmap_class, NULL, &charmap, NULL );
-
-#if 0
-              /* Select default charmap */
-              if ( bdfface->num_charmaps )
-                bdfface->charmap = bdfface->charmaps[0];
-#endif
             }
 
             goto Exit;
Index: src/bdf/bdflib.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/bdf/bdflib.c,v
retrieving revision 1.24
diff -u -p -u -p -r1.24 bdflib.c
--- src/bdf/bdflib.c 13 Jan 2017 11:19:59 -0000 1.24
+++ src/bdf/bdflib.c 20 Sep 2017 16:54:36 -0000
@@ -704,7 +704,15 @@
       return 0;
 
     for ( v = 0; sbitset( ddigits, *s ); s++ )
-      v = v * 10 + a2i[(int)*s];
+    {
+      if ( v < ( ULONG_MAX - 9 ) / 10 )
+        v = v * 10 + a2i[(int)*s];
+      else
+      {
+        v = ULONG_MAX;
+        break;
+      }
+    }
 
     return v;
   }
@@ -729,7 +737,15 @@
     }
 
     for ( v = 0; sbitset( ddigits, *s ); s++ )
-      v = v * 10 + a2i[(int)*s];
+    {
+      if ( v < ( LONG_MAX - 9 ) / 10 )
+        v = v * 10 + a2i[(int)*s];
+      else
+      {
+        v = LONG_MAX;
+        break;
+      }
+    }
 
     return ( !neg ) ? v : -v;
   }
@@ -746,7 +762,15 @@
       return 0;
 
     for ( v = 0; sbitset( ddigits, *s ); s++ )
-      v = (unsigned short)( v * 10 + a2i[(int)*s] );
+    {
+      if ( v < ( USHRT_MAX - 9 ) / 10 )
+        v = (unsigned short)( v * 10 + a2i[(int)*s] );
+      else
+      {
+        v = USHRT_MAX;
+        break;
+      }
+    }
 
     return v;
   }
@@ -771,7 +795,15 @@
     }
 
     for ( v = 0; sbitset( ddigits, *s ); s++ )
-      v = (short)( v * 10 + a2i[(int)*s] );
+    {
+      if ( v < ( SHRT_MAX - 9 ) / 10 )
+        v = (short)( v * 10 + a2i[(int)*s] );
+      else
+      {
+        v = SHRT_MAX;
+        break;
+      }
+    }
 
     return (short)( ( !neg ) ? v : -v );
   }
Index: src/cache/ftcbasic.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cache/ftcbasic.c,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 ftcbasic.c
--- src/cache/ftcbasic.c 23 Jun 2017 16:15:19 -0000 1.13
+++ src/cache/ftcbasic.c 20 Sep 2017 16:54:36 -0000
@@ -304,10 +304,18 @@
     if ( anode )
       *anode  = NULL;
 
-    if ( (FT_ULong)( type->flags - FT_INT_MIN ) > FT_UINT_MAX )
+    /*
+     * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
+     * but public `FT_ImageType->flags' is of type `FT_Int32'.
+     *
+     * On 16bit systems, higher bits of type->flags cannot be handled.
+     */
+#if 0xFFFFFFFFUL > FT_UINT_MAX
+    if ( (type->flags & (FT_ULong)FT_UINT_MAX) )
       FT_TRACE1(( "FTC_ImageCache_Lookup:"
                   " higher bits in load_flags 0x%x are dropped\n",
                   (FT_ULong)type->flags & ~((FT_ULong)FT_UINT_MAX) ));
+#endif
 
     query.attrs.scaler.face_id = type->face_id;
     query.attrs.scaler.width   = type->width;
@@ -377,11 +385,18 @@
     if ( anode )
       *anode  = NULL;
 
-    /* `FT_Load_Glyph' and `FT_Load_Char' take FT_UInt flags */
+    /*
+     * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
+     * but public `FT_Face->face_flags' is of type `FT_Long'.
+     *
+     * On long > int systems, higher bits of load_flags cannot be handled.
+     */
+#if FT_ULONG_MAX > FT_UINT_MAX
     if ( load_flags > FT_UINT_MAX )
       FT_TRACE1(( "FTC_ImageCache_LookupScaler:"
                   " higher bits in load_flags 0x%x are dropped\n",
                   load_flags & ~((FT_ULong)FT_UINT_MAX) ));
+#endif
 
     query.attrs.scaler     = scaler[0];
     query.attrs.load_flags = (FT_UInt)load_flags;
@@ -487,10 +502,18 @@
 
     *ansbit = NULL;
 
-    if ( (FT_ULong)( type->flags - FT_INT_MIN ) > FT_UINT_MAX )
+    /*
+     * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
+     * but public `FT_ImageType->flags' is of type `FT_Int32'.
+     *
+     * On 16bit systems, higher bits of type->flags cannot be handled.
+     */
+#if 0xFFFFFFFFUL > FT_UINT_MAX
+    if ( (type->flags & (FT_ULong)FT_UINT_MAX) )
       FT_TRACE1(( "FTC_ImageCache_Lookup:"
                   " higher bits in load_flags 0x%x are dropped\n",
                   (FT_ULong)type->flags & ~((FT_ULong)FT_UINT_MAX) ));
+#endif
 
     query.attrs.scaler.face_id = type->face_id;
     query.attrs.scaler.width   = type->width;
@@ -562,11 +585,18 @@
 
     *ansbit = NULL;
 
-    /* `FT_Load_Glyph' and `FT_Load_Char' take FT_UInt flags */
+    /*
+     * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
+     * but public `FT_Face->face_flags' is of type `FT_Long'.
+     *
+     * On long > int systems, higher bits of load_flags cannot be handled.
+     */
+#if FT_ULONG_MAX > FT_UINT_MAX
     if ( load_flags > FT_UINT_MAX )
       FT_TRACE1(( "FTC_ImageCache_LookupScaler:"
                   " higher bits in load_flags 0x%x are dropped\n",
                   load_flags & ~((FT_ULong)FT_UINT_MAX) ));
+#endif
 
     query.attrs.scaler     = scaler[0];
     query.attrs.load_flags = (FT_UInt)load_flags;
Index: src/cff/cf2blues.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cf2blues.c,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 cf2blues.c
--- src/cff/cf2blues.c 14 Mar 2014 08:18:01 -0000 1.3
+++ src/cff/cf2blues.c 20 Sep 2017 16:54:36 -0000
@@ -194,8 +194,8 @@
       blues->zone[blues->count].csTopEdge =
         cf2_blueToFixed( blueValues[i + 1] );
 
-      zoneHeight = blues->zone[blues->count].csTopEdge -
-                   blues->zone[blues->count].csBottomEdge;
+      zoneHeight = SUB_INT32( blues->zone[blues->count].csTopEdge,
+                              blues->zone[blues->count].csBottomEdge );
 
       if ( zoneHeight < 0 )
       {
@@ -243,8 +243,8 @@
       blues->zone[blues->count].csTopEdge =
         cf2_blueToFixed( otherBlues[i + 1] );
 
-      zoneHeight = blues->zone[blues->count].csTopEdge -
-                   blues->zone[blues->count].csBottomEdge;
+      zoneHeight = SUB_INT32( blues->zone[blues->count].csTopEdge,
+                              blues->zone[blues->count].csBottomEdge );
 
       if ( zoneHeight < 0 )
       {
@@ -301,7 +301,7 @@
           /* top edge */
           flatFamilyEdge = cf2_blueToFixed( familyOtherBlues[j + 1] );
 
-          diff = cf2_fixedAbs( flatEdge - flatFamilyEdge );
+          diff = cf2_fixedAbs( SUB_INT32( flatEdge, flatFamilyEdge ) );
 
           if ( diff < minDiff && diff < csUnitsPerPixel )
           {
@@ -319,7 +319,7 @@
           /* top edge */
           flatFamilyEdge = cf2_blueToFixed( familyBlues[1] );
 
-          diff = cf2_fixedAbs( flatEdge - flatFamilyEdge );
+          diff = cf2_fixedAbs( SUB_INT32( flatEdge, flatFamilyEdge ) );
 
           if ( diff < minDiff && diff < csUnitsPerPixel )
             blues->zone[i].csFlatEdge = flatFamilyEdge;
@@ -342,7 +342,7 @@
           /* adjust edges of top zone upward by twice darkening amount */
           flatFamilyEdge += 2 * font->darkenY;      /* bottom edge */
 
-          diff = cf2_fixedAbs( flatEdge - flatFamilyEdge );
+          diff = cf2_fixedAbs( SUB_INT32( flatEdge, flatFamilyEdge ) );
 
           if ( diff < minDiff && diff < csUnitsPerPixel )
           {
@@ -408,8 +408,8 @@
       /* Note: constant changed from 0.5 to 0.6 to avoid a problem with */
       /*       10ppem Arial                                             */
 
-      blues->boost = cf2_floatToFixed( .6 ) -
-                       FT_MulDiv( cf2_floatToFixed ( .6 ),
+      blues->boost = cf2_doubleToFixed( .6 ) -
+                       FT_MulDiv( cf2_doubleToFixed ( .6 ),
                                   blues->scale,
                                   blues->blueScale );
       if ( blues->boost > 0x7FFF )
@@ -489,17 +489,18 @@
       if ( blues->zone[i].bottomZone           &&
            cf2_hint_isBottom( bottomHintEdge ) )
       {
-        if ( ( blues->zone[i].csBottomEdge - csFuzz ) <=
-               bottomHintEdge->csCoord                   &&
+        if ( SUB_INT32( blues->zone[i].csBottomEdge, csFuzz ) <=
+               bottomHintEdge->csCoord                           &&
              bottomHintEdge->csCoord <=
-               ( blues->zone[i].csTopEdge + csFuzz )     )
+               ADD_INT32( blues->zone[i].csTopEdge, csFuzz )     )
         {
           /* bottom edge captured by bottom zone */
 
           if ( blues->suppressOvershoot )
             dsNew = blues->zone[i].dsFlatEdge;
 
-          else if ( ( blues->zone[i].csTopEdge - bottomHintEdge->csCoord ) >=
+          else if ( SUB_INT32( blues->zone[i].csTopEdge,
+                               bottomHintEdge->csCoord ) >=
                       blues->blueShift )
           {
             /* guarantee minimum of 1 pixel overshoot */
@@ -514,7 +515,7 @@
             dsNew = cf2_fixedRound( bottomHintEdge->dsCoord );
           }
 
-          dsMove   = dsNew - bottomHintEdge->dsCoord;
+          dsMove   = SUB_INT32( dsNew, bottomHintEdge->dsCoord );
           captured = TRUE;
 
           break;
@@ -523,17 +524,18 @@
 
       if ( !blues->zone[i].bottomZone && cf2_hint_isTop( topHintEdge ) )
       {
-        if ( ( blues->zone[i].csBottomEdge - csFuzz ) <=
-               topHintEdge->csCoord                      &&
+        if ( SUB_INT32( blues->zone[i].csBottomEdge, csFuzz ) <=
+               topHintEdge->csCoord                              &&
              topHintEdge->csCoord <=
-               ( blues->zone[i].csTopEdge + csFuzz )     )
+               ADD_INT32( blues->zone[i].csTopEdge, csFuzz )     )
         {
           /* top edge captured by top zone */
 
           if ( blues->suppressOvershoot )
             dsNew = blues->zone[i].dsFlatEdge;
 
-          else if ( ( topHintEdge->csCoord - blues->zone[i].csBottomEdge ) >=
+          else if ( SUB_INT32( topHintEdge->csCoord,
+                               blues->zone[i].csBottomEdge ) >=
                       blues->blueShift )
           {
             /* guarantee minimum of 1 pixel overshoot */
@@ -548,7 +550,7 @@
             dsNew = cf2_fixedRound( topHintEdge->dsCoord );
           }
 
-          dsMove   = dsNew - topHintEdge->dsCoord;
+          dsMove   = SUB_INT32( dsNew, topHintEdge->dsCoord );
           captured = TRUE;
 
           break;
@@ -561,13 +563,14 @@
       /* move both edges and flag them `locked' */
       if ( cf2_hint_isValid( bottomHintEdge ) )
       {
-        bottomHintEdge->dsCoord += dsMove;
+        bottomHintEdge->dsCoord = ADD_INT32( bottomHintEdge->dsCoord,
+                                             dsMove );
         cf2_hint_lock( bottomHintEdge );
       }
 
       if ( cf2_hint_isValid( topHintEdge ) )
       {
-        topHintEdge->dsCoord += dsMove;
+        topHintEdge->dsCoord = ADD_INT32( topHintEdge->dsCoord, dsMove );
         cf2_hint_lock( topHintEdge );
       }
     }
Index: src/cff/cf2blues.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cf2blues.h,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 cf2blues.h
--- src/cff/cf2blues.h 29 May 2016 11:57:12 -0000 1.2
+++ src/cff/cf2blues.h 20 Sep 2017 16:54:36 -0000
@@ -111,7 +111,7 @@ FT_BEGIN_HEADER
    * Constant used for hint adjustment and for synthetic em box hint
    * placement.
    */
-#define CF2_MIN_COUNTER  cf2_floatToFixed( 0.5 )
+#define CF2_MIN_COUNTER  cf2_doubleToFixed( 0.5 )
 
 
   /* shared typedef is in cf2glue.h */
Index: src/cff/cf2fixed.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cf2fixed.h,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 cf2fixed.h
--- src/cff/cf2fixed.h 13 Jan 2017 11:19:59 -0000 1.4
+++ src/cff/cf2fixed.h 20 Sep 2017 16:54:36 -0000
@@ -63,10 +63,10 @@ FT_BEGIN_HEADER
           ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
 #define cf2_fixedRound( x )                                              \
           ( (CF2_Fixed)( ( (FT_UInt32)(x) + 0x8000U ) & 0xFFFF0000UL ) )
-#define cf2_floatToFixed( f )                                            \
+#define cf2_doubleToFixed( f )                                           \
           ( (CF2_Fixed)( (f) * 65536.0 + 0.5 ) )
 #define cf2_fixedAbs( x )                                                \
-          ( (x) < 0 ? -(x) : (x) )
+          ( (x) < 0 ? NEG_INT32( x ) : (x) )
 #define cf2_fixedFloor( x )                                              \
           ( (CF2_Fixed)( (FT_UInt32)(x) & 0xFFFF0000UL ) )
 #define cf2_fixedFraction( x )                                           \
Index: src/cff/cf2font.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cf2font.c,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 cf2font.c
--- src/cff/cf2font.c 13 Jan 2017 11:19:59 -0000 1.7
+++ src/cff/cf2font.c 20 Sep 2017 16:54:36 -0000
@@ -117,7 +117,7 @@
       return;
 
     /* protect against range problems and divide by zero */
-    if ( emRatio < cf2_floatToFixed( .01 ) )
+    if ( emRatio < cf2_doubleToFixed( .01 ) )
       return;
 
     if ( stemDarkened )
@@ -447,7 +447,7 @@
       /* choose a constant for StdHW that depends on font contrast       */
       stdHW = cf2_getStdHW( decoder );
 
-      if ( stdHW > 0 && font->stdVW > 2 * stdHW )
+      if ( stdHW > 0 && font->stdVW > MUL_INT32( 2, stdHW ) )
         font->stdHW = FT_DivFix( cf2_intToFixed( 75 ), emRatio );
       else
       {
Index: src/cff/cf2ft.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cf2ft.c,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 cf2ft.c
--- src/cff/cf2ft.c 23 Jun 2017 16:15:19 -0000 1.9
+++ src/cff/cf2ft.c 20 Sep 2017 16:54:36 -0000
@@ -267,8 +267,8 @@
 
     if ( *hinted )
     {
-      *x_scale = ( decoder->builder.glyph->x_scale + 32 ) / 64;
-      *y_scale = ( decoder->builder.glyph->y_scale + 32 ) / 64;
+      *x_scale = ADD_INT32( decoder->builder.glyph->x_scale, 32 ) / 64;
+      *y_scale = ADD_INT32( decoder->builder.glyph->y_scale, 32 ) / 64;
     }
     else
     {
Index: src/cff/cf2hints.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cf2hints.c,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 cf2hints.c
--- src/cff/cf2hints.c 13 Jan 2017 11:19:59 -0000 1.8
+++ src/cff/cf2hints.c 20 Sep 2017 16:54:36 -0000
@@ -74,8 +74,8 @@
     /* cross product of pt1 position from origin with pt2 position from  */
     /* pt1; we reduce the precision so that the result fits into 32 bits */
 
-    return ( x1 >> 16 ) * ( ( y2 - y1 ) >> 16 ) -
-           ( y1 >> 16 ) * ( ( x2 - x1 ) >> 16 );
+    return ( x1 >> 16 ) * ( SUB_INT32( y2, y1 ) >> 16 ) -
+           ( y1 >> 16 ) * ( SUB_INT32( x2, x1 ) >> 16 );
   }
 
 
@@ -105,7 +105,7 @@
                                          stemHintArray,
                                          indexStemHint );
 
-    width = stemHint->max - stemHint->min;
+    width = SUB_INT32( stemHint->max, stemHint->min );
 
     if ( width == cf2_intToFixed( -21 ) )
     {
@@ -185,11 +185,11 @@
     /* darkening.  Bottoms are not changed; tops are incremented by twice */
     /* `darkenY'.                                                         */
     if ( cf2_hint_isTop( hint ) )
-      hint->csCoord += 2 * font->darkenY;
+      hint->csCoord = ADD_INT32( hint->csCoord, 2 * font->darkenY );
 
-    hint->csCoord += hintOrigin;
-    hint->scale    = scale;
-    hint->index    = indexStemHint;   /* index in original stem hint array */
+    hint->csCoord = ADD_INT32( hint->csCoord, hintOrigin );
+    hint->scale   = scale;
+    hint->index   = indexStemHint;   /* index in original stem hint array */
 
     /* if original stem hint has been used, use the same position */
     if ( hint->flags != 0 && stemHint->used )
@@ -314,6 +314,7 @@
       /* start linear search from last hit */
       CF2_UInt  i = hintmap->lastIndex;
 
+
       FT_ASSERT( hintmap->lastIndex < CF2_MAX_HINT_EDGES );
 
       /* search up */
@@ -330,9 +331,10 @@
       if ( i == 0 && csCoord < hintmap->edge[0].csCoord )
       {
         /* special case for points below first edge: use uniform scale */
-        return FT_MulFix( csCoord - hintmap->edge[0].csCoord,
-                          hintmap->scale ) +
-                 hintmap->edge[0].dsCoord;
+        return ADD_INT32( FT_MulFix( SUB_INT32( csCoord,
+                                                hintmap->edge[0].csCoord ),
+                                     hintmap->scale ),
+                          hintmap->edge[0].dsCoord );
       }
       else
       {
@@ -340,9 +342,10 @@
          * Note: entries with duplicate csCoord are allowed.
          * Use edge[i], the highest entry where csCoord >= entry[i].csCoord
          */
-        return FT_MulFix( csCoord - hintmap->edge[i].csCoord,
-                          hintmap->edge[i].scale ) +
-                 hintmap->edge[i].dsCoord;
+        return ADD_INT32( FT_MulFix( SUB_INT32( csCoord,
+                                                hintmap->edge[i].csCoord ),
+                                     hintmap->edge[i].scale ),
+                          hintmap->edge[i].dsCoord );
       }
     }
   }
@@ -437,14 +440,16 @@
         /* is there room to move up?                                    */
         /* there is if we are at top of array or the next edge is at or */
         /* beyond proposed move up?                                     */
-        if ( j >= hintmap->count - 1                            ||
+        if ( j >= hintmap->count - 1                ||
              hintmap->edge[j + 1].dsCoord >=
-               hintmap->edge[j].dsCoord + moveUp + upMinCounter )
+               ADD_INT32( hintmap->edge[j].dsCoord,
+                          moveUp + upMinCounter )   )
         {
           /* there is room to move up; is there also room to move down? */
-          if ( i == 0                                                 ||
+          if ( i == 0                                   ||
                hintmap->edge[i - 1].dsCoord <=
-                 hintmap->edge[i].dsCoord + moveDown - downMinCounter )
+                 ADD_INT32( hintmap->edge[i].dsCoord,
+                            moveDown - downMinCounter ) )
           {
             /* move smaller absolute amount */
             move = ( -moveDown < moveUp ) ? moveDown : moveUp;  /* optimum */
@@ -455,9 +460,10 @@
         else
         {
           /* is there room to move down? */
-          if ( i == 0                                                 ||
+          if ( i == 0                                   ||
                hintmap->edge[i - 1].dsCoord <=
-                 hintmap->edge[i].dsCoord + moveDown - downMinCounter )
+                 ADD_INT32( hintmap->edge[i].dsCoord,
+                            moveDown - downMinCounter ) )
           {
             move     = moveDown;
             /* true if non-optimum move */
@@ -491,9 +497,11 @@
         }
 
         /* move the edge(s) */
-        hintmap->edge[i].dsCoord += move;
+        hintmap->edge[i].dsCoord = ADD_INT32( hintmap->edge[i].dsCoord,
+                                              move );
         if ( isPair )
-          hintmap->edge[j].dsCoord += move;
+          hintmap->edge[j].dsCoord = ADD_INT32( hintmap->edge[j].dsCoord,
+                                                move );
       }
 
       /* assert there are no overlaps in device space */
@@ -507,18 +515,20 @@
       {
         if ( hintmap->edge[i].csCoord != hintmap->edge[i - 1].csCoord )
           hintmap->edge[i - 1].scale =
-            FT_DivFix(
-              hintmap->edge[i].dsCoord - hintmap->edge[i - 1].dsCoord,
-              hintmap->edge[i].csCoord - hintmap->edge[i - 1].csCoord );
+            FT_DivFix( SUB_INT32( hintmap->edge[i].dsCoord,
+                                  hintmap->edge[i - 1].dsCoord ),
+                       SUB_INT32( hintmap->edge[i].csCoord,
+                                  hintmap->edge[i - 1].csCoord ) );
       }
 
       if ( isPair )
       {
         if ( hintmap->edge[j].csCoord != hintmap->edge[j - 1].csCoord )
           hintmap->edge[j - 1].scale =
-            FT_DivFix(
-              hintmap->edge[j].dsCoord - hintmap->edge[j - 1].dsCoord,
-              hintmap->edge[j].csCoord - hintmap->edge[j - 1].csCoord );
+            FT_DivFix( SUB_INT32( hintmap->edge[j].dsCoord,
+                                  hintmap->edge[j - 1].dsCoord ),
+                       SUB_INT32( hintmap->edge[j].csCoord,
+                                  hintmap->edge[j - 1].csCoord ) );
 
         i += 1;     /* skip upper edge on next loop */
       }
@@ -539,15 +549,18 @@
 
       /* is there room to move up? */
       if ( hintmap->edge[j + 1].dsCoord >=
-             hintmap->edge[j].dsCoord + hintMove->moveUp + CF2_MIN_COUNTER )
+             ADD_INT32( hintmap->edge[j].dsCoord,
+                        hintMove->moveUp + CF2_MIN_COUNTER ) )
       {
         /* there is more room now, move edge up */
-        hintmap->edge[j].dsCoord += hintMove->moveUp;
+        hintmap->edge[j].dsCoord = ADD_INT32( hintmap->edge[j].dsCoord,
+                                              hintMove->moveUp );
 
         if ( cf2_hint_isPair( &hintmap->edge[j] ) )
         {
           FT_ASSERT( j > 0 );
-          hintmap->edge[j - 1].dsCoord += hintMove->moveUp;
+          hintmap->edge[j - 1].dsCoord =
+            ADD_INT32( hintmap->edge[j - 1].dsCoord, hintMove->moveUp );
         }
       }
     }
@@ -635,18 +648,19 @@
       {
         /* Use hint map to position the center of stem, and nominal scale */
         /* to position the two edges.  This preserves the stem width.     */
-        CF2_Fixed  midpoint  = cf2_hintmap_map(
-                                 hintmap->initialHintMap,
-                                 ( secondHintEdge->csCoord +
-                                   firstHintEdge->csCoord ) / 2 );
-        CF2_Fixed  halfWidth = FT_MulFix(
-                                 ( secondHintEdge->csCoord -
-                                   firstHintEdge->csCoord ) / 2,
-                                 hintmap->scale );
+        CF2_Fixed  midpoint =
+                     cf2_hintmap_map(
+                       hintmap->initialHintMap,
+                       ADD_INT32( secondHintEdge->csCoord,
+                                  firstHintEdge->csCoord ) / 2 );
+        CF2_Fixed  halfWidth =
+                     FT_MulFix( SUB_INT32( secondHintEdge->csCoord,
+                                           firstHintEdge->csCoord ) / 2,
+                                hintmap->scale );
 
 
-        firstHintEdge->dsCoord  = midpoint - halfWidth;
-        secondHintEdge->dsCoord = midpoint + halfWidth;
+        firstHintEdge->dsCoord  = SUB_INT32( midpoint, halfWidth );
+        secondHintEdge->dsCoord = ADD_INT32( midpoint, halfWidth );
       }
       else
         firstHintEdge->dsCoord = cf2_hintmap_map( hintmap->initialHintMap,
@@ -715,7 +729,7 @@
 
       /* insert first edge */
       hintmap->edge[indexInsert] = *firstHintEdge;         /* copy struct */
-      hintmap->count += 1;
+      hintmap->count            += 1;
 
       if ( isPair )
       {
@@ -781,7 +795,7 @@
                            cf2_arrstack_size( hStemHintArray ) +
                              cf2_arrstack_size( vStemHintArray ) );
       if ( !cf2_hintmask_isValid( hintMask ) )
-          return;                   /* too many stem hints */
+        return;                   /* too many stem hints */
     }
 
     /* begin by clearing the map */
@@ -797,7 +811,7 @@
 
     /* Defense-in-depth.  Should never return here. */
     if ( bitCount > hintMask->bitCount )
-        return;
+      return;
 
     /* synthetic embox hints get highest priority */
     if ( font->blues.doEmBoxHints )
@@ -1063,7 +1077,7 @@
                                      cf2_fixedAbs( glyphpath->yOffset ) );
 
     /* .1 character space unit */
-    glyphpath->snapThreshold = cf2_floatToFixed( 0.1f );
+    glyphpath->snapThreshold = cf2_doubleToFixed( 0.1 );
 
     glyphpath->moveIsPending = TRUE;
     glyphpath->pathIsOpen    = FALSE;
@@ -1095,16 +1109,20 @@
     FT_Vector  pt;   /* hinted point in upright DS */
 
 
-    pt.x = FT_MulFix( glyphpath->scaleX, x ) +
-             FT_MulFix( glyphpath->scaleC, y );
+    pt.x = ADD_INT32( FT_MulFix( glyphpath->scaleX, x ),
+                      FT_MulFix( glyphpath->scaleC, y ) );
     pt.y = cf2_hintmap_map( hintmap, y );
 
-    ppt->x = FT_MulFix( glyphpath->font->outerTransform.a, pt.x )   +
-               FT_MulFix( glyphpath->font->outerTransform.c, pt.y ) +
-               glyphpath->fractionalTranslation.x;
-    ppt->y = FT_MulFix( glyphpath->font->outerTransform.b, pt.x )   +
-               FT_MulFix( glyphpath->font->outerTransform.d, pt.y ) +
-               glyphpath->fractionalTranslation.y;
+    ppt->x = ADD_INT32(
+               FT_MulFix( glyphpath->font->outerTransform.a, pt.x ),
+               ADD_INT32(
+                 FT_MulFix( glyphpath->font->outerTransform.c, pt.y ),
+                 glyphpath->fractionalTranslation.x ) );
+    ppt->y = ADD_INT32(
+               FT_MulFix( glyphpath->font->outerTransform.b, pt.x ),
+               ADD_INT32(
+                 FT_MulFix( glyphpath->font->outerTransform.d, pt.y ),
+                 glyphpath->fractionalTranslation.y ) );
   }
 
 
@@ -1154,12 +1172,12 @@
     CF2_Fixed  denominator, s;
 
 
-    u.x = CF2_CS_SCALE( u2->x - u1->x );
-    u.y = CF2_CS_SCALE( u2->y - u1->y );
-    v.x = CF2_CS_SCALE( v2->x - v1->x );
-    v.y = CF2_CS_SCALE( v2->y - v1->y );
-    w.x = CF2_CS_SCALE( v1->x - u1->x );
-    w.y = CF2_CS_SCALE( v1->y - u1->y );
+    u.x = CF2_CS_SCALE( SUB_INT32( u2->x, u1->x ) );
+    u.y = CF2_CS_SCALE( SUB_INT32( u2->y, u1->y ) );
+    v.x = CF2_CS_SCALE( SUB_INT32( v2->x, v1->x ) );
+    v.y = CF2_CS_SCALE( SUB_INT32( v2->y, v1->y ) );
+    w.x = CF2_CS_SCALE( SUB_INT32( v1->x, u1->x ) );
+    w.y = CF2_CS_SCALE( SUB_INT32( v1->y, u1->y ) );
 
     denominator = cf2_perp( u, v );
 
@@ -1168,8 +1186,11 @@
 
     s = FT_DivFix( cf2_perp( w, v ), denominator );
 
-    intersection->x = u1->x + FT_MulFix( s, u2->x - u1->x );
-    intersection->y = u1->y + FT_MulFix( s, u2->y - u1->y );
+    intersection->x = ADD_INT32( u1->x,
+                                 FT_MulFix( s, SUB_INT32( u2->x, u1->x ) ) );
+    intersection->y = ADD_INT32( u1->y,
+                                 FT_MulFix( s, SUB_INT32( u2->y, u1->y ) ) );
+
 
     /*
      * Special case snapping for horizontal and vertical lines.
@@ -1180,25 +1201,29 @@
      *
      */
 
-    if ( u1->x == u2->x                                                     &&
-         cf2_fixedAbs( intersection->x - u1->x ) < glyphpath->snapThreshold )
+    if ( u1->x == u2->x                                                &&
+         cf2_fixedAbs( SUB_INT32( intersection->x,
+                                  u1->x ) ) < glyphpath->snapThreshold )
       intersection->x = u1->x;
-    if ( u1->y == u2->y                                                     &&
-         cf2_fixedAbs( intersection->y - u1->y ) < glyphpath->snapThreshold )
+    if ( u1->y == u2->y                                                &&
+         cf2_fixedAbs( SUB_INT32( intersection->y,
+                                  u1->y ) ) < glyphpath->snapThreshold )
       intersection->y = u1->y;
 
-    if ( v1->x == v2->x                                                     &&
-         cf2_fixedAbs( intersection->x - v1->x ) < glyphpath->snapThreshold )
+    if ( v1->x == v2->x                                                &&
+         cf2_fixedAbs( SUB_INT32( intersection->x,
+                                  v1->x ) ) < glyphpath->snapThreshold )
       intersection->x = v1->x;
-    if ( v1->y == v2->y                                                     &&
-         cf2_fixedAbs( intersection->y - v1->y ) < glyphpath->snapThreshold )
+    if ( v1->y == v2->y                                                &&
+         cf2_fixedAbs( SUB_INT32( intersection->y,
+                                  v1->y ) ) < glyphpath->snapThreshold )
       intersection->y = v1->y;
 
     /* limit the intersection distance from midpoint of u2 and v1 */
-    if ( cf2_fixedAbs( intersection->x - ( u2->x + v1->x ) / 2 ) >
-           glyphpath->miterLimit                                   ||
-         cf2_fixedAbs( intersection->y - ( u2->y + v1->y ) / 2 ) >
-           glyphpath->miterLimit                                   )
+    if ( cf2_fixedAbs( intersection->x - ADD_INT32( u2->x, v1->x ) / 2 ) >
+           glyphpath->miterLimit                                           ||
+         cf2_fixedAbs( intersection->y - ADD_INT32( u2->y, v1->y ) / 2 ) >
+           glyphpath->miterLimit                                           )
       return FALSE;
 
     return TRUE;
@@ -1446,16 +1471,16 @@
                                CF2_Fixed*     x,
                                CF2_Fixed*     y )
   {
-    CF2_Fixed  dx = x2 - x1;
-    CF2_Fixed  dy = y2 - y1;
+    CF2_Fixed  dx = SUB_INT32( x2, x1 );
+    CF2_Fixed  dy = SUB_INT32( y2, y1 );
 
 
     /* note: negative offsets don't work here; negate deltas to change */
     /* quadrants, below                                                */
     if ( glyphpath->font->reverseWinding )
     {
-      dx = -dx;
-      dy = -dy;
+      dx = NEG_INT32( dx );
+      dy = NEG_INT32( dy );
     }
 
     *x = *y = 0;
@@ -1464,8 +1489,9 @@
         return;
 
     /* add momentum for this path element */
-    glyphpath->callbacks->windingMomentum +=
-      cf2_getWindingMomentum( x1, y1, x2, y2 );
+    glyphpath->callbacks->windingMomentum =
+      ADD_INT32( glyphpath->callbacks->windingMomentum,
+                 cf2_getWindingMomentum( x1, y1, x2, y2 ) );
 
     /* note: allow mixed integer and fixed multiplication here */
     if ( dx >= 0 )
@@ -1474,13 +1500,13 @@
       {
         /* first quadrant, +x +y */
 
-        if ( dx > 2 * dy )
+        if ( dx > MUL_INT32( 2, dy ) )
         {
           /* +x */
           *x = 0;
           *y = 0;
         }
-        else if ( dy > 2 * dx )
+        else if ( dy > MUL_INT32( 2, dx ) )
         {
           /* +y */
           *x = glyphpath->xOffset;
@@ -1489,9 +1515,9 @@
         else
         {
           /* +x +y */
-          *x = FT_MulFix( cf2_floatToFixed( 0.7 ),
+          *x = FT_MulFix( cf2_doubleToFixed( 0.7 ),
                           glyphpath->xOffset );
-          *y = FT_MulFix( cf2_floatToFixed( 1.0 - 0.7 ),
+          *y = FT_MulFix( cf2_doubleToFixed( 1.0 - 0.7 ),
                           glyphpath->yOffset );
         }
       }
@@ -1499,24 +1525,24 @@
       {
         /* fourth quadrant, +x -y */
 
-        if ( dx > -2 * dy )
+        if ( dx > MUL_INT32( -2, dy ) )
         {
           /* +x */
           *x = 0;
           *y = 0;
         }
-        else if ( -dy > 2 * dx )
+        else if ( NEG_INT32( dy ) > MUL_INT32( 2, dx ) )
         {
           /* -y */
-          *x = -glyphpath->xOffset;
+          *x = NEG_INT32( glyphpath->xOffset );
           *y = glyphpath->yOffset;
         }
         else
         {
           /* +x -y */
-          *x = FT_MulFix( cf2_floatToFixed( -0.7 ),
+          *x = FT_MulFix( cf2_doubleToFixed( -0.7 ),
                           glyphpath->xOffset );
-          *y = FT_MulFix( cf2_floatToFixed( 1.0 - 0.7 ),
+          *y = FT_MulFix( cf2_doubleToFixed( 1.0 - 0.7 ),
                           glyphpath->yOffset );
         }
       }
@@ -1527,13 +1553,13 @@
       {
         /* second quadrant, -x +y */
 
-        if ( -dx > 2 * dy )
+        if ( NEG_INT32( dx ) > MUL_INT32( 2, dy ) )
         {
           /* -x */
           *x = 0;
-          *y = 2 * glyphpath->yOffset;
+          *y = MUL_INT32( 2, glyphpath->yOffset );
         }
-        else if ( dy > -2 * dx )
+        else if ( dy > MUL_INT32( -2, dx ) )
         {
           /* +y */
           *x = glyphpath->xOffset;
@@ -1542,9 +1568,9 @@
         else
         {
           /* -x +y */
-          *x = FT_MulFix( cf2_floatToFixed( 0.7 ),
+          *x = FT_MulFix( cf2_doubleToFixed( 0.7 ),
                           glyphpath->xOffset );
-          *y = FT_MulFix( cf2_floatToFixed( 1.0 + 0.7 ),
+          *y = FT_MulFix( cf2_doubleToFixed( 1.0 + 0.7 ),
                           glyphpath->yOffset );
         }
       }
@@ -1552,24 +1578,24 @@
       {
         /* third quadrant, -x -y */
 
-        if ( -dx > -2 * dy )
+        if ( NEG_INT32( dx ) > MUL_INT32( -2, dy ) )
         {
           /* -x */
           *x = 0;
-          *y = 2 * glyphpath->yOffset;
+          *y = MUL_INT32( 2, glyphpath->yOffset );
         }
-        else if ( -dy > -2 * dx )
+        else if ( NEG_INT32( dy ) > MUL_INT32( -2, dx ) )
         {
           /* -y */
-          *x = -glyphpath->xOffset;
+          *x = NEG_INT32( glyphpath->xOffset );
           *y = glyphpath->yOffset;
         }
         else
         {
           /* -x -y */
-          *x = FT_MulFix( cf2_floatToFixed( -0.7 ),
+          *x = FT_MulFix( cf2_doubleToFixed( -0.7 ),
                           glyphpath->xOffset );
-          *y = FT_MulFix( cf2_floatToFixed( 1.0 + 0.7 ),
+          *y = FT_MulFix( cf2_doubleToFixed( 1.0 + 0.7 ),
                           glyphpath->yOffset );
         }
       }
@@ -1675,10 +1701,10 @@
                                  &yOffset );
 
     /* construct offset points */
-    P0.x = glyphpath->currentCS.x + xOffset;
-    P0.y = glyphpath->currentCS.y + yOffset;
-    P1.x = x + xOffset;
-    P1.y = y + yOffset;
+    P0.x = ADD_INT32( glyphpath->currentCS.x, xOffset );
+    P0.y = ADD_INT32( glyphpath->currentCS.y, yOffset );
+    P1.x = ADD_INT32( x, xOffset );
+    P1.y = ADD_INT32( y, yOffset );
 
     if ( glyphpath->moveIsPending )
     {
@@ -1753,19 +1779,20 @@
                                  &yOffset3 );
 
     /* add momentum from the middle segment */
-    glyphpath->callbacks->windingMomentum +=
-      cf2_getWindingMomentum( x1, y1, x2, y2 );
+    glyphpath->callbacks->windingMomentum =
+      ADD_INT32( glyphpath->callbacks->windingMomentum,
+                 cf2_getWindingMomentum( x1, y1, x2, y2 ) );
 
     /* construct offset points */
-    P0.x = glyphpath->currentCS.x + xOffset1;
-    P0.y = glyphpath->currentCS.y + yOffset1;
-    P1.x = x1 + xOffset1;
-    P1.y = y1 + yOffset1;
+    P0.x = ADD_INT32( glyphpath->currentCS.x, xOffset1 );
+    P0.y = ADD_INT32( glyphpath->currentCS.y, yOffset1 );
+    P1.x = ADD_INT32( x1, xOffset1 );
+    P1.y = ADD_INT32( y1, yOffset1 );
     /* note: preserve angle of final segment by using offset3 at both ends */
-    P2.x = x2 + xOffset3;
-    P2.y = y2 + yOffset3;
-    P3.x = x3 + xOffset3;
-    P3.y = y3 + yOffset3;
+    P2.x = ADD_INT32( x2, xOffset3 );
+    P2.y = ADD_INT32( y2, yOffset3 );
+    P3.x = ADD_INT32( x3, xOffset3 );
+    P3.y = ADD_INT32( y3, yOffset3 );
 
     if ( glyphpath->moveIsPending )
     {
Index: src/cff/cf2intrp.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cf2intrp.c,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 cf2intrp.c
--- src/cff/cf2intrp.c 23 Jun 2017 16:15:19 -0000 1.10
+++ src/cff/cf2intrp.c 20 Sep 2017 16:54:37 -0000
@@ -304,10 +304,12 @@
       CF2_StemHintRec  stemhint;
 
 
-      stemhint.min  =
-        position   += cf2_stack_getReal( opStack, i );
-      stemhint.max  =
-        position   += cf2_stack_getReal( opStack, i + 1 );
+      stemhint.min =
+      position     = ADD_INT32( position,
+                                cf2_stack_getReal( opStack, i ) );
+      stemhint.max =
+      position     = ADD_INT32( position,
+                                cf2_stack_getReal( opStack, i + 1 ) );
 
       stemhint.used  = FALSE;
       stemhint.maxDS =
@@ -348,7 +350,8 @@
     {
       vals[i + 2] = vals[i];
       if ( readFromStack[i] )
-        vals[i + 2] += cf2_stack_getReal( opStack, idx++ );
+        vals[i + 2] = ADD_INT32( vals[i + 2], cf2_stack_getReal( opStack,
+                                                                 idx++ ) );
     }
 
     if ( isHFlex )
@@ -356,31 +359,34 @@
 
     if ( doConditionalLastRead )
     {
-      FT_Bool    lastIsX = (FT_Bool)( cf2_fixedAbs( vals[10] - *curX ) >
-                                        cf2_fixedAbs( vals[11] - *curY ) );
+      FT_Bool    lastIsX = (FT_Bool)(
+                             cf2_fixedAbs( SUB_INT32( vals[10], *curX ) ) >
+                             cf2_fixedAbs( SUB_INT32( vals[11], *curY ) ) );
       CF2_Fixed  lastVal = cf2_stack_getReal( opStack, idx );
 
 
       if ( lastIsX )
       {
-        vals[12] = vals[10] + lastVal;
+        vals[12] = ADD_INT32( vals[10], lastVal );
         vals[13] = *curY;
       }
       else
       {
         vals[12] = *curX;
-        vals[13] = vals[11] + lastVal;
+        vals[13] = ADD_INT32( vals[11], lastVal );
       }
     }
     else
     {
       if ( readFromStack[10] )
-        vals[12] = vals[10] + cf2_stack_getReal( opStack, idx++ );
+        vals[12] = ADD_INT32( vals[10],
+                              cf2_stack_getReal( opStack, idx++ ) );
       else
         vals[12] = *curX;
 
       if ( readFromStack[11] )
-        vals[13] = vals[11] + cf2_stack_getReal( opStack, idx );
+        vals[13] = ADD_INT32( vals[11],
+                              cf2_stack_getReal( opStack, idx ) );
       else
         vals[13] = *curY;
     }
@@ -426,7 +432,10 @@
 
 
       for ( j = 1; j < blend->lenBV; j++ )
-        sum += FT_MulFix( *weight++, cf2_stack_getReal( opStack, delta++ ) );
+        sum = ADD_INT32( sum,
+                         FT_MulFix( *weight++,
+                                    cf2_stack_getReal( opStack,
+                                                       delta++ ) ) );
 
       /* store blended result  */
       cf2_stack_setReal( opStack, i + base, sum );
@@ -759,7 +768,8 @@
         FT_TRACE4(( " vmoveto\n" ));
 
         if ( cf2_stack_count( opStack ) > 1 && !haveWidth )
-          *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX;
+          *width = ADD_INT32( cf2_stack_getReal( opStack, 0 ),
+                              nominalWidthX );
 
         /* width is defined or default after this */
         haveWidth = TRUE;
@@ -767,7 +777,7 @@
         if ( font->decoder->width_only )
           goto exit;
 
-        curY += cf2_stack_popFixed( opStack );
+        curY = ADD_INT32( curY, cf2_stack_popFixed( opStack ) );
 
         cf2_glyphpath_moveTo( &glyphPath, curX, curY );
 
@@ -783,8 +793,10 @@
 
           for ( idx = 0; idx < count; idx += 2 )
           {
-            curX += cf2_stack_getReal( opStack, idx + 0 );
-            curY += cf2_stack_getReal( opStack, idx + 1 );
+            curX = ADD_INT32( curX, cf2_stack_getReal( opStack,
+                                                       idx + 0 ) );
+            curY = ADD_INT32( curY, cf2_stack_getReal( opStack,
+                                                       idx + 1 ) );
 
             cf2_glyphpath_lineTo( &glyphPath, curX, curY );
           }
@@ -810,9 +822,9 @@
 
 
             if ( isX )
-              curX += v;
+              curX = ADD_INT32( curX, v );
             else
-              curY += v;
+              curY = ADD_INT32( curY, v );
 
             isX = !isX;
 
@@ -835,13 +847,15 @@
 
           while ( idx + 6 <= count )
           {
-            CF2_Fixed  x1 = cf2_stack_getReal( opStack, idx + 0 ) + curX;
-            CF2_Fixed  y1 = cf2_stack_getReal( opStack, idx + 1 ) + curY;
-            CF2_Fixed  x2 = cf2_stack_getReal( opStack, idx + 2 ) + x1;
-            CF2_Fixed  y2 = cf2_stack_getReal( opStack, idx + 3 ) + y1;
-            CF2_Fixed  x3 = cf2_stack_getReal( opStack, idx + 4 ) + x2;
-            CF2_Fixed  y3 = cf2_stack_getReal( opStack, idx + 5 ) + y2;
+            CF2_Fixed  x1, y1, x2, y2, x3, y3;
+
 
+            x1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 0 ), curX );
+            y1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 1 ), curY );
+            x2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 2 ), x1 );
+            y2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 3 ), y1 );
+            x3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 4 ), x2 );
+            y3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 5 ), y2 );
 
             cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 );
 
@@ -852,8 +866,10 @@
 
           if ( op1 == cf2_cmdRCURVELINE )
           {
-            curX += cf2_stack_getReal( opStack, idx + 0 );
-            curY += cf2_stack_getReal( opStack, idx + 1 );
+            curX = ADD_INT32( curX, cf2_stack_getReal( opStack,
+                                                       idx + 0 ) );
+            curY = ADD_INT32( curY, cf2_stack_getReal( opStack,
+                                                       idx + 1 ) );
 
             cf2_glyphpath_lineTo( &glyphPath, curX, curY );
           }
@@ -1129,7 +1145,10 @@
 
                     arg = cf2_stack_popFixed( opStack );
 
-                    cf2_stack_pushFixed( opStack, FT_ABS( arg ) );
+                    if ( arg < -CF2_FIXED_MAX )
+                      cf2_stack_pushFixed( opStack, CF2_FIXED_MAX );
+                    else
+                      cf2_stack_pushFixed( opStack, FT_ABS( arg ) );
                   }
                   continue; /* do not clear the stack */
 
@@ -1144,7 +1163,9 @@
                     summand2 = cf2_stack_popFixed( opStack );
                     summand1 = cf2_stack_popFixed( opStack );
 
-                    cf2_stack_pushFixed( opStack, summand1 + summand2 );
+                    cf2_stack_pushFixed( opStack,
+                                         ADD_INT32( summand1,
+                                                    summand2 ) );
                   }
                   continue; /* do not clear the stack */
 
@@ -1159,7 +1180,8 @@
                     subtrahend = cf2_stack_popFixed( opStack );
                     minuend    = cf2_stack_popFixed( opStack );
 
-                    cf2_stack_pushFixed( opStack, minuend - subtrahend );
+                    cf2_stack_pushFixed( opStack,
+                                         SUB_INT32( minuend, subtrahend ) );
                   }
                   continue; /* do not clear the stack */
 
@@ -1174,7 +1196,8 @@
                     divisor  = cf2_stack_popFixed( opStack );
                     dividend = cf2_stack_popFixed( opStack );
 
-                    cf2_stack_pushFixed( opStack, FT_DivFix( dividend, divisor ) );
+                    cf2_stack_pushFixed( opStack,
+                                         FT_DivFix( dividend, divisor ) );
                   }
                   continue; /* do not clear the stack */
 
@@ -1187,7 +1210,10 @@
 
                     arg = cf2_stack_popFixed( opStack );
 
-                    cf2_stack_pushFixed( opStack, -arg );
+                    if ( arg < -CF2_FIXED_MAX )
+                      cf2_stack_pushFixed( opStack, CF2_FIXED_MAX );
+                    else
+                      cf2_stack_pushFixed( opStack, -arg );
                   }
                   continue; /* do not clear the stack */
 
@@ -1257,7 +1283,8 @@
                     arg2  = cf2_stack_popFixed( opStack );
                     arg1  = cf2_stack_popFixed( opStack );
 
-                    cf2_stack_pushFixed( opStack, cond1 <= cond2 ? arg1 : arg2 );
+                    cf2_stack_pushFixed( opStack,
+                                         cond1 <= cond2 ? arg1 : arg2 );
                   }
                   continue; /* do not clear the stack */
 
@@ -1291,7 +1318,8 @@
                     factor2 = cf2_stack_popFixed( opStack );
                     factor1 = cf2_stack_popFixed( opStack );
 
-                    cf2_stack_pushFixed( opStack, FT_MulFix( factor1, factor2 ) );
+                    cf2_stack_pushFixed( opStack,
+                                         FT_MulFix( factor1, factor2 ) );
                   }
                   continue; /* do not clear the stack */
 
@@ -1305,7 +1333,9 @@
                     arg = cf2_stack_popFixed( opStack );
                     if ( arg > 0 )
                     {
-                      FT_Fixed  root = arg;
+                      /* use a start value that doesn't make */
+                      /* the algorithm's addition overflow   */
+                      FT_Fixed  root = arg < 10 ? arg : arg >> 1;
                       FT_Fixed  new_root;
 
 
@@ -1369,7 +1399,8 @@
 
                     if ( size > 0 )
                     {
-                      /* for `cf2_stack_getReal', index 0 is bottom of stack */
+                      /* for `cf2_stack_getReal',   */
+                      /* index 0 is bottom of stack */
                       CF2_UInt  gr_idx;
 
 
@@ -1381,7 +1412,8 @@
                         gr_idx = size - 1 - (CF2_UInt)idx;
 
                       cf2_stack_pushFixed( opStack,
-                                           cf2_stack_getReal( opStack, gr_idx ) );
+                                           cf2_stack_getReal( opStack,
+                                                              gr_idx ) );
                     }
                   }
                   continue; /* do not clear the stack */
@@ -1416,7 +1448,8 @@
              cf2_stack_count( opStack ) == 5 )
         {
           if ( !haveWidth )
-            *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX;
+            *width = ADD_INT32( cf2_stack_getReal( opStack, 0 ),
+                                nominalWidthX );
         }
 
         /* width is defined or default after this */
@@ -1564,7 +1597,8 @@
         FT_TRACE4(( " rmoveto\n" ));
 
         if ( cf2_stack_count( opStack ) > 2 && !haveWidth )
-          *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX;
+          *width = ADD_INT32( cf2_stack_getReal( opStack, 0 ),
+                              nominalWidthX );
 
         /* width is defined or default after this */
         haveWidth = TRUE;
@@ -1572,8 +1606,8 @@
         if ( font->decoder->width_only )
           goto exit;
 
-        curY += cf2_stack_popFixed( opStack );
-        curX += cf2_stack_popFixed( opStack );
+        curY = ADD_INT32( curY, cf2_stack_popFixed( opStack ) );
+        curX = ADD_INT32( curX, cf2_stack_popFixed( opStack ) );
 
         cf2_glyphpath_moveTo( &glyphPath, curX, curY );
 
@@ -1583,7 +1617,8 @@
         FT_TRACE4(( " hmoveto\n" ));
 
         if ( cf2_stack_count( opStack ) > 1 && !haveWidth )
-          *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX;
+          *width = ADD_INT32( cf2_stack_getReal( opStack, 0 ),
+                              nominalWidthX );
 
         /* width is defined or default after this */
         haveWidth = TRUE;
@@ -1591,7 +1626,7 @@
         if ( font->decoder->width_only )
           goto exit;
 
-        curX += cf2_stack_popFixed( opStack );
+        curX = ADD_INT32( curX, cf2_stack_popFixed( opStack ) );
 
         cf2_glyphpath_moveTo( &glyphPath, curX, curY );
 
@@ -1607,8 +1642,10 @@
 
           while ( idx + 6 < count )
           {
-            curX += cf2_stack_getReal( opStack, idx + 0 );
-            curY += cf2_stack_getReal( opStack, idx + 1 );
+            curX = ADD_INT32( curX, cf2_stack_getReal( opStack,
+                                                       idx + 0 ) );
+            curY = ADD_INT32( curY, cf2_stack_getReal( opStack,
+                                                       idx + 1 ) );
 
             cf2_glyphpath_lineTo( &glyphPath, curX, curY );
             idx += 2;
@@ -1616,13 +1653,15 @@
 
           while ( idx < count )
           {
-            CF2_Fixed  x1 = cf2_stack_getReal( opStack, idx + 0 ) + curX;
-            CF2_Fixed  y1 = cf2_stack_getReal( opStack, idx + 1 ) + curY;
-            CF2_Fixed  x2 = cf2_stack_getReal( opStack, idx + 2 ) + x1;
-            CF2_Fixed  y2 = cf2_stack_getReal( opStack, idx + 3 ) + y1;
-            CF2_Fixed  x3 = cf2_stack_getReal( opStack, idx + 4 ) + x2;
-            CF2_Fixed  y3 = cf2_stack_getReal( opStack, idx + 5 ) + y2;
+            CF2_Fixed  x1, y1, x2, y2, x3, y3;
+
 
+            x1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 0 ), curX );
+            y1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 1 ), curY );
+            x2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 2 ), x1 );
+            y2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 3 ), y1 );
+            x3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 4 ), x2 );
+            y3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 5 ), y2 );
 
             cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 );
 
@@ -1656,18 +1695,18 @@
 
             if ( ( count - idx ) & 1 )
             {
-              x1 = cf2_stack_getReal( opStack, idx ) + curX;
+              x1 = ADD_INT32( cf2_stack_getReal( opStack, idx ), curX );
 
               idx++;
             }
             else
               x1 = curX;
 
-            y1 = cf2_stack_getReal( opStack, idx + 0 ) + curY;
-            x2 = cf2_stack_getReal( opStack, idx + 1 ) + x1;
-            y2 = cf2_stack_getReal( opStack, idx + 2 ) + y1;
+            y1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 0 ), curY );
+            x2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 1 ), x1 );
+            y2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 2 ), y1 );
             x3 = x2;
-            y3 = cf2_stack_getReal( opStack, idx + 3 ) + y2;
+            y3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 3 ), y2 );
 
             cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 );
 
@@ -1701,17 +1740,17 @@
 
             if ( ( count - idx ) & 1 )
             {
-              y1 = cf2_stack_getReal( opStack, idx ) + curY;
+              y1 = ADD_INT32( cf2_stack_getReal( opStack, idx ), curY );
 
               idx++;
             }
             else
               y1 = curY;
 
-            x1 = cf2_stack_getReal( opStack, idx + 0 ) + curX;
-            x2 = cf2_stack_getReal( opStack, idx + 1 ) + x1;
-            y2 = cf2_stack_getReal( opStack, idx + 2 ) + y1;
-            x3 = cf2_stack_getReal( opStack, idx + 3 ) + x2;
+            x1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 0 ), curX );
+            x2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 1 ), x1 );
+            y2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 2 ), y1 );
+            x3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 3 ), x2 );
             y3 = y2;
 
             cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 );
@@ -1750,15 +1789,15 @@
 
             if ( alternate )
             {
-              x1 = cf2_stack_getReal( opStack, idx + 0 ) + curX;
+              x1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 0 ), curX );
               y1 = curY;
-              x2 = cf2_stack_getReal( opStack, idx + 1 ) + x1;
-              y2 = cf2_stack_getReal( opStack, idx + 2 ) + y1;
-              y3 = cf2_stack_getReal( opStack, idx + 3 ) + y2;
+              x2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 1 ), x1 );
+              y2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 2 ), y1 );
+              y3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 3 ), y2 );
 
               if ( count - idx == 5 )
               {
-                x3 = cf2_stack_getReal( opStack, idx + 4 ) + x2;
+                x3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 4 ), x2 );
 
                 idx++;
               }
@@ -1770,14 +1809,14 @@
             else
             {
               x1 = curX;
-              y1 = cf2_stack_getReal( opStack, idx + 0 ) + curY;
-              x2 = cf2_stack_getReal( opStack, idx + 1 ) + x1;
-              y2 = cf2_stack_getReal( opStack, idx + 2 ) + y1;
-              x3 = cf2_stack_getReal( opStack, idx + 3 ) + x2;
+              y1 = ADD_INT32( cf2_stack_getReal( opStack, idx + 0 ), curY );
+              x2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 1 ), x1 );
+              y2 = ADD_INT32( cf2_stack_getReal( opStack, idx + 2 ), y1 );
+              x3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 3 ), x2 );
 
               if ( count - idx == 5 )
               {
-                y3 = cf2_stack_getReal( opStack, idx + 4 ) + y2;
+                y3 = ADD_INT32( cf2_stack_getReal( opStack, idx + 4 ), y2 );
 
                 idx++;
               }
Index: src/cff/cffgload.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cffgload.c,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 cffgload.c
--- src/cff/cffgload.c 23 Jun 2017 16:15:19 -0000 1.20
+++ src/cff/cffgload.c 20 Sep 2017 16:54:37 -0000
@@ -20,6 +20,7 @@
 #include FT_INTERNAL_DEBUG_H
 #include FT_INTERNAL_STREAM_H
 #include FT_INTERNAL_SFNT_H
+#include FT_INTERNAL_CALC_H
 #include FT_OUTLINE_H
 #include FT_CFF_DRIVER_H
 
@@ -1450,8 +1451,8 @@
 
           cff_builder_close_contour( builder );
           builder->path_begun = 0;
-          x   += args[-2];
-          y   += args[-1];
+          x    = ADD_LONG( x, args[-2] );
+          y    = ADD_LONG( y, args[-1] );
           args = stack;
           break;
 
@@ -1460,7 +1461,7 @@
 
           cff_builder_close_contour( builder );
           builder->path_begun = 0;
-          y   += args[-1];
+          y    = ADD_LONG( y, args[-1] );
           args = stack;
           break;
 
@@ -1469,7 +1470,7 @@
 
           cff_builder_close_contour( builder );
           builder->path_begun = 0;
-          x   += args[-1];
+          x    = ADD_LONG( x, args[-1] );
           args = stack;
           break;
 
@@ -1486,8 +1487,8 @@
           args -= num_args & ~1;
           while ( args < decoder->top )
           {
-            x += args[0];
-            y += args[1];
+            x = ADD_LONG( x, args[0] );
+            y = ADD_LONG( y, args[1] );
             cff_builder_add_point( builder, x, y, 1 );
             args += 2;
           }
@@ -1519,9 +1520,9 @@
             while ( args < decoder->top )
             {
               if ( phase )
-                x += args[0];
+                x = ADD_LONG( x, args[0] );
               else
-                y += args[0];
+                y = ADD_LONG( y, args[0] );
 
               if ( cff_builder_add_point1( builder, x, y ) )
                 goto Fail;
@@ -1552,15 +1553,18 @@
             args -= nargs;
             while ( args < decoder->top )
             {
-              x += args[0];
-              y += args[1];
+              x = ADD_LONG( x, args[0] );
+              y = ADD_LONG( y, args[1] );
               cff_builder_add_point( builder, x, y, 0 );
-              x += args[2];
-              y += args[3];
+
+              x = ADD_LONG( x, args[2] );
+              y = ADD_LONG( y, args[3] );
               cff_builder_add_point( builder, x, y, 0 );
-              x += args[4];
-              y += args[5];
+
+              x = ADD_LONG( x, args[4] );
+              y = ADD_LONG( y, args[5] );
               cff_builder_add_point( builder, x, y, 1 );
+
               args += 6;
             }
             args = stack;
@@ -1589,7 +1593,7 @@
 
             if ( nargs & 1 )
             {
-              x += args[0];
+              x = ADD_LONG( x, args[0] );
               args++;
               nargs--;
             }
@@ -1599,13 +1603,16 @@
 
             while ( args < decoder->top )
             {
-              y += args[0];
+              y = ADD_LONG( y, args[0] );
               cff_builder_add_point( builder, x, y, 0 );
-              x += args[1];
-              y += args[2];
+
+              x = ADD_LONG( x, args[1] );
+              y = ADD_LONG( y, args[2] );
               cff_builder_add_point( builder, x, y, 0 );
-              y += args[3];
+
+              y = ADD_LONG( y, args[3] );
               cff_builder_add_point( builder, x, y, 1 );
+
               args += 4;
             }
             args = stack;
@@ -1633,7 +1640,7 @@
             args -= nargs;
             if ( nargs & 1 )
             {
-              y += args[0];
+              y = ADD_LONG( y, args[0] );
               args++;
               nargs--;
             }
@@ -1643,13 +1650,16 @@
 
             while ( args < decoder->top )
             {
-              x += args[0];
+              x = ADD_LONG( x, args[0] );
               cff_builder_add_point( builder, x, y, 0 );
-              x += args[1];
-              y += args[2];
+
+              x = ADD_LONG( x, args[1] );
+              y = ADD_LONG( y, args[2] );
               cff_builder_add_point( builder, x, y, 0 );
-              x += args[3];
+
+              x = ADD_LONG( x, args[3] );
               cff_builder_add_point( builder, x, y, 1 );
+
               args += 4;
             }
             args = stack;
@@ -1688,26 +1698,30 @@
               nargs -= 4;
               if ( phase )
               {
-                x += args[0];
+                x = ADD_LONG( x, args[0] );
                 cff_builder_add_point( builder, x, y, 0 );
-                x += args[1];
-                y += args[2];
+
+                x = ADD_LONG( x, args[1] );
+                y = ADD_LONG( y, args[2] );
                 cff_builder_add_point( builder, x, y, 0 );
-                y += args[3];
+
+                y = ADD_LONG( y, args[3] );
                 if ( nargs == 1 )
-                  x += args[4];
+                  x = ADD_LONG( x, args[4] );
                 cff_builder_add_point( builder, x, y, 1 );
               }
               else
               {
-                y += args[0];
+                y = ADD_LONG( y, args[0] );
                 cff_builder_add_point( builder, x, y, 0 );
-                x += args[1];
-                y += args[2];
+
+                x = ADD_LONG( x, args[1] );
+                y = ADD_LONG( y, args[2] );
                 cff_builder_add_point( builder, x, y, 0 );
-                x += args[3];
+
+                x = ADD_LONG( x, args[3] );
                 if ( nargs == 1 )
-                  y += args[4];
+                  y = ADD_LONG( y, args[4] );
                 cff_builder_add_point( builder, x, y, 1 );
               }
               args  += 4;
@@ -1740,23 +1754,27 @@
             /* first, add the line segments */
             while ( num_lines > 0 )
             {
-              x += args[0];
-              y += args[1];
+              x = ADD_LONG( x, args[0] );
+              y = ADD_LONG( y, args[1] );
               cff_builder_add_point( builder, x, y, 1 );
+
               args += 2;
               num_lines--;
             }
 
             /* then the curve */
-            x += args[0];
-            y += args[1];
+            x = ADD_LONG( x, args[0] );
+            y = ADD_LONG( y, args[1] );
             cff_builder_add_point( builder, x, y, 0 );
-            x += args[2];
-            y += args[3];
+
+            x = ADD_LONG( x, args[2] );
+            y = ADD_LONG( y, args[3] );
             cff_builder_add_point( builder, x, y, 0 );
-            x += args[4];
-            y += args[5];
+
+            x = ADD_LONG( x, args[4] );
+            y = ADD_LONG( y, args[5] );
             cff_builder_add_point( builder, x, y, 1 );
+
             args = stack;
           }
           break;
@@ -1785,23 +1803,27 @@
             /* first, add the curves */
             while ( num_curves > 0 )
             {
-              x += args[0];
-              y += args[1];
+              x = ADD_LONG( x, args[0] );
+              y = ADD_LONG( y, args[1] );
               cff_builder_add_point( builder, x, y, 0 );
-              x += args[2];
-              y += args[3];
+
+              x = ADD_LONG( x, args[2] );
+              y = ADD_LONG( y, args[3] );
               cff_builder_add_point( builder, x, y, 0 );
-              x += args[4];
-              y += args[5];
+
+              x = ADD_LONG( x, args[4] );
+              y = ADD_LONG( y, args[5] );
               cff_builder_add_point( builder, x, y, 1 );
+
               args += 6;
               num_curves--;
             }
 
             /* then the final line */
-            x += args[0];
-            y += args[1];
+            x = ADD_LONG( x, args[0] );
+            y = ADD_LONG( y, args[1] );
             cff_builder_add_point( builder, x, y, 1 );
+
             args = stack;
           }
           break;
@@ -1824,33 +1846,33 @@
             start_y = y;
 
             /* first control point */
-            x += args[0];
-            y += args[1];
+            x = ADD_LONG( x, args[0] );
+            y = ADD_LONG( y, args[1] );
             cff_builder_add_point( builder, x, y, 0 );
 
             /* second control point */
-            x += args[2];
-            y += args[3];
+            x = ADD_LONG( x, args[2] );
+            y = ADD_LONG( y, args[3] );
             cff_builder_add_point( builder, x, y, 0 );
 
             /* join point; on curve, with y-value the same as the last */
             /* control point's y-value                                 */
-            x += args[4];
+            x = ADD_LONG( x, args[4] );
             cff_builder_add_point( builder, x, y, 1 );
 
             /* third control point, with y-value the same as the join */
             /* point's y-value                                        */
-            x += args[5];
+            x = ADD_LONG( x, args[5] );
             cff_builder_add_point( builder, x, y, 0 );
 
             /* fourth control point */
-            x += args[6];
-            y += args[7];
+            x = ADD_LONG( x, args[6] );
+            y = ADD_LONG( y, args[7] );
             cff_builder_add_point( builder, x, y, 0 );
 
             /* ending point, with y-value the same as the start   */
-            x += args[8];
-            y  = start_y;
+            x = ADD_LONG( x, args[8] );
+            y = start_y;
             cff_builder_add_point( builder, x, y, 1 );
 
             args = stack;
@@ -1873,32 +1895,32 @@
             start_y = y;
 
             /* first control point */
-            x += args[0];
+            x = ADD_LONG( x, args[0] );
             cff_builder_add_point( builder, x, y, 0 );
 
             /* second control point */
-            x += args[1];
-            y += args[2];
+            x = ADD_LONG( x, args[1] );
+            y = ADD_LONG( y, args[2] );
             cff_builder_add_point( builder, x, y, 0 );
 
             /* join point; on curve, with y-value the same as the last */
             /* control point's y-value                                 */
-            x += args[3];
+            x = ADD_LONG( x, args[3] );
             cff_builder_add_point( builder, x, y, 1 );
 
             /* third control point, with y-value the same as the join */
             /* point's y-value                                        */
-            x += args[4];
+            x = ADD_LONG( x, args[4] );
             cff_builder_add_point( builder, x, y, 0 );
 
             /* fourth control point */
-            x += args[5];
-            y  = start_y;
+            x = ADD_LONG( x, args[5] );
+            y = start_y;
             cff_builder_add_point( builder, x, y, 0 );
 
             /* ending point, with y-value the same as the start point's */
             /* y-value -- we don't add this point, though               */
-            x += args[6];
+            x = ADD_LONG( x, args[6] );
             cff_builder_add_point( builder, x, y, 1 );
 
             args = stack;
@@ -1934,8 +1956,8 @@
             /* grab up to the last argument */
             for ( count = 5; count > 0; count-- )
             {
-              dx += temp[0];
-              dy += temp[1];
+              dx    = ADD_LONG( dx, temp[0] );
+              dy    = ADD_LONG( dy, temp[1] );
               temp += 2;
             }
 
@@ -1949,8 +1971,8 @@
 
             for ( count = 5; count > 0; count-- )
             {
-              x += args[0];
-              y += args[1];
+              x = ADD_LONG( x, args[0] );
+              y = ADD_LONG( y, args[1] );
               cff_builder_add_point( builder, x, y,
                                      (FT_Bool)( count == 3 ) );
               args += 2;
@@ -1959,13 +1981,13 @@
             /* is last operand an x- or y-delta? */
             if ( horizontal )
             {
-              x += args[0];
-              y  = start_y;
+              x = ADD_LONG( x, args[0] );
+              y = start_y;
             }
             else
             {
-              x  = start_x;
-              y += args[0];
+              x = start_x;
+              y = ADD_LONG( y, args[0] );
             }
 
             cff_builder_add_point( builder, x, y, 1 );
@@ -1987,8 +2009,8 @@
 
             for ( count = 6; count > 0; count-- )
             {
-              x += args[0];
-              y += args[1];
+              x = ADD_LONG( x, args[0] );
+              y = ADD_LONG( y, args[1] );
               cff_builder_add_point( builder, x, y,
                                      (FT_Bool)( count == 4 || count == 1 ) );
               args += 2;
@@ -2066,21 +2088,26 @@
           FT_TRACE4(( " abs\n" ));
 
           if ( args[0] < 0 )
-            args[0] = -args[0];
+          {
+            if ( args[0] == FT_LONG_MIN )
+              args[0] = FT_LONG_MAX;
+            else
+              args[0] = -args[0];
+          }
           args++;
           break;
 
         case cff_op_add:
           FT_TRACE4(( " add\n" ));
 
-          args[0] += args[1];
+          args[0] = ADD_LONG( args[0], args[1] );
           args++;
           break;
 
         case cff_op_sub:
           FT_TRACE4(( " sub\n" ));
 
-          args[0] -= args[1];
+          args[0] = SUB_LONG( args[0], args[1] );
           args++;
           break;
 
@@ -2094,6 +2121,8 @@
         case cff_op_neg:
           FT_TRACE4(( " neg\n" ));
 
+          if ( args[0] == FT_LONG_MIN )
+            args[0] = FT_LONG_MAX;
           args[0] = -args[0];
           args++;
           break;
@@ -2350,12 +2379,13 @@
 
           FT_TRACE4(( " hsbw (invalid op)\n" ));
 
-          decoder->glyph_width = decoder->nominal_width + ( args[1] >> 16 );
+          decoder->glyph_width =
+            ADD_LONG( 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];
+          x    = ADD_LONG( decoder->builder.pos_x, args[0] );
           y    = decoder->builder.pos_y;
           args = stack;
           break;
@@ -2367,13 +2397,14 @@
 
           FT_TRACE4(( " sbw (invalid op)\n" ));
 
-          decoder->glyph_width = decoder->nominal_width + ( args[2] >> 16 );
+          decoder->glyph_width =
+            ADD_LONG( 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];
+          x    = ADD_LONG( decoder->builder.pos_x, args[0] );
+          y    = ADD_LONG( decoder->builder.pos_y, args[1] );
           args = stack;
           break;
 
@@ -2384,8 +2415,8 @@
 
           FT_TRACE4(( " setcurrentpoint (invalid op)\n" ));
 
-          x    = decoder->builder.pos_x + args[0];
-          y    = decoder->builder.pos_y + args[1];
+          x    = ADD_LONG( decoder->builder.pos_x, args[0] );
+          y    = ADD_LONG( decoder->builder.pos_y, args[1] );
           args = stack;
           break;
 
Index: src/cff/cffload.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cffload.c,v
retrieving revision 1.22
diff -u -p -u -p -r1.22 cffload.c
--- src/cff/cffload.c 23 Jun 2017 16:15:19 -0000 1.22
+++ src/cff/cffload.c 20 Sep 2017 16:54:37 -0000
@@ -1352,9 +1352,12 @@
       sum = cff_parse_num( parser, &parser->stack[i + base] ) * 65536;
 
       for ( j = 1; j < blend->lenBV; j++ )
-        sum += FT_MulFix( *weight++,
-                          cff_parse_num( parser,
-                                         &parser->stack[delta++] ) * 65536 );
+        sum = ADD_INT32(
+                sum,
+                FT_MulFix(
+                  *weight++,
+                  cff_parse_num( parser,
+                                 &parser->stack[delta++] ) * 65536 ) );
 
       /* point parser stack to new value on blend_stack */
       parser->stack[i + base] = subFont->blend_top;
Index: src/cff/cffparse.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/cff/cffparse.c,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 cffparse.c
--- src/cff/cffparse.c 23 Jun 2017 16:15:19 -0000 1.18
+++ src/cff/cffparse.c 20 Sep 2017 16:54:37 -0000
@@ -20,6 +20,7 @@
 #include "cffparse.h"
 #include FT_INTERNAL_STREAM_H
 #include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_CALC_H
 
 #include "cfferrs.h"
 #include "cffpic.h"
@@ -156,6 +157,22 @@
     1000000000L
   };
 
+  /* maximum values allowed for multiplying      */
+  /* with the corresponding `power_tens' element */
+  static const FT_Long power_ten_limits[] =
+  {
+    FT_LONG_MAX / 1L,
+    FT_LONG_MAX / 10L,
+    FT_LONG_MAX / 100L,
+    FT_LONG_MAX / 1000L,
+    FT_LONG_MAX / 10000L,
+    FT_LONG_MAX / 100000L,
+    FT_LONG_MAX / 1000000L,
+    FT_LONG_MAX / 10000000L,
+    FT_LONG_MAX / 100000000L,
+    FT_LONG_MAX / 1000000000L,
+  };
+
 
   /* read a real */
   static FT_Fixed
@@ -484,7 +501,15 @@
 
 
       if ( scaling )
+      {
+        if ( FT_ABS( val ) > power_ten_limits[scaling] )
+        {
+          val = val > 0 ? 0x7FFFFFFFL : -0x7FFFFFFFL;
+          goto Overflow;
+        }
+
         val *= power_tens[scaling];
+      }
 
       if ( val > 0x7FFF )
       {
@@ -1585,7 +1610,7 @@
                 val = 0;
                 while ( num_args > 0 )
                 {
-                  val += cff_parse_num( parser, data++ );
+                  val = ADD_LONG( val, cff_parse_num( parser, data++ ) );
                   switch ( field->size )
                   {
                   case (8 / FT_CHAR_BIT):
Index: src/gxvalid/README
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/gxvalid/README,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 README
--- src/gxvalid/README 23 Jun 2017 16:15:19 -0000 1.4
+++ src/gxvalid/README 20 Sep 2017 16:54:37 -0000
@@ -9,7 +9,7 @@ gxvalid: TrueType GX validator
   additional tables  in TrueType  font which are  used by  `QuickDraw GX
   Text',  Apple Advanced  Typography  (AAT).  In  addition, gxvalid  can
   validates `kern'  tables which have  been extended for AAT.   Like the
-  otvalid  module,   gxvalid  uses  Freetype   2's  validator  framework
+  otvalid  module,   gxvalid  uses   FreeType  2's  validator  framework
   (ftvalid).
 
   You can link gxvalid with your program; before running your own layout
Index: src/pcf/README
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/pcf/README,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 README
--- src/pcf/README 7 Jun 2013 17:21:09 -0000 1.3
+++ src/pcf/README 20 Sep 2017 16:54:37 -0000
@@ -41,8 +41,8 @@ value given as argument into the corresp
 Known problems
 **************
 
-- dealing explicitly with encodings breaks the uniformity of freetype2
-  api.
+- dealing explicitly with encodings breaks the uniformity of FreeType 2
+  API.
 
 - except for encodings properties, client applications have no
   visibility of the PCF_Face object.  This means that applications
Index: src/pcf/pcfdrivr.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/pcf/pcfdrivr.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 pcfdrivr.c
--- src/pcf/pcfdrivr.c 23 Jun 2017 16:15:19 -0000 1.17
+++ src/pcf/pcfdrivr.c 20 Sep 2017 16:54:37 -0000
@@ -387,7 +387,11 @@ THE SOFTWARE.
           if ( !ft_strcmp( s, "10646" )                      ||
                ( !ft_strcmp( s, "8859" ) &&
                  !ft_strcmp( face->charset_encoding, "1" ) ) )
-          unicode_charmap = 1;
+            unicode_charmap = 1;
+          /* another name for ASCII */
+          else if ( !ft_strcmp( s, "646.1991" )                 &&
+                    !ft_strcmp( face->charset_encoding, "IRV" ) )
+            unicode_charmap = 1;
         }
       }
 
@@ -409,12 +413,6 @@ THE SOFTWARE.
         }
 
         error = FT_CMap_New( &pcf_cmap_class, NULL, &charmap, NULL );
-
-#if 0
-        /* Select default charmap */
-        if ( pcfface->num_charmaps )
-          pcfface->charmap = pcfface->charmaps[0];
-#endif
       }
     }
 
Index: src/pcf/pcfread.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/pcf/pcfread.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 pcfread.c
--- src/pcf/pcfread.c 23 Jun 2017 16:15:19 -0000 1.19
+++ src/pcf/pcfread.c 20 Sep 2017 16:54:37 -0000
@@ -1162,6 +1162,20 @@ THE SOFTWARE.
                 accel->fontDescent,
                 accel->maxOverlap ));
 
+    /* sanity checks */
+    if ( FT_ABS( accel->fontAscent ) > 0x7FFF )
+    {
+      accel->fontAscent = accel->fontAscent < 0 ? -0x7FFF : 0x7FFF;
+      FT_TRACE0(( "pfc_get_accel: clamping font ascent to value %d\n",
+                  accel->fontAscent ));
+    }
+    if ( FT_ABS( accel->fontDescent ) > 0x7FFF )
+    {
+      accel->fontDescent = accel->fontDescent < 0 ? -0x7FFF : 0x7FFF;
+      FT_TRACE0(( "pfc_get_accel: clamping font descent to value %d\n",
+                  accel->fontDescent ));
+    }
+
     FT_TRACE5(( "  minbounds:" ));
     error = pcf_get_metric( stream,
                             format & ( ~PCF_FORMAT_MASK ),
@@ -1496,8 +1510,16 @@ THE SOFTWARE.
         if ( face->accel.fontAscent + face->accel.fontDescent < 0 )
           FT_TRACE0(( "pcf_load_font: negative height\n" ));
 #endif
-        bsize->height = FT_ABS( (FT_Short)( face->accel.fontAscent +
-                                            face->accel.fontDescent ) );
+        if ( FT_ABS( face->accel.fontAscent +
+                     face->accel.fontDescent ) > 0x7FFF )
+        {
+          bsize->height = 0x7FFF;
+          FT_TRACE0(( "pcf_load_font: clamping height to value %d\n",
+                      bsize->height ));
+        }
+        else
+          bsize->height = FT_ABS( (FT_Short)( face->accel.fontAscent +
+                                              face->accel.fontDescent ) );
 
         prop = pcf_find_property( face, "AVERAGE_WIDTH" );
         if ( prop )
@@ -1506,10 +1528,20 @@ THE SOFTWARE.
           if ( prop->value.l < 0 )
             FT_TRACE0(( "pcf_load_font: negative average width\n" ));
 #endif
-          bsize->width = FT_ABS( (FT_Short)( ( prop->value.l ) + 5 ) / 10 );
+          if ( ( FT_ABS( prop->value.l ) > 0x7FFFL * 10 - 5 ) )
+          {
+            bsize->width = 0x7FFF;
+            FT_TRACE0(( "pcf_load_font: clamping average width to value %d\n",
+                        bsize->width ));
+          }
+          else
+            bsize->width = FT_ABS( (FT_Short)( ( prop->value.l + 5 ) / 10 ) );
         }
         else
+        {
+          /* this is a heuristical value */
           bsize->width = (FT_Short)FT_MulDiv( bsize->height, 2, 3 );
+        }
 
         prop = pcf_find_property( face, "POINT_SIZE" );
         if ( prop )
@@ -1519,9 +1551,16 @@ THE SOFTWARE.
             FT_TRACE0(( "pcf_load_font: negative point size\n" ));
 #endif
           /* convert from 722.7 decipoints to 72 points per inch */
-          bsize->size = FT_MulDiv( FT_ABS( prop->value.l ),
-                                   64 * 7200,
-                                   72270L );
+          if ( FT_ABS( prop->value.l ) > 0x504C2L ) /* 0x7FFF * 72270/7200 */
+          {
+            bsize->size = 0x7FFF;
+            FT_TRACE0(( "pcf_load_font: clamping point size to value %d\n",
+                        bsize->size ));
+          }
+          else
+            bsize->size = FT_MulDiv( FT_ABS( prop->value.l ),
+                                     64 * 7200,
+                                     72270L );
         }
 
         prop = pcf_find_property( face, "PIXEL_SIZE" );
@@ -1531,7 +1570,14 @@ THE SOFTWARE.
           if ( prop->value.l < 0 )
             FT_TRACE0(( "pcf_load_font: negative pixel size\n" ));
 #endif
-          bsize->y_ppem = FT_ABS( (FT_Short)prop->value.l ) << 6;
+          if ( FT_ABS( prop->value.l ) > 0x7FFF )
+          {
+            bsize->y_ppem = 0x7FFF << 6;
+            FT_TRACE0(( "pcf_load_font: clamping pixel size to value %d\n",
+                        bsize->y_ppem ));
+          }
+          else
+            bsize->y_ppem = FT_ABS( (FT_Short)prop->value.l ) << 6;
         }
 
         prop = pcf_find_property( face, "RESOLUTION_X" );
@@ -1541,7 +1587,14 @@ THE SOFTWARE.
           if ( prop->value.l < 0 )
             FT_TRACE0(( "pcf_load_font: negative X resolution\n" ));
 #endif
-          resolution_x = FT_ABS( (FT_Short)prop->value.l );
+          if ( FT_ABS( prop->value.l ) > 0x7FFF )
+          {
+            resolution_x = 0x7FFF;
+            FT_TRACE0(( "pcf_load_font: clamping X resolution to value %d\n",
+                        resolution_x ));
+          }
+          else
+            resolution_x = FT_ABS( (FT_Short)prop->value.l );
         }
 
         prop = pcf_find_property( face, "RESOLUTION_Y" );
@@ -1551,7 +1604,14 @@ THE SOFTWARE.
           if ( prop->value.l < 0 )
             FT_TRACE0(( "pcf_load_font: negative Y resolution\n" ));
 #endif
-          resolution_y = FT_ABS( (FT_Short)prop->value.l );
+          if ( FT_ABS( prop->value.l ) > 0x7FFF )
+          {
+            resolution_y = 0x7FFF;
+            FT_TRACE0(( "pcf_load_font: clamping Y resolution to value %d\n",
+                        resolution_y ));
+          }
+          else
+            resolution_y = FT_ABS( (FT_Short)prop->value.l );
         }
 
         if ( bsize->y_ppem == 0 )
Index: src/pfr/pfrobjs.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/pfr/pfrobjs.c,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 pfrobjs.c
--- src/pfr/pfrobjs.c 23 Jun 2017 16:15:19 -0000 1.16
+++ src/pfr/pfrobjs.c 20 Sep 2017 16:54:37 -0000
@@ -264,12 +264,6 @@
         charmap.encoding    = FT_ENCODING_UNICODE;
 
         error = FT_CMap_New( &pfr_cmap_class_rec, NULL, &charmap, NULL );
-
-#if 0
-        /* select default charmap */
-        if ( pfrface->num_charmaps )
-          pfrface->charmap = pfrface->charmaps[0];
-#endif
       }
 
       /* check whether we have loaded any kerning pairs */
Index: src/psaux/psconv.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/psaux/psconv.c,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 psconv.c
--- src/psaux/psconv.c 23 Jun 2017 16:15:19 -0000 1.11
+++ src/psaux/psconv.c 20 Sep 2017 16:54:37 -0000
@@ -111,6 +111,10 @@
       p++;
       if ( p == limit )
         goto Bad;
+
+      /* only a single sign is allowed */
+      if ( *p == '-' || *p == '+' )
+        return 0;
     }
 
     num_limit = 0x7FFFFFFFL / base;
@@ -215,6 +219,10 @@
       p++;
       if ( p == limit )
         goto Bad;
+
+      /* only a single sign is allowed */
+      if ( *p == '-' || *p == '+' )
+        return 0;
     }
 
     /* read the integer part */
Index: src/psaux/t1decode.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/psaux/t1decode.c,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 t1decode.c
--- src/psaux/t1decode.c 23 Jun 2017 16:15:19 -0000 1.20
+++ src/psaux/t1decode.c 20 Sep 2017 16:54:37 -0000
@@ -864,7 +864,9 @@
 
 
               for ( mm = 1; mm < blend->num_designs; mm++ )
-                tmp += FT_MulFix( *delta++, blend->weight_vector[mm] );
+                tmp = ADD_LONG( tmp,
+                                FT_MulFix( *delta++,
+                                           blend->weight_vector[mm] ) );
 
               *values++ = tmp;
             }
@@ -904,7 +906,7 @@
           if ( arg_cnt != 2 )
             goto Unexpected_OtherSubr;
 
-          top[0] += top[1]; /* XXX (over|under)flow */
+          top[0] = ADD_LONG( top[0], top[1] );
 
           known_othersubr_result_cnt = 1;
           break;
@@ -915,7 +917,7 @@
           if ( arg_cnt != 2 )
             goto Unexpected_OtherSubr;
 
-          top[0] -= top[1]; /* XXX (over|under)flow */
+          top[0] = SUB_LONG( top[0], top[1] );
 
           known_othersubr_result_cnt = 1;
           break;
@@ -1147,11 +1149,13 @@
 
           builder->parse_state = T1_Parse_Have_Width;
 
-          builder->left_bearing.x += top[0];
-          builder->advance.x       = top[1];
-          builder->advance.y       = 0;
+          builder->left_bearing.x = ADD_LONG( builder->left_bearing.x,
+                                              top[0] );
 
-          orig_x = x = builder->pos_x + top[0];
+          builder->advance.x = top[1];
+          builder->advance.y = 0;
+
+          orig_x = x = ADD_LONG( builder->pos_x, top[0] );
           orig_y = y = builder->pos_y;
 
           FT_UNUSED( orig_y );
@@ -1177,13 +1181,16 @@
 
           builder->parse_state = T1_Parse_Have_Width;
 
-          builder->left_bearing.x += top[0];
-          builder->left_bearing.y += top[1];
-          builder->advance.x       = top[2];
-          builder->advance.y       = top[3];
+          builder->left_bearing.x = ADD_LONG( builder->left_bearing.x,
+                                              top[0] );
+          builder->left_bearing.y = ADD_LONG( builder->left_bearing.y,
+                                              top[1] );
+
+          builder->advance.x = top[2];
+          builder->advance.y = top[3];
 
-          x = builder->pos_x + top[0];
-          y = builder->pos_y + top[1];
+          x = ADD_LONG( builder->pos_x, top[0] );
+          y = ADD_LONG( 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   */
@@ -1210,13 +1217,14 @@
           if ( FT_SET_ERROR( t1_builder_start_point( builder, x, y ) ) )
             goto Fail;
 
-          x += top[0];
+          x = ADD_LONG( x, top[0] );
           goto Add_Line;
 
         case op_hmoveto:
           FT_TRACE4(( " hmoveto" ));
 
-          x += top[0];
+          x = ADD_LONG( x, top[0] );
+
           if ( !decoder->flex_state )
           {
             if ( builder->parse_state == T1_Parse_Start )
@@ -1232,12 +1240,14 @@
                FT_SET_ERROR( t1_builder_check_points( builder, 3 ) )   )
             goto Fail;
 
-          x += top[0];
+          x = ADD_LONG( x, top[0] );
           t1_builder_add_point( builder, x, y, 0 );
-          x += top[1];
-          y += top[2];
+
+          x = ADD_LONG( x, top[1] );
+          y = ADD_LONG( y, top[2] );
           t1_builder_add_point( builder, x, y, 0 );
-          y += top[3];
+
+          y = ADD_LONG( y, top[3] );
           t1_builder_add_point( builder, x, y, 1 );
           break;
 
@@ -1247,8 +1257,8 @@
           if ( FT_SET_ERROR( t1_builder_start_point( builder, x, y ) ) )
             goto Fail;
 
-          x += top[0];
-          y += top[1];
+          x = ADD_LONG( x, top[0] );
+          y = ADD_LONG( y, top[1] );
 
         Add_Line:
           if ( FT_SET_ERROR( t1_builder_add_point1( builder, x, y ) ) )
@@ -1258,8 +1268,9 @@
         case op_rmoveto:
           FT_TRACE4(( " rmoveto" ));
 
-          x += top[0];
-          y += top[1];
+          x = ADD_LONG( x, top[0] );
+          y = ADD_LONG( y, top[1] );
+
           if ( !decoder->flex_state )
           {
             if ( builder->parse_state == T1_Parse_Start )
@@ -1275,16 +1286,16 @@
                FT_SET_ERROR( t1_builder_check_points( builder, 3 ) )   )
             goto Fail;
 
-          x += top[0];
-          y += top[1];
+          x = ADD_LONG( x, top[0] );
+          y = ADD_LONG( y, top[1] );
           t1_builder_add_point( builder, x, y, 0 );
 
-          x += top[2];
-          y += top[3];
+          x = ADD_LONG( x, top[2] );
+          y = ADD_LONG( y, top[3] );
           t1_builder_add_point( builder, x, y, 0 );
 
-          x += top[4];
-          y += top[5];
+          x = ADD_LONG( x, top[4] );
+          y = ADD_LONG( y, top[5] );
           t1_builder_add_point( builder, x, y, 1 );
           break;
 
@@ -1295,12 +1306,14 @@
                FT_SET_ERROR( t1_builder_check_points( builder, 3 ) )   )
             goto Fail;
 
-          y += top[0];
+          y = ADD_LONG( y, top[0] );
           t1_builder_add_point( builder, x, y, 0 );
-          x += top[1];
-          y += top[2];
+
+          x = ADD_LONG( x, top[1] );
+          y = ADD_LONG( y, top[2] );
           t1_builder_add_point( builder, x, y, 0 );
-          x += top[3];
+
+          x = ADD_LONG( x, top[3] );
           t1_builder_add_point( builder, x, y, 1 );
           break;
 
@@ -1310,13 +1323,14 @@
           if ( FT_SET_ERROR( t1_builder_start_point( builder, x, y ) ) )
             goto Fail;
 
-          y += top[0];
+          y = ADD_LONG( y, top[0] );
           goto Add_Line;
 
         case op_vmoveto:
           FT_TRACE4(( " vmoveto" ));
 
-          y += top[0];
+          y = ADD_LONG( y, top[0] );
+
           if ( !decoder->flex_state )
           {
             if ( builder->parse_state == T1_Parse_Start )
@@ -1473,7 +1487,7 @@
           /* record vertical hint */
           if ( hinter )
           {
-            top[0] += orig_x;
+            top[0] = ADD_LONG( top[0], orig_x );
             hinter->stem( hinter->hints, 0, top );
           }
           break;
@@ -1487,9 +1501,9 @@
             FT_Pos  dx = orig_x;
 
 
-            top[0] += dx;
-            top[2] += dx;
-            top[4] += dx;
+            top[0] = ADD_LONG( top[0], dx );
+            top[2] = ADD_LONG( top[2], dx );
+            top[4] = ADD_LONG( top[4], dx );
             hinter->stem3( hinter->hints, 0, top );
           }
           break;
Index: src/psnames/psmodule.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/psnames/psmodule.c,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 psmodule.c
--- src/psnames/psmodule.c 23 Jun 2017 16:15:19 -0000 1.14
+++ src/psnames/psmodule.c 20 Sep 2017 16:54:37 -0000
@@ -23,8 +23,21 @@
 
 #include "psmodule.h"
 
+  /*
+   *  The file `pstables.h' with its arrays and its function
+   *  `ft_get_adobe_glyph_index' is useful for other projects also (for
+   *  example, `pdfium' is using it).  However, if used as a C++ header,
+   *  including it in two different source files makes it necessary to use
+   *  `extern const' for the declaration of its arrays, otherwise the data
+   *  would be duplicated as mandated by the C++ standard.
+   *
+   *  For this reason, we use `DEFINE_PS_TABLES' to guard the function
+   *  definitions, and `DEFINE_PS_TABLES_DATA' to provide both proper array
+   *  declarations and definitions.
+   */
 #include "pstables.h"
 #define  DEFINE_PS_TABLES
+#define  DEFINE_PS_TABLES_DATA
 #include "pstables.h"
 
 #include "psnamerr.h"
Index: src/psnames/pstables.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/psnames/pstables.h,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 pstables.h
--- src/psnames/pstables.h 23 Jun 2017 16:15:19 -0000 1.7
+++ src/psnames/pstables.h 20 Sep 2017 16:54:37 -0000
@@ -19,7 +19,7 @@
   /* This file has been generated automatically -- do not edit! */
 
 
-#ifndef  DEFINE_PS_TABLES
+#ifndef  DEFINE_PS_TABLES_DATA
 #ifdef  __cplusplus
   extern "C"
 #else
@@ -27,7 +27,7 @@
 #endif
 #endif
   const char  ft_standard_glyph_names[3696]
-#ifdef  DEFINE_PS_TABLES
+#ifdef  DEFINE_PS_TABLES_DATA
   =
   {
     '.','n','u','l','l', 0,
@@ -451,7 +451,7 @@
     'R','o','m','a','n', 0,
     'S','e','m','i','b','o','l','d', 0,
   }
-#endif /* DEFINE_PS_TABLES */
+#endif /* DEFINE_PS_TABLES_DATA */
   ;
 
 
@@ -459,7 +459,7 @@
 
   /* Values are offsets into the `ft_standard_glyph_names' table */
 
-#ifndef  DEFINE_PS_TABLES
+#ifndef  DEFINE_PS_TABLES_DATA
 #ifdef  __cplusplus
   extern "C"
 #else
@@ -467,7 +467,7 @@
 #endif
 #endif
   const short  ft_mac_names[FT_NUM_MAC_NAMES]
-#ifdef  DEFINE_PS_TABLES
+#ifdef  DEFINE_PS_TABLES_DATA
   =
   {
      253,   0,   6, 261, 267, 274, 283, 294, 301, 309, 758, 330, 340, 351,
@@ -490,7 +490,7 @@
     1270,1313,1323,1171,1290,1332,1211,1235,1276, 169, 175, 182, 189, 200,
      209, 218, 225, 232, 239, 246
   }
-#endif /* DEFINE_PS_TABLES */
+#endif /* DEFINE_PS_TABLES_DATA */
   ;
 
 
@@ -498,7 +498,7 @@
 
   /* Values are offsets into the `ft_standard_glyph_names' table */
 
-#ifndef  DEFINE_PS_TABLES
+#ifndef  DEFINE_PS_TABLES_DATA
 #ifdef  __cplusplus
   extern "C"
 #else
@@ -506,7 +506,7 @@
 #endif
 #endif
   const short  ft_sid_names[FT_NUM_SID_NAMES]
-#ifdef  DEFINE_PS_TABLES
+#ifdef  DEFINE_PS_TABLES_DATA
   =
   {
      253, 261, 267, 274, 283, 294, 301, 309, 319, 330, 340, 351, 360, 365,
@@ -538,12 +538,12 @@
     3418,3430,3442,3454,3471,3483,3498,3506,3518,3530,3542,3559,3574,3586,
     3597,3612,3620,3628,3636,3644,3650,3655,3660,3666,3673,3681,3687
   }
-#endif /* DEFINE_PS_TABLES */
+#endif /* DEFINE_PS_TABLES_DATA */
   ;
 
 
   /* the following are indices into the SID name table */
-#ifndef  DEFINE_PS_TABLES
+#ifndef  DEFINE_PS_TABLES_DATA
 #ifdef  __cplusplus
   extern "C"
 #else
@@ -551,7 +551,7 @@
 #endif
 #endif
   const unsigned short  t1_standard_encoding[256]
-#ifdef  DEFINE_PS_TABLES
+#ifdef  DEFINE_PS_TABLES_DATA
   =
   {
       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -571,12 +571,12 @@
       0,138,  0,139,  0,  0,  0,  0,140,141,142,143,  0,  0,  0,  0,
       0,144,  0,  0,  0,145,  0,  0,146,147,148,149,  0,  0,  0,  0
   }
-#endif /* DEFINE_PS_TABLES */
+#endif /* DEFINE_PS_TABLES_DATA */
   ;
 
 
   /* the following are indices into the SID name table */
-#ifndef  DEFINE_PS_TABLES
+#ifndef  DEFINE_PS_TABLES_DATA
 #ifdef  __cplusplus
   extern "C"
 #else
@@ -584,7 +584,7 @@
 #endif
 #endif
   const unsigned short  t1_expert_encoding[256]
-#ifdef  DEFINE_PS_TABLES
+#ifdef  DEFINE_PS_TABLES_DATA
   =
   {
       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -604,7 +604,7 @@
     347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,
     363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378
   }
-#endif /* DEFINE_PS_TABLES */
+#endif /* DEFINE_PS_TABLES_DATA */
   ;
 
 
@@ -619,7 +619,7 @@
 
 #ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
 
-#ifndef  DEFINE_PS_TABLES
+#ifndef  DEFINE_PS_TABLES_DATA
 #ifdef  __cplusplus
   extern "C"
 #else
@@ -627,7 +627,7 @@
 #endif
 #endif
   const unsigned char  ft_adobe_glyph_list[55997L]
-#ifdef  DEFINE_PS_TABLES
+#ifdef  DEFINE_PS_TABLES_DATA
   =
   {
       0, 52,  0,106,  2,167,  3, 63,  4,220,  6,125,  9,143, 10, 23,
@@ -4131,7 +4131,7 @@
     182,117,  2,218,167,218,178,232,233,242,225,231,225,238, 97,128,
      48, 90,235,225,244,225,235,225,238, 97,128, 48,186
   }
-#endif /* DEFINE_PS_TABLES */
+#endif /* DEFINE_PS_TABLES_DATA */
   ;
 
 
Index: src/raster/ftrend1.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/raster/ftrend1.c,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 ftrend1.c
--- src/raster/ftrend1.c 23 Jun 2017 16:15:19 -0000 1.10
+++ src/raster/ftrend1.c 20 Sep 2017 16:54:37 -0000
@@ -31,12 +31,7 @@
   static FT_Error
   ft_raster1_init( FT_Renderer  render )
   {
-    FT_Library  library = FT_MODULE_LIBRARY( render );
-
-
-    render->clazz->raster_class->raster_reset( render->raster,
-                                               library->raster_pool,
-                                               library->raster_pool_size );
+    render->clazz->raster_class->raster_reset( render->raster, NULL, 0 );
 
     return FT_Err_Ok;
   }
@@ -194,7 +189,7 @@
     bitmap->rows  = height;
     bitmap->pitch = (int)pitch;
 
-    if ( FT_ALLOC_MULT( bitmap->buffer, pitch, height ) )
+    if ( FT_ALLOC_MULT( bitmap->buffer, height, pitch ) )
       goto Exit;
 
     slot->internal->flags |= FT_GLYPH_OWN_BITMAP;
Index: src/sfnt/pngshim.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/sfnt/pngshim.c,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 pngshim.c
--- src/sfnt/pngshim.c 23 Jun 2017 16:15:19 -0000 1.7
+++ src/sfnt/pngshim.c 20 Sep 2017 16:54:37 -0000
@@ -49,18 +49,82 @@
   }
 
 
-  /* Premultiplies data and converts RGBA bytes => native endian. */
+  /* Premultiplies data and converts RGBA bytes => BGRA. */
   static void
   premultiply_data( png_structp    png,
                     png_row_infop  row_info,
                     png_bytep      data )
   {
-    unsigned int  i;
+    unsigned int  i = 0, limit;
 
-    FT_UNUSED( png );
+    /* The `vector_size' attribute was introduced in gcc 3.1, which */
+    /* predates clang; the `__BYTE_ORDER__' preprocessor symbol was */
+    /* introduced in gcc 4.6 and clang 3.2, respectively.           */
+    /* `__builtin_shuffle' for gcc was introduced in gcc 4.7.0.     */
+#if ( ( defined( __GNUC__ )                                &&             \
+        ( ( __GNUC__ >= 5 )                              ||               \
+        ( ( __GNUC__ == 4 ) && ( __GNUC_MINOR__ >= 7 ) ) ) )         ||   \
+      ( defined( __clang__ )                                       &&     \
+        ( ( __clang_major__ >= 4 )                               ||       \
+        ( ( __clang_major__ == 3 ) && ( __clang_minor__ >= 2 ) ) ) ) ) && \
+    defined( __OPTIMIZE__ )                                            && \
+    __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+
+#ifdef __clang__
+    /* the clang documentation doesn't cover the two-argument case of */
+    /* `__builtin_shufflevector'; however, it is is implemented since */
+    /* version 2.8                                                    */
+#define vector_shuffle  __builtin_shufflevector
+#else
+#define vector_shuffle  __builtin_shuffle
+#endif
+
+    typedef unsigned short  v82 __attribute__(( vector_size( 16 ) ));
+
+
+    /* process blocks of 16 bytes in one rush, which gives a nice speed-up */
+    limit = row_info->rowbytes - 16 + 1;
+    for ( ; i < limit; i += 16 )
+    {
+      unsigned char*  base = &data[i];
+
+      v82  s, s0, s1, a;
+
+      /* clang <= 3.9 can't apply scalar values to vectors */
+      /* (or rather, it needs a different syntax)          */
+      v82  n0x80 = { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };
+      v82  n0xFF = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
+      v82  n8    = { 8, 8, 8, 8, 8, 8, 8, 8 };
 
+      v82  ma = { 1, 1, 3, 3, 5, 5, 7, 7 };
+      v82  o1 = { 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF };
+      v82  m0 = { 1, 0, 3, 2, 5, 4, 7, 6 };
+
+
+      memcpy( &s, base, 16 );               /* RGBA RGBA RGBA RGBA */
+      s0 = s & n0xFF;                       /*  R B  R B  R B  R B */
+      s1 = s >> n8;                         /*  G A  G A  G A  G A */
+
+      a   = vector_shuffle( s1, ma );       /*  A A  A A  A A  A A */
+      s1 |= o1;                             /*  G 1  G 1  G 1  G 1 */
+      s0  = vector_shuffle( s0, m0 );       /*  B R  B R  B R  B R */
+
+      s0 *= a;
+      s1 *= a;
+      s0 += n0x80;
+      s1 += n0x80;
+      s0  = ( s0 + ( s0 >> n8 ) ) >> n8;
+      s1  = ( s1 + ( s1 >> n8 ) ) >> n8;
+
+      s = s0 | ( s1 << n8 );
+      memcpy( base, &s, 16 );
+    }
+#endif /* use `vector_size' */
+
+    FT_UNUSED( png );
 
-    for ( i = 0; i < row_info->rowbytes; i += 4 )
+    limit = row_info->rowbytes;
+    for ( ; i < limit; i += 4 )
     {
       unsigned char*  base  = &data[i];
       unsigned int    alpha = base[3];
Index: src/sfnt/sfobjs.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/sfnt/sfobjs.c,v
retrieving revision 1.24
diff -u -p -u -p -r1.24 sfobjs.c
--- src/sfnt/sfobjs.c 23 Jun 2017 16:15:19 -0000 1.24
+++ src/sfnt/sfobjs.c 20 Sep 2017 16:54:38 -0000
@@ -787,6 +787,8 @@
          tag != TTAG_OTTO    &&
          tag != TTAG_true    &&
          tag != TTAG_typ1    &&
+         tag != TTAG_0xA5kbd &&
+         tag != TTAG_0xA5lst &&
          tag != 0x00020000UL )
     {
       FT_TRACE2(( "  not a font using the SFNT container format\n" ));
@@ -1224,7 +1226,10 @@
         goto Exit;
     }
 
-    if ( face->header.Units_Per_EM == 0 )
+    /* OpenType 1.8.2 introduced limits to this value;    */
+    /* however, they make sense for older SFNT fonts also */
+    if ( face->header.Units_Per_EM <    16 ||
+         face->header.Units_Per_EM > 16384 )
     {
       error = FT_THROW( Invalid_Table );
 
@@ -1464,7 +1469,8 @@
       /* Polish the charmaps.                                              */
       /*                                                                   */
       /*   Try to set the charmap encoding according to the platform &     */
-      /*   encoding ID of each charmap.                                    */
+      /*   encoding ID of each charmap.  Emulate Unicode charmap if one    */
+      /*   is missing.                                                     */
       /*                                                                   */
 
       tt_face_build_cmaps( face );  /* ignore errors */
@@ -1472,7 +1478,10 @@
 
       /* set the encoding fields */
       {
-        FT_Int  m;
+        FT_Int   m;
+#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
+        FT_Bool  has_unicode = FALSE;
+#endif
 
 
         for ( m = 0; m < root->num_charmaps; m++ )
@@ -1483,14 +1492,34 @@
           charmap->encoding = sfnt_find_encoding( charmap->platform_id,
                                                   charmap->encoding_id );
 
-#if 0
-          if ( !root->charmap                           &&
-               charmap->encoding == FT_ENCODING_UNICODE )
-          {
-            /* set 'root->charmap' to the first Unicode encoding we find */
-            root->charmap = charmap;
-          }
-#endif
+#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
+
+          if ( charmap->encoding == FT_ENCODING_UNICODE   ||
+               charmap->encoding == FT_ENCODING_MS_SYMBOL )  /* PUA */
+            has_unicode = TRUE;
+        }
+
+        /* synthesize Unicode charmap if one is missing */
+        if ( !has_unicode )
+        {
+          FT_CharMapRec cmaprec;
+
+
+          cmaprec.face        = root;
+          cmaprec.platform_id = TT_PLATFORM_MICROSOFT;
+          cmaprec.encoding_id = TT_MS_ID_UNICODE_CS;
+          cmaprec.encoding    = FT_ENCODING_UNICODE;
+
+
+          error = FT_CMap_New( (FT_CMap_Class)&tt_cmap_unicode_class_rec,
+                               NULL, &cmaprec, NULL );
+          if ( error                                      &&
+               FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+            goto Exit;
+          error = FT_Err_Ok;
+
+#endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
+
         }
       }
 
Index: src/sfnt/ttcmap.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/sfnt/ttcmap.c,v
retrieving revision 1.23
diff -u -p -u -p -r1.23 ttcmap.c
--- src/sfnt/ttcmap.c 23 Jun 2017 16:15:19 -0000 1.23
+++ src/sfnt/ttcmap.c 20 Sep 2017 16:54:38 -0000
@@ -23,8 +23,10 @@
 
 #include FT_INTERNAL_VALIDATE_H
 #include FT_INTERNAL_STREAM_H
+#include FT_SERVICE_POSTSCRIPT_CMAPS_H
 #include "ttload.h"
 #include "ttcmap.h"
+#include "ttpost.h"
 #include "sfntpic.h"
 
 
@@ -3622,6 +3624,110 @@
 #endif /* TT_CONFIG_CMAP_FORMAT_14 */
 
 
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                       SYNTHETIC UNICODE                       *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+  /*        This charmap is generated using postscript glyph names.        */
+
+#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
+
+  FT_CALLBACK_DEF( const char * )
+  tt_get_glyph_name( TT_Face  face,
+                     FT_UInt  idx )
+  {
+    FT_String*  PSname;
+
+
+    tt_face_get_ps_name( face, idx, &PSname );
+
+    return PSname;
+  }
+
+
+  FT_CALLBACK_DEF( FT_Error )
+  tt_cmap_unicode_init( PS_Unicodes  unicodes,
+                        FT_Pointer   pointer )
+  {
+    TT_Face             face    = (TT_Face)FT_CMAP_FACE( unicodes );
+    FT_Memory           memory  = FT_FACE_MEMORY( face );
+    FT_Service_PsCMaps  psnames = (FT_Service_PsCMaps)face->psnames;
+
+    FT_UNUSED( pointer );
+
+
+    return psnames->unicodes_init( memory,
+                                   unicodes,
+                                   face->root.num_glyphs,
+                                   (PS_GetGlyphNameFunc)&tt_get_glyph_name,
+                                   (PS_FreeGlyphNameFunc)NULL,
+                                   (FT_Pointer)face );
+  }
+
+
+  FT_CALLBACK_DEF( void )
+  tt_cmap_unicode_done( PS_Unicodes  unicodes )
+  {
+    FT_Face    face   = FT_CMAP_FACE( unicodes );
+    FT_Memory  memory = FT_FACE_MEMORY( face );
+
+
+    FT_FREE( unicodes->maps );
+    unicodes->num_maps = 0;
+  }
+
+
+  FT_CALLBACK_DEF( FT_UInt )
+  tt_cmap_unicode_char_index( PS_Unicodes  unicodes,
+                              FT_UInt32    char_code )
+  {
+    TT_Face             face    = (TT_Face)FT_CMAP_FACE( unicodes );
+    FT_Service_PsCMaps  psnames = (FT_Service_PsCMaps)face->psnames;
+
+
+    return psnames->unicodes_char_index( unicodes, char_code );
+  }
+
+
+  FT_CALLBACK_DEF( FT_UInt32 )
+  tt_cmap_unicode_char_next( PS_Unicodes  unicodes,
+                             FT_UInt32   *pchar_code )
+  {
+    TT_Face             face    = (TT_Face)FT_CMAP_FACE( unicodes );
+    FT_Service_PsCMaps  psnames = (FT_Service_PsCMaps)face->psnames;
+
+
+    return psnames->unicodes_char_next( unicodes, pchar_code );
+  }
+
+
+  FT_DEFINE_TT_CMAP(
+    tt_cmap_unicode_class_rec,
+
+      sizeof ( PS_UnicodesRec ),
+
+      (FT_CMap_InitFunc)     tt_cmap_unicode_init,        /* init       */
+      (FT_CMap_DoneFunc)     tt_cmap_unicode_done,        /* done       */
+      (FT_CMap_CharIndexFunc)tt_cmap_unicode_char_index,  /* char_index */
+      (FT_CMap_CharNextFunc) tt_cmap_unicode_char_next,   /* char_next  */
+
+      (FT_CMap_CharVarIndexFunc)    NULL,  /* char_var_index   */
+      (FT_CMap_CharVarIsDefaultFunc)NULL,  /* char_var_default */
+      (FT_CMap_VariantListFunc)     NULL,  /* variant_list     */
+      (FT_CMap_CharVariantListFunc) NULL,  /* charvariant_list */
+      (FT_CMap_VariantCharListFunc) NULL,  /* variantchar_list */
+
+    ~0U,
+    (TT_CMap_ValidateFunc)NULL,  /* validate      */
+    (TT_CMap_Info_GetFunc)NULL   /* get_cmap_info */
+  )
+
+#endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
+
 #ifndef FT_CONFIG_OPTION_PIC
 
   static const TT_CMap_Class  tt_cmap_classes[] =
@@ -3801,8 +3907,10 @@
     FT_CMap        cmap  = (FT_CMap)charmap;
     TT_CMap_Class  clazz = (TT_CMap_Class)cmap->clazz;
 
-
-    return clazz->get_cmap_info( charmap, cmap_info );
+    if ( clazz->get_cmap_info )
+      return clazz->get_cmap_info( charmap, cmap_info );
+    else
+      return FT_THROW( Invalid_CharMap_Format );
   }
 
 
Index: src/sfnt/ttcmap.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/sfnt/ttcmap.h,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 ttcmap.h
--- src/sfnt/ttcmap.h 23 Jun 2017 16:15:19 -0000 1.7
+++ src/sfnt/ttcmap.h 20 Sep 2017 16:54:38 -0000
@@ -141,6 +141,8 @@ FT_BEGIN_HEADER
 #define TT_VALID_GLYPH_COUNT( x )  TT_VALIDATOR( x )->num_glyphs
 
 
+  FT_CALLBACK_TABLE const TT_CMap_ClassRec  tt_cmap_unicode_class_rec;
+
   FT_LOCAL( FT_Error )
   tt_face_build_cmaps( TT_Face  face );
 
Index: src/sfnt/ttkern.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/sfnt/ttkern.c,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 ttkern.c
--- src/sfnt/ttkern.c 23 Jun 2017 16:15:19 -0000 1.10
+++ src/sfnt/ttkern.c 20 Sep 2017 16:54:38 -0000
@@ -85,7 +85,7 @@
 
     for ( nn = 0; nn < num_tables; nn++ )
     {
-      FT_UInt    num_pairs, length, coverage;
+      FT_UInt    num_pairs, length, coverage, format;
       FT_Byte*   p_next;
       FT_UInt32  mask = (FT_UInt32)1UL << nn;
 
@@ -106,6 +106,12 @@
 
       if ( p_next > p_limit )  /* handle broken table */
         p_next = p_limit;
+
+      format = coverage >> 8;
+
+      /* we currently only support format 0 kerning tables */
+      if ( format != 0 )
+        goto NextTable;
 
       /* only use horizontal kerning tables */
       if ( ( coverage & 3U ) != 0x0001 ||
Index: src/sfnt/ttpost.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/sfnt/ttpost.c,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 ttpost.c
--- src/sfnt/ttpost.c 23 Jun 2017 16:15:19 -0000 1.12
+++ src/sfnt/ttpost.c 20 Sep 2017 16:54:38 -0000
@@ -325,7 +325,6 @@
     FT_UNUSED( post_limit );
 
 
-    /* UNDOCUMENTED!  This value appears only in the Apple TT specs. */
     if ( FT_READ_USHORT( num_glyphs ) )
       goto Exit;
 
@@ -408,7 +407,7 @@
     /* now read postscript table */
     if ( format == 0x00020000L )
       error = load_format_20( face, stream, post_limit );
-    else if ( format == 0x00028000L )
+    else if ( format == 0x00025000L )
       error = load_format_25( face, stream, post_limit );
     else
       error = FT_THROW( Invalid_File_Format );
@@ -447,7 +446,7 @@
         FT_FREE( table->glyph_names );
         table->num_names = 0;
       }
-      else if ( format == 0x00028000L )
+      else if ( format == 0x00025000L )
       {
         TT_Post_25  table = &names->names.format_25;
 
@@ -543,7 +542,7 @@
           *PSname = (FT_String*)table->glyph_names[name_index - 258];
       }
     }
-    else if ( format == 0x00028000L )
+    else if ( format == 0x00025000L )
     {
       TT_Post_25  table = &names->names.format_25;
 
Index: src/sfnt/ttsbit.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/sfnt/ttsbit.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 ttsbit.c
--- src/sfnt/ttsbit.c 23 Jun 2017 16:15:19 -0000 1.19
+++ src/sfnt/ttsbit.c 20 Sep 2017 16:54:38 -0000
@@ -448,6 +448,15 @@
         metrics->max_advance =
           FT_MulDiv( hori->advance_Width_Max, ppem_ * 64, upem );
 
+        /* set the scale values (in 16.16 units) so advances */
+        /* from the hmtx and vmtx table are scaled correctly */
+        metrics->x_scale = FT_MulDiv( metrics->x_ppem,
+                                      64 * 0x10000,
+                                      face->header.Units_Per_EM );
+        metrics->y_scale = FT_MulDiv( metrics->y_ppem,
+                                      64 * 0x10000,
+                                      face->header.Units_Per_EM );
+
         return error;
       }
 
@@ -1439,10 +1448,17 @@
     return FT_THROW( Invalid_Table );
 
   NoBitmap:
+    if ( recurse_count )
+    {
+      FT_TRACE4(( "tt_sbit_decoder_load_image:"
+                  " missing subglyph sbit with glyph index %d\n",
+                  glyph_index ));
+      return FT_THROW( Invalid_Composite );
+    }
+
     FT_TRACE4(( "tt_sbit_decoder_load_image:"
                 " no sbit found for glyph index %d\n", glyph_index ));
-
-    return FT_THROW( Invalid_Argument );
+    return FT_THROW( Missing_Bitmap );
   }
 
 
Index: src/smooth/ftgrays.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/smooth/ftgrays.c,v
retrieving revision 1.28
diff -u -p -u -p -r1.28 ftgrays.c
--- src/smooth/ftgrays.c 23 Jun 2017 16:15:19 -0000 1.28
+++ src/smooth/ftgrays.c 20 Sep 2017 16:54:38 -0000
@@ -141,6 +141,16 @@
 #define FT_INT_MAX    INT_MAX
 #define FT_ULONG_MAX  ULONG_MAX
 
+#define ADD_LONG( a, b )                                    \
+          (long)( (unsigned long)(a) + (unsigned long)(b) )
+#define SUB_LONG( a, b )                                    \
+          (long)( (unsigned long)(a) - (unsigned long)(b) )
+#define MUL_LONG( a, b )                                    \
+          (long)( (unsigned long)(a) * (unsigned long)(b) )
+#define NEG_LONG( a )                                       \
+          (long)( -(unsigned long)(a) )
+
+
 #define ft_memset   memset
 
 #define ft_setjmp   setjmp
@@ -264,6 +274,7 @@ typedef ptrdiff_t  FT_PtrDist;
 #include "ftgrays.h"
 #include FT_INTERNAL_OBJECTS_H
 #include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_CALC_H
 #include FT_OUTLINE_H
 
 #include "ftsmerrs.h"
@@ -1135,7 +1146,7 @@ typedef ptrdiff_t  FT_PtrDist;
       /* s is L * the perpendicular distance from P1 to the line P0-P3. */
       dx1 = arc[1].x - arc[0].x;
       dy1 = arc[1].y - arc[0].y;
-      s = FT_ABS( dy * dx1 - dx * dy1 );
+      s = FT_ABS( SUB_LONG( MUL_LONG( dy, dx1 ), MUL_LONG( dx, dy1 ) ) );
 
       if ( s > s_limit )
         goto Split;
@@ -1143,7 +1154,7 @@ typedef ptrdiff_t  FT_PtrDist;
       /* s is L * the perpendicular distance from P2 to the line P0-P3. */
       dx2 = arc[2].x - arc[0].x;
       dy2 = arc[2].y - arc[0].y;
-      s = FT_ABS( dy * dx2 - dx * dy2 );
+      s = FT_ABS( SUB_LONG( MUL_LONG( dy, dx2 ), MUL_LONG( dx, dy2 ) ) );
 
       if ( s > s_limit )
         goto Split;
Index: src/smooth/ftsmooth.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/smooth/ftsmooth.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 ftsmooth.c
--- src/smooth/ftsmooth.c 23 Jun 2017 16:15:19 -0000 1.17
+++ src/smooth/ftsmooth.c 20 Sep 2017 16:54:38 -0000
@@ -31,12 +31,7 @@
   static FT_Error
   ft_smooth_init( FT_Renderer  render )
   {
-    FT_Library  library = FT_MODULE_LIBRARY( render );
-
-
-    render->clazz->raster_class->raster_reset( render->raster,
-                                               library->raster_pool,
-                                               library->raster_pool_size );
+    render->clazz->raster_class->raster_reset( render->raster, NULL, 0 );
 
     return 0;
   }
@@ -111,9 +106,6 @@
     FT_Pos       y_shift = 0;
     FT_Pos       x_left, y_top;
     FT_Pos       width, height, pitch;
-#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
-    FT_Pos       height_org, width_org;
-#endif
     FT_Int       hmul    = ( mode == FT_RENDER_MODE_LCD );
     FT_Int       vmul    = ( mode == FT_RENDER_MODE_LCD_V );
 
@@ -124,7 +116,6 @@
 
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
 
-    FT_Int                   lcd_extra          = 0;
     FT_LcdFiveTapFilter      lcd_weights        = { 0 };
     FT_Bool                  have_custom_weight = FALSE;
     FT_Bitmap_LcdFilterFunc  lcd_filter_func    = NULL;
@@ -152,13 +143,12 @@
     {
       /*
        * A per-font filter is set.  It always uses the default 5-tap
-       * in-place FIR filter that needs 2 extra pixels.
+       * in-place FIR filter.
        */
       ft_memcpy( lcd_weights,
                  slot->face->internal->lcd_weights,
                  FT_LCD_FILTER_FIVE_TAPS );
       lcd_filter_func = ft_lcd_filter_fir;
-      lcd_extra       = 2;
     }
     else
     {
@@ -172,7 +162,6 @@
                  slot->library->lcd_weights,
                  FT_LCD_FILTER_FIVE_TAPS );
       lcd_filter_func = slot->library->lcd_filter_func;
-      lcd_extra       = slot->library->lcd_extra;
     }
 
 #endif /*FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
@@ -201,6 +190,45 @@
     /* taking into account the origin shift     */
     FT_Outline_Get_CBox( outline, &cbox );
 
+#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
+    /* add minimal padding for LCD rendering */
+    if ( hmul )
+    {
+      cbox.xMax += 21;
+      cbox.xMin -= 21;
+    }
+
+    if ( vmul )
+    {
+      cbox.yMax += 21;
+      cbox.yMin -= 21;
+    }
+
+#else /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
+
+    /* add minimal padding for LCD filter depending on specific weights */
+    if ( lcd_filter_func )
+    {
+      if ( hmul )
+      {
+        cbox.xMax += lcd_weights[4] ? 43
+                                    : lcd_weights[3] ? 22 : 0;
+        cbox.xMin -= lcd_weights[0] ? 43
+                                    : lcd_weights[1] ? 22 : 0;
+      }
+
+      if ( vmul )
+      {
+        cbox.yMax += lcd_weights[4] ? 43
+                                    : lcd_weights[3] ? 22 : 0;
+        cbox.yMin -= lcd_weights[0] ? 43
+                                    : lcd_weights[1] ? 22 : 0;
+      }
+    }
+
+#endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
+
     cbox.xMin = FT_PIX_FLOOR( cbox.xMin + x_shift );
     cbox.yMin = FT_PIX_FLOOR( cbox.yMin + y_shift );
     cbox.xMax = FT_PIX_CEIL( cbox.xMax + x_shift );
@@ -215,11 +243,6 @@
     width  = (FT_ULong)( cbox.xMax - cbox.xMin ) >> 6;
     height = (FT_ULong)( cbox.yMax - cbox.yMin ) >> 6;
 
-#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
-    width_org  = width;
-    height_org = height;
-#endif
-
     pitch = width;
     if ( hmul )
     {
@@ -230,26 +253,6 @@
     if ( vmul )
       height *= 3;
 
-#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
-    if ( lcd_filter_func )
-    {
-      if ( hmul )
-      {
-        x_shift += 64 * ( lcd_extra >> 1 );
-        x_left  -= lcd_extra >> 1;
-        width   += 3 * lcd_extra;
-        pitch    = FT_PAD_CEIL( width, 4 );
-      }
-
-      if ( vmul )
-      {
-        y_shift += 64 * ( lcd_extra >> 1 );
-        y_top   += lcd_extra >> 1;
-        height  += 3 * lcd_extra;
-      }
-    }
-#endif
-
     /*
      * XXX: on 16bit system, we return an error for huge bitmap
      * to prevent an overflow.
@@ -353,57 +356,98 @@
 
 #else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
-    /* render outline into bitmap */
-    error = render->raster_render( render->raster, &params );
-    if ( error )
-      goto Exit;
-
-    /* expand it horizontally */
-    if ( hmul )
+    if ( hmul )  /* lcd */
     {
-      FT_Byte*  line = bitmap->buffer;
-      FT_UInt   hh;
+      FT_Byte*  line;
+      FT_Byte*  temp;
+      FT_Int    i, j;
 
 
-      for ( hh = height_org; hh > 0; hh--, line += pitch )
-      {
-        FT_UInt   xx;
-        FT_Byte*  end = line + width;
+      /* Render 3 separate monochrome bitmaps, shifting the outline  */
+      /* by 1/3 pixel.                                               */
+      width /= 3;
 
+      FT_Outline_Translate( outline,  21, 0 );
 
-        for ( xx = width_org; xx > 0; xx-- )
-        {
-          FT_UInt  pixel = line[xx-1];
+      error = render->raster_render( render->raster, &params );
+      if ( error )
+        goto Exit;
+
+      FT_Outline_Translate( outline, -21, 0 );
+      bitmap->buffer += width;
+
+      error = render->raster_render( render->raster, &params );
+      if ( error )
+        goto Exit;
+
+      FT_Outline_Translate( outline, -21, 0 );
+      bitmap->buffer += width;
 
+      error = render->raster_render( render->raster, &params );
+      if ( error )
+        goto Exit;
 
-          end[-3] = (FT_Byte)pixel;
-          end[-2] = (FT_Byte)pixel;
-          end[-1] = (FT_Byte)pixel;
-          end    -= 3;
+      FT_Outline_Translate( outline,  21, 0 );
+      bitmap->buffer -= 2 * width;
+
+      /* XXX: Rearrange the bytes according to FT_PIXEL_MODE_LCD.    */
+      /* XXX: It is more efficient to render every third byte above. */
+
+      if ( FT_ALLOC( temp, (FT_ULong)pitch ) )
+        goto Exit;
+
+      for ( i = 0; i < height; i++ )
+      {
+        line = bitmap->buffer + i * pitch;
+        for ( j = 0; j < width; j++ )
+        {
+          temp[3 * j    ] = line[j];
+          temp[3 * j + 1] = line[j + width];
+          temp[3 * j + 2] = line[j + width + width];
         }
+        FT_MEM_COPY( line, temp, pitch );
       }
-    }
 
-    /* expand it vertically */
-    if ( vmul )
+      FT_FREE( temp );
+    }
+    else if ( vmul )  /* lcd_v */
     {
-      FT_Byte*  read  = bitmap->buffer + ( height - height_org ) * pitch;
-      FT_Byte*  write = bitmap->buffer;
-      FT_UInt   hh;
+      /* Render 3 separate monochrome bitmaps, shifting the outline  */
+      /* by 1/3 pixel. Triple the pitch to render on each third row. */
+      bitmap->pitch *= 3;
+      bitmap->rows  /= 3;
 
+      FT_Outline_Translate( outline, 0,  21 );
+      bitmap->buffer += 2 * pitch;
 
-      for ( hh = height_org; hh > 0; hh-- )
-      {
-        ft_memcpy( write, read, pitch );
-        write += pitch;
+      error = render->raster_render( render->raster, &params );
+      if ( error )
+        goto Exit;
 
-        ft_memcpy( write, read, pitch );
-        write += pitch;
+      FT_Outline_Translate( outline, 0, -21 );
+      bitmap->buffer -= pitch;
 
-        ft_memcpy( write, read, pitch );
-        write += pitch;
-        read  += pitch;
-      }
+      error = render->raster_render( render->raster, &params );
+      if ( error )
+        goto Exit;
+
+      FT_Outline_Translate( outline, 0, -21 );
+      bitmap->buffer -= pitch;
+
+      error = render->raster_render( render->raster, &params );
+      if ( error )
+        goto Exit;
+
+      FT_Outline_Translate( outline, 0,  21 );
+
+      bitmap->pitch /= 3;
+      bitmap->rows  *= 3;
+    }
+    else  /* grayscale */
+    {
+      error = render->raster_render( render->raster, &params );
+      if ( error )
+        goto Exit;
     }
 
 #endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
Index: src/tools/glnames.py
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/tools/glnames.py,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 glnames.py
--- src/tools/glnames.py 23 Jun 2017 16:15:20 -0000 1.8
+++ src/tools/glnames.py 20 Sep 2017 16:54:38 -0000
@@ -4920,7 +4920,7 @@ class StringTable:
 
   def dump( self, file ):
     write = file.write
-    write( "#ifndef  DEFINE_PS_TABLES\n" )
+    write( "#ifndef  DEFINE_PS_TABLES_DATA\n" )
     write( "#ifdef  __cplusplus\n" )
     write( '  extern "C"\n' )
     write( "#else\n" )
@@ -4929,7 +4929,7 @@ class StringTable:
     write( "#endif\n" )
     write( "  const char  " + self.master_table +
            "[" + repr( self.total ) + "]\n" )
-    write( "#ifdef  DEFINE_PS_TABLES\n" )
+    write( "#ifdef  DEFINE_PS_TABLES_DATA\n" )
     write( "  =\n" )
     write( "  {\n" )
 
@@ -4941,7 +4941,7 @@ class StringTable:
 
     write( line )
     write( "  }\n" )
-    write( "#endif /* DEFINE_PS_TABLES */\n" )
+    write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
     write( "  ;\n\n\n" )
 
   def dump_sublist( self, file, table_name, macro_name, sublist ):
@@ -4950,7 +4950,7 @@ class StringTable:
 
     write( "  /* Values are offsets into the `" +
            self.master_table + "' table */\n\n" )
-    write( "#ifndef  DEFINE_PS_TABLES\n" )
+    write( "#ifndef  DEFINE_PS_TABLES_DATA\n" )
     write( "#ifdef  __cplusplus\n" )
     write( '  extern "C"\n' )
     write( "#else\n" )
@@ -4959,7 +4959,7 @@ class StringTable:
     write( "#endif\n" )
     write( "  const short  " + table_name +
            "[" + macro_name + "]\n" )
-    write( "#ifdef  DEFINE_PS_TABLES\n" )
+    write( "#ifdef  DEFINE_PS_TABLES_DATA\n" )
     write( "  =\n" )
     write( "  {\n" )
 
@@ -4979,7 +4979,7 @@ class StringTable:
     write( line )
     write( "\n" )
     write( "  }\n" )
-    write( "#endif /* DEFINE_PS_TABLES */\n" )
+    write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
     write( "  ;\n\n\n" )
 
 
@@ -5213,7 +5213,7 @@ def dump_encoding( file, encoding_name,
 
   write = file.write
   write( "  /* the following are indices into the SID name table */\n" )
-  write( "#ifndef  DEFINE_PS_TABLES\n" )
+  write( "#ifndef  DEFINE_PS_TABLES_DATA\n" )
   write( "#ifdef  __cplusplus\n" )
   write( '  extern "C"\n' )
   write( "#else\n" )
@@ -5222,7 +5222,7 @@ def dump_encoding( file, encoding_name,
   write( "#endif\n" )
   write( "  const unsigned short  " + encoding_name +
          "[" + repr( len( encoding_list ) ) + "]\n" )
-  write( "#ifdef  DEFINE_PS_TABLES\n" )
+  write( "#ifdef  DEFINE_PS_TABLES_DATA\n" )
   write( "  =\n" )
   write( "  {\n" )
 
@@ -5241,14 +5241,14 @@ def dump_encoding( file, encoding_name,
   write( line )
   write( "\n" )
   write( "  }\n" )
-  write( "#endif /* DEFINE_PS_TABLES */\n" )
+  write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
   write( "  ;\n\n\n" )
 
 
 def dump_array( the_array, write, array_name ):
   """dumps a given encoding"""
 
-  write( "#ifndef  DEFINE_PS_TABLES\n" )
+  write( "#ifndef  DEFINE_PS_TABLES_DATA\n" )
   write( "#ifdef  __cplusplus\n" )
   write( '  extern "C"\n' )
   write( "#else\n" )
@@ -5257,7 +5257,7 @@ def dump_array( the_array, write, array_
   write( "#endif\n" )
   write( "  const unsigned char  " + array_name +
          "[" + repr( len( the_array ) ) + "L]\n" )
-  write( "#ifdef  DEFINE_PS_TABLES\n" )
+  write( "#ifdef  DEFINE_PS_TABLES_DATA\n" )
   write( "  =\n" )
   write( "  {\n" )
 
@@ -5282,7 +5282,7 @@ def dump_array( the_array, write, array_
   write( line )
   write( "\n" )
   write( "  }\n" )
-  write( "#endif /* DEFINE_PS_TABLES */\n" )
+  write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
   write( "  ;\n\n\n" )
 
 
@@ -5293,7 +5293,7 @@ def main():
     print __doc__ % sys.argv[0]
     sys.exit( 1 )
 
-  file  = open( sys.argv[1], "w\n" )
+  file  = open( sys.argv[1], "wb" )
   write = file.write
 
   count_sid = len( sid_standard_names )
Index: src/tools/ftfuzzer/README
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/tools/ftfuzzer/README,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 README
--- src/tools/ftfuzzer/README 23 Jun 2017 16:15:20 -0000 1.3
+++ src/tools/ftfuzzer/README 20 Sep 2017 16:54:38 -0000
@@ -29,10 +29,14 @@ Usage:
 
 The exact flags and commands may vary.
 
+  https://github.com/google/oss-fuzz/tree/master/projects/freetype2
 
 There is a continuous fuzzing bot that runs ftfuzzer.
 
-  https://github.com/google/libfuzzer-bot/tree/master/freetype
+  https://oss-fuzz.com
+
+(You need an account  to be able to see coverage  reports and the like
+on oss-fuzz.com.)
 
 Check the bot configuration for the most current settings.
 
Index: src/truetype/ttgload.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/truetype/ttgload.c,v
retrieving revision 1.27
diff -u -p -u -p -r1.27 ttgload.c
--- src/truetype/ttgload.c 23 Jun 2017 16:15:20 -0000 1.27
+++ src/truetype/ttgload.c 20 Sep 2017 16:54:38 -0000
@@ -87,7 +87,7 @@
   /*************************************************************************/
   /*                                                                       */
   /* Return the vertical metrics in font units for a given glyph.          */
-  /* See macro `TT_LOADER_SET_PP' below for explanations.                  */
+  /* See function `tt_loader_set_pp' below for explanations.               */
   /*                                                                       */
   FT_LOCAL_DEF( void )
   TT_Get_VMetrics( TT_Face     face,
@@ -825,7 +825,7 @@
     /* compatibility mode, where no movement on the x axis means no reason */
     /* to change bearings or advance widths.                               */
     if ( !( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
-            !loader->exec->backward_compatibility ) )
+            loader->exec->backward_compatibility ) )
     {
 #endif
       loader->pp1 = zone->cur[zone->n_points - 4];
@@ -1686,7 +1686,7 @@
     /***********************************************************************/
 
     /* otherwise, load a composite! */
-    else if ( loader->n_contours == -1 )
+    else if ( loader->n_contours < 0 )
     {
       FT_Memory  memory = face->root.memory;
 
@@ -1697,6 +1697,9 @@
       FT_ListNode  node, node2;
 
 
+      /* normalize the `n_contours' value */
+      loader->n_contours = -1;
+
       /*
        * We store the glyph index directly in the `node->data' pointer,
        * following the glib solution (cf. macro `GUINT_TO_POINTER') with a
@@ -1991,12 +1994,6 @@
         }
       }
     }
-    else
-    {
-      /* invalid composite count (negative but not -1) */
-      error = FT_THROW( Invalid_Outline );
-      goto Exit;
-    }
 
     /***********************************************************************/
     /***********************************************************************/
@@ -2100,8 +2097,8 @@
     }
 
     /* set glyph dimensions */
-    glyph->metrics.width  = bbox.xMax - bbox.xMin;
-    glyph->metrics.height = bbox.yMax - bbox.yMin;
+    glyph->metrics.width  = SUB_LONG( bbox.xMax, bbox.xMin );
+    glyph->metrics.height = SUB_LONG( bbox.yMax, bbox.yMin );
 
     /* Now take care of vertical metrics.  In the case where there is */
     /* no vertical information within the font (relatively common),   */
@@ -2137,7 +2134,8 @@
         /*       table in the font.  Otherwise, we use the     */
         /*       values defined in the horizontal header.      */
 
-        height = (FT_Short)FT_DivFix( bbox.yMax - bbox.yMin,
+        height = (FT_Short)FT_DivFix( SUB_LONG( bbox.yMax,
+                                                bbox.yMin ),
                                       y_scale );
         if ( face->os2.version != 0xFFFFU )
           advance = (FT_Pos)( face->os2.sTypoAscender -
@@ -2339,13 +2337,19 @@
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
       if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 )
       {
-        subpixel_hinting_lean   = TRUE;
-        grayscale_cleartype     = !FT_BOOL( load_flags         &
-                                            FT_LOAD_TARGET_LCD     ||
-                                            load_flags           &
-                                            FT_LOAD_TARGET_LCD_V   );
-        exec->vertical_lcd_lean = FT_BOOL( load_flags           &
-                                           FT_LOAD_TARGET_LCD_V );
+        subpixel_hinting_lean =
+          FT_BOOL( FT_LOAD_TARGET_MODE( load_flags ) !=
+                   FT_RENDER_MODE_MONO               );
+        grayscale_cleartype =
+          FT_BOOL( subpixel_hinting_lean         &&
+                   !( ( load_flags         &
+                        FT_LOAD_TARGET_LCD )   ||
+                      ( load_flags           &
+                        FT_LOAD_TARGET_LCD_V ) ) );
+        exec->vertical_lcd_lean =
+          FT_BOOL( subpixel_hinting_lean    &&
+                   ( load_flags           &
+                     FT_LOAD_TARGET_LCD_V ) );
       }
       else
       {
@@ -2621,7 +2625,64 @@
          IS_DEFAULT_INSTANCE                     )
     {
       error = load_sbit_image( size, glyph, glyph_index, load_flags );
-      if ( !error )
+      if ( FT_ERR_EQ( error, Missing_Bitmap ) )
+      {
+        /* the bitmap strike is incomplete and misses the requested glyph; */
+        /* if we have a bitmap-only font, return an empty glyph            */
+        if ( !FT_IS_SCALABLE( glyph->face ) )
+        {
+          TT_Face    face = (TT_Face)glyph->face;
+          FT_Short   left_bearing = 0, top_bearing = 0;
+          FT_UShort  advance_width = 0, advance_height = 0;
+
+
+          /* to return an empty glyph, however, we need metrics data   */
+          /* from the `hmtx' (or `vmtx') table; the assumption is that */
+          /* empty glyphs are missing intentionally, representing      */
+          /* whitespace - not having at least horizontal metrics is    */
+          /* thus considered an error                                  */
+          if ( !face->horz_metrics_size )
+            return error;
+
+          /* we now construct an empty bitmap glyph */
+          TT_Get_HMetrics( face, glyph_index,
+                           &left_bearing,
+                           &advance_width );
+          TT_Get_VMetrics( face, glyph_index,
+                           0,
+                           &top_bearing,
+                           &advance_height );
+
+          glyph->outline.n_points   = 0;
+          glyph->outline.n_contours = 0;
+
+          glyph->metrics.width  = 0;
+          glyph->metrics.height = 0;
+
+          glyph->metrics.horiBearingX = left_bearing;
+          glyph->metrics.horiBearingY = 0;
+          glyph->metrics.horiAdvance  = advance_width;
+
+          glyph->metrics.vertBearingX = 0;
+          glyph->metrics.vertBearingY = top_bearing;
+          glyph->metrics.vertAdvance  = advance_height;
+
+          glyph->format            = FT_GLYPH_FORMAT_BITMAP;
+          glyph->bitmap.pixel_mode = FT_PIXEL_MODE_MONO;
+
+          glyph->bitmap_left = 0;
+          glyph->bitmap_top  = 0;
+
+          return FT_Err_Ok;
+        }
+      }
+      else if ( error )
+      {
+        /* return error if font is not scalable */
+        if ( !FT_IS_SCALABLE( glyph->face ) )
+          return error;
+      }
+      else
       {
         if ( FT_IS_SCALABLE( glyph->face ) )
         {
Index: src/truetype/ttgxvar.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/truetype/ttgxvar.c,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 ttgxvar.c
--- src/truetype/ttgxvar.c 23 Jun 2017 16:15:20 -0000 1.20
+++ src/truetype/ttgxvar.c 20 Sep 2017 16:54:39 -0000
@@ -60,8 +60,11 @@
 
 #define FT_Stream_FTell( stream )                         \
           (FT_ULong)( (stream)->cursor - (stream)->base )
-#define FT_Stream_SeekSet( stream, off )                  \
-          ( (stream)->cursor = (stream)->base + (off) )
+#define FT_Stream_SeekSet( stream, off )                               \
+          (stream)->cursor =                                           \
+            ( (off) < (FT_ULong)( (stream)->limit - (stream)->base ) ) \
+                        ? (stream)->base + (off)                       \
+                        : (stream)->limit
 
 
   /*************************************************************************/
@@ -392,14 +395,14 @@
 
 
   /* some macros we need */
-  #define FT_FIXED_ONE  ( (FT_Fixed)0x10000 )
+#define FT_FIXED_ONE  ( (FT_Fixed)0x10000 )
 
-  #define FT_fdot14ToFixed( x )                \
-          ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
-  #define FT_intToFixed( i )                    \
-          ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
-  #define FT_fixedToInt( x )                                   \
-          ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
+#define FT_fdot14ToFixed( x )                \
+        ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
+#define FT_intToFixed( i )                    \
+        ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
+#define FT_fixedToInt( x )                                   \
+        ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
 
 
   static FT_Error
@@ -1953,6 +1956,7 @@
     GX_FVar_Head         fvar_head;
     FT_Bool              usePsName;
     FT_UInt              num_instances;
+    FT_UShort*           axis_flags;
 
     static const FT_Frame_Field  fvar_fields[] =
     {
@@ -2038,14 +2042,16 @@
       /* in fvar's table of named instances                       */
       num_instances = face->root.style_flags >> 16;
 
-      /* cannot overflow 32-bit arithmetic because of the size limits */
-      /* used in the `fvar' table validity check in `sfnt_init_face'  */
+      /* prepare storage area for MM data; this cannot overflow   */
+      /* 32-bit arithmetic because of the size limits used in the */
+      /* `fvar' table validity check in `sfnt_init_face'          */
       face->blend->mmvar_len =
         sizeof ( FT_MM_Var ) +
+        fvar_head.axisCount * sizeof ( FT_UShort ) +
         fvar_head.axisCount * sizeof ( FT_Var_Axis ) +
         num_instances * sizeof ( FT_Var_Named_Style ) +
         num_instances * fvar_head.axisCount * sizeof ( FT_Fixed ) +
-        5 * fvar_head.axisCount;
+        fvar_head.axisCount * 5;
 
       if ( FT_ALLOC( mmvar, face->blend->mmvar_len ) )
         goto Exit;
@@ -2062,8 +2068,12 @@
                                /* (or tuples, as called by Apple)         */
       mmvar->num_namedstyles =
         num_instances;
+
+      /* alas, no public field in `FT_Var_Axis' for axis flags */
+      axis_flags =
+        (FT_UShort*)&( mmvar[1] );
       mmvar->axis =
-        (FT_Var_Axis*)&( mmvar[1] );
+        (FT_Var_Axis*)&( axis_flags[fvar_head.axisCount] );
       mmvar->namedstyle =
         (FT_Var_Named_Style*)&( mmvar->axis[fvar_head.axisCount] );
 
@@ -2107,6 +2117,8 @@
         a->name[3] = (FT_String)( ( a->tag       ) & 0xFF );
         a->name[4] = '\0';
 
+        *axis_flags = axis_rec.flags;
+
         if ( a->minimum > a->def ||
              a->def > a->maximum )
         {
@@ -2118,13 +2130,17 @@
           a->maximum = a->def;
         }
 
-        FT_TRACE5(( "  \"%s\": minimum=%.5f, default=%.5f, maximum=%.5f\n",
+        FT_TRACE5(( "  \"%s\":"
+                    " minimum=%.5f, default=%.5f, maximum=%.5f,"
+                    " flags=0x%04X\n",
                     a->name,
                     a->minimum / 65536.0,
                     a->def / 65536.0,
-                    a->maximum / 65536.0 ));
+                    a->maximum / 65536.0,
+                    *axis_flags ));
 
         a++;
+        axis_flags++;
       }
 
       FT_TRACE5(( "\n" ));
@@ -2136,8 +2152,16 @@
         goto Exit;
 
       if ( fvar_head.instanceCount && !face->blend->avar_loaded )
+      {
+        FT_ULong  offset = FT_STREAM_POS();
+
+
         ft_var_load_avar( face );
 
+        if ( FT_STREAM_SEEK( offset ) )
+          goto Exit;
+      }
+
       ns  = mmvar->namedstyle;
       nsc = face->blend->normalized_stylecoords;
       for ( i = 0; i < fvar_head.instanceCount; i++, ns++ )
@@ -2154,8 +2178,11 @@
         for ( j = 0; j < fvar_head.axisCount; j++, c++ )
           *c = FT_GET_LONG();
 
+        /* valid psid values are 6, [256;32767], and 0xFFFF */
         if ( usePsName )
           ns->psid = FT_GET_USHORT();
+        else
+          ns->psid = 0xFFFF;
 
         ft_var_to_normalized( face,
                               fvar_head.axisCount,
@@ -2171,7 +2198,7 @@
         SFNT_Service  sfnt = (SFNT_Service)face->sfnt;
 
         FT_Int   found, dummy1, dummy2;
-        FT_UInt  strid = 0xFFFFFFFFUL;
+        FT_UInt  strid = ~0U;
 
 
         /* the default instance is missing in array the   */
@@ -2230,13 +2257,15 @@
         goto Exit;
       FT_MEM_COPY( mmvar, face->blend->mmvar, face->blend->mmvar_len );
 
+      axis_flags =
+        (FT_UShort*)&( mmvar[1] );
       mmvar->axis =
-        (FT_Var_Axis*)&( mmvar[1] );
+        (FT_Var_Axis*)&( axis_flags[mmvar->num_axis] );
       mmvar->namedstyle =
         (FT_Var_Named_Style*)&( mmvar->axis[mmvar->num_axis] );
+
       next_coords =
         (FT_Fixed*)&( mmvar->namedstyle[mmvar->num_namedstyles] );
-
       for ( n = 0; n < mmvar->num_namedstyles; n++ )
       {
         mmvar->namedstyle[n].coords  = next_coords;
@@ -2281,7 +2310,10 @@
     GX_Blend    blend;
     FT_MM_Var*  mmvar;
     FT_UInt     i, j;
-    FT_Bool     is_default_instance = 1;
+
+    FT_Bool     is_default_instance = TRUE;
+    FT_Bool     all_design_coords   = FALSE;
+
     FT_Memory   memory = face->root.memory;
 
     enum
@@ -2327,7 +2359,7 @@
       }
 
       if ( coords[i] != 0 )
-        is_default_instance = 0;
+        is_default_instance = FALSE;
     }
 
     FT_TRACE5(( "\n" ));
@@ -2340,6 +2372,9 @@
     {
       if ( FT_NEW_ARRAY( blend->coords, mmvar->num_axis ) )
         goto Exit;
+
+      /* the first time we have to compute all design coordinates */
+      all_design_coords = TRUE;
     }
 
     if ( !blend->normalizedcoords )
@@ -2388,7 +2423,7 @@
 
     if ( set_design_coords )
       ft_var_to_design( face,
-                        num_coords,
+                        all_design_coords ? blend->num_axis : num_coords,
                         blend->normalizedcoords,
                         blend->coords );
 
@@ -2529,6 +2564,14 @@
 
     blend = face->blend;
 
+    if ( !blend->coords )
+    {
+      /* select default instance coordinates */
+      /* if no instance is selected yet      */
+      if ( FT_SET_ERROR( tt_set_mm_blend( face, 0, NULL, 1 ) ) )
+        return error;
+    }
+
     nc = num_coords;
     if ( num_coords > blend->num_axis )
     {
@@ -2626,7 +2669,7 @@
                  num_coords * sizeof ( FT_Fixed ) );
 
     a = mmvar->axis + num_coords;
-    c = coords + num_coords;
+    c = blend->coords + num_coords;
     for ( i = num_coords; i < mmvar->num_axis; i++, a++, c++ )
       *c = a->def;
 
@@ -2636,7 +2679,7 @@
     if ( !face->blend->avar_loaded )
       ft_var_load_avar( face );
 
-    ft_var_to_normalized( face, num_coords, coords, normalized );
+    ft_var_to_normalized( face, num_coords, blend->coords, normalized );
 
     error = tt_set_mm_blend( face, mmvar->num_axis, normalized, 0 );
 
@@ -2685,6 +2728,14 @@
     }
 
     blend = face->blend;
+
+    if ( !blend->coords )
+    {
+      /* select default instance coordinates */
+      /* if no instance is selected yet      */
+      if ( FT_SET_ERROR( tt_set_mm_blend( face, 0, NULL, 1 ) ) )
+        return error;
+    }
 
     nc = num_coords;
     if ( num_coords > blend->num_axis )
Index: src/truetype/ttinterp.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/truetype/ttinterp.c,v
retrieving revision 1.31
diff -u -p -u -p -r1.31 ttinterp.c
--- src/truetype/ttinterp.c 23 Jun 2017 16:15:20 -0000 1.31
+++ src/truetype/ttinterp.c 20 Sep 2017 16:54:39 -0000
@@ -65,11 +65,15 @@
             TT_INTERPRETER_VERSION_40 )
 #endif
 
-#define PROJECT( v1, v2 )                                                \
-          exc->func_project( exc, (v1)->x - (v2)->x, (v1)->y - (v2)->y )
-
-#define DUALPROJ( v1, v2 )                                                \
-          exc->func_dualproj( exc, (v1)->x - (v2)->x, (v1)->y - (v2)->y )
+#define PROJECT( v1, v2 )                                   \
+          exc->func_project( exc,                           \
+                             SUB_LONG( (v1)->x, (v2)->x ),  \
+                             SUB_LONG( (v1)->y, (v2)->y ) )
+
+#define DUALPROJ( v1, v2 )                                   \
+          exc->func_dualproj( exc,                           \
+                              SUB_LONG( (v1)->x, (v2)->x ),  \
+                              SUB_LONG( (v1)->y, (v2)->y ) )
 
 #define FAST_PROJECT( v )                          \
           exc->func_project( exc, (v)->x, (v)->y )
@@ -1676,7 +1680,10 @@
       if ( SUBPIXEL_HINTING_INFINALITY                            &&
            ( !exc->ignore_x_mode                                ||
              ( exc->sph_tweak_flags & SPH_TWEAK_ALLOW_X_DMOVE ) ) )
-        zone->cur[point].x += FT_MulDiv( distance, v, exc->F_dot_P );
+        zone->cur[point].x = ADD_LONG( zone->cur[point].x,
+                                       FT_MulDiv( distance,
+                                                  v,
+                                                  exc->F_dot_P ) );
       else
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
@@ -1685,12 +1692,18 @@
       /* diagonal moves, but only post-IUP.  DejaVu tries to adjust */
       /* diagonal stems like on `Z' and `z' post-IUP.               */
       if ( SUBPIXEL_HINTING_MINIMAL && !exc->backward_compatibility )
-        zone->cur[point].x += FT_MulDiv( distance, v, exc->F_dot_P );
+        zone->cur[point].x = ADD_LONG( zone->cur[point].x,
+                                       FT_MulDiv( distance,
+                                                  v,
+                                                  exc->F_dot_P ) );
       else
 #endif
 
       if ( NO_SUBPIXEL_HINTING )
-        zone->cur[point].x += FT_MulDiv( distance, v, exc->F_dot_P );
+        zone->cur[point].x = ADD_LONG( zone->cur[point].x,
+                                       FT_MulDiv( distance,
+                                                  v,
+                                                  exc->F_dot_P ) );
 
       zone->tags[point] |= FT_CURVE_TAG_TOUCH_X;
     }
@@ -1705,7 +1718,10 @@
               exc->iupx_called            &&
               exc->iupy_called            ) )
 #endif
-        zone->cur[point].y += FT_MulDiv( distance, v, exc->F_dot_P );
+        zone->cur[point].y = ADD_LONG( zone->cur[point].y,
+                                       FT_MulDiv( distance,
+                                                  v,
+                                                  exc->F_dot_P ) );
 
       zone->tags[point] |= FT_CURVE_TAG_TOUCH_Y;
     }
@@ -1741,12 +1757,18 @@
     v = exc->GS.freeVector.x;
 
     if ( v != 0 )
-      zone->org[point].x += FT_MulDiv( distance, v, exc->F_dot_P );
+      zone->org[point].x = ADD_LONG( zone->org[point].x,
+                                     FT_MulDiv( distance,
+                                                v,
+                                                exc->F_dot_P ) );
 
     v = exc->GS.freeVector.y;
 
     if ( v != 0 )
-      zone->org[point].y += FT_MulDiv( distance, v, exc->F_dot_P );
+      zone->org[point].y = ADD_LONG( zone->org[point].y,
+                                     FT_MulDiv( distance,
+                                                v,
+                                                exc->F_dot_P ) );
   }
 
 
@@ -1769,18 +1791,18 @@
   {
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
     if ( SUBPIXEL_HINTING_INFINALITY && !exc->ignore_x_mode )
-      zone->cur[point].x += distance;
+      zone->cur[point].x = ADD_LONG( zone->cur[point].x, distance );
     else
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
     if ( SUBPIXEL_HINTING_MINIMAL && !exc->backward_compatibility )
-      zone->cur[point].x += distance;
+      zone->cur[point].x = ADD_LONG( zone->cur[point].x, distance );
     else
 #endif
 
     if ( NO_SUBPIXEL_HINTING )
-      zone->cur[point].x += distance;
+      zone->cur[point].x = ADD_LONG( zone->cur[point].x, distance );
 
     zone->tags[point]  |= FT_CURVE_TAG_TOUCH_X;
   }
@@ -1799,7 +1821,7 @@
             exc->backward_compatibility          &&
             exc->iupx_called && exc->iupy_called ) )
 #endif
-      zone->cur[point].y += distance;
+      zone->cur[point].y = ADD_LONG( zone->cur[point].y, distance );
 
     zone->tags[point] |= FT_CURVE_TAG_TOUCH_Y;
   }
@@ -1823,7 +1845,7 @@
   {
     FT_UNUSED( exc );
 
-    zone->org[point].x += distance;
+    zone->org[point].x = ADD_LONG( zone->org[point].x, distance );
   }
 
 
@@ -1835,7 +1857,7 @@
   {
     FT_UNUSED( exc );
 
-    zone->org[point].y += distance;
+    zone->org[point].y = ADD_LONG( zone->org[point].y, distance );
   }
 
 
@@ -1873,13 +1895,13 @@
 
     if ( distance >= 0 )
     {
-      val = distance + compensation;
+      val = ADD_LONG( distance, compensation );
       if ( val < 0 )
         val = 0;
     }
     else
     {
-      val = distance - compensation;
+      val = SUB_LONG( distance, compensation );
       if ( val > 0 )
         val = 0;
     }
@@ -1915,13 +1937,14 @@
 
     if ( distance >= 0 )
     {
-      val = FT_PIX_ROUND( distance + compensation );
+      val = FT_PIX_ROUND_LONG( ADD_LONG( distance, compensation ) );
       if ( val < 0 )
         val = 0;
     }
     else
     {
-      val = -FT_PIX_ROUND( compensation - distance );
+      val = NEG_LONG( FT_PIX_ROUND_LONG( SUB_LONG( compensation,
+                                                   distance ) ) );
       if ( val > 0 )
         val = 0;
     }
@@ -1958,13 +1981,16 @@
 
     if ( distance >= 0 )
     {
-      val = FT_PIX_FLOOR( distance + compensation ) + 32;
+      val = ADD_LONG( FT_PIX_FLOOR( ADD_LONG( distance, compensation ) ),
+                      32 );
       if ( val < 0 )
         val = 32;
     }
     else
     {
-      val = -( FT_PIX_FLOOR( compensation - distance ) + 32 );
+      val = NEG_LONG( ADD_LONG( FT_PIX_FLOOR( SUB_LONG( compensation,
+                                                        distance ) ),
+                                32 ) );
       if ( val > 0 )
         val = -32;
     }
@@ -2001,13 +2027,13 @@
 
     if ( distance >= 0 )
     {
-      val = FT_PIX_FLOOR( distance + compensation );
+      val = FT_PIX_FLOOR( ADD_LONG( distance, compensation ) );
       if ( val < 0 )
         val = 0;
     }
     else
     {
-      val = -FT_PIX_FLOOR( compensation - distance );
+      val = NEG_LONG( FT_PIX_FLOOR( SUB_LONG( compensation, distance ) ) );
       if ( val > 0 )
         val = 0;
     }
@@ -2044,13 +2070,14 @@
 
     if ( distance >= 0 )
     {
-      val = FT_PIX_CEIL( distance + compensation );
+      val = FT_PIX_CEIL_LONG( ADD_LONG( distance, compensation ) );
       if ( val < 0 )
         val = 0;
     }
     else
     {
-      val = -FT_PIX_CEIL( compensation - distance );
+      val = NEG_LONG( FT_PIX_CEIL_LONG( SUB_LONG( compensation,
+                                                  distance ) ) );
       if ( val > 0 )
         val = 0;
     }
@@ -2087,13 +2114,14 @@
 
     if ( distance >= 0 )
     {
-      val = FT_PAD_ROUND( distance + compensation, 32 );
+      val = FT_PAD_ROUND_LONG( ADD_LONG( distance, compensation ), 32 );
       if ( val < 0 )
         val = 0;
     }
     else
     {
-      val = -FT_PAD_ROUND( compensation - distance, 32 );
+      val = NEG_LONG( FT_PAD_ROUND_LONG( SUB_LONG( compensation, distance ),
+                                         32 ) );
       if ( val > 0 )
         val = 0;
     }
@@ -2134,7 +2162,8 @@
 
     if ( distance >= 0 )
     {
-      val = ( distance - exc->phase + exc->threshold + compensation ) &
+      val = ADD_LONG( distance,
+                      exc->threshold - exc->phase + compensation ) &
               -exc->period;
       val += exc->phase;
       if ( val < 0 )
@@ -2142,8 +2171,9 @@
     }
     else
     {
-      val = -( ( exc->threshold - exc->phase - distance + compensation ) &
-               -exc->period );
+      val = NEG_LONG( SUB_LONG( exc->threshold - exc->phase + compensation,
+                                distance ) &
+                        -exc->period );
       val -= exc->phase;
       if ( val > 0 )
         val = -exc->phase;
@@ -2183,7 +2213,8 @@
 
     if ( distance >= 0 )
     {
-      val = ( ( distance - exc->phase + exc->threshold + compensation ) /
+      val = ( ADD_LONG( distance,
+                        exc->threshold - exc->phase + compensation ) /
                 exc->period ) * exc->period;
       val += exc->phase;
       if ( val < 0 )
@@ -2191,8 +2222,9 @@
     }
     else
     {
-      val = -( ( ( exc->threshold - exc->phase - distance + compensation ) /
-                   exc->period ) * exc->period );
+      val = NEG_LONG( ( SUB_LONG( exc->threshold - exc->phase + compensation,
+                                  distance ) /
+                          exc->period ) * exc->period );
       val -= exc->phase;
       if ( val > 0 )
         val = -exc->phase;
@@ -2826,7 +2858,7 @@
   static void
   Ins_ADD( FT_Long*  args )
   {
-    args[0] += args[1];
+    args[0] = ADD_LONG( args[0], args[1] );
   }
 
 
@@ -2839,7 +2871,7 @@
   static void
   Ins_SUB( FT_Long*  args )
   {
-    args[0] -= args[1];
+    args[0] = SUB_LONG( args[0], args[1] );
   }
 
 
@@ -2882,7 +2914,8 @@
   static void
   Ins_ABS( FT_Long*  args )
   {
-    args[0] = FT_ABS( args[0] );
+    if ( args[0] < 0 )
+      args[0] = NEG_LONG( args[0] );
   }
 
 
@@ -2895,7 +2928,7 @@
   static void
   Ins_NEG( FT_Long*  args )
   {
-    args[0] = -args[0];
+    args[0] = NEG_LONG( args[0] );
   }
 
 
@@ -4211,8 +4244,8 @@
     p1 = exc->zp1.cur + aIdx2;
     p2 = exc->zp2.cur + aIdx1;
 
-    A = p1->x - p2->x;
-    B = p1->y - p2->y;
+    A = SUB_LONG( p1->x, p2->x );
+    B = SUB_LONG( p1->y, p2->y );
 
     /* If p1 == p2, SPvTL and SFvTL behave the same as */
     /* SPvTCA[X] and SFvTCA[X], respectively.          */
@@ -4227,9 +4260,9 @@
 
     if ( ( opcode & 1 ) != 0 )
     {
-      C =  B;   /* counter clockwise rotation */
-      B =  A;
-      A = -C;
+      C = B;   /* counter clockwise rotation */
+      B = A;
+      A = NEG_LONG( C );
     }
 
     Normalize( A, B, Vec );
@@ -4770,7 +4803,7 @@
 
     K = FAST_PROJECT( &exc->zp2.cur[L] );
 
-    exc->func_move( exc, &exc->zp2, L, args[1] - K );
+    exc->func_move( exc, &exc->zp2, L, SUB_LONG( args[1], K ) );
 
     /* UNDOCUMENTED!  The MS rasterizer does that with */
     /* twilight points (confirmed by Greg Hitchcock)   */
@@ -4894,12 +4927,12 @@
     }
 
     {
-      FT_Vector* v1 = exc->zp1.org + p2;
-      FT_Vector* v2 = exc->zp2.org + p1;
+      FT_Vector*  v1 = exc->zp1.org + p2;
+      FT_Vector*  v2 = exc->zp2.org + p1;
 
 
-      A = v1->x - v2->x;
-      B = v1->y - v2->y;
+      A = SUB_LONG( v1->x, v2->x );
+      B = SUB_LONG( v1->y, v2->y );
 
       /* If v1 == v2, SDPvTL behaves the same as */
       /* SVTCA[X], respectively.                 */
@@ -4915,9 +4948,9 @@
 
     if ( ( opcode & 1 ) != 0 )
     {
-      C =  B;   /* counter clockwise rotation */
-      B =  A;
-      A = -C;
+      C = B;   /* counter clockwise rotation */
+      B = A;
+      A = NEG_LONG( C );
     }
 
     Normalize( A, B, &exc->GS.dualVector );
@@ -4927,8 +4960,8 @@
       FT_Vector*  v2 = exc->zp2.cur + p1;
 
 
-      A = v1->x - v2->x;
-      B = v1->y - v2->y;
+      A = SUB_LONG( v1->x, v2->x );
+      B = SUB_LONG( v1->y, v2->y );
 
       if ( A == 0 && B == 0 )
       {
@@ -4939,9 +4972,9 @@
 
     if ( ( opcode & 1 ) != 0 )
     {
-      C =  B;   /* counter clockwise rotation */
-      B =  A;
-      A = -C;
+      C = B;   /* counter clockwise rotation */
+      B = A;
+      A = NEG_LONG( C );
     }
 
     Normalize( A, B, &exc->GS.projVector );
@@ -5392,7 +5425,7 @@
       if ( !( SUBPIXEL_HINTING_MINIMAL    &&
               exc->backward_compatibility ) )
 #endif
-        exc->zp2.cur[point].x += dx;
+        exc->zp2.cur[point].x = ADD_LONG( exc->zp2.cur[point].x, dx );
 
       if ( touch )
         exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_X;
@@ -5406,7 +5439,7 @@
               exc->iupx_called            &&
               exc->iupy_called            ) )
 #endif
-        exc->zp2.cur[point].y += dy;
+        exc->zp2.cur[point].y = ADD_LONG( exc->zp2.cur[point].y, dy );
 
       if ( touch )
         exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_Y;
@@ -5781,14 +5814,17 @@
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
     /* subpixel hinting - make MSIRP respect CVT cut-in; */
-    if ( SUBPIXEL_HINTING_INFINALITY                         &&
-         exc->ignore_x_mode                                  &&
-         exc->GS.freeVector.x != 0                           &&
-         FT_ABS( distance - args[1] ) >= control_value_cutin )
+    if ( SUBPIXEL_HINTING_INFINALITY                                    &&
+         exc->ignore_x_mode                                             &&
+         exc->GS.freeVector.x != 0                                      &&
+         FT_ABS( SUB_LONG( distance, args[1] ) ) >= control_value_cutin )
       distance = args[1];
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
-    exc->func_move( exc, &exc->zp1, point, args[1] - distance );
+    exc->func_move( exc,
+                    &exc->zp1,
+                    point,
+                    SUB_LONG( args[1], distance ) );
 
     exc->GS.rp1 = exc->GS.rp0;
     exc->GS.rp2 = point;
@@ -6027,8 +6063,10 @@
         FT_Vector  vec;
 
 
-        vec.x = FT_MulFix( vec1->x - vec2->x, exc->metrics.x_scale );
-        vec.y = FT_MulFix( vec1->y - vec2->y, exc->metrics.y_scale );
+        vec.x = FT_MulFix( SUB_LONG( vec1->x, vec2->x ),
+                           exc->metrics.x_scale );
+        vec.y = FT_MulFix( SUB_LONG( vec1->y, vec2->y ),
+                           exc->metrics.y_scale );
 
         org_dist = FAST_DUALPROJ( &vec );
       }
@@ -6081,8 +6119,8 @@
       }
       else
       {
-        if ( distance > -minimum_distance )
-          distance = -minimum_distance;
+        if ( distance > NEG_LONG( minimum_distance ) )
+          distance = NEG_LONG( minimum_distance );
       }
     }
 
@@ -6090,7 +6128,7 @@
 
     org_dist = PROJECT( exc->zp1.cur + point, exc->zp0.cur + exc->GS.rp0 );
 
-    exc->func_move( exc, &exc->zp1, point, distance - org_dist );
+    exc->func_move( exc, &exc->zp1, point, SUB_LONG( distance, org_dist ) );
 
   Fail:
     exc->GS.rp1 = exc->GS.rp0;
@@ -6265,8 +6303,8 @@
       }
       else
       {
-        if ( distance > -minimum_distance )
-          distance = -minimum_distance;
+        if ( distance > NEG_LONG( minimum_distance ) )
+          distance = NEG_LONG( minimum_distance );
       }
     }
 
@@ -6290,7 +6328,10 @@
     }
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
-    exc->func_move( exc, &exc->zp1, point, distance - cur_dist );
+    exc->func_move( exc,
+                    &exc->zp1,
+                    point,
+                    SUB_LONG( distance, cur_dist ) );
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
     if ( SUBPIXEL_HINTING_INFINALITY )
@@ -6314,7 +6355,10 @@
       }
 
       if ( reverse_move )
-        exc->func_move( exc, &exc->zp1, point, -( distance - cur_dist ) );
+        exc->func_move( exc,
+                        &exc->zp1,
+                        point,
+                        SUB_LONG( cur_dist, distance ) );
     }
 
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
@@ -6380,7 +6424,7 @@
         distance = PROJECT( exc->zp1.cur + point,
                             exc->zp0.cur + exc->GS.rp0 );
 
-        exc->func_move( exc, &exc->zp1, point, -distance );
+        exc->func_move( exc, &exc->zp1, point, NEG_LONG( distance ) );
       }
 
       exc->GS.loop--;
@@ -6437,19 +6481,19 @@
 
     /* Cramer's rule */
 
-    dbx = exc->zp0.cur[b1].x - exc->zp0.cur[b0].x;
-    dby = exc->zp0.cur[b1].y - exc->zp0.cur[b0].y;
+    dbx = SUB_LONG( exc->zp0.cur[b1].x, exc->zp0.cur[b0].x );
+    dby = SUB_LONG( exc->zp0.cur[b1].y, exc->zp0.cur[b0].y );
 
-    dax = exc->zp1.cur[a1].x - exc->zp1.cur[a0].x;
-    day = exc->zp1.cur[a1].y - exc->zp1.cur[a0].y;
+    dax = SUB_LONG( exc->zp1.cur[a1].x, exc->zp1.cur[a0].x );
+    day = SUB_LONG( exc->zp1.cur[a1].y, exc->zp1.cur[a0].y );
 
-    dx = exc->zp0.cur[b0].x - exc->zp1.cur[a0].x;
-    dy = exc->zp0.cur[b0].y - exc->zp1.cur[a0].y;
+    dx = SUB_LONG( exc->zp0.cur[b0].x, exc->zp1.cur[a0].x );
+    dy = SUB_LONG( exc->zp0.cur[b0].y, exc->zp1.cur[a0].y );
 
-    discriminant = FT_MulDiv( dax, -dby, 0x40 ) +
-                   FT_MulDiv( day, dbx, 0x40 );
-    dotproduct   = FT_MulDiv( dax, dbx, 0x40 ) +
-                   FT_MulDiv( day, dby, 0x40 );
+    discriminant = ADD_LONG( FT_MulDiv( dax, NEG_LONG( dby ), 0x40 ),
+                             FT_MulDiv( day, dbx, 0x40 ) );
+    dotproduct   = ADD_LONG( FT_MulDiv( dax, dbx, 0x40 ),
+                             FT_MulDiv( day, dby, 0x40 ) );
 
     /* The discriminant above is actually a cross product of vectors     */
     /* da and db. Together with the dot product, they can be used as     */
@@ -6459,30 +6503,29 @@
     /*       discriminant = |da||db|sin(angle)     .                     */
     /* We use these equations to reject grazing intersections by         */
     /* thresholding abs(tan(angle)) at 1/19, corresponding to 3 degrees. */
-    if ( 19 * FT_ABS( discriminant ) > FT_ABS( dotproduct ) )
+    if ( MUL_LONG( 19, FT_ABS( discriminant ) ) > FT_ABS( dotproduct ) )
     {
-      val = FT_MulDiv( dx, -dby, 0x40 ) + FT_MulDiv( dy, dbx, 0x40 );
+      val = ADD_LONG( FT_MulDiv( dx, NEG_LONG( dby ), 0x40 ),
+                      FT_MulDiv( dy, dbx, 0x40 ) );
 
       R.x = FT_MulDiv( val, dax, discriminant );
       R.y = FT_MulDiv( val, day, discriminant );
 
       /* XXX: Block in backward_compatibility and/or post-IUP? */
-      exc->zp2.cur[point].x = exc->zp1.cur[a0].x + R.x;
-      exc->zp2.cur[point].y = exc->zp1.cur[a0].y + R.y;
+      exc->zp2.cur[point].x = ADD_LONG( exc->zp1.cur[a0].x, R.x );
+      exc->zp2.cur[point].y = ADD_LONG( exc->zp1.cur[a0].y, R.y );
     }
     else
     {
       /* else, take the middle of the middles of A and B */
 
       /* XXX: Block in backward_compatibility and/or post-IUP? */
-      exc->zp2.cur[point].x = ( exc->zp1.cur[a0].x +
-                                exc->zp1.cur[a1].x +
-                                exc->zp0.cur[b0].x +
-                                exc->zp0.cur[b1].x ) / 4;
-      exc->zp2.cur[point].y = ( exc->zp1.cur[a0].y +
-                                exc->zp1.cur[a1].y +
-                                exc->zp0.cur[b0].y +
-                                exc->zp0.cur[b1].y ) / 4;
+      exc->zp2.cur[point].x =
+        ADD_LONG( ADD_LONG( exc->zp1.cur[a0].x, exc->zp1.cur[a1].x ),
+                  ADD_LONG( exc->zp0.cur[b0].x, exc->zp0.cur[b1].x ) ) / 4;
+      exc->zp2.cur[point].y =
+        ADD_LONG( ADD_LONG( exc->zp1.cur[a0].y, exc->zp1.cur[a1].y ),
+                  ADD_LONG( exc->zp0.cur[b0].y, exc->zp0.cur[b1].y ) ) / 4;
     }
 
     exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_BOTH;
@@ -6517,7 +6560,7 @@
     distance = PROJECT( exc->zp0.cur + p2, exc->zp1.cur + p1 ) / 2;
 
     exc->func_move( exc, &exc->zp1, p1, distance );
-    exc->func_move( exc, &exc->zp0, p2, -distance );
+    exc->func_move( exc, &exc->zp0, p2, NEG_LONG( distance ) );
   }
 
 
@@ -6590,9 +6633,11 @@
         FT_Vector  vec;
 
 
-        vec.x = FT_MulFix( exc->zp1.orus[exc->GS.rp2].x - orus_base->x,
+        vec.x = FT_MulFix( SUB_LONG( exc->zp1.orus[exc->GS.rp2].x,
+                                     orus_base->x ),
                            exc->metrics.x_scale );
-        vec.y = FT_MulFix( exc->zp1.orus[exc->GS.rp2].y - orus_base->y,
+        vec.y = FT_MulFix( SUB_LONG( exc->zp1.orus[exc->GS.rp2].y,
+                                     orus_base->y ),
                            exc->metrics.y_scale );
 
         old_range = FAST_DUALPROJ( &vec );
@@ -6627,9 +6672,11 @@
         FT_Vector  vec;
 
 
-        vec.x = FT_MulFix( exc->zp2.orus[point].x - orus_base->x,
+        vec.x = FT_MulFix( SUB_LONG( exc->zp2.orus[point].x,
+                                     orus_base->x ),
                            exc->metrics.x_scale );
-        vec.y = FT_MulFix( exc->zp2.orus[point].y - orus_base->y,
+        vec.y = FT_MulFix( SUB_LONG( exc->zp2.orus[point].y,
+                                     orus_base->y ),
                            exc->metrics.y_scale );
 
         org_dist = FAST_DUALPROJ( &vec );
@@ -6668,7 +6715,7 @@
       exc->func_move( exc,
                       &exc->zp2,
                       (FT_UShort)point,
-                      new_dist - cur_dist );
+                      SUB_LONG( new_dist, cur_dist ) );
     }
 
   Fail:
@@ -6733,14 +6780,14 @@
     FT_F26Dot6  dx;
 
 
-    dx = worker->curs[p].x - worker->orgs[p].x;
+    dx = SUB_LONG( worker->curs[p].x, worker->orgs[p].x );
     if ( dx != 0 )
     {
       for ( i = p1; i < p; i++ )
-        worker->curs[i].x += dx;
+        worker->curs[i].x = ADD_LONG( worker->curs[i].x, dx );
 
       for ( i = p + 1; i <= p2; i++ )
-        worker->curs[i].x += dx;
+        worker->curs[i].x = ADD_LONG( worker->curs[i].x, dx );
     }
   }
 
@@ -6785,8 +6832,8 @@
     org2   = worker->orgs[ref2].x;
     cur1   = worker->curs[ref1].x;
     cur2   = worker->curs[ref2].x;
-    delta1 = cur1 - org1;
-    delta2 = cur2 - org2;
+    delta1 = SUB_LONG( cur1, org1 );
+    delta2 = SUB_LONG( cur2, org2 );
 
     if ( cur1 == cur2 || orus1 == orus2 )
     {
@@ -6798,10 +6845,10 @@
 
 
         if ( x <= org1 )
-          x += delta1;
+          x = ADD_LONG( x, delta1 );
 
         else if ( x >= org2 )
-          x += delta2;
+          x = ADD_LONG( x, delta2 );
 
         else
           x = cur1;
@@ -6822,20 +6869,23 @@
 
 
         if ( x <= org1 )
-          x += delta1;
+          x = ADD_LONG( x, delta1 );
 
         else if ( x >= org2 )
-          x += delta2;
+          x = ADD_LONG( x, delta2 );
 
         else
         {
           if ( !scale_valid )
           {
             scale_valid = 1;
-            scale       = FT_DivFix( cur2 - cur1, orus2 - orus1 );
+            scale       = FT_DivFix( SUB_LONG( cur2, cur1 ),
+                                     SUB_LONG( orus2, orus1 ) );
           }
 
-          x = cur1 + FT_MulFix( worker->orus[i].x - orus1, scale );
+          x = ADD_LONG( cur1,
+                        FT_MulFix( SUB_LONG( worker->orus[i].x, orus1 ),
+                                   scale ) );
         }
         worker->curs[i].x = x;
       }
@@ -7310,7 +7360,11 @@
       K |= 1 << 12;
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
-    if ( SUBPIXEL_HINTING_MINIMAL )
+    /* Toggle the following flags only outside of monochrome mode.      */
+    /* Otherwise, instructions may behave weirdly and rendering results */
+    /* may differ between v35 and v40 mode, e.g., in `Times New Roman   */
+    /* Bold Italic'. */
+    if ( SUBPIXEL_HINTING_MINIMAL && exc->subpixel_hinting_lean )
     {
       /********************************/
       /* HINTING FOR SUBPIXEL         */
@@ -7345,7 +7399,7 @@
       /*                              */
       /* The only smoothing method FreeType supports unless someone sets */
       /* FT_LOAD_TARGET_MONO.                                            */
-      if ( ( args[0] & 2048 ) != 0 )
+      if ( ( args[0] & 2048 ) != 0 && exc->subpixel_hinting_lean )
         K |= 1 << 18;
 
       /********************************/
@@ -7589,11 +7643,21 @@
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
-    /* Toggle backward compatibility according to what font says, except   */
-    /* when it's a `tricky' font that heavily relies on the interpreter to */
-    /* render glyphs correctly, e.g. DFKai-SB.  Backward compatibility     */
-    /* hacks may break it.                                                 */
+    /*
+     *  Toggle backward compatibility according to what font wants, except
+     *  when
+     *
+     *  1) we have a `tricky' font that heavily relies on the interpreter to
+     *     render glyphs correctly, for example DFKai-SB, or
+     *  2) FT_RENDER_MODE_MONO (i.e, monochome rendering) is requested.
+     *
+     *  In those cases, backward compatibility needs to be turned off to get
+     *  correct rendering.  The rendering is then completely up to the
+     *  font's programming.
+     *
+     */
     if ( SUBPIXEL_HINTING_MINIMAL          &&
+         exc->subpixel_hinting_lean        &&
          !FT_IS_TRICKY( &exc->face->root ) )
       exc->backward_compatibility = !( exc->GS.instruct_control & 4 );
     else
@@ -7639,8 +7703,7 @@
                                   FT_MAX( 50,
                                           exc->cvtSize / 10 );
     else
-      exc->loopcall_counter_max = FT_MAX( 100,
-                                          10 * exc->cvtSize );
+      exc->loopcall_counter_max = 300 + 8 * exc->cvtSize;
 
     /* as a protection against an unreasonable number of CVT entries  */
     /* we assume at most 100 control values per glyph for the counter */
Index: src/truetype/ttinterp.h
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/truetype/ttinterp.h,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 ttinterp.h
--- src/truetype/ttinterp.h 23 Jun 2017 16:15:20 -0000 1.14
+++ src/truetype/ttinterp.h 20 Sep 2017 16:54:39 -0000
@@ -253,23 +253,38 @@ FT_BEGIN_HEADER
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
     /*
-     * Modern TrueType fonts are usually rendered through Microsoft's
-     * collection of rendering techniques called ClearType (e.g., subpixel
-     * rendering and subpixel hinting).  When ClearType was introduced, most
-     * fonts were not ready.  Microsoft decided to implement a backward
-     * compatibility mode that employed several simple to complicated
-     * assumptions and tricks that modified the interpretation of the
-     * bytecode contained in these fonts to make them look ClearType-y
-     * somehow.  Most (web)fonts that were released since then have come to
-     * rely on these hacks to render correctly, even some of Microsoft's
-     * flagship ClearType fonts (Calibri, Cambria, Segoe UI).
-     *
-     * The minimal subpixel hinting code (interpreter version 40) employs a
-     * small list of font-agnostic hacks to bludgeon non-native-ClearType
-     * fonts (except tricky ones[1]) into submission.  It will not try to
-     * toggle hacks for specific fonts for performance and complexity
-     * reasons.  The focus is on modern (web)fonts rather than legacy fonts
-     * that were made for black-and-white rendering.
+     * FreeType supports ClearType-like hinting of TrueType fonts through
+     * the version 40 interpreter.  This is achieved through several hacks
+     * in the base (v35) interpreter, as detailed below.
+     *
+     * ClearType is an umbrella term for several rendering techniques
+     * employed by Microsoft's various GUI and rendering toolkit
+     * implementations, most importantly: subpixel rendering for using the
+     * RGB subpixels of LCDs to approximately triple the perceived
+     * resolution on the x-axis and subpixel hinting for positioning stems
+     * on subpixel borders.  TrueType programming is explicit, i.e., fonts
+     * must be programmed to take advantage of ClearType's possibilities.
+     *
+     * When ClearType was introduced, it seemed unlikely that all fonts
+     * would be reprogrammed, so Microsoft decided to implement a backward
+     * compatibility mode.  It employs several simple to complicated
+     * assumptions and tricks, many of them font-dependent, that modify the
+     * interpretation of the bytecode contained in these fonts to retrofit
+     * them into a ClearType-y look.  The quality of the results varies.
+     * Most (web)fonts that were released since then have come to rely on
+     * these hacks to render correctly, even some of Microsoft's flagship
+     * fonts (e.g., Calibri, Cambria, Segoe UI).
+     *
+     * FreeType's minimal subpixel hinting code (interpreter version 40)
+     * employs a small list of font-agnostic hacks loosely based on the
+     * public information available on Microsoft's compatibility mode[2].
+     * The focus is on modern (web)fonts rather than legacy fonts that were
+     * made for monochrome rendering.  It will not match ClearType rendering
+     * exactly.  Unlike the `Infinality' code (interpreter version 38) that
+     * came before, it will not try to toggle hacks for specific fonts for
+     * performance and complexity reasons.  It will fall back to version 35
+     * behavior for tricky fonts[1] or when monochrome rendering is
+     * requested.
      *
      * Major hacks
      *
@@ -347,7 +362,8 @@ FT_BEGIN_HEADER
      *
      */
 
-    /* Using v40 implies subpixel hinting.  Used to detect interpreter */
+    /* Using v40 implies subpixel hinting, unless FT_RENDER_MODE_MONO has been
+     * requested.  Used to detect interpreter */
     /* version switches.  `_lean' to differentiate from the Infinality */
     /* `subpixel_hinting', which is managed differently.               */
     FT_Bool            subpixel_hinting_lean;
Index: src/truetype/ttobjs.c
===================================================================
RCS file: /cvs/xenocara/lib/freetype/src/truetype/ttobjs.c,v
retrieving revision 1.24
diff -u -p -u -p -r1.24 ttobjs.c
--- src/truetype/ttobjs.c 23 Jun 2017 16:15:20 -0000 1.24
+++ src/truetype/ttobjs.c 20 Sep 2017 16:54:40 -0000
@@ -576,9 +576,11 @@
     /* We must also be able to accept Mac/GX fonts, as well as OT ones. */
     /* The 0x00020000 tag is completely undocumented; some fonts from   */
     /* Arphic made for Chinese Windows 3.1 have this.                   */
-    if ( face->format_tag != 0x00010000L &&    /* MS fonts  */
-         face->format_tag != 0x00020000L &&    /* CJK fonts for Win 3.1 */
-         face->format_tag != TTAG_true   )     /* Mac fonts */
+    if ( face->format_tag != 0x00010000L  && /* MS fonts                             */
+         face->format_tag != 0x00020000L  && /* CJK fonts for Win 3.1                */
+         face->format_tag != TTAG_true    && /* Mac fonts                            */
+         face->format_tag != TTAG_0xA5kbd && /* `Keyboard.dfont' (legacy Mac OS X)   */
+         face->format_tag != TTAG_0xA5lst )  /* `LastResort.dfont' (legacy Mac OS X) */
     {
       FT_TRACE2(( "  not a TTF font\n" ));
       goto Bad_Format;
@@ -1230,7 +1232,9 @@
   /* <Input>                                                               */
   /*    size        :: A handle to the target size object.                 */
   /*                                                                       */
-  /*    only_height :: Only recompute ascender, descender, and height.     */
+  /*    only_height :: Only recompute ascender, descender, and height;     */
+  /*     &