Forráskód Böngészése

Update FreeType version in documentation, and FreeType's own documentation. Enabled FreeType subpixel hinting. Restored old BlueHighway.ttf. Removed FreeType .mk and jamfiles.

Lasse Öörni 12 éve
szülő
commit
bc6dd70fae
100 módosított fájl, 6897 hozzáadás és 18246 törlés
  1. BIN
      Bin/Data/Fonts/BlueHighway.otf
  2. BIN
      Bin/Data/Fonts/BlueHighway.ttf
  3. 1 1
      Bin/Data/UI/DefaultStyle.xml
  4. 1 1
      Docs/Urho3D.dox
  5. 1 1
      Readme.txt
  6. 4 3
      Source/ThirdParty/FreeType/CMakeLists.txt
  7. 83 64
      Source/ThirdParty/FreeType/README
  8. 3897 3396
      Source/ThirdParty/FreeType/docs/CHANGES
  9. 155 150
      Source/ThirdParty/FreeType/docs/CUSTOMIZE
  10. 202 202
      Source/ThirdParty/FreeType/docs/DEBUG
  11. 169 169
      Source/ThirdParty/FreeType/docs/FTL.TXT
  12. 340 340
      Source/ThirdParty/FreeType/docs/GPLv2.TXT
  13. 83 91
      Source/ThirdParty/FreeType/docs/INSTALL
  14. 156 151
      Source/ThirdParty/FreeType/docs/INSTALL.ANY
  15. 135 135
      Source/ThirdParty/FreeType/docs/INSTALL.CROSS
  16. 159 159
      Source/ThirdParty/FreeType/docs/INSTALL.GNU
  17. 32 32
      Source/ThirdParty/FreeType/docs/INSTALL.MAC
  18. 96 96
      Source/ThirdParty/FreeType/docs/INSTALL.UNIX
  19. 62 62
      Source/ThirdParty/FreeType/docs/INSTALL.VMS
  20. 37 31
      Source/ThirdParty/FreeType/docs/LICENSE.TXT
  21. 5 5
      Source/ThirdParty/FreeType/docs/MAKEPP
  22. 0 27
      Source/ThirdParty/FreeType/docs/PATENTS
  23. 90 77
      Source/ThirdParty/FreeType/docs/PROBLEMS
  24. 40 40
      Source/ThirdParty/FreeType/docs/TODO
  25. 0 40
      Source/ThirdParty/FreeType/docs/TRUETYPE
  26. 0 137
      Source/ThirdParty/FreeType/docs/UPGRADE.UNIX
  27. 123 0
      Source/ThirdParty/FreeType/docs/VERSION.DLL
  28. 174 164
      Source/ThirdParty/FreeType/docs/formats.txt
  29. 635 635
      Source/ThirdParty/FreeType/docs/raster.txt
  30. 216 195
      Source/ThirdParty/FreeType/docs/release
  31. 1 1
      Source/ThirdParty/FreeType/include/freetype/config/ftoption.h
  32. 0 25
      Source/ThirdParty/FreeType/src/Jamfile
  33. 0 39
      Source/ThirdParty/FreeType/src/autofit/Jamfile
  34. 0 23
      Source/ThirdParty/FreeType/src/autofit/module.mk
  35. 0 82
      Source/ThirdParty/FreeType/src/autofit/rules.mk
  36. 0 60
      Source/ThirdParty/FreeType/src/base/Jamfile
  37. 0 99
      Source/ThirdParty/FreeType/src/base/rules.mk
  38. 0 29
      Source/ThirdParty/FreeType/src/bdf/Jamfile
  39. 0 34
      Source/ThirdParty/FreeType/src/bdf/module.mk
  40. 0 81
      Source/ThirdParty/FreeType/src/bdf/rules.mk
  41. 0 19
      Source/ThirdParty/FreeType/src/bzip2/Jamfile
  42. 0 63
      Source/ThirdParty/FreeType/src/bzip2/rules.mk
  43. 0 43
      Source/ThirdParty/FreeType/src/cache/Jamfile
  44. 0 80
      Source/ThirdParty/FreeType/src/cache/rules.mk
  45. 0 29
      Source/ThirdParty/FreeType/src/cff/Jamfile
  46. 0 23
      Source/ThirdParty/FreeType/src/cff/module.mk
  47. 0 86
      Source/ThirdParty/FreeType/src/cff/rules.mk
  48. 0 29
      Source/ThirdParty/FreeType/src/cid/Jamfile
  49. 0 23
      Source/ThirdParty/FreeType/src/cid/module.mk
  50. 0 70
      Source/ThirdParty/FreeType/src/cid/rules.mk
  51. 0 33
      Source/ThirdParty/FreeType/src/gxvalid/Jamfile
  52. 0 23
      Source/ThirdParty/FreeType/src/gxvalid/module.mk
  53. 0 94
      Source/ThirdParty/FreeType/src/gxvalid/rules.mk
  54. 0 16
      Source/ThirdParty/FreeType/src/gzip/Jamfile
  55. 0 78
      Source/ThirdParty/FreeType/src/gzip/rules.mk
  56. 0 16
      Source/ThirdParty/FreeType/src/lzw/Jamfile
  57. 0 70
      Source/ThirdParty/FreeType/src/lzw/rules.mk
  58. 0 29
      Source/ThirdParty/FreeType/src/otvalid/Jamfile
  59. 0 23
      Source/ThirdParty/FreeType/src/otvalid/module.mk
  60. 0 78
      Source/ThirdParty/FreeType/src/otvalid/rules.mk
  61. 0 29
      Source/ThirdParty/FreeType/src/pcf/Jamfile
  62. 0 34
      Source/ThirdParty/FreeType/src/pcf/module.mk
  63. 0 79
      Source/ThirdParty/FreeType/src/pcf/rules.mk
  64. 0 29
      Source/ThirdParty/FreeType/src/pfr/Jamfile
  65. 0 23
      Source/ThirdParty/FreeType/src/pfr/module.mk
  66. 0 73
      Source/ThirdParty/FreeType/src/pfr/rules.mk
  67. 0 31
      Source/ThirdParty/FreeType/src/psaux/Jamfile
  68. 0 23
      Source/ThirdParty/FreeType/src/psaux/module.mk
  69. 0 73
      Source/ThirdParty/FreeType/src/psaux/rules.mk
  70. 0 29
      Source/ThirdParty/FreeType/src/pshinter/Jamfile
  71. 0 23
      Source/ThirdParty/FreeType/src/pshinter/module.mk
  72. 0 73
      Source/ThirdParty/FreeType/src/pshinter/rules.mk
  73. 0 29
      Source/ThirdParty/FreeType/src/psnames/Jamfile
  74. 0 23
      Source/ThirdParty/FreeType/src/psnames/module.mk
  75. 0 71
      Source/ThirdParty/FreeType/src/psnames/rules.mk
  76. 0 29
      Source/ThirdParty/FreeType/src/raster/Jamfile
  77. 0 23
      Source/ThirdParty/FreeType/src/raster/module.mk
  78. 0 70
      Source/ThirdParty/FreeType/src/raster/rules.mk
  79. 0 29
      Source/ThirdParty/FreeType/src/sfnt/Jamfile
  80. 0 23
      Source/ThirdParty/FreeType/src/sfnt/module.mk
  81. 0 78
      Source/ThirdParty/FreeType/src/sfnt/rules.mk
  82. 0 29
      Source/ThirdParty/FreeType/src/smooth/Jamfile
  83. 0 27
      Source/ThirdParty/FreeType/src/smooth/module.mk
  84. 0 70
      Source/ThirdParty/FreeType/src/smooth/rules.mk
  85. 0 5
      Source/ThirdParty/FreeType/src/tools/Jamfile
  86. 0 542
      Source/ThirdParty/FreeType/src/tools/afblue.pl
  87. 0 466
      Source/ThirdParty/FreeType/src/tools/apinames.c
  88. 0 114
      Source/ThirdParty/FreeType/src/tools/chktrcmp.py
  89. 0 33
      Source/ThirdParty/FreeType/src/tools/cordic.py
  90. 0 1
      Source/ThirdParty/FreeType/src/tools/docmaker/.gitignore
  91. 0 567
      Source/ThirdParty/FreeType/src/tools/docmaker/content.py
  92. 0 113
      Source/ThirdParty/FreeType/src/tools/docmaker/docbeauty.py
  93. 0 106
      Source/ThirdParty/FreeType/src/tools/docmaker/docmaker.py
  94. 0 188
      Source/ThirdParty/FreeType/src/tools/docmaker/formatter.py
  95. 0 383
      Source/ThirdParty/FreeType/src/tools/docmaker/sources.py
  96. 0 566
      Source/ThirdParty/FreeType/src/tools/docmaker/tohtml.py
  97. 0 132
      Source/ThirdParty/FreeType/src/tools/docmaker/utils.py
  98. 0 48
      Source/ThirdParty/FreeType/src/tools/ftrandom/README
  99. 0 673
      Source/ThirdParty/FreeType/src/tools/ftrandom/ftrandom.c
  100. 0 5487
      Source/ThirdParty/FreeType/src/tools/glnames.py

BIN
Bin/Data/Fonts/BlueHighway.otf


BIN
Bin/Data/Fonts/BlueHighway.ttf


+ 1 - 1
Bin/Data/UI/DefaultStyle.xml

@@ -248,7 +248,7 @@
     </element>
     <element type="EditorMenuText" style="Text" auto="false" />
     <element type="EditorAttributeText" auto="false">
-        <attribute name="Font" value="Font;Fonts/BlueHighway.otf" />
+        <attribute name="Font" value="Font;Fonts/BlueHighway.ttf" />
         <attribute name="Font Size" value="11" />
     </element>
     <element type="EditorEnumAttributeText" style="EditorAttributeText" auto="false">

+ 1 - 1
Docs/Urho3D.dox

@@ -91,7 +91,7 @@ Urho3D uses the following third-party libraries:
 - AngelScript 2.28.0 WIP (http://www.angelcode.com/angelscript/)
 - Bullet 2.81 (http://www.bulletphysics.org/)
 - Civetweb (http://sourceforge.net/projects/civetweb/)
-- FreeType 2.3.12 (http://www.freetype.org/)
+- FreeType 2.5.0 (http://www.freetype.org/)
 - GLEW 1.9.0 (http://glew.sourceforge.net/)
 - jo_jpeg 1.52 (http://www.jonolick.com/uploads/7/9/2/1/7921194/jo_jpeg.cpp)
 - kNet (https://github.com/juj/kNet)

+ 1 - 1
Readme.txt

@@ -61,7 +61,7 @@ Urho3D uses the following third-party libraries:
 - AngelScript 2.28.0 WIP (http://www.angelcode.com/angelscript/)
 - Bullet 2.81 (http://www.bulletphysics.org/)
 - Civetweb (http://sourceforge.net/projects/civetweb/)
-- FreeType 2.3.12 (http://www.freetype.org/)
+- FreeType 2.5.0 (http://www.freetype.org/)
 - GLEW 1.9.0 (http://glew.sourceforge.net/)
 - jo_jpeg 1.52 (http://www.jonolick.com/uploads/7/9/2/1/7921194/jo_jpeg.cpp)
 - kNet (https://github.com/juj/kNet)

+ 4 - 3
Source/ThirdParty/FreeType/CMakeLists.txt

@@ -25,13 +25,14 @@ set (SOURCE_FILES
     src/base/fttype1.c
     src/base/ftwinfnt.c
     src/bdf/bdf.c
-    src/cache/ftccache.c
-    src/cache/ftcmanag.c
-    src/cache/ftcmru.c
+    src/bzip2/ftbzip2.c
+    src/cache/ftcache.c
     src/cff/cff.c
     src/cid/type1cid.c
+    src/gxvalid/gxvalid.c
     src/gzip/ftgzip.c
     src/lzw/ftlzw.c
+    src/otvalid/otvalid.c
     src/pcf/pcf.c
     src/pfr/pfr.c
     src/psaux/psaux.c

+ 83 - 64
Source/ThirdParty/FreeType/README

@@ -1,64 +1,83 @@
-  Special notes to Unix users
-  ===========================
-
-  Please  read  the file  `docs/UPGRADE.UNIX'.  It contains  important
-  information regarding the installation  of FreeType on Unix systems,
-  especially GNU based operating systems like GNU/Linux.
-
-  FreeType 2's  library is called `libfreetype',  FreeType 1's library
-  is called `libttf'.  They are *not* compatible!
-
-
-  FreeType 2.3.12
-  ===============
-
-  Please   read   the  docs/CHANGES   file,   it  contains   IMPORTANT
-  INFORMATION.
-
-  Read the files `docs/INSTALL' for installation instructions.
-
-  The FreeType 2 API reference is located in `docs/reference'; use the
-  file   `ft2-doc.html'   as   the   top  entry   point.    Additional
-  documentation is available as a separate package from our sites.  Go
-  to
-
-    http://download.savannah.gnu.org/releases/freetype/
-
-  and download one of the following files.
-
-    freetype-doc-2.3.12.tar.bz2
-    freetype-doc-2.3.12.tar.gz
-    ftdoc2312.zip
-
-
-  Bugs
-  ====
-
-  Please report bugs  by e-mail to `[email protected]'.  Don't
-  forget to  send a  detailed explanation of  the problem --  there is
-  nothing  worse than  receiving a  terse message  that only  says `it
-  doesn't work'.
-
-  Alternatively, you may submit a bug report at
-
-    https://savannah.nongnu.org/bugs/?group=freetype
-
-
-  Enjoy!
-
-
-    The FreeType Team
-
-----------------------------------------------------------------------
-
-Copyright 2006, 2007, 2008, 2009, 2010 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of README ---
+  FreeType 2.5.0
+  ==============
+
+  Homepage: http://www.freetype.org
+
+  FreeType is a freely available software library to render fonts.
+
+  It  is  written  in  C,  designed to  be  small,  efficient,  highly
+  customizable, and  portable while capable of  producing high-quality
+  output  (glyph  images) of  most  vector  and bitmap  font  formats.
+
+  Please   read   the  docs/CHANGES   file,   it  contains   IMPORTANT
+  INFORMATION.
+
+  Read the  files `docs/INSTALL*'  for installation  instructions; see
+  the file `docs/LICENSE.TXT' for the available licenses.
+
+  The FreeType 2 API reference is located in `docs/reference'; use the
+  file   `ft2-doc.html'   as   the   top  entry   point.    Additional
+  documentation is available as a separate package from our sites.  Go
+  to
+
+    http://download.savannah.gnu.org/releases/freetype/
+
+  and download one of the following files.
+
+    freetype-doc-2.5.0.tar.bz2
+    freetype-doc-2.5.0.tar.gz
+    ftdoc250.zip
+
+  To view the documentation online, go to
+
+    http://www.freetype.org/freetype2/documentation.html
+
+
+  Mailing Lists
+  =============
+
+  The preferred way  of communication with the FreeType  team is using
+  e-mail lists.
+
+    general use and discussion:      [email protected]
+    engine internals, porting, etc.: [email protected]
+    announcements:                   [email protected]
+
+  The lists are moderated; see
+
+    http://www.freetype.org/contact.html
+
+  how to subscribe.
+
+
+  Bugs
+  ====
+
+  Please report bugs  by e-mail to `[email protected]'.  Don't
+  forget to  send a  detailed explanation of  the problem --  there is
+  nothing  worse than  receiving a  terse message  that only  says `it
+  doesn't work'.
+
+  Alternatively, you may submit a bug report at
+
+    https://savannah.nongnu.org/bugs/?group=freetype
+
+
+  Enjoy!
+
+
+    The FreeType Team
+
+----------------------------------------------------------------------
+
+Copyright 2006-2013 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of README ---

+ 3897 - 3396
Source/ThirdParty/FreeType/docs/CHANGES

@@ -1,3396 +1,3897 @@
-CHANGES BETWEEN 2.3.11 and 2.3.12
-
-  I. IMPORTANT CHANGES
-
-    - For  `FT_Open_Face',  new  parameters  are  available  to ignore
-      preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
-      FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
-
-  II. MISCELLANEOUS
-
-    - Support  for  incremental  font  loading  (controlled  with  the
-      FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
-
-    - Better support for vertical metrics.
-
-    - Various minor bug fixes.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.10 and 2.3.11
-
-  I. IMPORTANT BUG FIXES
-
-    - Version 2.3.10 broke PCF support.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.10 and 2.3.9
-
-  I. IMPORTANT BUG FIXES
-
-    - If all  ASCII digits in a  font have the  same (unscaled) width,
-      the autohinter respects this and won't change it.
-
-    - TrueType fonts  are now  rasterized correctly  if the horizontal
-      and vertical resolution differ.
-
-    - Type 1 fonts are now handled with increased precision internally
-      to avoid serious rounding issues if non-integral coordinates are
-      encountered.
-
-    - Horizontally  condensed CFF  fonts (using the font  matrix) were
-      rendered  incorrectly.   This  bug  has  been  introduced  after
-      release 2.3.5.
-
-
-  II. IMPORTANT CHANGES
-
-    - Support for the SFNT cmap 13 table format (as defined by the new
-      OpenType 1.6 specification) has been added.
-
-    - B/W rasterization  of well-hinted TrueType  fonts at small sizes
-      has been greatly improved.
-
-    - Calculation  of  vertical  metrics in  OpenType  fonts has  been
-      improved.
-
-
-  III. MISCELLANEOUS
-
-    - It  is now  possible to  change  the emboldening  factor in  the
-      `ftview' demo program with keys `e' and `E'.
-
-    - It is  now possible  to change the  slant value in  the `ftview'
-      demo program with keys `s' and `S'.
-
-    - The  5-levels  grayscale  mode of  the `ftraster'  module (which
-      FreeType doesn't use by default) was broken since version 2.3.0.
-
-    - Compilation of the  `ftgrays' and `ftraster' modules  was broken
-      in stand-alone mode.
-
-    - Various fixes for compilation on 64bit and 16bit architectures.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.9 and 2.3.8
-
-  I. IMPORTANT BUG FIXES
-
-    - Very unfortunately, FreeType 2.3.8 contained a change that broke
-      its  official ABI.  The  end result  is  that programs  compiled
-      against previous versions of the library, but dynamically linked
-      to  2.3.8 can  experience  memory corruption  if  they call  the
-      `FT_Get_PS_Font_Info' function.
-
-      We recommend all users to  upgrade to 2.3.9 as soon as possible,
-      or to downgrade to a previous  release of the library if this is
-      not an option.
-
-      The  origin of the  bug is  that a  new field  was added  to the
-      publicly  defined  `PS_FontInfoRec'  structure.   Unfortunately,
-      objects of this  type can be stack or  heap allocated by callers
-      of   `FT_Get_PS_Font_Info',  resulting   in   a  memory   buffer
-      overwrite with its implementation in 2.3.8.
-
-      If  you want to  know whether  your code  is vulnerable  to this
-      issue,  simply  search  for  the  substrings  `PS_FontInfo'  and
-      `PS_Font_Info' in your source code.  If none is found, your code
-      is safe and is not affected.
-
-      The FreeType team apologizes for the problem.
-
-    - The POSIX support  of MacOS resource-fork fonts  (Suitcase fonts
-      and LaserWriter Type1 PostScript fonts) was broken in 2.3.8.  If
-      FreeType2 is built without Carbon framework, these fonts are not
-      handled correctly.  Version 2.3.7 didn't have this bug.
-
-    - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
-      almost all font formats except TrueType fonts.
-
-    - Fix a bug  in the SFNT  kerning table  loader/parser which could
-      crash the engine if certain malformed tables were encountered.
-
-    - Composite SFNT bitmaps are now handled correctly.
-
-
-  II. IMPORTANT CHANGES
-
-    - The   new  functions   `FT_Get_CID_Is_Internally_CID_keyed'  and
-      `FT_Get_CID_From_Glyph_Index'  can be  used to  access CID-keyed
-      CFF fonts  via CID  values.  This code  has been  contributed by
-      Michael Toftdal.
-
-
-  III. MISCELLANEOUS
-
-    - `FT_Outline_Get_InsideBorder'  returns   FT_STROKER_BORDER_RIGHT
-      for empty outlines.  This was incorrectly documented.
-
-    - The `ftview' demo program now supports UTF-8 encoded strings.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.8 and 2.3.7
-
-  I. IMPORTANT BUG FIXES
-
-    - CID-keyed fonts in an SFNT wrapper were not handled correctly.
-
-    - The smooth renderer produced truncated images (on the right) for
-      outline parts with negative horizontal values.  Most fonts don't
-      contain outlines left  to the y coordinate axis, but  the effect
-      was very noticeable for outlines processed with FT_Glyph_Stroke,
-      using thick strokes.
-
-    - `FT_Get_TrueType_Engine_Type'  returned a  wrong  value if  both
-      configuration  macros  TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
-      TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
-
-    - The  `face_index'  field  in   the  `FT_Face'  structure  wasn't
-      initialized properly after calling FT_Open_Face and friends with
-      a positive face index for CFFs,  WinFNTs, and, most importantly,
-      for TrueType Collections (TTCs).
-
-
-  II. IMPORTANT CHANGES
-
-    - Rudimentary support for Type 1  fonts and CID-keyed Type 1 fonts
-      in an SFNT wrapper has been  added -- such fonts are used on the
-      Mac.  The core  SFNT tables `TYP1' and `CID '  are passed to the
-      PS Type 1  and CID-keyed PS font drivers;  other tables (`ALMX',
-      `BBOX', etc.) are not supported yet.
-
-    - A  new interface  to extract  advance values  of glyphs  without
-      loading their outlines has been added.  The functions are called
-      `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
-      `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
-
-    - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
-      contributed  by   David  Bevan  to  access   the  embedding  and
-      subsetting restriction information of fonts.
-
-
-  III. MISCELLANEOUS
-
-    - FT_MulFix is now an inlined function; by default, assembler code
-      is provided for x86 and ARM.  See FT_CONFIG_OPTION_INLINE_MULFIX
-      and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
-
-    - The handling of `tricky' fonts  (this is, fonts which don't work
-      with the  autohinter, needing the font  format's hinting engine)
-      has been generalized and changed slightly:
-
-      . A new  face flag  FT_FACE_FLAG_TRICKY indicates that  the font
-        format's  hinting engine is  necessary for  correct rendering.
-        The macro FT_IS_TRICKY can be used to check this flag.
-
-      . FT_LOAD_NO_HINTING is now ignored for tricky fonts.  To really
-        force  raw  loading  of  such fonts  (without  hinting),  both
-        FT_LOAD_NO_HINTING  and FT_LOAD_NO_AUTOHINT  must  be used  --
-        this is something which you probably never want to do.
-
-      . Tricky  TrueType fonts  always use  the  bytecode interpreter,
-        either the patented or unpatented version.
-
-    - The  function  `FT_GlyphSlot_Own_Bitmap'  has  been  moved  from
-      FT_SYNTHESIS_H to FT_BITMAP_H; it  is now part of the `official'
-      API.   (The functions  in  FT_SYNTHESIS_H are  still subject  to
-      change, however.)
-
-    - In the  `ftdiff'  demo  program you  can now  toggle the  use of
-      FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.7 and 2.3.6
-
-  I. IMPORTANT BUG FIXES
-
-    - If the library  was compiled on an i386  platform using gcc, and
-      compiler  option -O3 was  given, `FT_MulFix'  sometimes returned
-      incorrect  results   which  could  have   caused  problems  with
-      `FT_Request_Metrics'   and  `FT_Select_Metrics',   returning  an
-      incorrect descender size.
-
-    - Pure CFFs without  subfonts were scaled incorrectly  if the font
-      matrix  was  non-standard.  This  bug  has  been  introduced  in
-      version 2.3.6.
-
-    - The  `style_name'  field  in  the  `FT_FaceRec'  structure often
-      contained  a wrong  value for  Type 1  fonts.  This misbehaviour
-      has been  introduced  in  version  2.3.6  while  trying  to  fix
-      another   problem.   [Note,  however,   that   this   value   is
-      informative only  since  the  used  algorithm to  extract  it is
-      very simplistic.]
-
-
-  II. IMPORTANT CHANGES
-
-    - Two      new      macros,      FT_OUTLINE_SMART_DROPOUTS     and
-      FT_OUTLINE_EXCLUDE_STUBS,  have been introduced.   Together with
-      FT_OUTLINE_IGNORE_DROPOUTS (which  was ignored previously) it is
-      now possible to control the dropout mode  of the `raster' module
-      (for B&W rasterization),   using  the   `flags'  field   in  the
-      `FT_Outline' structure.
-
-    - The TrueType bytecode interpreter now passes the dropout mode to
-      the B&W rasterizer.  This greatly increases the output for small
-      ppem values of many fonts like `pala.ttf'.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.6 and 2.3.5
-
-  I. IMPORTANT BUG FIXES
-
-    - A  bunch of  potential security  problems have  been found.  All
-      users should update.
-
-    - Microsoft  Unicode  cmaps  in  TrueType  fonts  are  now  always
-      preferred over Apple cmaps.  This is not a bug per se, but there
-      exist some buggy  fonts created for MS which  have broken  Apple
-      cmaps.  This affects  only the automatic  selection of FreeType;
-      it's always possible to manually select an Apple Unicode cmap if
-      desired.
-
-    - Many bug fixes to the TrueType bytecode interpreter.
-
-    - Improved Mac support.
-
-    - Subsetted CID-keyed CFFs are now supported correctly.
-
-    - CID-keyed CFFs with subfonts which are scaled in a  non-standard
-      way are now handled correctly.
-
-    - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
-      the font was a Windows (bitmap) FNT/FON.
-
-
-  II. IMPORTANT CHANGES
-
-    - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
-      access to  those fields in a CID-keyed font.  The code  has been
-      contributed by Derek Clegg.
-
-    - George Williams  contributed  code  to validate  the new  `MATH'
-      OpenType  table (within  the `otvalid'  module).  The  `ftvalid'
-      demo program has been extended accordingly.
-
-    - An API for cmap 14 support  (for Unicode Variant Selectors, UVS)
-      has been contributed by George Williams.
-
-    - A new face flag FT_FACE_FLAG_CID_KEYED has been added,  together
-      with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
-      CID-keyed.
-
-
-  III. MISCELLANEOUS
-
-    - Build support for symbian has been contributed.
-
-    - Better WGL4 glyph name support, contributed by Sergey Tolstov.
-
-    - Debugging output of the  various FT_TRACEX macros is now sent to
-      stderr.
-
-    - The `ftview' demo program now provides artificial slanting too.
-
-    - The `ftvalid' demo  program has a new  option `-f' to select the
-      font index.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.5 and 2.3.4
-
-  I. IMPORTANT BUG FIXES
-
-    - Some subglyphs in TrueType fonts were handled incorrectly due to
-      a missing graphics state reinitialization.
-
-    - Large .Z files  (as distributed with some X11  packages) weren't
-      handled correctly, making FreeType increase the heap stack in an
-      endless loop.
-
-    - A large  number of  bugs have  been fixed  to avoid  crashes and
-      endless loops with invalid fonts.
-
-
-  II. IMPORTANT CHANGES
-
-    - The  two new  cache functions  `FTC_ImageCache_LookupScaler' and
-      `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
-      glyphs using an  `FTC_Scaler' object;  this makes it possible to
-      use fractional pixel sizes in the cache.  The demo programs have
-      been updated accordingly to use this feature.
-
-    - A new API  `FT_Get_CMap_Format' has been added to  get the  cmap
-      format  of a  TrueType font.   This  is useful  in handling  PDF
-      files.  The code has been contributed by Derek Clegg.
-
-    - The  auto-hinter  now  produces  better  output  by  default for
-      non-Latin scripts  like Indic.   This was done by  using the CJK
-      hinting module  as the default instead of the Latin one.  Thanks
-      to Rahul Bhalerao for this suggestion.
-
-    - A new API `FT_Face_CheckTrueTypePatents'  has been added to find
-      out  whether  a  given  TrueType  font  uses  patented  bytecode
-      instructions.   The  `ft2demos' bundle  contains a  new  program
-      called `ftpatchk' which demonstrates its usage.
-
-    - A  new  API  `FT_Face_SetUnpatentedHinting'  has  been  added to
-      enable or disable the unpatented hinter.
-
-    - Support for Windows FON files in PE format  has been contributed
-      by Dmitry Timoshkov.
-
-
-  III. MISCELLANEOUS
-
-    - Vincent Richomme contributed Visual C++ project files for Pocket
-      PCs.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.4 and 2.3.3
-
-  I. IMPORTANT BUG FIXES
-
-    - A serious  bug  in  the  handling  of bitmap  fonts (and  bitmap
-      strikes of outline fonts) has been introduced in 2.3.3.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.3 and 2.3.2
-
-  I. IMPORTANT BUG FIXES
-
-    - Remove a serious regression in the TrueType bytecode interpreter
-      that was introduced  in version 2.3.2.  Note that  this does not
-      disable  the  improvements  introduced  to  the  interpreter  in
-      version 2.3.2,  only some ill  cases that occurred  with certain
-      fonts (though a few popular ones).
-
-    - The auto-hinter now  ignores single-point contours for computing
-      blue zones.   This bug  created `wavy' baselines  when rendering
-      text  with  various  fonts  that  use these  contours  to  model
-      mark-attach points  (these are points that  are never rasterized
-      and are placed outside of the glyph's real outline).
-
-    - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
-      zero for mono-spaced fonts.  Otherwise code that uses them would
-      essentially ruin the fixed-advance property.
-
-    - Fix  CVE-2007-1351 which  can  cause an  integer overflow  while
-      parsing  BDF fonts,  leading to  a potentially  exploitable heap
-      overflow condition.
-
-
-  II. MISCELLANEOUS
-
-    - Fixed compilation issues on some 64-bit platforms (see ChangeLog
-      for details).
-
-    - A new demo  program `ftdiff' has been added  to compare TrueType
-      hinting, FreeType's auto  hinting, and rendering without hinting
-      in three columns.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.2 and 2.3.1
-
-  I. IMPORTANT BUG FIXES
-
-    - FreeType  returned incorrect  kerning information  from TrueType
-      fonts when the bytecode  interpreter was enabled.  This happened
-      due to a typo introduced in version 2.3.0.
-
-    - Negative  kerning  values  from   PFM  files  are  now  reported
-      correctly  (they were read  as 16-bit  unsigned values  from the
-      file).
-
-    - Fixed  a small  memory leak  when `FT_Init_FreeType'  failed for
-      some reason.
-
-    - The Postscript hinter placed and sized very thin and ghost stems
-      incorrectly.
-
-    - The TrueType bytecode  interpreter has been fixed to  get rid of
-      most of the  rare differences seen in comparison  to the Windows
-      font loader.
-
-
-  II. IMPORTANT CHANGES
-
-    - The auto-hinter  now better deals  with serifs and  corner cases
-      (e.g.,  glyph '9'  in Arial  at 9pt,  96dpi).  It  also improves
-      spacing  adjustments and doesn't  change widths  for non-spacing
-      glyphs.
-
-    - Many   Mac-specific   functions   are  deprecated   (but   still
-      available);  modern replacements  have been  provided  for them.
-      See the documentation in file `ftmac.h'.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.1 and 2.3.0
-
-  I. IMPORTANT BUG FIXES
-
-    - The TrueType interpreter sometimes returned incorrect horizontal
-      metrics due to a bug in the handling of the SHZ instruction.
-
-    - A typo  in  a  security  check  introduced  after  version 2.2.1
-      prevented FreeType to render some glyphs in CFF fonts.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.3.0 and 2.2.1
-
-  I. IMPORTANT BUG FIXES
-
-    - The  PCF font  loader  is  now much  more  robust while  loading
-      malformed font files.
-
-    - Various memory leaks have been found and fixed.
-
-    - The TrueType name loader now deals properly with some fonts that
-      encode their  names in UTF-16 (the specification  was vague, and
-      the code incorrectly assumed UCS-4).
-
-    - Fixed the TrueType bytecode  loader to deal properly with subtle
-      monochrome/gray  issues  when   scaling  the  CVT.   Some  fonts
-      exhibited bad rendering artifacts otherwise.
-
-    - `FT_GlyphSlot_Embolden' now  supports vertical layouts correctly
-      (it mangled the vertical advance height).
-
-    - Fixed byte  endian issues  of `ftmac.c' to  support Mac OS  X on
-      i386.
-
-    - The  PFR  font loader  no  longer  erroneously  tags font  files
-      without any outlines as FT_FACE_FLAG_SCALABLE.
-
-
-  II. NEW API FUNCTIONS
-
-    - `FT_Library_SetLcdFilter' allows you  to select a special filter
-      to be  applied to the bitmaps generated  by `FT_Render_Glyph' if
-      one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
-      been  selected.  This filter  is used  to reduce  color fringes;
-      several  settings are  available  through the  FT_LCD_FILTER_XXX
-      enumeration.
-
-      Its  declaration   and  documentation  can  be   found  in  file
-      `include/freetype/ftlcdfil.h'   (to  be   accessed   with  macro
-      FT_LCD_FILTER_H).
-
-      *IMPORTANT*:     This      function     returns     an     error
-      (FT_Err_Unimplemented_Feature) in default  builds of the library
-      for patent reasons.  See below.
-
-    - `FT_Get_Gasp'  allows you  to query  the flags  of  the TrueType
-      `gasp' table for  a given character pixel size.   This is useful
-      to duplicate  the text rendering  of MS Windows when  the native
-      bytecode  interpreter is  enabled (which  isn't the  default for
-      other patent reasons).
-
-      Its  declaration   and  documentation  can  be   found  in  file
-      `include/freetype/ftgasp.h'   (to   be   accessed   with   macro
-      FT_GASP_H).
-
-
-  III. IMPORTANT CHANGES
-
-    - The auto-hinter has been tuned a lot to improve its results with
-      serif fonts, resulting in much better font rendering of many web
-      pages.
-
-    - The unpatented  hinter is now part  of the default  build of the
-      library; we  have added  code to automatically  support `tricky'
-      fonts that need it.
-
-      This means  that FreeType should `just work'  with certain Asian
-      fonts, like  MingLiU, which cannot properly be  loaded without a
-      bytecode interpreter,  but which fortunately  do not use  any of
-      the patented  bytecode opcodes.  We detect these  fonts by name,
-      so please  report any font file  that doesn't seem  to work with
-      FreeType, and  we shall do what we  can to support it  in a next
-      release.
-
-      Note  that  the API  hasn't  changed,  so  you can  still  force
-      unpatented hinting with a special parameter to `FT_Open_Face' as
-      well.  This  might be useful in  same cases; for  example, a PDF
-      reader might present  a user option to activate  it to deal with
-      certain  `tricky'   embedded  fonts  which   cannot  be  clearly
-      identified.
-
-      If you are  a developer for embedded systems,  you might want to
-      *disable*  the   feature  to  save  code   space  by  undefining
-      TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
-
-    - LCD-optimized rendering is now  *disabled* in all default builds
-      of  the  library,  mainly   due  to  patent  issues.   For  more
-      information see:
-
-      http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
-
-      A  new  configuration macro  FT_CONFIG_OPTION_SUBPIXEL_RENDERING
-      has been introduced in  `ftoption.h'; manually define it in this
-      file if you want to re-enable the feature.
-
-      The  change only  affects the  implementation, not  the FreeType
-      API.  This means that clients don't need to be modified, because
-      the library still generates  LCD decimated bitmaps, but with the
-      added constraint that R=G=B on each triplet.
-
-      The  displayed result  should  be equal  to normal  anti-aliased
-      rendering.
-
-      Additionally,  if   FT_CONFIG_OPTION_SUBPIXEL_RENDERING  is  not
-      defined, the new  `FT_Library_SetLcdFilter' function returns the
-      FT_Err_Unimplemented_Feature error code.
-
-    - Some computation bugs in  the TrueType bytecode interpreter were
-      found,  which  allow us  to  get rid  of  very  subtle and  rare
-      differences we had experienced with the Windows renderer.
-
-    - It is now possible to cross-compile the library easily.  See the
-      file `docs/INSTALL.CROSS' for details.
-
-    - The file `src/base/ftmac.c' now contains code for Mac OS X only;
-      its  deprecated function  `FT_GetFile_From_Mac_Font_Name' always
-      returns an  error even if the QuickDraw  framework is available.
-      The previous version has been moved to `builds/mac/ftmac.c'.
-
-      Selecting  configure option `--with-quickdraw-carbon'  makes the
-      build process use the original `ftmac.c' file instead of the Mac
-      OS X-only version.
-
-
-  IV. MISCELLANEOUS
-
-    - Various performance and memory footprint optimizations have been
-      performed on  the TrueType and CFF font  loaders, sometimes with
-      very drastic  benefits (e.g., the  TrueType loader is  now about
-      25% faster;  FreeType should use  less heap memory  under nearly
-      all conditions).
-
-    - The anti-aliased rasterizer has been optimized and is now 15% to
-      25%  percent  faster than  in  previous  versions, depending  on
-      content.
-
-    - The Type 1 loader has been improved; as an example, it now skips
-      top-level dictionaries properly.
-
-    - Better support for Mac  fonts on POSIX systems, plus compilation
-      fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
-
-    - Configuration  without `--with-old-mac-fonts'  does  not include
-      `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
-
-    - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
-      in the kern table.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.2.1 and 2.2
-
-  I. IMPORTANT BUG FIXES
-
-    - Various integer overflows have been fixed.
-
-    - PFB fonts with MacOS resource fork weren't  handled correctly on
-      non-MacOS platforms.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.2 and 2.1.10
-
-(not released officially)
-
-  I. IMPORTANT BUG FIXES
-
-    - Vertical metrics for SFNT fonts were incorrect sometimes.
-
-    - The FT_HAS_KERNING macro always returned 0.
-
-    - CFF OpenType  fonts didn't  return correct vertical  metrics for
-      glyphs with outlines.
-
-    - If FreeType was compiled without hinters, all font formats based
-      on PS outlines weren't scaled correctly.
-
-
-  II. IMPORTANT CHANGES
-
-    - Version 2.2 no longer exposes its internals, this is, the header
-      files  located in  the `include/freetype/internal'  directory of
-      the source package are not  copied anymore by the `make install'
-      command.  Consequently, a number of rogue clients which directly
-      access  FreeType's  internal   functions  and  structures  won't
-      compile without modification.
-
-      We provide  patches for  most of those  rogue clients.   See the
-      following page for more information:
-
-        http://www.freetype.org/freetype2/patches/rogue-patches.html
-
-      Note that, as  a convenience to our Unix  desktop users, version
-      2.2 is *binary* compatible with FreeType 2.1.7, which means that
-      installing this  release on  an existing distribution  shall not
-      break any working desktop.
-
-    - FreeType's build  mechanism has been redesigned.   With GNU make
-      it  is  now  sufficient  in   most  cases  to  edit  two  files:
-      `modules.cfg',  to  select   the  library  components,  and  the
-      configuration  file  `include/freetype/config/ftoption.h' (which
-      can be copied to the objects directory).  Removing unused module
-      directories   to    prevent   its   compilation    and   editing
-      `include/freetype/config/ftmodule.h' is no longer necessary.
-
-    - The  LIGHT  hinting algorithm  produces  more pleasant  results.
-      Also, using the  FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
-      always forces auto-hinting, as a special exception.  This allows
-      you to experiment with it  even if you have enabled the TrueType
-      bytecode interpreter in your build.
-
-    - The auto hinter now employs a new algorithm for CJK fonts, based
-      on Akito  Hirai's patch.   Note that this  only works  for fonts
-      with a Unicode charmap at the moment.
-
-    - The following callback function  types have changed slightly (by
-      adding the `const' keyword where appropriate):
-
-        FT_Outline_MoveToFunc
-        FT_Outline_LineToFunc
-        FT_Outline_ConicToFunc
-        FT_Outline_CubicToFunc
-        FT_SpanFunc
-        FT_Raster_RenderFunc
-
-        FT_Glyph_TransformFunc
-        FT_Renderer_RenderFunc
-        FT_Renderer_TransformFunc
-
-      Note that this doesn't affect binary backward compatibility.
-
-    - On MacOS,  new APIs have  been added as replacements  for legacy
-      APIs:  `FT_New_Face_From_FSRef'  for  `FT_New_Face_From_FSSpec',
-      and              `FT_GetFile_From_Mac_ATS_Name'              for
-      `FT_GetFile_From_Mac_Name'.  Legacy APIs are still available, if
-      FreeType is built without disabling them.
-
-    - A new  API `FT_Select_Size'  has been added  to select  a bitmap
-      strike  by its  index.   Code using  other  functions to  select
-      bitmap strikes should be updated to use this function.
-
-    - A  new API  `FT_Get_SubGlyph_Info'  has been  added to  retrieve
-      subglyph data.  This can be  used by rogue clients which used to
-      access the internal headers to get the corresponding data.
-
-    - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
-      BDF/PCF fonts,  and only  for them.  This  causes inconsistency.
-      In this release,  we undo the change.  The  intent of the change
-      in 2.1.10  is to allow  size selection through  real dimensions,
-      which can now be done through `FT_Request_Size'.
-
-    - Some security  issues were discovered  and fixed in the  CFF and
-      Type  1 loader, causing  crashes of  FreeType by  malformed font
-      files.
-
-
-  III. MISCELLANEOUS
-
-    - The documentation  for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
-      values now better reflects its usage and differences: One set is
-      used to specify the hinting algorithm, the other to specify  the
-      pixel rendering mode.
-
-    - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
-      changed to count supported scalable faces (sfnt, LWFN) only, and
-      to  return the  number of  available faces  via face->num_faces.
-      Unsupported bitmap faces (fbit, NFNT) are ignored.
-
-    - builds/unix/configure  has been  improved for  MacOS X.   It now
-      automatically checks available  functions in Carbon library, and
-      prepare to use newest  functions by default.  Options to specify
-      the  dependencies of  each Carbon  APIs (FSSpec,  FSRef, old/new
-      QuickDraw, ATS)  are available too.  By manual  disabling of all
-      QuickDraw   functionality,  FreeType   can   be  built   without
-      `deprecated   function'   warnings    on   MacOS   10.4.x,   but
-      FT_GetFile_Mac_Name  in  ftmac.c  then  is changed  to  a  dummy
-      function, and returns an `unimplemented' error.  For details see
-      builds/mac/README.
-
-    - SFNT cmap handling has been  improved, mainly to run much faster
-      with CJK fonts.
-
-    - A   new  function   `FT_Get_TrueType_Engine_Type   (declared  in
-      `FT_MODULE_H')  is  provided  to  determine the  status  of  the
-      TrueType   bytecode  interpreter   compiled  into   the  library
-      (patented, unpatented, unimplemented).
-
-    - Vertical metrics of glyphs are  synthesized if the font does not
-      provide such information.  You can tell whether  the metrics are
-      synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
-      the face.
-
-    - The demo programs  `ftview' and  `ftstring' have been  rewritten
-      for better readability.   `ftview' has a new switch `-p' to test
-      FT_New_Memory_Face (instead of FT_New_Face).
-
-    - FreeType now honours bit 1 in the `head' table of TrueType fonts
-      (meaning `left sidebearing point at x=0').  This helps with some
-      buggy fonts.
-
-    - Rudimentary support for Adobe's new `SING Glyphlet' format.  See
-
-        http://www.adobe.com/products/indesign/sing_gaiji.html
-
-      for more information.
-
-    - The `ftdump'  program from the `ft2demos' bundle  now shows some
-      information about charmaps.  It  also supports a new switch `-v'
-      to increase verbosity.
-
-    - Better AFM support.  This includes track kerning support.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.10 and 2.1.9
-
-  I. IMPORTANT BUG FIXES
-
-    - The size comparison for BDF and PCF files could fail sometimes.
-
-    - Some  CFF files  were still not  loaded  correctly.   Patch from
-      Derek Noonburg.
-
-    - The stroker still had some serious bugs.
-
-    - Boris  Letocha  fixed a  bug in  the  TrueType interpreter:  The
-      NPUSHW instruction wasn't skipped correctly in IF clauses.  Some
-      fonts like `Helvetica 75 Bold' failed.
-
-    - Another  serious  bug  in  handling  TrueType hints  caused many
-      distortions.  It has been introduced in version 2.1.8, and it is
-      highly recommended to upgrade.
-
-    - FreeType didn't properly parse empty Type 1 glyphs.
-
-    - An unbound dynamic buffer growth was fixed in the PFR loader.
-
-    - Several bugs have been fixed in the cache sub-system.
-
-    - FreeType behaved incorrectly when resizing two distinct but very
-      close character pixel sizes through `FT_Set_Char_Size' (Savannah
-      bug #12263).
-
-    - The auto-hinter didn't work properly for fonts without a Unicode
-      charmap -- it even refused to load the glyphs.
-
-
-  II. IMPORTANT CHANGES
-
-    - Many fixes have been applied to drastically reduce the amount of
-      heap   memory   used   by   FreeType,   especially   when  using
-      memory-mapped font files  (which is the default on Unix  systems
-      which support them).
-
-    - The auto-hinter  has been replaced with a new module, called the
-      `auto-fitter'.  It consumes  less memory  than its  predecessor,
-      and it is  prepared to support non-latin scripts  better in next
-      releases.
-
-    - George Williams  contributed code to read  kerning data from PFM
-      files.
-
-    - FreeType   now   uses    the   TT_NAME_ID_PREFERRED_FAMILY   and
-      TT_NAME_ID_PREFERRED_SUBFAMILY   strings   (if   available)  for
-      setting  family  and  style in SFNT  fonts  (patch from Kornfeld
-      Eliyahu Peter).
-
-    - A  new  API `FT_Sfnt_Table_Info'  (in FT_TRUETYPE_TABLES_H)  has
-      been added to retrieve name and size information of SFNT tables.
-
-    - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
-      been added to validate OpenType tables  (BASE, GDEF, GPOS, GSUB,
-      JSTF).   After validation  it is  no longer  necessary to  check
-      for errors in those tables while accessing them.
-
-      Note that  this module might  be moved to another library in the
-      future  to avoid  a tight  dependency between  FreeType and  the
-      OpenType specification.
-
-    - A new API in FT_BITMAP_H  (`FT_Bitmap_New', `FT_Bitmap_Convert',
-      `FT_Bitmap_Copy',  `FT_Bitmap_Embolden',  `FT_Bitmap_Done')  has
-      been added.   Its  use is  to convert an  FT_Bitmap structure in
-      1bpp, 2bpp,  4bpp, or 8bpp  format into  another 8bpp FT_Bitmap,
-      probably using a different pitch, and to further manipulate it.
-
-    - A new  API `FT_Outline_Embolden'  (in FT_OUTLINE_H) gives  finer
-      control how  outlines are embolded.
-
-    - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H)  now handles bitmaps
-      also (code contributed  by Chia I Wu).  Note that this  function
-      is still experimental and may be replaced with a better API.
-
-    - The method  how BDF and PCF  bitmap fonts  are accessed has been
-      refined.   Formerly,   FT_Set_Pixel_Sizes  and  FT_Set_Char_Size
-      were  synonyms in  FreeType's  BDF and PCF interface.  This  has
-      changed now.  FT_Set_Pixel_Sizes  should be  used to  select the
-      actual  font dimensions  (the `strike',  which is the sum of the
-      `FONT_ASCENT'    and    `FONT_DESCENT'    properties),     while
-      FT_Set_Char_Size  selects  the  `nominal' size  (the `PIXELSIZE'
-      property).  In both functions, the width parameter is ignored.
-
-
-  III. MISCELLANEOUS
-
-    - The BDF driver  no longer converts  all returned bitmaps  with a
-      depth of 2bpp or 4bpp to a depth of 8bpp.  The documentation has
-      not  mentioned  this  explicitly,  but  implementors  might have
-      relied on this after looking into the source files.
-
-    - A new option `--ftversion' has been  added to freetype-config to
-      return the FreeType version.
-
-    - The  memory  debugger  has  been  updated   to  dump  allocation
-      statistics on  all allocation  sources in the library.   This is
-      useful to  spot greedy  allocations when  loading and processing
-      fonts.
-
-    - We removed a huge array of constant pointers to constant strings
-      in the `psnames' module.   The problem was that  compilations in
-      PIC mode (i.e.,  when generating a  Unix shared object/dll)  put
-      the array  into the non-shared  writable section of  the library
-      since absolute pointers are not relocatable by nature.
-
-      This reduces the memory consumption by approximately 16KByte per
-      process linked  to FreeType.   We now also store  the array in a
-      compressed form (as a trie) which saves about 20KByte of code as
-      well.
-
-    - Kirill  Smelkov provided  patches to make  src/raster/ftraster.c
-      compile stand-alone again.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.9 and 2.1.8
-
-  I. IMPORTANT BUG FIXES
-
-    - The function  `FT_Get_CharMap_Index' was only declared,  without
-      any  real  code.   For  consistency,  it  has  been  renamed  to
-      `FT_Get_Charmap_Index'.   (This function is needed  to implement
-      cmap caches.)
-
-    - `FT_Outline_Get_BBox'  sometimes returned  incorrect values  for
-      conic outlines (e.g., for TrueType fonts).
-
-    - Handling of `bhed' table has been fixed.
-
-    - The TrueType driver with enabled byte code interpreter sometimes
-      returned artifacts due to incorrect rounding.  This bug has been
-      introduced after version 2.1.4.
-
-    - The BDF driver dropped the last glyph in the font.
-
-    - The BDF driver now uses the DEFAULT_CHAR property (if available)
-      to select a glyph shape for the undefined glyph.
-
-    - The stroker failed for closed outlines and single points.
-
-
-  II. IMPORTANT CHANGES
-
-    - George  Williams   contributed  code  to   handle  Apple's  font
-      distortion technology found in GX fonts (`avar', `cvar', `fvar',
-      and `gvar' tables;  the Multiple Masters  API has been  slightly
-      extended to cope with the new functionality).
-
-    - The `FT_GlyphSlotRec' structure has been extended:  The elements
-      `lsb_delta' and  `rsb_delta' give the difference  between hinted
-      and  unhinted  left and right  side bearings  if autohinting  is
-      active.  Using those values can improve the inter-letter spacing
-      considerably.   See the documentation of  `FT_GlyphSlotRec'  and
-      the `ftstring' demo program how to use it.
-
-    - Loading TrueType and Type 1 fonts has been made much faster.
-
-    - The stroker is  no longer experimental (but the  cache subsystem
-      still is).
-
-
-  III. MISCELLANEOUS
-
-    - A new  documentation file  `formats.txt' describes various  font
-      formats supported (and not supported) by FreeType.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.8 and 2.1.7
-
-  I. IMPORTANT BUG FIXES
-
-    - The native  TrueType hinter contained some  bugs which prevented
-      some fonts to be rendered correctly, most notably Legendum.otf.
-
-    - The PostScript hinter now produces improved results.
-
-    - The  linear advance  width  and height  values were  incorrectly
-      rounded,  making  them virtually  unusable  if  not loaded  with
-      FT_LOAD_LINEAR_DESIGN.
-
-    - Indexing CID-keyed CFF fonts is  now working: The glyph index is
-      correctly  treated as a  CID, similar  to FreeType's  CID driver
-      module.  Note that CID CMap support is still missing.
-
-    - The FT_FACE_FLAGS_GLYPH_NAMES flag is now  set correctly for all
-      font formats.
-
-    - Some subsetted Type 1  fonts weren't parsed correctly.  This bug
-      has been introduced in 2.1.7.  In summary, the Type 1 parser has
-      become more robust.
-
-    - Non-decimal numbers weren't parsed correctly in PS fonts.
-
-    - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
-      but one encoding.  Use  the new FT_WinFNT_ID_XXX values together
-      with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
-
-    - The descender metrics (face->size->metrics.descender) for WinFNT
-      bitmap fonts had the wrong sign.
-
-    - The (emulated) `seac' support for CFF fonts was broken.
-
-    - The `flex' operator didn't work for CFF fonts.
-
-    - PS glyphs  which  use  the   `hintmask'  operator  haven't  been
-      rendered correctly in some cases.
-
-    - Metrics for BDF and PCF bitmap font formats have been fixed.
-
-    - Autohinting  is now  disabled for  glyphs  which  are vertically
-      distorted  or mirrored  (using a  transformation matrix).   This
-      fixes a bug which produced zero-height glyphs.
-
-    - The   `freetype-config'   script   now  handles   --prefix   and
-      --exec-prefix correctly; it also  returns the proper --rpath (or
-      -R) value if FreeType has been built as a shared library.
-
-
-  II. IMPORTANT CHANGES
-
-    - Both  PCF  and BDF  drivers  now  handle  the SETWIDTH_NAME  and
-      ADD_STYLE_NAME    properties.     Values    are   appended    to
-      face->style_name; example: `Bold SemiCondensed'.
-
-    - The PCF driver now handles bitmap  fonts compressed with the LZW
-      algorithm (extension .pcf.Z, compressed with `compress').
-
-    - A  new  API   function  `FT_Get_CMap_Language_ID'  (declared  in
-      `tttables.h')  is  available  to   get  the  language  ID  of  a
-      TrueType/SFNT cmap.
-
-    - The hexadecimal format of  data after the `StartData' command in
-      CID-keyed Type 1 fonts is now supported.  While this can't occur
-      in  file-based   fonts,  it  can   happen  in  document-embedded
-      resources of PostScript documents.
-
-    - Embedded bitmaps in SFNT-based CFF fonts are now supported.
-
-    - A simple  API is  now available  to control  FreeType's  tracing
-      mechanism if compiled  with FT_DEBUG_LEVEL_TRACE.   See the file
-      `ftdebug.h' for more details.
-
-    - YAMATO Masatake contributed improved  handling of MacOS resource
-      forks on non-MacOS platforms (for example, Linux can mount MacOS
-      file systems).
-
-    - Support for MacOS has been improved; there is now a new function
-      `FT_New_Face_From_FSSpec'  similar to `FT_New_Face'  except that
-      it accepts an FSSpec instead of a path.
-
-    - The cache sub-system has been rewritten.
-
-      - There is now support for deinstallation of faces.
-
-      - A new  API function `FTC_Manager_RemoveFaceID'  has been added
-        to  delete  all  `idle'  nodes  that  correspond  to  a  given
-        FTC_FaceID.  All `locked' nodes  (i.e., those with a reference
-        count > 0), will be modified to prevent them from appearing in
-        further  lookups (they  will  be cleaned  normally when  their
-        reference count reaches 0).
-
-      - There  is  now  support  for point  scaling  (i.e.,  providing
-        character sizes in points + dpis, instead of pixels).
-
-      - Three abstract cache classes are now available:
-
-          FTC_GCache:  Used to store  one glyph  item per  cache node,
-                      with the ability to group common attributes into
-                      `families'.      This    replaces     the    old
-                      FTC_GlyphCache class.
-
-          FTC_ICache: Used to store one FT_Glyph per cache node.  This
-                      extends  FTC_GCache.  Family  definition, family
-                      comparison, and  glyph loading are  however left
-                      to sub-classes.
-
-          FTC_SCache: Used to  store up to 16 small  bitmaps per cache
-                      node.    This    extends   FTC_GCache.    Family
-                      definition, family  comparison and glyph loading
-                      are however left to sub-classes.
-
-      - The file `src/cache/ftcbasic.c' implements:
-
-          FTC_ImageCache: Extends    FTC_ICache;   implements   family
-                          definitions and glyph loading similar to the
-                          old API.
-
-          FTC_SBitCache: Extends    FTC_SCache,    implements   family
-                         definitions and glyph  loading similar to the
-                         old API
-
-        Client  applications  should  be  able to  extend  FTC_GCache,
-        FTC_ICache, or FTC_SCache much more easily (i.e., less code to
-        write, and  less callbacks).  For example,  one could envision
-        caches  that are  capable of  storing  transformed (obliqued),
-        stroked,   emboldened,   or   colored   glyph   images.    Use
-        `ftcbasic.c' as an example.
-
-      - All public  APIs are now  in `include/freetype/ftcache.h', (to
-        be    accessed   as    `FT_CACHE_H').     The   contents    of
-        `include/freetype/cache/' is only  needed by applications that
-        wish to implement their own caches.
-
-      - There were some major performance improvements through the use
-        of  various programming  tricks.   Cache hits  are  up to  70%
-        faster than in the old code.
-
-      - The  FTC_CMapCache has  been simplified.  Charmaps can only be
-        accessed by  index right now.  There  is also a  new API named
-        `FT_Charmap_GetIndex' for this purpose.
-
-      - The  demo programs  have been  updated to  the new  code.  The
-        previous versions will not work with the current one.
-
-      - Using  an invalid face  index in FT_Open_Face and friends  now
-        causes an error even if the font contains a single face only.
-
-
-  III. MISCELLANEOUS
-
-    - Wolfgang Domröse contributed support files for building FreeType
-      on the Atari using the PureC compiler.  Note that the Atari is a
-      16bit platform.
-
-    - Vitaliy Pasternak contributed project files for VS.NET 2003.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.7 and 2.1.6
-
-  I. IMPORTANT BUG FIXES
-
-    - Updated  to newest  libtool  version, fixing  build problems  on
-      various platforms.
-
-    - On  Unix  platforms,  `make  install' didn't  copy  the  correct
-      `ftconfig.h' file.
-
-  Note that version 2.1.7  contains the same library  C source code as
-  version 2.1.6.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.6 and 2.1.5
-
-  I. IMPORTANT BUG FIXES
-
-    - The PFR  font driver didn't  load kerning tables  correctly, and
-      the functions in FT_PFR_H didn't work at all.
-
-    - Type 1 font  files in  binary format  (PFB) with  an end-of-file
-      indicator weren't accepted by the FreeType engine.
-
-    - Fonts which contain /PaintType  and /StrokeWidth no longer cause
-      a segfault.  This bug has been introduced in version 2.1.5.
-
-    - Fonts  loaded  with   FT_LOAD_RENDER  no  longer  cause  strange
-      results.  This bug has been introduced in version 2.1.5.
-
-    - Some  Windows   (bitmap)  FNT/FON  files   couldn't  be  handled
-      correctly.
-
-
-  II. IMPORTANT CHANGES
-
-    - The internal  module API  has been heavily  changed in  favor of
-      massive simplifications within the font engine.  This also means
-      that authors of third-party modules must adapt their code to the
-      new scheme.
-
-      NOTE:  THE NEW SCHEME IS NOT COMPLETED YET.  PLEASE WAIT UNTIL A
-      FINAL ANNOUNCEMENT!
-
-    - The PostScript  parser has been enhanced to  handle comments and
-      strings   correctly.   Additionally,   more  syntax   forms  are
-      recognized.
-
-    - Added the  optional unpatented hinting system  for TrueType.  It
-      allows  typefaces which  need hinting  to produce  correct glyph
-      forms (e.g., Chinese typefaces  from Dynalab) to work acceptably
-      without infringing Apple patents.   This system is compiled only
-      if  TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING  is  defined  in
-      ftoption.h (activated by default).
-
-
-  III. MISCELLANEOUS
-
-    - There  is now  a guard  in the  public header  files  to protect
-      against inclusion of freetype.h from FreeType 1.
-
-    - Direct inclusion of freetype.h  and other public header files no
-      longer works.  You have to use the documented scheme
-
-        #include <ft2build.h>
-        #include FT_FREETYPE_H
-
-      to load freetype.h with  a symbolic name.  This protects against
-      renaming  of public  header  files (which  shouldn't happen  but
-      actually  has, avoiding two  public header  files with  the same
-      name).
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.5 and 2.1.4
-
-  I. IMPORTANT BUG FIXES
-
-    - Parsing the /CIDFontName field  now removes the leading slash to
-      be in sync with other font drivers.
-
-    - gzip support was buggy.  Some fonts could not be read.
-
-    - Fonts which  have nested subglyphs  more than one level  deep no
-      longer cause a segfault.
-
-    - Creation of synthetic  cmaps for fonts in CFF  format was broken
-      partially.
-
-    - Numeric  font  dictionary entries  for  synthetic  fonts are  no
-      longer overwritten.
-
-    - The font matrix  wasn't applied to the advance  width for Type1,
-      CID, and  CFF fonts.  This caused problems  when loading certain
-      synthetic Type 1 fonts like `Helvetica Narrow'.
-
-    - The test  for the charset registry  in BDF and PCF  fonts is now
-      case-insensitive.
-
-    - FT_Vector_Rotate  sometimes  returned   strange  values  due  to
-      rounding errors.
-
-    - The  PCF  driver  now  returns  the  correct  number  of  glyphs
-      (including an artificial `notdef' glyph at index 0).
-
-    - FreeType now  supports buggy CMaps  which are contained  in many
-      CJK fonts from Dynalab.
-
-    - Opening  an invalid  font  on a  Mac  caused a  segfault due  to
-      double-freeing memory.
-
-    - BDF  fonts  with  more   than  32768  glyphs  weren't  supported
-      properly.
-
-
-  II. IMPORTANT CHANGES
-
-    - Accessing bitmap font formats has been synchronized.  To do that
-      the FT_Bitmap_Size  structure has  been extended to  contain new
-      fields `size', `x_ppem', and `y_ppem'.
-
-    - The FNT driver now returns multiple faces, not multiple strikes.
-
-    - The `psnames'  module has been  updated to the Adobe  Glyph List
-      version 2.0.
-
-    - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
-
-    - The algorithm for guessing the font style has been improved.
-
-    - For fonts in SFNT format, root->height is no longer increased if
-      the line gap  is zero.  There exist fonts  (containing e.g. form
-      drawing  characters) which  intentionally have  a zero  line gap
-      value.
-
-    - ft_glyph_bbox_xxx  flags   are  now  deprecated   in  favour  of
-      FT_GLYPH_BBOX_XXX.
-
-    - ft_module_xxx   flags   are   now   deprecated  in   favour   of
-      FT_MODULE_XXX.
-
-    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}      are     now
-      deprecated               in               favour              of
-      FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB}  -- those encodings
-      are not specific to Microsoft.
-
-
-  III. MISCELLANEOUS
-
-    - The  autohinter  has been  further  improved;  for example,  `m'
-      glyphs now retain its vertical symmetry.
-
-    - Partial support of Mac fonts on non-Mac platforms.
-
-    - `make   refdoc'   (after   first   `make')   builds   the   HTML
-      documentation.  You need Python for this.
-
-    - The make build system should  now work more reliably on DOS-like
-      platforms.
-
-    - Support for  EMX gcc  and Watson C/C++  compilers on  MS-DOS has
-      been added.
-
-    - Better VMS build support.
-
-    - Support for the pkg-config  package by providing a `freetype.pc'
-      file.
-
-    - New configure option --with-old-mac-fonts for Darwin.
-
-    - Some source files have been  renamed (mainly to fit into the 8.3
-      naming scheme).
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.4 and 2.1.3
-
-  I. IMPORTANT BUG FIXES
-
-    - Updated  to newest  libtool  version, fixing  build problems  on
-      various platforms.
-
-    - A fix  in the Gzip stream  reader: It couldn't  read certain .gz
-      files properly due to a  small typo.  In certain cases, FreeType
-      could  also loop  endlessly  when trying  to  load tiny  gzipped
-      files.
-
-    - The configure script now tries  to use the system-wide zlib when
-      it  finds one  (instead of  the  copy found  in src/gzip).   And
-      `freetype-config' has  been updated to return  relevant flags in
-      this case when invoked with `--libs' (e.g. `-lzlib').
-
-    - Certain fonts couldn't be loaded  by 2.1.3 because they lacked a
-      Unicode   charmap  (e.g.   SYMBOL.TTF).    FreeType  erroneously
-      rejected them.
-
-    - The CFF loader was modified to accept fonts which only contain a
-      subset of  their reference charset.  This  prevented the correct
-      use of PDF-embedded fonts.
-
-    - The logic to detect Unicode charmaps has been modified.  This is
-      required to  support fonts which include both  16-bit and 32-bit
-      charmaps (like very  recent asian ones) using the  new 10 and 12
-      SFNT formats.
-
-    - The TrueType  loader now limits  the depth of  composite glyphs.
-      This is necessary to prevent broken fonts to break the engine by
-      blowing the stack with recursive glyph definitions.
-
-    - The CMap cache is now  capable of managing UCS-4 character codes
-      that   are   mapped   through   extended  charmaps   in   recent
-      TrueType/OpenType fonts.
-
-    - The   cache  sub-system   now  properly   manages  out-of-memory
-      conditions  instead of  blindly  reporting them  to the  caller.
-      This means that it will try to empty the cache before restarting
-      its allocations to see if that can help.
-
-    - The  PFR driver  didn't return  the list  of  available embedded
-      bitmaps properly.
-
-    - There was  a nasty  memory leak when  using embedded  bitmaps in
-      certain font formats.
-
-
-  II. IMPORTANT CHANGES
-
-    - David Chester  contributed some enhancements  to the auto-hinter
-      that  significantly increase  the  quality of  its output.   The
-      Postscript hinter was also improved in several ways.
-
-    - The FT_RENDER_MODE_LIGHT render mode was implemented.
-
-    - A new  API function called `FT_Get_BDF_Property'  has been added
-      to FT_BDF_H to  retrieve BDF properties from BDF  _and_ PCF font
-      files.   THIS  IS  STILL  EXPERIMENTAL,  since  it  hasn't  been
-      properly tested yet.
-
-    - A Windows FNT specific API has been added, mostly to access font
-      headers.  This is used by Wine.
-
-    - TrueType tables  without an `hmtx' table are  now tolerated when
-      an  incremental interface  is  used.  This  happens for  certain
-      Type42 fonts passed from Ghostscript to FreeType.
-
-    - The PFR font driver is  now capable of returning the font family
-      and style  names when  they are available  (instead of  the sole
-      `FontID').   This  is  performed  by parsing  an  *undocumented*
-      portion of the font file!
-
-
-  III. MISCELLANEOUS
-
-    - The path stroker in FT_STROKER_H has entered beta stage.  It now
-      works very  well, but  its interface might  change a bit  in the
-      future.  More on this in later releases.
-
-    - The documentation for  FT_Size_Metrics didn't appear properly in
-      the API reference.
-
-    - The file docs/VERSION.DLL has been updated to explain versioning
-      with FreeType  (i.e., comparing release/libtool/so  numbers, and
-      how to use them in autoconf scripts).
-
-    - The  installation  documentation  has been  seriously  revamped.
-      Everything is now in the `docs' directory.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.3 and 2.1.2
-
-  I. IMPORTANT BUG FIXES
-
-    - FT_Vector_Transform  had  been  incorrectly modified  in  2.1.2,
-      resulting  in  incorrect   transformations  being  applied  (for
-      example, rotations were processed in opposite angles).
-
-    - The format  8 and 12 TrueType charmap  enumeration routines have
-      been fixed (FT_Get_Next_Char returned invalid values).
-
-    - The  PFR font driver  returned incorrect  advance widths  if the
-      outline  and metrics resolution  defined in  the font  file were
-      different.
-
-    - FT_Glyph_To_Bitmap now returns  successfully when called with an
-      FT_BitmapGlyph argument (it previously returned an error).
-
-    - A bug  in the Type 1  loader that prevented  valid font bounding
-      boxes to be loaded from multiple master fonts.
-
-    - The SFNT  validation code has been rewritten.   FreeType can now
-      load `broken'  fonts that were  usable on Windows, but  not with
-      previous versions of the library.
-
-    - The computation of bearings in the BDF driver has been fixed.
-
-    - The Postscript hinter crashed when trying to hint certain glyphs
-      (more precisely,  when trying to  apply hints to an  empty glyph
-      outline).
-
-    - The  TrueType glyph  loader  now supports  composites in  `Apple
-      format'  (they differ slightly  from Microsoft/OpenType  ones in
-      the way transformation offsets are computed).
-
-    - FreeType was  very slow at opening certain  asian CID/CFF fonts,
-      due to  fixed increment  in dynamic array  re-allocations.  This
-      has  been changed  to  exponential behaviour  to get  acceptable
-      performance.
-
-
-
-  II. IMPORTANT CHANGES
-
-    - The PCF driver now supports gzip-compressed font files natively.
-      This means that  you will be able to use  all these bitmap fonts
-      that  come with  XFree86 with  FreeType (and  libXft/libXft2, by
-      extension).
-
-    - The  automatic and  postscript hinters  have both  been updated.
-      This  results in  a relatively  important increase  of rendering
-      quality since  many nasty defaults have been suppressed.  Please
-      visit the web page:
-
-        http://www.freetype.org/hinting/smooth-hinting.html
-
-      for additional details on this topic.
-
-    - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
-      (instead  of just  being  an FT_Int).   This  breaks source  and
-      binary  compatibility for  16bit systems  only,  while retaining
-      both of them for 32 and 64 bit ones.
-
-      Some new flags have been added consequently:
-
-        FT_LOAD_NO_AUTOHINT   :: Disable the use of the auto-hinter
-                                 (but not native format hinters).
-
-        FT_LOAD_TARGET_NORMAL :: Hint and render for normal
-                                 anti-aliased displays.
-
-        FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
-
-        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
-                                 BGR sub-pixel displays (like LCD
-                                 screens).  THIS IS STILL
-                                 EXPERIMENTAL!
-
-        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
-                                 vertical sub-pixel displays (like
-                                 rotated LCD screens).  THIS IS STILL
-                                 EXPERIMENTAL!
-
-      FT_LOAD_MONOCHROME   is  still   supported,  but   only  affects
-      rendering, not the hinting.
-
-      Note that the `ftview'  demo program available in the `ft2demos'
-      package  has been  updated to  support LCD-optimized  display on
-      non-paletted displays (under Win32 and X11).
-
-    - The  PFR  driver  now  supports embedded  bitmaps  (all  formats
-      supported), and returns correct kerning metrics for all glyphs.
-
-    - The TrueType charmap loader  now supports certain `broken' fonts
-      that load under Windows without problems.
-
-    - The cache API has been slightly modified (it's still a beta!):
-
-       - The type  FTC_ImageDesc has been removed; it  is now replaced
-         by  FTC_ImageTypeRec.   Note that  one  of  its  fields is  a
-         `load_flag' parameter for FT_Load_Glyph.
-
-       - The  field  `num_grays' of  FT_SBitRec  has  been changed  to
-         `max_grays'  in  order to  fit  within  a  single byte.   Its
-         maximum value is thus 255 (instead of 256 as previously).
-
-
-  III. MISCELLANEOUS
-
-    - Added support  for the  DESTDIR variable during  `make install'.
-      This simplifies packaging of FreeType.
-
-    - Included modified  copies of the  ZLib sources in  `src/gzip' in
-      order to support  gzip-compressed PCF fonts.  We do  not use the
-      system-provided  zlib  for  now,   though  this  is  a  probable
-      enhancement for future releases.
-
-    - The DocMaker tool used to generate the on-line API reference has
-      been   completely    rewritten.    It   is    now   located   in
-      `src/tools/docmaker/docmaker.py'.  Features:
-
-        - better cross-referenced output
-        - more polished output
-        - uses Python regular expressions  (though it didn't speed the
-          program)
-        - much  more  modular structure,  which  allows for  different
-          `backends'  in  order to  generate  HTML,  XML, or  whatever
-          format.
-
-      One can regenerate the API reference by calling:
-
-         python src/tools/docmaker/docmaker.py \
-                --prefix=ft2 \
-                --title=FreeType-2.1.3 \
-                --output=<outputdirectory>
-                include/freetype/*.h \
-                include/freetype/config/*.h \
-                include/freetype/cache/*.h
-
-    - A new, experimental, support for incremental font loading (i.e.,
-      loading  of fonts  where the  glyphs are  not in  the  font file
-      itself, but provided by an external component, like a Postscript
-      interpreter) has been added by Graham Asher.  This is still work
-      in progress, however.
-
-    - A new,  EXPERIMENTAL, path stroker  has been added.   It doesn't
-      suffer  from  severe  rounding  errors  and  treat  bezier  arcs
-      directly.  Still work in progress (i.e. not part of the official
-      API).   See  the file  <freetype/ftstroker.h>  for  some of  the
-      details.
-
-    - The massive  re-formatting of sources and  internal re-design is
-      still under-way.  Many  internal functions, constants, and types
-      have been renamed.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.2 and 2.1.1
-
-  I. IMPORTANT BUG FIXES
-
-    - Many  font drivers didn't  select a  Unicode charmap  by default
-      when a new face  was opened (with the FT_CONFIG_OPTION_USE_CMAPS
-      options enabled),  causing many applications  to not be  able to
-      display text correctly with the 2.1.x releases.
-
-    - The  PFR driver had  a bug  in its  composite loading  code that
-      produces incorrectly placed accents with many fonts.
-
-    - The Type42 driver crashed sometimes due to a nasty bug.
-
-    - The Type 1 custom encoding  charmap didn't handle the case where
-      the first glyph index wasn't 0.
-
-    - A  serious  typo  in  the  TrueType  composite  loader  produced
-      incorrectly placed  glyphs in fonts  like `Wingdings' and  a few
-      others.
-
-
-  II. MISCELLANEOUS
-
-    - The Win32  Visual C++ project  file has been updated  to include
-      the PFR driver as well.
-
-    - `freetype.m4' is  now installed by default by  `make install' on
-      Unix systems.
-
-    - The function  FT_Get_PS_Font_Info now works with  CID and Type42
-      fonts as well.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.1 and 2.1.0
-
-  I. IMPORTANT BUG FIXES
-
-    - The  `version_info'  returned   by  `freetype-config'  in  2.1.0
-      returned an invalid value.  It now returns 9:1:3 (2.0.9 returned
-      9:0:3).
-
-    - Version 2.1.0  couldn't be linked against  applications on Win32
-      and  Amiga systems  due  to  a new  debug  function that  wasn't
-      properly   propagated  to   the  system-specific   directory  in
-      `builds'.
-
-    - Various MacOS and Mac OS X specific fixes.
-
-    - Fixed  a bug in  the TrueType  charmap validation  routines that
-      made version  2.1.0 too restrictive  -- many popular  fonts have
-      been rejected.
-
-    - There was  still a very small difference  between the monochrome
-      glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
-      bytecode  interpreter enabled.   This was  caused by  an invalid
-      flag setting in the TrueType glyph loader, making the rasterizer
-      change  its  drop-out   control  mode.   Now  the results should
-      _really_ be completely identical.
-
-    - The TrueType name table loader has been improved to support many
-      popular  though buggy Asian  fonts.  It  now ignores  empty name
-      entries,  invalid  pointer offsets  and  a  few other  incorrect
-      subtleties.  Moreover,  name strings  are now loaded  on demand,
-      which reduces the memory load  of many faces (e.g. the ARIAL.TTF
-      font file contains a 10kByte name table with 70 names).
-
-    - Fixed a bug in the Postscript hinter that prevented family blues
-      substitution to happen correctly.
-
-
-  II. NEW FEATURES
-
-    - Three new font drivers in this release:
-
-      * A  BDF  font driver,  contributed  by  Franco Zappa  Nardelli,
-        heavily  modified   by  Werner  Lemberg.    It  also  supports
-        anti-aliased bitmaps (using a slightly extended BDF format).
-
-      * A Type42  font driver, contributed by Roberto  Alameda.  It is
-        still experimental but seems to work relatively well.
-
-      * A PFR  font driver, contributed  by David Turner  himself.  It
-        doesn't  support PFR  hinting --  note that  BitStream  has at
-        least two patents on this format!
-
-
-  III. MISCELLANEOUS
-
-    - The  cache  sub-system has  been  optimized  in important  ways.
-      Cache hits are now significantly faster.  For example, using the
-      CMap cache is about  twice faster than calling FT_Get_Char_Index
-      on most platforms.  Similarly, using an SBit cache is about five
-      times faster  than loading the  bitmaps from a bitmap  file, and
-      300 to  500 times  faster than generating  them from  a scalable
-      format.
-
-      Note that  you should recompile  your sources if you  designed a
-      custom  cache  class for  the  FT2  Cache  subsystem, since  the
-      changes performed are source, but not binary, compatible.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.1.0 and 2.0.9
-
-  I. IMPORTANT BUG FIXES
-
-    - The  TrueType bytecode  interpreter  has been  fixed to  produce
-      _exactly_ the same output as FreeType 1.x.  Previous differences
-      were due  to slightly distinct  fixed-point computation routines
-      used to perform dot products and vector length measurements.
-
-      It seems  that native TrueType hinting  is _extremely_ sensitive
-      to  rounding errors.  The  required vector  computation routines
-      have been optimized and placed within the `ttinterp.c' file.
-
-    - Fixed the parsing of accelerator tables in the PCF font driver.
-
-    - Fixed the Type1 glyph loader  routine used to compute the font's
-      maximum advance width.
-
-
-  II. NEW FEATURES
-
-    - The `configure' script used on Unix systems has been modified to
-      check  that  GNU  Make  is  being used  to  build  the  library.
-      Otherwise,  it  will display  a  message  proposing  to use  the
-      GNUMAKE environment variable to name it.
-
-      The Unix-specific file README.UNX has been modified accordingly.
-
-
-  III. MISCELLANEOUS
-
-    - The  FreeType  License in  `docs/FTL.TXT'  has  been updated  to
-      include  a  proposed preferred  disclaimer.   If  you are  using
-      FreeType in your products, you are encouraged (but not mandated)
-      to use the following text in your documentation:
-
-      """
-        Portions of this software are copyright © 1996-2002 The
-        FreeType Project (www.freetype.org).  All rights reserved.
-      """
-
-    - The default size of the render pool has been reduced to 16kByte.
-      This  shouldn't result  in any  noticeable  performance penalty,
-      unless you are  using the engine as-is to  render very large and
-      complex glyphs.
-
-    - The  FreeType 2  redesign has  begun.  More  information  can be
-      found at this URL:
-
-        http://www.freetype.org/freetype2/redesign.html
-
-      The following  internal changes  have been performed  within the
-      sources of this release:
-
-        - Many   internal  types   have  been   renamed   to  increase
-          consistency.   The  following  should  be true,  except  for
-          public types:
-
-            * All structure  types have a name ending  in `Rec' (short
-              for `record').
-
-            * A  pointer-to-structure type  has the  same name  as the
-              structure, _without_ the `Rec' suffix.
-
-              Example:
-
-                typedef struct FooRec_
-                {
-                  ...
-
-                } FooRec, *Foo;
-
-        - Many   internal  macros  have   been  renamed   to  increase
-          consistency.  The following should be true:
-
-            * All  macros  have a  name  beginning  with `FT_'.   This
-              required a few changes like
-
-                ALLOC   => FT_ALLOC
-                FREE    => FT_FREE
-                REALLOC => FT_REALLOC
-
-            * All  macros are completely  UPPERCASE.  This  required a
-              few changes like:
-
-                READ_Short  => FT_READ_SHORT
-                NEXT_Short  => FT_NEXT_SHORT
-                GET_ULongLE => FT_GET_ULONG_LE
-                MEM_Set     => FT_MEM_SET
-                MEM_Copy    => FT_MEM_COPY
-                etc.
-
-            * Whenever   possible,   all   macro  names   follow   the
-              FT_<OBJECT>_<METHOD> pattern.  For example
-
-                ACCESS_Frame   => FT_FRAME_ENTER
-                FORGET_Frame   => FT_FRAME_EXIT
-                EXTRACT_Frame  => FT_FRAME_EXTRACT
-                RELEASE_Frame  => FT_FRAME_RELEASE
-
-                FILE_Pos       => FT_STREAM_POS
-                FILE_Seek      => FT_STREAM_SEEK
-                FILE_Read      => FT_STREAM_READ
-                FILE_ReadAt    => FT_STREAM_READ_AT
-                READ_Fields    => FT_STREAM_READ_FIELDS
-
-        - Many  internal functions  have  been renamed  to follow  the
-          FT_<Object>_<Method> pattern.  For example:
-
-            FT_Seek_Stream       => FT_Stream_Seek
-            FT_Read_Stream_At    => FT_Stream_ReadAt
-            FT_Done_Stream       => FT_Stream_Close
-            FT_New_Stream        => FT_Stream_Open
-            FT_New_Memory_Stream => FT_Stream_OpenMemory
-            FT_Extract_Frame     => FT_Stream_ExtractFrame
-
-          Note that method names do not contain `_'.
-
-        - The FT_ALLOC_ARRAY  and FT_REALLOC_ARRAY have  been replaced
-          with  FT_NEW_ARRAY and  FT_RENEW_ARRAY which  do not  take a
-          type  as the  fourth argument.   Instead, the  array element
-          type  size is computed  automatically from  the type  of the
-          target pointer used.
-
-        - A  new object  class, FT_CMap,  has been  introduced.  These
-          internal  objects are  used to  model character  maps.  This
-          eases  the support  of additional  charmap types  within the
-          engine.
-
-        - A new  configuration file named `ftstdlib.h'  has been added
-          to `include/freetype/config'.  It  is used to define aliases
-          for  _every_ routine  of the  ISO  C library  that the  font
-          engine   uses.    Each    aliases   has   a   `ft_'   prefix
-          (e.g. `ft_strlen' is an alias for `strlen').
-
-          This is  used to  ease the porting  of FreeType 2  to exotic
-          runtime environments where the ISO C Library isn't available
-          (e.g.  XFree86 extension modules).
-
-      More details are available in the `ChangeLog' file.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.9 and 2.0.8
-
-  I. IMPORTANT BUG FIXES
-
-    - Certain fonts like `foxjump.ttf' contain broken name tables with
-      invalid entries and wild offsets.  This caused FreeType to crash
-      when trying to load them.
-
-      The  SFNT `name'  table  loader has  been  fixed to  be able  to
-      support these strange fonts.
-
-      Moreover, the code  in charge of processing this  table has been
-      changed  to always favour  Windows-formatted entries  over other
-      ones.  Hence,  a font that works  on Windows but not  on the Mac
-      will  load cleanly in  FreeType and  report accurate  values for
-      Family & PostScript names.
-
-    - The CID font driver has been fixed.  It unfortunately returned a
-      Postscript   Font   name   with   a   leading   slash,   as   in
-      `/MunhwaGothic-Regular'.
-
-    - FreeType  2 should now  compile fine  on AIX  4.3.3 as  a shared
-      library.
-
-    - A  bug  in the  Postscript  hinter  has  been found  and  fixed,
-      removing un-even stem widths at small pixel sizes (like 14-17).
-
-      This  improves the  quality of  a certain  number  of Postscript
-      fonts.
-
-
-  II. NEW FEATURES
-
-    - A  new function  named  `FT_Library_Version' has  been added  to
-      return  the current  library's major,  minor, and  patch version
-      numbers.   This is  important since  the  macros FREETYPE_MAJOR,
-      FREETYPE_MINOR,  and  FREETYPE_PATCH  cannot  be used  when  the
-      library is dynamically linked by a program.
-
-    - Two   new  APIs   have  been   added:   `FT_Get_First_Char'  and
-      `FT_Get_Next_Char'.
-
-      Together,  these can  be used  to iterate  efficiently  over the
-      currently  selected  charmap of  a  given  face.   Read the  API
-      reference for more details.
-
-
-  III. MISCELLANEOUS
-
-    - The FreeType sources are  under heavy internal re-factoring.  As
-      a consequence,  we have created  a branch named `STABLE'  on the
-      CVS to hold all future releases/fixes in the 2.0.x family.
-
-      The  HEAD  branch  now  contains  the  re-factored  sources  and
-      shouldn't  be used for  testing or  packaging new  releases.  In
-      case you  would like  to access the  2.0.9 sources from  our CVS
-      repository, use the tag `VER-2-0-9'.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.8 and 2.0.7
-
-  I. IMPORTANT BUG FIXES
-
-    - There was  a small but  nasty bug in  `freetype-config.in' which
-      caused the `freetype-config' script to fail on Unix.
-
-      This didn't prevent the installation  of the library or even its
-      execution, but caused problems  when trying to compile many Unix
-      packages that depend on it.
-
-    - Some TrueType or OpenType fonts embedded in PDF documents do not
-      have  a  'cmap',  'post'  and  'name'  as  is  required  by  the
-      specification.  FreeType no longer refuses to load such fonts.
-
-    - Various fixes to the PCF font driver.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.7 and 2.0.6
-
-  I. IMPORTANT BUG FIXES
-
-    - Fixed  two  bugs in  the  Type 1  font  driver.   The first  one
-      resulted in a memory leak in subtle cases.  The other one caused
-      FreeType to crash when  trying to load `.gsf' files (Ghostscript
-      so-called Postscript fonts).
-
-      (This  made _many_  KDE applications  crash on  certain systems.
-       FreeType _is_ becoming a critical system component on Linux :-)
-
-    - Fixed a memory leak in the CFF font driver.
-
-    - Fixed a memory leak in the PCF font driver.
-
-    - Fixed       the        Visual       C++       project       file
-      `builds/win32/visualc/freetype.dsp' since  it didn't include the
-      Postscript hinter component, causing errors at build time.
-
-    - Fixed a  small rendering bug  in the anti-aliased  renderer that
-      only  occurred when  trying to  draw  thin (less  than 1  pixel)
-      strokes.
-
-    - Fixed  `builds/unix/freetype2.a4' which  is used  to  generate a
-      valid `freetype2.m4' for use with autoconf.
-
-    - Fixed the OpenVMS Makefiles.
-
-
-  II. MISCELLANEOUS
-
-    - Added  `configure'  and   `install'  scripts  to  the  top-level
-      directory.  A GNU-style installation is thus now easily possible
-      with
-
-        ./configure  <options>
-        make
-        make install
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.6 and 2.0.5
-
-  I. IMPORTANT BUG FIXES
-
-    - It wasn't possible to load embedded bitmaps when the auto-hinter
-      was used.  This is now fixed.
-
-    - The TrueType  font driver  didn't load some  composites properly
-      (the  sub-glyphs  were  slightly  shifted,  and  this  was  only
-      noticeable when using monochrome rendering).
-
-    - Various  fixes  to the  auto-hinter.   They  merely improve  the
-      output of sans-serif fonts.   Note that there are still problems
-      with serifed fonts and composites (accented characters).
-
-    - All scalable  font drivers erroneously  returned un-fitted glyph
-      advances when hinting was  requested.  This created problems for
-      a number  of layout applications.  This  is a very  old bug that
-      got  undetected mainly  because most  test/demo  program perform
-      rounding explicitly or implicitly (through the cache).
-
-    - `FT_Glyph_To_Bitmap' did erroneously  modify the source glyph in
-      certain cases.
-
-    - `glnames.py'  still contained  a bug  that made  FreeType return
-      invalid names for certain glyphs.
-
-    - The  library crashed  when  loading certain  Type  1 fonts  like
-      `sadn.pfb'  (`Stalingrad  Normal'),   which  appear  to  contain
-      pathetic font info dictionaries.
-
-    - The TrueType glyph  loader is now much more  paranoid and checks
-      everything when loading a given glyph image.  This was necessary
-      to avoid problems (crashes and/or memory overwrites) with broken
-      fonts that came from a really buggy automatic font converter.
-
-
-  II. IMPORTANT UPDATES AND NEW FEATURES
-
-    - Important updates to the Mac-specific parts of the library.
-
-    - The caching sub-system has  been completely re-designed, and its
-      API has  evolved (the  old one is  still supported  for backward
-      compatibility).
-
-      The documentation for it is  not yet completed, sorry.  For now,
-      you are encouraged to continue  using the old API.  However, the
-      ftview  demo program in  the ft2demos  package has  already been
-      updated to use the new caching functions.
-
-    - A new charmap cache is provided too.  See `FTC_CMapCache'.  This
-      is useful to perform  character code -> glyph index translations
-      quickly, without the need for an opened FT_Face.
-
-    - A NEW POSTSCRIPT HINTER module  has been added to support native
-      hints in  the following  formats: PostScript Type  1, PostScript
-      CID, and CFF/CEF.
-
-      Please test!  Note that  the auto-hinter produces better results
-      for a number of  badly-hinted fonts (mostly auto-generated ones)
-      though.
-
-    - A memory debugger is now  part of the standard FreeType sources.
-      To      enable      it,      define      FT_DEBUG_MEMORY      in
-      <freetype/config/ftoption.h>, and recompile the library.
-
-      Additionally, define  the _environment_ variable FT_DEBUG_MEMORY
-      and run any program using FreeType.  When the library is exited,
-      a  summary  of memory  footprints  and  possible  leaks will  be
-      displayed.
-
-      This works transparently with  _any_ program that uses FreeType.
-      However, you  will need a lot  of memory to  use this (allocated
-      blocks are never  released to the heap to  detect double deletes
-      easily).
-
-
-  III. MISCELLANEOUS
-
-    - We  are  aware  of  subtle  differences between  the  output  of
-      FreeType  versions   1  and  2  when  it   comes  to  monochrome
-      TrueType-hinted glyphs.   These are  most probably due  to small
-      differences in the monochrome rasterizers and will be worked out
-      in an upcoming release.
-
-    - We have decided to fork the sources in a `stable' branch, and an
-      `unstable' one, since FreeType  is becoming a critical component
-      of many Unix systems.
-
-      The next  bug-fix releases of  the library will be  named 2.0.7,
-      2.0.8, etc.,  while the `2.1'  branch will contain a  version of
-      the sources where we will start major reworking of the library's
-      internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
-      more distant future.
-
-      We  also hope  that this  scheme will  allow much  more frequent
-      releases than in the past.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.5 and 2.0.4
-
-  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE
-  WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
-
-  - Fixed a bug that made  certain glyphs, like `Cacute', `cacute' and
-    `lslash'  unavailable from Unicode  charmaps of  Postscript fonts.
-    This prevented the correct display of Polish text, for example.
-
-  - The kerning table of Type 1 fonts was loaded by FreeType, when its
-    AFM    file    was    attached    to    its    face,    but    the
-    FT_FACE_FLAG_HAS_KERNING   bit  flags   was  not   set  correctly,
-    preventing FT_Get_Kerning to return meaningful values.
-
-  - Improved  SFNT (TrueType  & OpenType)  charmap  support.  Slightly
-    better performance, as well as support for the new formats defined
-    by the OpenType 1.3 specification (8, 10, and 12)
-
-  - Fixed a  serious typo in `src/base/ftcalc.c'  which caused invalid
-    computations in certain rare cases, producing ugly artefacts.
-
-  - The  size  of the  EM  square is  computed  with  a more  accurate
-    algorithm for Postscript fonts.   The old one caused slight errors
-    with embedded fonts found in PDF documents.
-
-  - Fixed  a  bug in  the  cache  manager  that prevented  normal  LRU
-    behaviour  within the cache  manager, causing  unnecessary reloads
-    (for FT_Face and FT_Size objects only).
-
-  - Added  a new  function named  `FT_Get_Name_Index' to  retrieve the
-    glyph index of a given glyph name, when found in a face.
-
-  - Added  a new function  named `FT_Get_Postscript_Name'  to retrieve
-    the `unique' Postscript font name of a given face.
-
-  - Added   a   new   public   header  size   named   FT_SIZES_H   (or
-    <freetype/ftsizes.h>) providing  new FT_Size-management functions:
-    FT_New_Size, FT_Activate_Size, FT_Done_Size.
-
-  - Fixed a  reallocation bug that  generated a dangling  pointer (and
-    possibly    memory    leaks)    with    Postscript    fonts    (in
-    src/psaux/psobjs.c).
-
-  - Many fixes for 16-bit correctness.
-
-  - Removed many pedantic compiler warnings from the sources.
-
-  - Added an Amiga build directory in `builds/amiga'.
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.4 and 2.0.3
-
-  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely,
-    the font  transformation set through  FT_Set_Transform was applied
-    twice to auto-hinted glyphs, resulting in incorrectly rotated text
-    output.
-
-  - Fixed _many_  compiler warnings.   FT2 should now  compile cleanly
-    with Visual  C++'s most pedantic warning level  (/W4).  It already
-    compiled fine with GCC and a few other compilers.
-
-  - Fixed a bug  that prevented the linear advance  width of composite
-    TrueType glyphs to be correctly returned.
-
-  - Fixed    the    Visual    C++    project    files    located    in
-    `builds/win32/visualc' (previous versions  used older names of the
-    library).
-
-  - Many  32-bit constants  have an  `L' appended  to their  value, in
-    order to improve the 16-bitness  of the code.  Someone is actually
-    trying to use FT2 on an Atari ST machine!
-
-  - Updated  the  `builds/detect.mk' file  in  order to  automatically
-    build FT2  on AIX systems.   AIX uses `/usr/sbin/init'  instead of
-    `/sbin/init' and wasn't previously  detected as a Unix platform by
-    the FreeType build system.
-
-  - Updated  the  Unix-specific  portions  of the  build  system  (new
-    libtool version, etc.).
-
-  - The  SFNT kerning  loader now  ensures  that the  table is  sorted
-    (since some problem fonts do not meet this requirement).
-
-
-=======================================================================
-
-CHANGES BETWEEN 2.0.3 and 2.0.2
-
-  I. CHANGES TO THE MODULES / FONT DRIVERS
-
-    - THE  AUTO-HINTER HAS  BEEN SLIGHTLY  IMPROVED, in  order  to fix
-      several annoying artefacts, mainly:
-
-        - Blue  zone alignment  of  horizontal stems  wasn't performed
-          correctly, resulting in artefacts  like the `d' being placed
-          one pixel below the `b' in some fonts like Time New Roman.
-
-        - Overshoot thresholding  wasn't performed correctly, creating
-          unpleasant artefacts at large character pixel sizes.
-
-        - Composite glyph loading has  been simplified.  This gets rid
-          of  various artefacts  where the  components of  a composite
-          glyphs were not correctly spaced.
-
-      These are  the last changes to the  current auto-hinting module.
-      A new  hinting sub-system is currently  in the work  in order to
-      support native hints  in Type 1 / CFF /  OpenType fonts, as well
-      as globally improve rendering.
-
-    - The  PCF  driver has  been  fixed.   It  reported invalid  glyph
-      dimensions for the fonts available on Solaris.
-
-    - The Type  1, CID and CFF  drivers have been modified  to fix the
-      computation of the EM size.
-
-    - The Type 1  driver has been fixed to avoid  a dangerous bug that
-      crashed the library with non-conforming fonts (i.e. ones that do
-      not place the .notdef glyph at position 0).
-
-    - The TrueType  driver had a  rather subtle bug  (dangling pointer
-      when loading  composite glyphs) that could crash  the library in
-      rare occasions!
-
-
-  II. HIGH-LEVEL API CHANGES
-
-    - The error  code enumeration values have been  changed.  An error
-      value  is decomposed  in  a  generic error  code,  and a  module
-      number.  see <freetype/fterrors.h> for details.
-
-    - A   new  public   header   file  has   been  introduced,   named
-      FT_TRIGONOMETRY_H     (include/freetype/fttrig.h),     providing
-      trigonometric functions to  compute sines, cosines, arctangents,
-      etc. with 16.16 fixed precision.  The implementation is based on
-      the CORDIC  algorithm and is very fast  while being sufficiently
-      accurate.
-
-
-  III. INTERNALS
-
-    - Added  BeOS-specific files  in the  old build  sub-system.  Note
-      that no changes were required to compile the library with Jam.
-
-    - The  configuration  is now  capable  of automatically  detecting
-      64-bit integers  on a set  of predefined compilers  (GCC, Visual
-      C++, Borland C++) and will use them by default.  This provides a
-      small performance boost.
-
-    - A  small memory leak  that happened  when opening  0-sized files
-      (duh!)  have been fixed.
-
-    - Fixed bezier  stack depth  bug in the  routines provided  by the
-      FT_BBOX_H  header   file.   Also  fixed  similar   bugs  in  the
-      rasterizers.
-
-    - The outline bounding  box code has been rewritten  to use direct
-      computations,  instead of  bezier sub-division,  to  compute the
-      exact bounding box of glyphs.   This is slightly slower but more
-      accurate.
-
-    - The build system has been  improved and fixed, mainly to support
-      `make'  on Windows  2000  correctly, avoid  problems with  `make
-      distclean' on non Unix systems, etc.
-
-    - Hexadecimal  constants  have been  suffixed  with  `U' to  avoid
-      problems with certain compilers on 64-bit platforms.
-
-    - A new directory named `src/tools' has been created.  It contains
-      Python scripts and simple unit test programs used to develop the
-      library.
-
-    - The DocMaker tool has been  moved from `docs' to `src/tools' and
-      has been updated with the following:
-
-         - Now accepts the `--title=XXXX' or `-t XXXX' option from the
-           command line to set the project's name in the generated API
-           reference.
-
-         - Now accepts the `--output=DIR'  or `-o DIR' option from the
-           command line to set  the output directory for all generated
-           HTML files.
-
-         - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
-           command  line  to  set  the  file prefix  to  use  for  all
-           generated HTML files.
-
-         - Now generates the current  time/data on each generated page
-           in order to distinguish between versions.
-
-      DocMaker  can be  used with  other  projects now,  not only  FT2
-      (e.g. MLib, FTLayout, etc.).
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.2 and 2.0.1
-
-  I. CHANGES TO THE MODULES / FONT DRIVERS
-
-    - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
-      avoid legal problems  with the Apple patents.  It  seems that we
-      mistakenly  turned this option  on in  previous releases  of the
-      build.
-
-      Note that if  you want to use the  bytecode interpreter in order
-      to get high-quality TrueType  rendering, you will need to toggle
-      by        hand        the        definition        of        the
-      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
-      `include/freetype/config/ftoption.h'.
-
-    - The CFF driver has been improved by Tom Kacvinsky and Sander van
-      der Wal:
-
-      * Support for `seac' emulation.
-      * Support for `dotsection'.
-      * Support for retrieving glyph names through
-        `FT_Get_Glyph_Name'.
-
-      The first two items are necessary to correctly a large number of
-      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
-
-    - The Type 1 driver was also improved by Tom & others:
-
-      * Better EM size computation.
-      * Better support for synthetic (transformed) fonts.
-      * The  Type 1  driver returns  the charstrings  corresponding to
-        each glyph in the  `glyph->control_data' field after a call to
-        `FT_Load_Glyph' (thanks Ha Shao).
-
-    - Various other bugfixes, including the following:
-
-      * Fixed a nasty memory leak in the Type 1 driver.
-      * The autohinter  and the pcf  driver used static  writable data
-        when they shouldn't.
-      * Many casts were added to  make the code more 64-bits safe.  It
-        also now compiles on Windows XP 64-bits without warnings.
-      * Some incorrect writable statics were removed in the `autohint'
-        and `pcf' drivers.  FreeType 2 now compiles on Epoc again.
-
-
-  II. CHANGES TO THE HIGH-LEVEL API
-
-    - The library header files inclusion scheme has been changed.  The
-      old scheme looked like:
-
-        #include <freetype/freetype.h>
-        #include <freetype/ftglyph.h>
-        #include <freetype/ftcache.h>
-        #include <freetype/cache/ftimage.h>
-
-      Now you should use:
-
-        #include <ft2build.h>
-        #include FT_FREETYPE_H
-        #include FT_GLYPH_H
-        #include FT_CACHE_H
-        #include FT_CACHE_IMAGE_H
-
-      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
-      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
-      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
-
-      The  file <ft2build.h>  is used  to define  the  header filename
-      macros.  The complete and  commented list of macros is available
-      in the API reference under the section name `Header File Macros'
-      in Chapter I.
-
-      For more information, see section I of the following document:
-
-        http://www.freetype.org/
-          freetype2/docs/tutorial/step1.html
-
-      or
-
-        http://freetype.sourceforge.net/
-          freetype2/docs/tutorial/step1.html
-
-    - Many, many comments have been added to the public source file in
-      order to  automatically generate  the API Reference  through the
-      `docmaker.py' Python script.
-
-      The latter has been updated  to support the grouping of sections
-      in chapters and better index sort.  See:
-
-        http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
-
-
-  III. CHANGES TO THE BUILD PROCESS
-
-    - If you  are not  building FreeType 2  with its own  build system
-      (but with your own Makefiles or project files), you will need to
-      be  aware that  the  build  process has  changed  a little  bit.
-
-      You don't  need to put the  `src' directory in  the include path
-      when  compiling  any FT2  component.   Instead,  simply put  the
-      component's directory in the current include path.
-
-      So, if you were doing something like:
-
-        cc -c -Iinclude -Isrc src/base/ftbase.c
-
-      change the line to:
-
-        cc -c -Iinclude -Isrc/base src/base/ftbase.c
-
-      If you were doing something like:
-
-        cd src/base
-        cc -c -I../../include -I.. ftbase.c
-
-      change it to:
-
-        cd src/base
-        cc -c -I../../include ftbase.c
-
-
-======================================================================
-
-CHANGES BETWEEN 2.0.1 and 2.0
-
-  2.0.1 introduces a few changes:
-
-    - Fixed many bugs related to  the support of CFF / OpenType fonts.
-      These  formats are  now much  better supported  though  there is
-      still work planned to  deal with charset tables and PDF-embedded
-      CFF files that use the old `seac' command.
-
-    - The  library could not  be compiled  in debug  mode with  a very
-      small  number   of  C  compilers   whose  pre-processors  didn't
-      implement the `##'  directive correctly (i.e. per se  the ANSI C
-      specification!)  An elegant fix was found.
-
-    - Added  support for  the  free Borland  command-line C++  Builder
-      compiler.   Use `make  setup bcc32'.   Also fixed  a  few source
-      lines that generated new warnings with BCC32.
-
-    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
-      a conic Bezier arc.
-
-    - Updated the INSTALL file to add IDE compilation.
-
-    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
-      correct   support   of  synthetic   (obliqued)   fonts  in   the
-      auto-hinter, better support for embedded bitmaps in a SFNT font.
-
-    - Fixed some problems with `freetype-config'.
-
-  Finally, the `standard' scheme for including FreeType headers is now
-  gradually changing,  but this will  be explained in a  later release
-  (probably 2.0.2).
-
-  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
-  for their contributions!
-
-
-======================================================================
-
-CHANGES BETWEEN beta8 and 2.0
-
-  - Changed  the default  installation  path for  public headers  from
-    `include/freetype' to `include/freetype2'.
-
-    Also added a new `freetype-config' that is automatically generated
-    and installed  on Unix and  Cygwin systems.  The script  itself is
-    used to retrieve the current  install path, C compilation flags as
-    well as linker flags.
-
-  - Fixed several small bugs:
-
-    * Incorrect max advance width for fixed-pitch Type 1 fonts.
-    * Incorrect glyph names for certain TrueType fonts.
-    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
-      called.
-    * The  linearHoriAdvance  and  linearVertAdvance  fields  were not
-      correctly returned for glyphs processed by the auto-hinter.
-    * `type1z'  renamed back to  `type1'; the  old `type1'  module has
-      been removed.
-
-  - Revamped the  build system  to make it  a lot more  generic.  This
-    will  allow us  to  re-use  nearly un-modified  in  lots of  other
-    projects (including FreeType Layout).
-
-  - Changed `cid' to use `psaux' too.
-
-  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
-    the sources  in `src/cache'.  Note  that it compiles but  is still
-    untested for now.
-
-  - Updated `docs/docmaker.py', a draft  API reference is available at
-    http://www.freetype.org/ft2api.html.
-
-  - Changed `type1' to use `psaux'.
-
-  - Created a  new module named  `psaux' to hold  the Type 1 &  Type 2
-    parsing routines.  It should be  used by `type1', `cid', and `cff'
-    in the future.
-
-  - Fixed an important bug in `FT_Glyph_Get_CBox'.
-
-  - Fixed  some compiler  warnings  that happened  since the  TrueType
-    bytecode decoder was deactivated by default.
-
-  - Fixed two memory leaks:
-
-    * The    memory   manager   (16    bytes)   isn't    released   in
-      FT_Done_FreeType!
-    * Using custom input streams, the  copy of the original stream was
-      never released.
-
-  - Fixed the  auto-hinter by performing automatic  computation of the
-    `filling direction' of each glyph.   This is done through a simple
-    and  fast approximation, and  seems to  work (problems  spotted by
-    Werner though).  The Arphic fonts are a lot nicer though there are
-    still a lot of things to do to handle Asian fonts correctly.
-
-
-======================================================================
-
-BETA-8 (RELEASE CANDIDATE) CHANGES
-
-  - Deactivated the TrueType bytecode interpreter by default.
-
-  - Deactivated the `src/type1' font driver.  Now `src/type1z' is used
-    by default.
-
-  - Updates to the build system.  We now compile the library correctly
-    under  Unix  system  through  `configure' which  is  automatically
-    called on the first `make' invocation.
-
-  - Added the auto-hinting module!  Fixing some bugs here and there.
-
-  - Found some bugs in the  composite loader (seac) of the Type1-based
-    font drivers.
-
-  - Renamed the directory `freetype2/config' to `freetype2/builds' and
-    updated all relevant files.
-
-  - Found a memory leak in the `type1' driver.
-
-  - Incorporated Tom's patches to  support flex operators correctly in
-    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
-    fonts to be done with this driver :-)
-
-  - Added the  Windows FNT/FON driver in `src/winfonts'.   For now, it
-    always  `simulates'   a  Unicode  charmap,  so   it  shouldn't  be
-    considered completed right now.
-
-    It  is there  to be  more a  proof of  concept than  anything else
-    anyway.  The driver is a single  C source file, that compiles to 3
-    Kb of code.
-
-    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
-    finish them now.
-
-  - CHANGES TO THE HIGH-LEVEL API
-
-    * FT_Get_Kerning has a new parameter that allows you to select the
-      coordinates of the kerning  vector (font units, scaled, scaled +
-      grid-fitted).
-    * The  outline functions are  now in <freetype/ftoutln.h>  and not
-      part of <freetype/freetype.h> anymore.
-    * <freetype/ftmodule.h>    now     contains    declarations    for
-       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
-    * The so-called convenience  functions have moved from `ftoutln.c'
-      to  `ftglyph.c',  and  are  thus available  with  this  optional
-      component    of   the   library.     They   are    declared   in
-      <freetype/ftglyph.h> now.
-    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
-      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
-      To generate a monochrome bitmap, use ft_render_mode_mono, or the
-      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
-      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
-    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
-      solving a few headaches :-)
-    * The type FT_GlyphSlotRec has now a `library' field.
-
-  - CHANGES TO THE `ftglyph.h' API
-
-    This API has  been severely modified in order  to make it simpler,
-    clearer, and more  efficient.  It certainly now looks  like a real
-    `glyph factory'  object, and allows client  applications to manage
-    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
-    knowing their original format.
-
-  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
-    support for pure CFF + CEF fonts should come in?
-
-  - Cleaned up  source code in order  to avoid two  functions with the
-    same name.  Also  changed the names of the  files in `type1z' from
-    `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
-
-    `make multi' now works well :-)
-
-    Also removed the use of `cidafm' for now, even if the source files
-    are  still there.  This  functionality will  certainly  go into  a
-    specific module.
-
-  - ADDED SUPPORT FOR THE AUTO-HINTER
-
-    It  works :-) I  have a  demo program  which simply  is a  copy of
-    `ftview'       that      does       a      `FT_Add_Module(library,
-    &autohinter_module_class)' after  library initialization, and Type
-    1 & OpenType/CFF fonts are now hinted.
-
-    CID  fonts are  not hinted,  as they  include no  charmap  and the
-    auto-hinter doesn't include  `generic' global metrics computations
-    yet.
-
-    Now, I need to release this thing to the FreeType 2 source.
-
-  - CHANGES TO THE RENDERER MODULES
-
-    The  monochrome  and smooth  renderers  are  now  in two  distinct
-    directories, namely `src/raster1' and `src/smooth'.  Note that the
-    old `src/renderer' is now gone.
-
-    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
-    simple #define toggle in 'src/raster1/ftraster.c'.
-
-    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
-    select the best renderer  available, depending on render mode.  If
-    the current renderer for a  given glyph image format isn't capable
-    of supporting  the render mode, another  one will be  found in the
-    library's list.   This means that client applications  do not need
-    to  switch or  set  the  renderers themselves  (as  in the  latest
-    change), they'll get what they want automatically.  At last.
-
-    Changed the demo programs accordingly.
-
-  - MAJOR INTERNAL REDESIGN:
-
-    A lot of internal modifications  have been performed lately on the
-    source in order to provide the following enhancements:
-
-    * More generic module support:
-
-      The FT_Module  type is  now defined to  represent a handle  to a
-      given  module.   The  file  <freetype/ftmodule.h>  contains  the
-      FT_Module_Class definition, as well as the module-loading public
-      API.
-
-      The  FT_Driver type  is still  defined, and  still  represents a
-      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
-      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
-
-    * Support for generic glyph image types:
-
-      The FT_Renderer  type is a pointer  to a module  used to perform
-      various operations on glyph image.
-
-      Each renderer is  capable of handling images in  a single format
-      (e.g. ft_glyph_format_outline).  Its functions are used to:
-
-      - transform an glyph image
-      - render a glyph image into a bitmap
-      - return the control box (dimensions) of a given glyph image
-
-      The scan converters `ftraster.c' and `ftgrays.c' have been moved
-      to the new directory `src/renderer', and are used to provide two
-      default renderer modules.
-
-      One corresponds  to the `standard' scan-converter,  the other to
-      the `smooth' one.
-
-      he  current  renderer  can  be  set  through  the  new  function
-      FT_Set_Renderer.
-
-      The old raster-related function FT_Set_Raster, FT_Get_Raster and
-      FT_Set_Raster_Mode have now disappeared, in favor of the new:
-
-        FT_Get_Renderer
-        FT_Set_Renderer
-
-      See the file <freetype/ftrender.h> for more details.
-
-      These  changes  were  necessary  to properly  support  different
-      scalable formats in the future, like bi-color glyphs, etc.
-
-    * Glyph loader object:
-
-      A  new  internal  object,  called  a  'glyph  loader'  has  been
-      introduced in the base layer.  It is used by all scalable format
-      font drivers to load glyphs and composites.
-
-      This object  has been  created to reduce  the code size  of each
-      driver,  as  each  one  of  them  basically  re-implemented  its
-      functionality.
-
-      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
-      more information.
-
-    * FT_GlyphSlot has new fields:
-
-      In  order   to  support  extended  features   (see  below),  the
-      FT_GlyphSlot structure has a few new fields:
-
-      linearHoriAdvance:
-
-        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
-        unhinted) advance  width for the  glyph, expressed as  a 16.16
-        fixed pixel value.  This is useful to perform WYSIWYG text.
-
-      linearVertAdvance:
-        This field  gives the linearly  scaled advance height  for the
-        glyph  (relevant in  vertical  glyph layouts  only).  This  is
-        useful to perform WYSIWYG text.
-
-        Note that  the two above field replace  the removed `metrics2'
-        field in the glyph slot.
-
-      advance:
-        This field is a vector  that gives the transformed advance for
-        the glyph.   By default, it corresponds to  the advance width,
-        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
-        FT_Load_Glyph or FT_Load_Char.
-
-      bitmap_left:
-        This  field gives  the  distance in  integer  pixels from  the
-        current pen position  to the left-most pixel of  a glyph image
-        IF IT IS  A BITMAP.  It is only valid  when the `format' field
-        is set to `ft_glyph_format_bitmap', for example, after calling
-        the new function FT_Render_Glyph.
-
-      bitmap_top:
-        This  field gives  the  distance in  integer  pixels from  the
-        current pen position (located on the baseline) to the top-most
-        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
-        correspond to upwards Y.
-
-      loader:
-        This  is a  new  private  field for  the  glyph slot.   Client
-        applications should not touch it.
-
-
-    * Support for transforms and direct rendering in FT_Load_Glyph:
-
-      Most of the functionality found in <freetype/ftglyph.h> has been
-      moved to the core library.  Hence, the following:
-
-      - A   transform   can   be   specified  for   a   face   through
-        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
-        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
-        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
-        was set in the load flags.
-
-      - Once  a  glyph image  has  been  loaded,  it can  be  directly
-        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
-        function.  Note that this  function takes the glyph image from
-        the glyph slot,  and converts it to a  bitmap whose properties
-        are returned  in `face.glyph.bitmap', `face.glyph.bitmap_left'
-        and `face.glyph.bitmap_top'.  The  original native image might
-        be lost after the conversion.
-
-      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
-        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
-        automatically when needed.
-
-  - Reformatted all  modules source  code in order  to get rid  of the
-    basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
-    `T1_Fixed'  instead  of  `FT_Fixed').  Hence  the  format-specific
-    prefixes like  `TT_', `T1_',  `T2_' and `CID_'  are only  used for
-    relevant structures.
-
-
-======================================================================
-
-OLD CHANGES FOR BETA 7
-
-  - bug-fixed the  OpenType/CFF parser.  It  now loads and displays my
-    two  fonts nicely,  but I'm  pretty certain  that more  testing is
-    needed :-)
-
-  - fixed the crummy Type 1 hinter, it now handles accented characters
-    correctly (well, the accent is  not always well placed, but that's
-    another problem..)
-
-  - added the CID-keyed Type 1 driver in `src/cid'.  Works pretty well
-    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
-    really useful CMAP files..
-
-  - fixed  two  bugs  in  the  smooth  renderer  (src/base/ftgrays.c).
-    Thanks to Boris Letocha for spotting them and providing a fix.
-
-  - fixed potential `divide by zero' bugs in ftcalc.c.
-
-  - added source  code for  the OpenType/CFF driver  (still incomplete
-    though..)
-
-  - modified the  SFNT driver slightly  to perform more  robust header
-    checks  in TT_Load_SFNT_Header.  This prevents certain  font files
-    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
-    `recognized' as TrueType font files..
-
-  - moved a lot of stuff from  the TrueType driver to the SFNT module,
-    this   allows   greater   code   re-use   between   font   drivers
-    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
-
-  - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
-    to minimally speed it up..
-
-  - added  support for  Multiple Master  fonts in  `type1z'.  There is
-    also a new file named <freetype/ftmm.h> which defines functions to
-    manage them from client applications.
-
-    The new file `src/base/ftmm.c' is also optional to the engine..
-
-  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
-    small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
-
-  - a minor fix to the Type 1 driver to let them apply the font matrix
-    correctly (used for many oblique fonts..)
-
-  - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
-    to use %p instead of %lx).  Thanks to Karl Robillard.
-
-  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
-    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
-    cropped when  loaded from a file  (maybe I should  move the bitmap
-    cropper to the base layer ??).
-
-  - changed the default  number of gray levels of  the smooth renderer
-    to 256  (instead of  the previous 128).  Of course, the  human eye
-    can't see any difference ;-)
-
-  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
-    of subglyphs in a TrueType font now..
-
-
-======================================================================
-
-OLD CHANGES 16 May 2000
-
-  - tagged `BETA-6'  in the  CVS tree.  This one is a  serious release
-    candidate even though it doesn't incorporate the auto-hinter yet..
-
-  - various obsolete files were removed, and copyright header updated
-
-  - finally  updated  the  standard   raster  to  fix  the  monochrome
-    rendering bug + re-enable  support for 5-gray levels anti-aliasing
-    (suck, suck..)
-
-  - created new header files, and modified sources accordingly:
-
-     <freetype/fttypes.h>
-       - simple FreeType types, without the API
-     <freetype/internal/ftmemory.h>
-       - definition of memory-management macros
-
-  - added   the   `DSIG'   (OpenType   Digital   Signature)   tag   to
-    <freetype/tttags.h>
-
-  - light update/cleaning of the build system + changes to the sources
-    in  order  to  get  rid  of _all_  compiler  warnings  with  three
-    compilers, i.e:
-
-    gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
-    LCC
-
-    IMPORTANT NOTE FOR WIN32-LCC USERS:
-    |
-    |  It seems the C pre-processor  that comes with LCC is broken, it
-    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
-    |  correctly   when  one  of   the  argument  is  a  macro.  Also,
-    |  something like:
-    |
-    |     #define F(x)  print##x
-    |
-    |     F(("hello"))
-    |
-    |  will get incorrectly translated to:
-    |
-    |     print "hello")
-    |
-    |  by its pre-processor.  For this reason, you simply cannot build
-    |  FreeType 2 in debug mode with this compiler..
-
-  - yet  another massive grunt work.  I've  changed the  definition of
-    the EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These
-    now take an argument, which is the function's return value type.
-
-    This  is necessary to  compile FreeType  as a  DLL on  Windows and
-    OS/2.  Depending on the compiler used, a compiler-specific keyword
-    like  __export or __system  must be  placed before  (VisualC++) or
-    after (BorlandC++) the type..
-
-    Of course, this needed a lot of changes throughout the source code
-    to make it compile again...  All cleaned up now, apparently..
-
-    Note also  that there is a  new EXPORT_VAR macro  defined to allow
-    the   _declaration_    of   an   exportable    public   (constant)
-    variable.  This  is  the   case  of  the  raster  interfaces  (see
-    ftraster.h and ftgrays.h), as well as each module's interface (see
-    sfdriver.h, psdriver.h, etc..)
-
-  - new feature: it  is now possible to pass  extra parameters to font
-                 drivers  when creating  a new  face object.  For now,
-                 this capability is unused.  It could however prove to
-                 be useful in a near future..
-
-      the FT_Open_Args structure was  changes, as well as the internal
-      driver interface  (the specific `init_face'  module function has
-      now a different signature).
-
-  - updated the tutorial (not finished though).
-
-  - updated the top-level BUILD  document
-
-  - fixed  a  potential memory  leak  that  could  occur when  loading
-    embedded bitmaps.
-
-  - added     the     declaration     of     FT_New_Memory_Face     in
-    <freetype/freetype.h>, as  it was  missing from the  public header
-    (the implementation was already in `ftobjs.c').
-
-  - the file <freetype/fterrors.h> has been seriously updated in order
-    to allow  the automatic generation  of error message tables.   See
-    the comments within it for more information.
-
-  - major directory  hierarchy re-organisation.  This was done for two
-    things:
-
-      * first,  to ease  the `manual'  compilation of  the  library by
-        requiring at lot less include paths :-)
-
-      * second,  to  allow  external  programs to  effectively  access
-        internal  data  fields.  For example,  this  can be  extremely
-        useful if  someone wants  to write a  font producer or  a font
-        manager on top of FreeType.
-
-    Basically, you  should now use  the 'freetype/' prefix  for header
-    inclusion, as in:
-
-        #include <freetype/freetype.h>
-        #include <freetype/ftglyph.h>
-
-    Some new include sub-directories are available:
-
-     a. the  `freetype/config' directory,  contains two files  used to
-        configure  the  build  of  the  library.  Client  applications
-        should  not need  to look  at these  normally, but they can if
-        they want.
-
-        #include <freetype/config/ftoption.h>
-        #include <freetype/config/ftconfig.h>
-
-     b. the `freetype/internal'  directory, contains header files that
-        describes library  internals.  These are the header files that
-        were  previously  found  in  the `src/base'  and  `src/shared'
-        directories.
-
-
-    As  usual, the build  system and  the demos  have been  updated to
-    reflect the change..
-
-    Here's a layout of the new directory hierarchy:
-
-    TOP_DIR
-      include/
-         freetype/
-            freetype.h
-            ...
-            config/
-              ftoption.h
-              ftconfig.h
-              ftmodule.h
-
-            internal/
-              ftobjs.h
-              ftstream.h
-              ftcalc.h
-              ...
-
-      src/
-         base/
-            ...
-
-         sfnt/
-         psnames/
-         truetype/
-         type1/
-         type1z/
-
-
-    Compiling a module is now  much easier, for example, the following
-    should work when in the TOP_DIR directory on an ANSI build:
-
-       gcc -c -I./include -I./src/base src/base/ftbase.c
-       gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
-       etc..
-
-    (of course, using -Iconfig/<system> if you provide system-specific
-     configuration files).
-
-  - updated the structure of FT_Outline_Funcs in order to allow direct
-    coordinate scaling within  the outline decomposition routine (this
-    is  important for virtual  `on' points  with TrueType  outlines) +
-    updates to the rasters to support this..
-
-  - updated  the OS/2  table  loading code  in `src/sfnt/ttload.c'  in
-    order to support version 2 of the table (see OpenType 1.2 spec)
-
-  - created  `include/tttables.h'  and  `include/t1tables.h' to  allow
-    client applications to access some of  the SFNT and T1 tables of a
-    face  with  a  procedural  interface (see  `FT_Get_Sfnt_Table')  +
-    updates to internal source files to reflect the change..
-
-  - some  cleanups in  the source  code to  get rid  of  warnings when
-    compiling with the `-Wall -W -ansi -pedantic' options in gcc.
-
-  - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
-    its header to `include/ftgrays.h'
-
-  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
-    with up to 80 sub-glyphs !! Thanks to Werner
-
-
-======================================================================
-
-OLD CHANGES - 14-apr-2000
-
-  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
-    correct loading of some CJK glyphs in mingli.ttf
-
-  - improved the standard Type 1 hinter in `src/type1'
-
-  - fixed two bugs  in the experimental Type 1  driver in `src/type1z'
-    to handle the new XFree86 4.0 fonts (and a few other ones..)
-
-  - the smooth  renderer is now  complete and supports  sub-banding to
-    render large glyphs  at high speed.  However, it is still  located
-    in `demos/src/ftgrays.c' and should move to the  library itself in
-    the next  beta.  NOTE: The  smooth  renderer  doesn't  compile  in
-    stand-alone mode anymore, but this should be fixed RSN..
-
-  - introduced convenience  functions to  more easily deal  with glyph
-    images, see  `include/ftglyph.h' for more details, as  well as the
-    new  demo program  named `demos/src/ftstring.c'  that demonstrates
-    its use
-
-  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
-    drivers  (this  is required  by  the  auto-hinter  to improve  its
-    results).
-
-  - changed   the  raster   interface,  in   order  to   allow  client
-    applications  to   provide  their   own  span-drawing   callbacks.
-    However,   only   the   smooth   renderer   supports   this.   See
-    `FT_Raster_Params' in the file `include/ftimage.h'.
-
-  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
-    computation!
-
-  - Note: The tutorial is out-of-date.
-
-
-======================================================================
-
-OLD CHANGES - 12-mar-2000
-
-  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
-    configuration         files         are         located         in
-    `freetype2/config'.  System-specific over-rides  can be  placed in
-    `freetype2/config/<system>'.
-
-  - moved all configuration macros to `config/ftoption.h'
-
-  - improvements in the Type 1 driver with AFM support
-
-  - changed the fields  in the FT_Outline structure :  the old `flags'
-    array is re-named `tags', while all ancient flags are encoded into
-    a single unsigned int named `flags'.
-
-  - introduced     new      flags     in     FT_Outline.flags     (see
-    ft_outline_.... enums in `ftimage.h').
-
-  - changed outline functions to `FT_Outline_<action>' syntax
-
-  - added a smooth anti-alias renderer to the demonstration programs
-
-  - added Mac graphics driver (thanks Just)
-
-  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
-    FT_Open_Args descriptor..
-
-  - various  cleanups,  a  few  more API  functions  implemented  (see
-    FT_Attach_File)
-
-  - updated some docs
-
-
-======================================================================
-
-OLD CHANGES - 22-feb-2000
-
-  - introduced the `psnames' module.  It is used to:
-
-      o convert  a Postscript glyph  name into the  equivalent Unicode
-        character code (used by the  Type 1 driver(s) to synthesize on
-        the fly a Unicode charmap).
-
-      o provide an  interface to retrieve the Postscript  names of the
-        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
-        (the Macintosh  names are  used by the  SFNT-module postscript
-        names support routines, while the other two tables are used by
-        the Type 1 driver(s)).
-
-  - introduced the `type1z' alternate Type 1 driver.  This is a (still
-    experimental) driver  for the Type  1 format that  will ultimately
-    replace the one  in `src/type1'.  It uses pattern matching to load
-    data from the font, instead of a finite  state analyzer.  It works
-    much better than the `old' driver with `broken' fonts.  It is also
-    much smaller (under 15 Kb).
-
-  - the  Type 1  drivers (both  in `src/type1'  and  `src/type1z') are
-    nearly  complete.  They  both  provide automatic  Unicode  charmap
-    synthesis through  the `psnames' module.  No re-encoding vector is
-    needed.  (note  that they  still  leak  memory  due to  some  code
-    missing, and I'm getting lazy).
-
-    Trivial AFM support has been added to read kerning information but
-    wasn't exactly tested as it should ;-)
-
-  - The TrueType  glyph loader has  been seriously rewritten  (see the
-    file  `src/truetype/ttgload.c'.  It is now  much, much  simpler as
-    well as  easier to read,  maintain and understand  :-) Preliminary
-    versions introduced a  memory leak that has been  reported by Jack
-    Davis, and is now fixed..
-
-  - introduced  the new  `ft_glyph_format_plotter', used  to represent
-    stroked outlines  like Windows `Vector' fonts, and  certain Type 1
-    fonts  like `Hershey'.  The corresponding  raster will  be written
-    soon.
-
-  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
-    interface that uses a structure  to describe the input stream, the
-    driver (if required), etc..
-
-
-TODO
-
-  - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
-
-  - Add a function like FT_Load_Character(face, char_code, load_flags)
-    that  would   really  embed  a  call   to  FT_Get_Char_Index  then
-    FT_Load_Glyph to ease developer's work.
-
-  - Update the tutorial!
-
-  - consider adding  support for Multiple  Master fonts in the  Type 1
-    drivers.
-
-  - Test the AFM routines of the  Type 1 drivers to check that kerning
-    information is returned correctly.
-
-  - write a decent auto-gridding component  !! We need this to release
-    FreeType 2.0 gold !
-
-
-less urgent needs:
-
-  - add a CFF/Type2 driver
-  - add a BDF driver
-  - add a FNT/PCF/HBF driver
-  - add a Speedo driver from the X11 sources
-
-
-======================================================================
-
-OLDER CHANGES - 27-jan-2000
-
-  - updated the  `sfnt' module  interface to allow  several SFNT-based
-    drivers to co-exist peacefully
-
-  - updated  the `T1_Face'  type  to better  separate Postscript  font
-    content  from the  rest of  the FT_Face  structure.  Might be used
-    later by the CFF/Type2 driver..
-
-  - added an experimental replacement Type 1 driver featuring advanced
-    (and speedy) pattern matching to retrieve the data from postscript
-    fonts.
-
-  - very minor  changes in the implementation  of FT_Set_Char_Size and
-    FT_Set_Pixel_Sizes (they now implement default to lighten the font
-    driver's code).
-
-
-======================================================================
-
-OLD MESSAGE
-
-This file summarizes the changes  that occurred  since the last `beta'
-of FreeType 2. Because the list is important, it has been divided into
-separate sections:
-
-Table Of Contents:
-
-    I   High-Level Interface (easier !)
-   II   Directory Structure
-  III   Glyph Image Formats
-   IV   Build System
-    V   Portability
-   VI   Font Drivers
-
-
-----------------------------------------------------------------------
-
-High-Level Interface:
-
-  The high-level API has been considerably simplified.  Here is how:
-
-    - resource objects have disappeared.  this means that face objects
-      can now be created with  a single function call (see FT_New_Face
-      and FT_Open_Face)
-
-    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
-      and a glyph slot object  are automatically created for the face,
-      and can  be accessed  through `face->glyph' and  `face->size' if
-      one really  needs to.   In most cases,  there's no need  to call
-      FT_New_Size or FT_New_Glyph.
-
-    - similarly,  FT_Load_Glyph  now  only  takes  a  `face'  argument
-      (instead  of a  glyph  slot  and a  size).  Also,  its  `result'
-      parameter is  gone, as the glyph  image type is  returned in the
-      field `face->glyph.format'
-
-    - the list  of available  charmaps is directly  accessible through
-      `face->charmaps', counting `face->num_charmaps'  elements.  Each
-      charmap  has an  'encoding'  field which  specifies which  known
-      encoding it deals with.  Valid values are, for example:
-
-          ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
-          ft_encoding_apple_roman
-          ft_encoding_sjis
-          ft_encoding_adobe_standard
-          ft_encoding_adobe_expert
-
-      other  values may  be added  in the  future.  Each charmap still
-      holds  its `platform_id'  and `encoding_id'  values in  case the
-      encoding is too exotic for the current library
-
-
-----------------------------------------------------------------------
-
-Directory Structure:
-
-  Should seem obvious to most of you:
-
-     freetype/
-         config/        -- configuration sub-makefiles
-            ansi/
-            unix/       -- platform-specific configuration files
-            win32/
-            os2/
-            msdos/
-
-         include/       -- public header  files, those to  be included
-                           directly by client apps
-
-         src/           -- sources of the library
-           base/        -- the base layer
-           sfnt/        -- the sfnt `driver'  (see the drivers section
-                           below)
-           truetype/    -- the truetype driver
-           type1/       -- the type1 driver
-           shared/      -- some header files shared between drivers
-
-         demos/         -- demos/tools
-
-         docs/          -- documentation (a bit empty for now)
-
-
-----------------------------------------------------------------------
-
-Glyph Image Formats:
-
-  Drivers are now able to  register new glyph image formats within the
-  library.  For  now, the  base layer supports  of course  bitmaps and
-  vector  outlines, but  one  could imagine  something different  like
-  colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
-  ??).
-
-  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
-  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
-  should encompass all known bitmap types.
-
-  Each new  image format  must provide at  least one `raster',  i.e. a
-  module capable of  transforming the glyph image into a bitmap.  It's
-  also possible  to change the default  raster used for  a given glyph
-  image format.
-
-  The default outline  scan-converter now uses 128 levels  of grays by
-  default,  which tends  to smooth  many  things.  Note that the  demo
-  programs have been updated significantly in order to display these..
-
-
-----------------------------------------------------------------------
-
-Build system:
-
-  You still need  GNU Make to build the library.  The build system has
-  been very seriously re-vamped in order to provide things like :
-
-   - automatic host platform  detection (reverting to 'config/ansi' if
-     it is not detected, with pseudo-standard compilation flags)
-
-   - the ability to compile from the Makefiles with very different and
-     exotic compilers.  Note that linking the library can be difficult
-     for some platforms.
-
-     For example, the file `config/win32/lcclib.bat' is invoked by the
-     build system to create the `.lib' file with LCC-Win32 because its
-     librarian  has too  many flaws  to be  invoked directly  from the
-     Makefile.
-
-  Here's how it works:
-
-  - the first time you type `make',  the build system runs a series of
-    sub-makefiles  in order  to detect  your host  platform.  It  then
-    dumps what it found, and creates a file called `config.mk' in  the
-    current  directory.  This is a  sub-Makefile used  to  define many
-    important Make variables used to build the library.
-
-  - the second time, the build system detects the `config.mk' then use
-    it  to  build the  library.  All object  files  go  into 'obj'  by
-    default,  as well  as the  library file,  but this  can  easily be
-    changed.
-
-  Note that  you can run `make  setup' to force  another host platform
-  detection  even   if  a  `config.mk'  is  present   in  the  current
-  directory.  Another solution  is  simply to  delete  the file,  then
-  re-run make.
-
-  Finally, the  default compiler  for all platforms  is gcc  (for now,
-  this will hopefully changed in the future).  You can however specify
-  a different  compiler by specifying  it after the 'setup'  target as
-  in:
-
-      gnumake setup lcc         on Win32 to use the LCC compiler
-      gnumake setup visualc     on Win32 to use Visual C++
-
-  See  the file  `config/<system>/detect.mk' for  a list  of supported
-  compilers for your platforms.
-
-  It should be relatively easy  to write new detection rules files and
-  config.mk..
-
-  Finally, to  build the demo programs,  go to `demos'  and launch GNU
-  Make, it will use the `config.mk'  in the top directory to build the
-  test programs..
-
-
-----------------------------------------------------------------------
-
-Portability:
-
-  In  the  previous  beta,  a  single FT_System  object  was  used  to
-  encompass  all  low-level  operations like  thread  synchronisation,
-  memory management and i/o access.  This has been greatly simplified:
-
-    - thread synchronisation  has been dropped, for  the simple reason
-      that the library  is already re-entrant, and that  if you really
-      need  two  threads accessing  the  same  FT_Library, you  should
-      really synchronize access to it yourself with a simple mutex.
-
-    - memory  management is  performed  through a  very simple  object
-      called `FT_Memory',  which really is a table  containing a table
-      of pointers to  functions like malloc, realloc and  free as well
-      as some user data (closure).
-
-    - resources have disappeared (they created more problems than they
-      solved), and  i/o management have  been simplified greatly  as a
-      result.  Streams are  defined through  FT_Stream objects,  which
-      can be either memory-based or disk-based.
-
-      Note that  each face  has its own  stream, which is  closed only
-      when  the  face object  is  destroyed.  Hence,  a function  like
-      TT_Flush_Face in 1.x cannot be directly  supported.  However, if
-      you really need something like  this, you can easily tailor your
-      own streams  to achieve the same  feature at a  lower level (and
-      use FT_Open_Face instead of FT_New_Face to create the face).
-
-  See the file  `include/ftsystem.h' for more details, as  well as the
-  implementations found in `config/unix' and `config/ansi'.
-
-
-----------------------------------------------------------------------
-
-Font Drivers:
-
-  The  Font Driver  interface has  been modified  in order  to support
-  extensions & versioning.
-
-
-  The  list of  the font  drivers that  are statically  linked  to the
-  library at compile time is  managed through a new configuration file
-  called `config/<platform>/ftmodule.h'.
-
-  This  file is  autogenerated  when  invoking  `make modules'.   This
-  target  will  parse  all  sub-directories  of  'src', looking  for a
-  `module.mk' rules  file, used  to describe  the driver to  the build
-  system.
-
-  Hence, one  should call  `make modules' each  time a font  driver is
-  added or removed from the `src' directory.
-
-  Finally, this  version  provides  a `pseudo-driver'  in  `src/sfnt'.
-  This  driver  doesn't  support  font  files  directly, but  provides
-  services used by all TrueType-like font drivers.  Hence, its code is
-  shared between  the TrueType & OpenType  font formats,  and possibly
-  more formats to come if we're lucky..
-
-
-----------------------------------------------------------------------
-
-Extensions support:
-
-  The extensions support is inspired by the one found in 1.x.
-
-  Now, each font driver has  its own `extension registry', which lists
-  which extensions  are available  for the font  faces managed  by the
-  driver.
-
-  Extension ids are  now strings, rather than 4-byte  tags, as this is
-  usually more readable.
-
-  Each extension has:
-    - some data, associated to each face object
-    - an interface (table of function pointers)
-
-  An extension  that is format-specific should  simply register itself
-  to the correct font driver.  Here is some example code:
-
-   // Registering an extensions
-   //
-   FT_Error  FT_Init_XXXX_Extension( FT_Library  library )
-   {
-     FT_DriverInterface*  tt_driver;
-
-     driver = FT_Get_Driver( library, "truetype" );
-     if (!driver) return FT_Err_Unimplemented_Feature;
-
-     return FT_Register_Extension( driver, &extension_class );
-   }
-
-
-   // Implementing the extensions
-   //
-   FT_Error  FT_Proceed_Extension_XXX( FT_Face  face )
-   {
-     FT_XXX_Extension            ext;
-     FT_XXX_Extension_Interface  ext_interface;
-
-     ext = FT_Get_Extension( face, "extensionid", &ext_interface );
-     if (!ext) return error;
-
-     return ext_interface->do_it(ext);
-   }
-
-------------------------------------------------------------------------
-
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file  is  part  of the  FreeType  project, and may  only be  used,
-modified,  and  distributed  under  the  terms of  the FreeType  project
-license, LICENSE.TXT.   By continuing to use, modify, or distribute this
-file you  indicate that  you have  read the  license and understand  and
-accept it fully.
-
-
-Local Variables:
-version-control: never
-coding: utf-8
-End:
-
---- end of CHANGES ---
+
+CHANGES BETWEEN 2.4.12 and 2.5
+
+  I. IMPORTANT BUG FIXES
+
+    - The cache manager function `FTC_Manager_Reset'  didn't flush the
+      cache.
+
+
+  II. IMPORTANT CHANGES
+
+    - Behdad Esfahbod  (on behalf  of Google) contributed  support for
+      color embedded bitmaps (eg. color emoji).
+
+      A  new  load  flag,  FT_LOAD_COLOR, makes  FreeType  load  color
+      embedded-bitmaps, following this draft specification
+
+        https://color-emoji.googlecode.com/git/specification/v1.html
+
+      which defines two new SFNT  tables, `CBDT' and `CBLC' (named and
+      modeled  after  `EBDT'  and `EBLC',  respectively).   The  color
+      bitmaps  are  stored in  the  new  FT_PIXEL_MODE_BGRA format  to
+      represent BGRA  pre-multiplied sRGB  images.  If PNG  support is
+      available,  PNG color  images as  defined in  the same  proposed
+      specification are supported also.
+
+      Note that  color bitmaps  are converted  to grayscale  if client
+      didn't ask for color.
+
+    - As  announced in  the  previous release,  the  old FreeType  CFF
+      engine  is now  disabled by  default.  It  can be  conditionally
+      compiled     by     defining     the     configuration     macro
+      CFF_CONFIG_OPTION_OLD_ENGINE.
+
+    - As announced in the previous release,  all code related to macro
+      FT_CONFIG_OPTION_OLD_INTERNALS  has been removed,  thus becoming
+      obsolete.
+
+
+  III. MISCELLANEOUS
+
+    - The  property API  (`FT_Property_Get' and  `FT_Property_Set') is
+      now declared as stable.
+
+      The  exception,   however,  are  the   experimental  auto-hinter
+      properties `glyph-to-script-map' and `fallback-script' which are
+      subject to change in a forthcoming release.
+
+    - `ftview' has been updated to  support color embedded bitmaps; it
+      can be toggled on and off  with key `c'.  The small cache toggle
+      is now key `K'.
+
+    - It  is now  possible  to  control the  version  of the  TrueType
+      hinting engine  using the new `interpreter-version'  property of
+      the  `truetype' module:  Versions 35  and 38  (the default)  are
+      supported,  which  roughly  corresponds to  disable  and  enable
+      subpixel hinting support, respectively.
+
+      In  both  `ftview'  and  `ftdiff',  switching  between  the  two
+      versions  can be  done  with  key `H'.   In  the `ftbench'  demo
+      program, command line option `-H'  has been extended to activate
+      the non-default interpreter version.
+
+    - The `ttdebug' program has been further improved.  In particular,
+      it accepts a new command line  option `-H' to select the hinting
+      engine.
+
+    - Another round of TrueType subpixel hinting fixes.
+
+    - The `apinames' tool can now create an import file for NetWare.
+
+    - 64bit compilation of the new CFF engine was buggy.
+
+    - Some fixes to improve robustness in memory-tight situations.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.11 and 2.4.12
+
+    - We have another CFF parsing and hinting engine!  Written by Dave
+      Arnold <[email protected]>,  this work  has been  contributed by
+      Adobe in  collaboration with Google.   It is vastly  superior to
+      the old CFF engine, and it  will replace it in the next release.
+      Right  now,  it  is  still  off by  default,  and  you  have  to
+      explicitly select it using  the new `hinting-engine' property of
+      the cff driver:
+
+        ...
+        #include FT_MODULE_H
+        #include FT_CFF_DRIVER_H
+
+        FT_Library  library;
+        int         engine = FT_CFF_HINTING_ADOBE;
+
+
+        ...
+        FT_Property_Set( library, "cff", "hinting-engine", &engine );
+
+      The code has  a (mature) beta status; we encourage  all users to
+      test it and report any problems.
+
+      In case you want to activate the new CFF engine unconditionally,
+      apply this patch:
+
+--- snip ---
+diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
+index ebcf189..3f2ce6b 100644
+--- a/src/cff/cffobjs.c
++++ b/src/cff/cffobjs.c
+@@ -1056,7 +1056,7 @@
+
+
+     /* set default property values */
+-    driver->hinting_engine    = FT_CFF_HINTING_FREETYPE;
++    driver->hinting_engine    = FT_CFF_HINTING_ADOBE;
+     driver->no_stem_darkening = FALSE;
+
+     return FT_Err_Ok;
+--- snip ---
+
+    - The  macro FT_CONFIG_OPTION_OLD_INTERNALS  is no  longer set  by
+      default.  In  the next  release, we  will completely  remove the
+      associated code.   Please update your  programs in case  you are
+      still using this macro.
+
+
+  II. MISCELLANEOUS
+
+    - The  (top-level)  `configure'  script   now  respects  the  MAKE
+      environment variable to specify a `make' binary.   For backwards
+      compatibility, GNUMAKE still overrides MAKE, though.
+
+    - The `ftview'  and `ftdiff'  demo programs have  been redesigned,
+      showing  more options  permanently  on the  screen, among  other
+      minor improvements.
+
+    - Using the `H'  key, it is now possible to  select the CFF engine
+      in both `ftview' and `ftdiff'.
+
+    - The new command line option `-H' for `ftbench' selects the Adobe
+      CFF engine.
+
+    - It is  now possible  to directly select  the LCD  rendering mode
+      with the keys `A'-`F' in  `ftview'.  The key mapping for cycling
+      through LCD modes  has been changed from `K' and  `L' to `k' and
+      `l', and  toggling custom LCD  filtering is no longer  mapped to
+      key `F' but to key `L'.
+
+    - In `ftdiff',  key `x' toggles  between layout modes:  Either use
+      the  advance width  (this is  new and  now the  default) or  the
+      bounding box information to determine line breaks.
+
+    - For all demo  tools, the new command line option  `-v' shows the
+      version.
+
+    - For the demo tools with a GUI, the new command line options `-w'
+      and `-h' select  the width and the height of  the output window,
+      respectively.
+
+    - The `ttdebug' program was broken and has been reactivated.  Note
+      that this program is not compiled by default.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.10 and 2.4.11
+
+  I. IMPORTANT BUG FIXES
+
+    - Some vulnerabilities in the  BDF implementation have been fixed.
+      Users of this font format should upgrade.
+
+
+  II. IMPORTANT CHANGES
+
+    - Subpixel  hinting support  has been  contributed by  Infinality,
+      based on Greg Hitchcock's whitepaper at
+
+        http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
+
+      Originally, it was a separate patch available from
+
+        http://www.infinality.net/blog/
+
+      and which has been integrated.
+
+      Note that  ClearType support is not  completely implemented!  In
+      particular,  full support  for the  options `compatible_widths',
+      `symmetrical_smoothing,  and  `bgr'  (via the  GETINFO  bytecode
+      instruction) is missing.
+
+      Activation of  subpixel hinting  support can be  controlled with
+      the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it
+      is switched off by default.  This feature is still experimental;
+      we welcome test reports!
+
+    - Support for OpenType collections (OTC) has been added.
+
+    - Pure CFF fonts within an SFNT wrapper are now supported.
+
+
+  III. MISCELLANEOUS
+
+    - Minor rendering improvements to the auto-hinter.
+
+    - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°.
+
+    - Experimental support  to handle `property modules',  for example
+      to control the  behaviour of the auto-hinter.   The API consists
+      of two new functions, `FT_Property_Set' and `FT_Property_Get'.
+
+      The code is  still subject to change and should  not be used for
+      production.
+
+    - The `ftdiff' demo program now supports UTF-8 encoded input files
+      for option `-f'.
+
+    - Using keys `r' and `R', you can now adjust the stroker radius in
+      the `ftview' demo program.
+
+    - Other, minor fixes and improvements.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.9 and 2.4.10
+
+  I. IMPORTANT BUG FIXES
+
+    - Incremental glyph loading as needed by ghostscript was broken.
+
+
+  II. MISCELLANEOUS
+
+    - A new  function `FT_Outline_EmboldenXY',  contributed by  Alexei
+      Podtelezhnikov.
+
+    - In the `ftview' demo program, key `e' has been replaced with `x'
+      and `y' to  embolden in  the horizontal and  vertical direction,
+      respectively.
+
+    - The glyph  spacing computation  in `FT_GlyphSlot_Embolden'  (and
+      similar code in `ftview') has been improved.
+
+    - Minor  improvements to  the TrueType  bytecode  interpreter  and
+      glyph loader, the auto-hinter, and the B/W rasterizer.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.8 and 2.4.9
+
+  I. IMPORTANT BUG FIXES
+
+    - Another round of fixes to better handle invalid fonts.   Many of
+      them are vulnerabilities  (see CVE-2012-1126 up to CVE-2012-1144
+      and SA48320) so all users should upgrade.
+
+
+  II. MISCELLANEOUS
+
+    - The `ENCODING -1 <n>' format of BDF fonts is now supported.
+
+    - For BDF fonts,  support for the whole Unicode encoding range has
+      been added.
+
+    - Better TTF support for x_ppem != y_ppem.
+
+    - `FT_Get_Advances' sometimes returned bogus values.
+
+    - The  demo  programs  no  longer  recognize  and  handle  default
+      suffixes; you now have to always specify the complete font name.
+
+    - Better rendering and LCD mode cycling added to `ftview'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.7 and 2.4.8
+
+  I. IMPORTANT BUG FIXES
+
+    - Some vulnerabilities in handling CID-keyed PostScript fonts have
+      been fixed; see CVE-2011-3439.
+
+
+  II. MISCELLANEOUS
+
+    - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value',  to
+      retrieve most of the dictionary keys in Type 1 fonts.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.6 and 2.4.7
+
+  I. IMPORTANT BUG FIXES
+
+    - Some  vulnerabilities in handling Type 1 fonts  have been fixed;
+      see CVE-2011-3256.
+
+
+  II. MISCELLANEOUS
+
+    - FreeType  now properly  handles ZapfDingbats  glyph names  while
+      constructing a Unicode character map (for fonts which don't have
+      one).
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.5 and 2.4.6
+
+  I. IMPORTANT BUG FIXES
+
+    - For TrueType based fonts, the ascender and descender values were
+      incorrect sometimes  (off by a pixel if the ppem value was not a
+      multiple of 5).   Depending on the use you might now  experience
+      a different  layout; the  change should  result in  better, more
+      consistent line spacing.
+
+    - Fix CVE-2011-0226  which causes a  vulnerability while  handling
+      Type 1 fonts.
+
+    - BDF fonts  containing  glyphs with negative values  for ENCODING
+      were  incorrectly  rejected.  This  bug has  been introduced  in
+      FreeType version 2.2.0.
+
+    - David Bevan contributed a major revision of the FreeType stroker
+      code:
+
+      . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
+
+      . A new  line join style,  FT_STROKER_LINEJOIN_MITER_FIXED,  has
+        been introduced to support PostScript and PDF miter joins.
+
+      . FT_STROKER_LINEJOIN_MITER_VARIABLE  has been introduced  as an
+        alias for FT_STROKER_LINEJOIN_MITER.
+
+      . Various stroking glitches has been fixed.
+
+
+  II. MISCELLANEOUS
+
+      - SFNT bitmap fonts which contain an outline glyph for `.notdef'
+        only no longer set the FT_FACE_FLAG_SCALABLE flag.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.4 and 2.4.5
+
+  I. IMPORTANT BUG FIXES
+
+    - A rendering regression  for second-order Bézier curves  has been
+      fixed, introduced in 2.4.3.
+
+
+  II. IMPORTANT CHANGES
+
+    - If autohinting  is not  explicitly disabled,  FreeType now  uses
+      the autohinter if  a TrueType based font doesn't  contain native
+      hints.
+
+    - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH  has been made
+      redundant and  is simply ignored;  this means that FreeType  now
+      ignores the global advance width value in TrueType fonts.
+
+
+  III. MISCELLANEOUS
+
+    - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of
+      a font.
+
+    - Support for PCF files compressed with bzip2 has been contributed
+      by Joel  Klinghed.  To  make this  work, the  OS must  provide a
+      bzip2 library.
+
+    - Bradley  Grainger  contributed  project  and  solution  files in
+      Visual Studio 2010 format.
+
+    - Again some fixes to better handle broken fonts.
+
+    - Some improvements to the B/W rasterizer.
+
+    - Fixes to the cache module to improve robustness.
+
+    - Just  Fill Bugs contributed (experimental) code to compute  blue
+      zones for CJK Ideographs, improving the alignment of  horizontal
+      stems at the top or bottom edges.
+
+    - The `ftgrid' demo program  can now display  autohinter segments,
+      to be toggled on and off with key `s'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.3 and 2.4.4
+
+  I. IMPORTANT BUG FIXES
+
+    - UVS support (TrueType/OpenType cmap format 14) support is fixed.
+      This regression has been introduced in version 2.4.0.
+
+
+  II. MISCELLANEOUS
+
+    - Detect tricky fonts (e.g. MingLiU)  by the lengths and checksums
+      of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when
+      a TrueType font without family name is given.  The previous fix,
+      introduced in 2.4.3,  was too rigorous,  causing many  subsetted
+      fonts (mainly  from PDF files) displayed badly  because FreeType
+      forced  rendering with  the TrueType bytecode engine  instead of
+      the autohinter.
+
+    - Better support for 64bit platforms.
+
+    - More fixes to improve handling of broken fonts.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.2 and 2.4.3
+
+  I. IMPORTANT BUG FIXES
+
+    - Fix rendering of certain cubic, S-shaped arcs.   This regression
+      has been introduced in version 2.4.0.
+
+
+  II. MISCELLANEOUS
+
+    - To  fix  the  above  mentioned  rendering  issue,  a  new spline
+      flattening algorithm  has been  introduced which  speeds up both
+      conic and cubic arcs.
+
+    - Handling of broken fonts has been further improved.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.1 and 2.4.2
+
+  I. IMPORTANT BUG FIXES
+
+    - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
+
+    - Handling Type 42 font deallocation was broken; additionally, the
+      library is now more robust against malformed Type 42 fonts.
+
+
+  II. MISCELLANEOUS
+
+    - Two new functions,  `FT_Reference_Library' (in FT_MODULE_H)  and
+      `FT_Reference_Face'  (in  FT_FREETYPE_H),  have  been  added  to
+      simplify life-cycle management.  A counter gets initialized to 1
+      at the  time an  FT_Library (or  FT_Face) structure  is created.
+      The  two  new   functions  increment  the  respective   counter.
+      `FT_Done_Library' and `FT_Done_Face' then only destroy a library
+      or face if the counter is 1, otherwise they simply decrement the
+      counter.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.4.0 and 2.4.1
+
+  I. IMPORTANT CHANGES
+
+    - A serious bug in the  CFF font module prevented  display of many
+      glyphs in CFF fonts like `MinionPro-Regular.otf'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.12 and 2.4.0
+
+  I. IMPORTANT CHANGES
+
+    - Since May  2010, all  patents  regarding  the TrueType  bytecode
+      interpreter have expired worldwide.  Consequently, we now define
+      TT_CONFIG_OPTION_BYTECODE_INTERPRETER by  default (and  undefine
+      TT_CONFIG_OPTION_UNPATENTED_HINTING).
+
+    - A new function `FT_Library_SetLcdFilterWeights' is available  to
+      adjust the filter weights set by `FT_Library_SetLcdFilter'.
+
+
+  II. MISCELLANEOUS
+
+    - Thanks to many reports from Robert Święcki, FreeType's stability
+      in handling broken or damaged fonts is much improved.
+
+    - Support  for LCD  filter  control has  been  added to  the  demo
+      programs `ftdiff' and `ftview'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.11 and 2.3.12
+
+  I. IMPORTANT CHANGES
+
+    - For  `FT_Open_Face',  new  parameters  are  available  to ignore
+      preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
+      FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
+
+
+  II. MISCELLANEOUS
+
+    - Support  for  incremental  font  loading  (controlled  with  the
+      FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
+
+    - Better support for vertical metrics.
+
+    - Various minor bug fixes.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.10 and 2.3.11
+
+  I. IMPORTANT BUG FIXES
+
+    - Version 2.3.10 broke PCF support.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.10 and 2.3.9
+
+  I. IMPORTANT BUG FIXES
+
+    - If all  ASCII digits in a  font have the  same (unscaled) width,
+      the autohinter respects this and won't change it.
+
+    - TrueType fonts  are now  rasterized correctly  if the horizontal
+      and vertical resolution differ.
+
+    - Type 1 fonts are now handled with increased precision internally
+      to avoid serious rounding issues if non-integral coordinates are
+      encountered.
+
+    - Horizontally  condensed CFF  fonts (using the font  matrix) were
+      rendered  incorrectly.   This  bug  has  been  introduced  after
+      release 2.3.5.
+
+
+  II. IMPORTANT CHANGES
+
+    - Support for the SFNT cmap 13 table format (as defined by the new
+      OpenType 1.6 specification) has been added.
+
+    - B/W rasterization  of well-hinted TrueType  fonts at small sizes
+      has been greatly improved.
+
+    - Calculation  of  vertical  metrics in  OpenType  fonts has  been
+      improved.
+
+
+  III. MISCELLANEOUS
+
+    - It  is now  possible to  change  the emboldening  factor in  the
+      `ftview' demo program with keys `e' and `E'.
+
+    - It is  now possible  to change the  slant value in  the `ftview'
+      demo program with keys `s' and `S'.
+
+    - The  5-levels  grayscale  mode of  the `ftraster'  module (which
+      FreeType doesn't use by default) was broken since version 2.3.0.
+
+    - Compilation of the  `ftgrays' and `ftraster' modules  was broken
+      in stand-alone mode.
+
+    - Various fixes for compilation on 64bit and 16bit architectures.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.9 and 2.3.8
+
+  I. IMPORTANT BUG FIXES
+
+    - Very unfortunately, FreeType 2.3.8 contained a change that broke
+      its  official ABI.  The  end result  is  that programs  compiled
+      against previous versions of the library, but dynamically linked
+      to  2.3.8 can  experience  memory corruption  if  they call  the
+      `FT_Get_PS_Font_Info' function.
+
+      We recommend all users to  upgrade to 2.3.9 as soon as possible,
+      or to downgrade to a previous  release of the library if this is
+      not an option.
+
+      The  origin of the  bug is  that a  new field  was added  to the
+      publicly  defined  `PS_FontInfoRec'  structure.   Unfortunately,
+      objects of this  type can be stack or  heap allocated by callers
+      of   `FT_Get_PS_Font_Info',  resulting   in   a  memory   buffer
+      overwrite with its implementation in 2.3.8.
+
+      If  you want to  know whether  your code  is vulnerable  to this
+      issue,  simply  search  for  the  substrings  `PS_FontInfo'  and
+      `PS_Font_Info' in your source code.  If none is found, your code
+      is safe and is not affected.
+
+      The FreeType team apologizes for the problem.
+
+    - The POSIX support  of MacOS resource-fork fonts  (Suitcase fonts
+      and LaserWriter Type1 PostScript fonts) was broken in 2.3.8.  If
+      FreeType2 is built without Carbon framework, these fonts are not
+      handled correctly.  Version 2.3.7 didn't have this bug.
+
+    - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
+      almost all font formats except TrueType fonts.
+
+    - Fix a bug  in the SFNT  kerning table  loader/parser which could
+      crash the engine if certain malformed tables were encountered.
+
+    - Composite SFNT bitmaps are now handled correctly.
+
+
+  II. IMPORTANT CHANGES
+
+    - The   new  functions   `FT_Get_CID_Is_Internally_CID_keyed'  and
+      `FT_Get_CID_From_Glyph_Index'  can be  used to  access CID-keyed
+      CFF fonts  via CID  values.  This code  has been  contributed by
+      Michael Toftdal.
+
+
+  III. MISCELLANEOUS
+
+    - `FT_Outline_Get_InsideBorder'  returns   FT_STROKER_BORDER_RIGHT
+      for empty outlines.  This was incorrectly documented.
+
+    - The `ftview' demo program now supports UTF-8 encoded strings.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.8 and 2.3.7
+
+  I. IMPORTANT BUG FIXES
+
+    - CID-keyed fonts in an SFNT wrapper were not handled correctly.
+
+    - The smooth renderer produced truncated images (on the right) for
+      outline parts with negative horizontal values.  Most fonts don't
+      contain outlines left  to the y coordinate axis, but  the effect
+      was very noticeable for outlines processed with FT_Glyph_Stroke,
+      using thick strokes.
+
+    - `FT_Get_TrueType_Engine_Type'  returned a  wrong  value if  both
+      configuration  macros  TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
+      TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
+
+    - The  `face_index'  field  in   the  `FT_Face'  structure  wasn't
+      initialized properly after calling FT_Open_Face and friends with
+      a positive face index for CFFs,  WinFNTs, and, most importantly,
+      for TrueType Collections (TTCs).
+
+
+  II. IMPORTANT CHANGES
+
+    - Rudimentary support for Type 1  fonts and CID-keyed Type 1 fonts
+      in an SFNT wrapper has been  added -- such fonts are used on the
+      Mac.  The core  SFNT tables `TYP1' and `CID '  are passed to the
+      PS Type 1  and CID-keyed PS font drivers;  other tables (`ALMX',
+      `BBOX', etc.) are not supported yet.
+
+    - A  new interface  to extract  advance values  of glyphs  without
+      loading their outlines has been added.  The functions are called
+      `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
+      `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
+
+    - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
+      contributed  by   David  Bevan  to  access   the  embedding  and
+      subsetting restriction information of fonts.
+
+
+  III. MISCELLANEOUS
+
+    - FT_MulFix is now an inlined function; by default, assembler code
+      is provided for x86 and ARM.  See FT_CONFIG_OPTION_INLINE_MULFIX
+      and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
+
+    - The handling of `tricky' fonts  (this is, fonts which don't work
+      with the  autohinter, needing the font  format's hinting engine)
+      has been generalized and changed slightly:
+
+      . A new  face flag  FT_FACE_FLAG_TRICKY indicates that  the font
+        format's  hinting engine is  necessary for  correct rendering.
+        The macro FT_IS_TRICKY can be used to check this flag.
+
+      . FT_LOAD_NO_HINTING is now ignored for tricky fonts.  To really
+        force  raw  loading  of  such fonts  (without  hinting),  both
+        FT_LOAD_NO_HINTING  and FT_LOAD_NO_AUTOHINT  must  be used  --
+        this is something which you probably never want to do.
+
+      . Tricky  TrueType fonts  always use  the  bytecode interpreter,
+        either the patented or unpatented version.
+
+    - The  function  `FT_GlyphSlot_Own_Bitmap'  has  been  moved  from
+      FT_SYNTHESIS_H to FT_BITMAP_H; it  is now part of the `official'
+      API.   (The functions  in  FT_SYNTHESIS_H are  still subject  to
+      change, however.)
+
+    - In the  `ftdiff'  demo  program you  can now  toggle the  use of
+      FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.7 and 2.3.6
+
+  I. IMPORTANT BUG FIXES
+
+    - If the library  was compiled on an i386  platform using gcc, and
+      compiler  option -O3 was  given, `FT_MulFix'  sometimes returned
+      incorrect  results   which  could  have   caused  problems  with
+      `FT_Request_Metrics'   and  `FT_Select_Metrics',   returning  an
+      incorrect descender size.
+
+    - Pure CFFs without  subfonts were scaled incorrectly  if the font
+      matrix  was  non-standard.  This  bug  has  been  introduced  in
+      version 2.3.6.
+
+    - The  `style_name'  field  in  the  `FT_FaceRec'  structure often
+      contained  a wrong  value for  Type 1  fonts.  This misbehaviour
+      has been  introduced  in  version  2.3.6  while  trying  to  fix
+      another   problem.   [Note,  however,   that   this   value   is
+      informative only  since  the  used  algorithm to  extract  it is
+      very simplistic.]
+
+
+  II. IMPORTANT CHANGES
+
+    - Two      new      macros,      FT_OUTLINE_SMART_DROPOUTS     and
+      FT_OUTLINE_EXCLUDE_STUBS,  have been introduced.   Together with
+      FT_OUTLINE_IGNORE_DROPOUTS (which  was ignored previously) it is
+      now possible to control the dropout mode  of the `raster' module
+      (for B&W rasterization),   using  the   `flags'  field   in  the
+      `FT_Outline' structure.
+
+    - The TrueType bytecode interpreter now passes the dropout mode to
+      the B&W rasterizer.  This greatly increases the output for small
+      ppem values of many fonts like `pala.ttf'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.6 and 2.3.5
+
+  I. IMPORTANT BUG FIXES
+
+    - A  bunch of  potential security  problems have  been found.  All
+      users should update.
+
+    - Microsoft  Unicode  cmaps  in  TrueType  fonts  are  now  always
+      preferred over Apple cmaps.  This is not a bug per se, but there
+      exist some buggy  fonts created for MS which  have broken  Apple
+      cmaps.  This affects  only the automatic  selection of FreeType;
+      it's always possible to manually select an Apple Unicode cmap if
+      desired.
+
+    - Many bug fixes to the TrueType bytecode interpreter.
+
+    - Improved Mac support.
+
+    - Subsetted CID-keyed CFFs are now supported correctly.
+
+    - CID-keyed CFFs with subfonts which are scaled in a  non-standard
+      way are now handled correctly.
+
+    - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
+      the font was a Windows (bitmap) FNT/FON.
+
+
+  II. IMPORTANT CHANGES
+
+    - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
+      access to  those fields in a CID-keyed font.  The code  has been
+      contributed by Derek Clegg.
+
+    - George Williams  contributed  code  to validate  the new  `MATH'
+      OpenType  table (within  the `otvalid'  module).  The  `ftvalid'
+      demo program has been extended accordingly.
+
+    - An API for cmap 14 support  (for Unicode Variant Selectors, UVS)
+      has been contributed by George Williams.
+
+    - A new face flag FT_FACE_FLAG_CID_KEYED has been added,  together
+      with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
+      CID-keyed.
+
+
+  III. MISCELLANEOUS
+
+    - Build support for symbian has been contributed.
+
+    - Better WGL4 glyph name support, contributed by Sergey Tolstov.
+
+    - Debugging output of the  various FT_TRACEX macros is now sent to
+      stderr.
+
+    - The `ftview' demo program now provides artificial slanting too.
+
+    - The `ftvalid' demo  program has a new  option `-f' to select the
+      font index.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.5 and 2.3.4
+
+  I. IMPORTANT BUG FIXES
+
+    - Some subglyphs in TrueType fonts were handled incorrectly due to
+      a missing graphics state reinitialization.
+
+    - Large .Z files  (as distributed with some X11  packages) weren't
+      handled correctly, making FreeType increase the heap stack in an
+      endless loop.
+
+    - A large  number of  bugs have  been fixed  to avoid  crashes and
+      endless loops with invalid fonts.
+
+
+  II. IMPORTANT CHANGES
+
+    - The  two new  cache functions  `FTC_ImageCache_LookupScaler' and
+      `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
+      glyphs using an  `FTC_Scaler' object;  this makes it possible to
+      use fractional pixel sizes in the cache.  The demo programs have
+      been updated accordingly to use this feature.
+
+    - A new API  `FT_Get_CMap_Format' has been added to  get the  cmap
+      format  of a  TrueType font.   This  is useful  in handling  PDF
+      files.  The code has been contributed by Derek Clegg.
+
+    - The  auto-hinter  now  produces  better  output  by  default for
+      non-Latin scripts  like Indic.   This was done by  using the CJK
+      hinting module  as the default instead of the Latin one.  Thanks
+      to Rahul Bhalerao for this suggestion.
+
+    - A new API `FT_Face_CheckTrueTypePatents'  has been added to find
+      out  whether  a  given  TrueType  font  uses  patented  bytecode
+      instructions.   The  `ft2demos' bundle  contains a  new  program
+      called `ftpatchk' which demonstrates its usage.
+
+    - A  new  API  `FT_Face_SetUnpatentedHinting'  has  been  added to
+      enable or disable the unpatented hinter.
+
+    - Support for Windows FON files in PE format  has been contributed
+      by Dmitry Timoshkov.
+
+
+  III. MISCELLANEOUS
+
+    - Vincent Richomme contributed Visual C++ project files for Pocket
+      PCs.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.4 and 2.3.3
+
+  I. IMPORTANT BUG FIXES
+
+    - A serious  bug  in  the  handling  of bitmap  fonts (and  bitmap
+      strikes of outline fonts) has been introduced in 2.3.3.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.3 and 2.3.2
+
+  I. IMPORTANT BUG FIXES
+
+    - Remove a serious regression in the TrueType bytecode interpreter
+      that was introduced  in version 2.3.2.  Note that  this does not
+      disable  the  improvements  introduced  to  the  interpreter  in
+      version 2.3.2,  only some ill  cases that occurred  with certain
+      fonts (though a few popular ones).
+
+    - The auto-hinter now  ignores single-point contours for computing
+      blue zones.   This bug  created `wavy' baselines  when rendering
+      text  with  various  fonts  that  use these  contours  to  model
+      mark-attach points  (these are points that  are never rasterized
+      and are placed outside of the glyph's real outline).
+
+    - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
+      zero for mono-spaced fonts.  Otherwise code that uses them would
+      essentially ruin the fixed-advance property.
+
+    - Fix  CVE-2007-1351 which  can  cause an  integer overflow  while
+      parsing  BDF fonts,  leading to  a potentially  exploitable heap
+      overflow condition.
+
+
+  II. MISCELLANEOUS
+
+    - Fixed compilation issues on some 64-bit platforms (see ChangeLog
+      for details).
+
+    - A new demo  program `ftdiff' has been added  to compare TrueType
+      hinting, FreeType's auto  hinting, and rendering without hinting
+      in three columns.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.2 and 2.3.1
+
+  I. IMPORTANT BUG FIXES
+
+    - FreeType  returned incorrect  kerning information  from TrueType
+      fonts when the bytecode  interpreter was enabled.  This happened
+      due to a typo introduced in version 2.3.0.
+
+    - Negative  kerning  values  from   PFM  files  are  now  reported
+      correctly  (they were read  as 16-bit  unsigned values  from the
+      file).
+
+    - Fixed  a small  memory leak  when `FT_Init_FreeType'  failed for
+      some reason.
+
+    - The Postscript hinter placed and sized very thin and ghost stems
+      incorrectly.
+
+    - The TrueType bytecode  interpreter has been fixed to  get rid of
+      most of the  rare differences seen in comparison  to the Windows
+      font loader.
+
+
+  II. IMPORTANT CHANGES
+
+    - The auto-hinter  now better deals  with serifs and  corner cases
+      (e.g.,  glyph '9'  in Arial  at 9pt,  96dpi).  It  also improves
+      spacing  adjustments and doesn't  change widths  for non-spacing
+      glyphs.
+
+    - Many   Mac-specific   functions   are  deprecated   (but   still
+      available);  modern replacements  have been  provided  for them.
+      See the documentation in file `ftmac.h'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.1 and 2.3.0
+
+  I. IMPORTANT BUG FIXES
+
+    - The TrueType interpreter sometimes returned incorrect horizontal
+      metrics due to a bug in the handling of the SHZ instruction.
+
+    - A typo  in  a  security  check  introduced  after  version 2.2.1
+      prevented FreeType to render some glyphs in CFF fonts.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.3.0 and 2.2.1
+
+  I. IMPORTANT BUG FIXES
+
+    - The  PCF font  loader  is  now much  more  robust while  loading
+      malformed font files.
+
+    - Various memory leaks have been found and fixed.
+
+    - The TrueType name loader now deals properly with some fonts that
+      encode their  names in UTF-16 (the specification  was vague, and
+      the code incorrectly assumed UCS-4).
+
+    - Fixed the TrueType bytecode  loader to deal properly with subtle
+      monochrome/gray  issues  when   scaling  the  CVT.   Some  fonts
+      exhibited bad rendering artifacts otherwise.
+
+    - `FT_GlyphSlot_Embolden' now  supports vertical layouts correctly
+      (it mangled the vertical advance height).
+
+    - Fixed byte  endian issues  of `ftmac.c' to  support Mac OS  X on
+      i386.
+
+    - The  PFR  font loader  no  longer  erroneously  tags font  files
+      without any outlines as FT_FACE_FLAG_SCALABLE.
+
+
+  II. NEW API FUNCTIONS
+
+    - `FT_Library_SetLcdFilter' allows you  to select a special filter
+      to be  applied to the bitmaps generated  by `FT_Render_Glyph' if
+      one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
+      been  selected.  This filter  is used  to reduce  color fringes;
+      several  settings are  available  through the  FT_LCD_FILTER_XXX
+      enumeration.
+
+      Its  declaration   and  documentation  can  be   found  in  file
+      `include/freetype/ftlcdfil.h'   (to  be   accessed   with  macro
+      FT_LCD_FILTER_H).
+
+      *IMPORTANT*:     This      function     returns     an     error
+      (FT_Err_Unimplemented_Feature) in default  builds of the library
+      for patent reasons.  See below.
+
+    - `FT_Get_Gasp'  allows you  to query  the flags  of  the TrueType
+      `gasp' table for  a given character pixel size.   This is useful
+      to duplicate  the text rendering  of MS Windows when  the native
+      bytecode  interpreter is  enabled (which  isn't the  default for
+      other patent reasons).
+
+      Its  declaration   and  documentation  can  be   found  in  file
+      `include/freetype/ftgasp.h'   (to   be   accessed   with   macro
+      FT_GASP_H).
+
+
+  III. IMPORTANT CHANGES
+
+    - The auto-hinter has been tuned a lot to improve its results with
+      serif fonts, resulting in much better font rendering of many web
+      pages.
+
+    - The unpatented  hinter is now part  of the default  build of the
+      library; we  have added  code to automatically  support `tricky'
+      fonts that need it.
+
+      This means  that FreeType should `just work'  with certain Asian
+      fonts, like  MingLiU, which cannot properly be  loaded without a
+      bytecode interpreter,  but which fortunately  do not use  any of
+      the patented  bytecode opcodes.  We detect these  fonts by name,
+      so please  report any font file  that doesn't seem  to work with
+      FreeType, and  we shall do what we  can to support it  in a next
+      release.
+
+      Note  that  the API  hasn't  changed,  so  you can  still  force
+      unpatented hinting with a special parameter to `FT_Open_Face' as
+      well.  This  might be useful in  same cases; for  example, a PDF
+      reader might present  a user option to activate  it to deal with
+      certain  `tricky'   embedded  fonts  which   cannot  be  clearly
+      identified.
+
+      If you are  a developer for embedded systems,  you might want to
+      *disable*  the   feature  to  save  code   space  by  undefining
+      TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
+
+    - LCD-optimized rendering is now  *disabled* in all default builds
+      of  the  library,  mainly   due  to  patent  issues.   For  more
+      information see:
+
+      http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
+
+      A  new  configuration macro  FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+      has been introduced in  `ftoption.h'; manually define it in this
+      file if you want to re-enable the feature.
+
+      The  change only  affects the  implementation, not  the FreeType
+      API.  This means that clients don't need to be modified, because
+      the library still generates  LCD decimated bitmaps, but with the
+      added constraint that R=G=B on each triplet.
+
+      The  displayed result  should  be equal  to normal  anti-aliased
+      rendering.
+
+      Additionally,  if   FT_CONFIG_OPTION_SUBPIXEL_RENDERING  is  not
+      defined, the new  `FT_Library_SetLcdFilter' function returns the
+      FT_Err_Unimplemented_Feature error code.
+
+    - Some computation bugs in  the TrueType bytecode interpreter were
+      found,  which  allow us  to  get rid  of  very  subtle and  rare
+      differences we had experienced with the Windows renderer.
+
+    - It is now possible to cross-compile the library easily.  See the
+      file `docs/INSTALL.CROSS' for details.
+
+    - The file `src/base/ftmac.c' now contains code for Mac OS X only;
+      its  deprecated function  `FT_GetFile_From_Mac_Font_Name' always
+      returns an  error even if the QuickDraw  framework is available.
+      The previous version has been moved to `builds/mac/ftmac.c'.
+
+      Selecting  configure option `--with-quickdraw-carbon'  makes the
+      build process use the original `ftmac.c' file instead of the Mac
+      OS X-only version.
+
+
+  IV. MISCELLANEOUS
+
+    - Various performance and memory footprint optimizations have been
+      performed on  the TrueType and CFF font  loaders, sometimes with
+      very drastic  benefits (e.g., the  TrueType loader is  now about
+      25% faster;  FreeType should use  less heap memory  under nearly
+      all conditions).
+
+    - The anti-aliased rasterizer has been optimized and is now 15% to
+      25%  percent  faster than  in  previous  versions, depending  on
+      content.
+
+    - The Type 1 loader has been improved; as an example, it now skips
+      top-level dictionaries properly.
+
+    - Better support for Mac  fonts on POSIX systems, plus compilation
+      fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
+
+    - Configuration  without `--with-old-mac-fonts'  does  not include
+      `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
+
+    - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
+      in the kern table.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.2.1 and 2.2
+
+  I. IMPORTANT BUG FIXES
+
+    - Various integer overflows have been fixed.
+
+    - PFB fonts with MacOS resource fork weren't  handled correctly on
+      non-MacOS platforms.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.2 and 2.1.10
+
+(not released officially)
+
+  I. IMPORTANT BUG FIXES
+
+    - Vertical metrics for SFNT fonts were incorrect sometimes.
+
+    - The FT_HAS_KERNING macro always returned 0.
+
+    - CFF OpenType  fonts didn't  return correct vertical  metrics for
+      glyphs with outlines.
+
+    - If FreeType was compiled without hinters, all font formats based
+      on PS outlines weren't scaled correctly.
+
+
+  II. IMPORTANT CHANGES
+
+    - Version 2.2 no longer exposes its internals, this is, the header
+      files  located in  the `include/freetype/internal'  directory of
+      the source package are not  copied anymore by the `make install'
+      command.  Consequently, a number of rogue clients which directly
+      access  FreeType's  internal   functions  and  structures  won't
+      compile without modification.
+
+      We provide  patches for  most of those  rogue clients.   See the
+      following page for more information:
+
+        http://www.freetype.org/freetype2/patches/rogue-patches.html
+
+      Note that, as  a convenience to our Unix  desktop users, version
+      2.2 is *binary* compatible with FreeType 2.1.7, which means that
+      installing this  release on  an existing distribution  shall not
+      break any working desktop.
+
+    - FreeType's build  mechanism has been redesigned.   With GNU make
+      it  is  now  sufficient  in   most  cases  to  edit  two  files:
+      `modules.cfg',  to  select   the  library  components,  and  the
+      configuration  file  `include/freetype/config/ftoption.h' (which
+      can be copied to the objects directory).  Removing unused module
+      directories   to    prevent   its   compilation    and   editing
+      `include/freetype/config/ftmodule.h' is no longer necessary.
+
+    - The  LIGHT  hinting algorithm  produces  more pleasant  results.
+      Also, using the  FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
+      always forces auto-hinting, as a special exception.  This allows
+      you to experiment with it  even if you have enabled the TrueType
+      bytecode interpreter in your build.
+
+    - The auto hinter now employs a new algorithm for CJK fonts, based
+      on Akito  Hirai's patch.   Note that this  only works  for fonts
+      with a Unicode charmap at the moment.
+
+    - The following callback function  types have changed slightly (by
+      adding the `const' keyword where appropriate):
+
+        FT_Outline_MoveToFunc
+        FT_Outline_LineToFunc
+        FT_Outline_ConicToFunc
+        FT_Outline_CubicToFunc
+        FT_SpanFunc
+        FT_Raster_RenderFunc
+
+        FT_Glyph_TransformFunc
+        FT_Renderer_RenderFunc
+        FT_Renderer_TransformFunc
+
+      Note that this doesn't affect binary backward compatibility.
+
+    - On MacOS,  new APIs have  been added as replacements  for legacy
+      APIs:  `FT_New_Face_From_FSRef'  for  `FT_New_Face_From_FSSpec',
+      and              `FT_GetFile_From_Mac_ATS_Name'              for
+      `FT_GetFile_From_Mac_Name'.  Legacy APIs are still available, if
+      FreeType is built without disabling them.
+
+    - A new  API `FT_Select_Size'  has been added  to select  a bitmap
+      strike  by its  index.   Code using  other  functions to  select
+      bitmap strikes should be updated to use this function.
+
+    - A  new API  `FT_Get_SubGlyph_Info'  has been  added to  retrieve
+      subglyph data.  This can be  used by rogue clients which used to
+      access the internal headers to get the corresponding data.
+
+    - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
+      BDF/PCF fonts,  and only  for them.  This  causes inconsistency.
+      In this release,  we undo the change.  The  intent of the change
+      in 2.1.10  is to allow  size selection through  real dimensions,
+      which can now be done through `FT_Request_Size'.
+
+    - Some security  issues were discovered  and fixed in the  CFF and
+      Type  1 loader, causing  crashes of  FreeType by  malformed font
+      files.
+
+
+  III. MISCELLANEOUS
+
+    - The documentation  for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
+      values now better reflects its usage and differences: One set is
+      used to specify the hinting algorithm, the other to specify  the
+      pixel rendering mode.
+
+    - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
+      changed to count supported scalable faces (sfnt, LWFN) only, and
+      to  return the  number of  available faces  via face->num_faces.
+      Unsupported bitmap faces (fbit, NFNT) are ignored.
+
+    - builds/unix/configure  has been  improved for  MacOS X.   It now
+      automatically checks available  functions in Carbon library, and
+      prepare to use newest  functions by default.  Options to specify
+      the  dependencies of  each Carbon  APIs (FSSpec,  FSRef, old/new
+      QuickDraw, ATS)  are available too.  By manual  disabling of all
+      QuickDraw   functionality,  FreeType   can   be  built   without
+      `deprecated   function'   warnings    on   MacOS   10.4.x,   but
+      FT_GetFile_Mac_Name  in  ftmac.c  then  is changed  to  a  dummy
+      function, and returns an `unimplemented' error.  For details see
+      builds/mac/README.
+
+    - SFNT cmap handling has been  improved, mainly to run much faster
+      with CJK fonts.
+
+    - A   new  function   `FT_Get_TrueType_Engine_Type   (declared  in
+      `FT_MODULE_H')  is  provided  to  determine the  status  of  the
+      TrueType   bytecode  interpreter   compiled  into   the  library
+      (patented, unpatented, unimplemented).
+
+    - Vertical metrics of glyphs are  synthesized if the font does not
+      provide such information.  You can tell whether  the metrics are
+      synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
+      the face.
+
+    - The demo programs  `ftview' and  `ftstring' have been  rewritten
+      for better readability.   `ftview' has a new switch `-p' to test
+      FT_New_Memory_Face (instead of FT_New_Face).
+
+    - FreeType now honours bit 1 in the `head' table of TrueType fonts
+      (meaning `left sidebearing point at x=0').  This helps with some
+      buggy fonts.
+
+    - Rudimentary support for Adobe's new `SING Glyphlet' format.  See
+
+        http://www.adobe.com/products/indesign/sing_gaiji.html
+
+      for more information.
+
+    - The `ftdump'  program from the `ft2demos' bundle  now shows some
+      information about charmaps.  It  also supports a new switch `-v'
+      to increase verbosity.
+
+    - Better AFM support.  This includes track kerning support.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.10 and 2.1.9
+
+  I. IMPORTANT BUG FIXES
+
+    - The size comparison for BDF and PCF files could fail sometimes.
+
+    - Some  CFF files  were still not  loaded  correctly.   Patch from
+      Derek Noonburg.
+
+    - The stroker still had some serious bugs.
+
+    - Boris  Letocha  fixed a  bug in  the  TrueType interpreter:  The
+      NPUSHW instruction wasn't skipped correctly in IF clauses.  Some
+      fonts like `Helvetica 75 Bold' failed.
+
+    - Another  serious  bug  in  handling  TrueType hints  caused many
+      distortions.  It has been introduced in version 2.1.8, and it is
+      highly recommended to upgrade.
+
+    - FreeType didn't properly parse empty Type 1 glyphs.
+
+    - An unbound dynamic buffer growth was fixed in the PFR loader.
+
+    - Several bugs have been fixed in the cache sub-system.
+
+    - FreeType behaved incorrectly when resizing two distinct but very
+      close character pixel sizes through `FT_Set_Char_Size' (Savannah
+      bug #12263).
+
+    - The auto-hinter didn't work properly for fonts without a Unicode
+      charmap -- it even refused to load the glyphs.
+
+
+  II. IMPORTANT CHANGES
+
+    - Many fixes have been applied to drastically reduce the amount of
+      heap   memory   used   by   FreeType,   especially   when  using
+      memory-mapped font files  (which is the default on Unix  systems
+      which support them).
+
+    - The auto-hinter  has been replaced with a new module, called the
+      `auto-fitter'.  It consumes  less memory  than its  predecessor,
+      and it is  prepared to support non-latin scripts  better in next
+      releases.
+
+    - George Williams  contributed code to read  kerning data from PFM
+      files.
+
+    - FreeType   now   uses    the   TT_NAME_ID_PREFERRED_FAMILY   and
+      TT_NAME_ID_PREFERRED_SUBFAMILY   strings   (if   available)  for
+      setting  family  and  style in SFNT  fonts  (patch from Kornfeld
+      Eliyahu Peter).
+
+    - A  new  API `FT_Sfnt_Table_Info'  (in FT_TRUETYPE_TABLES_H)  has
+      been added to retrieve name and size information of SFNT tables.
+
+    - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
+      been added to validate OpenType tables  (BASE, GDEF, GPOS, GSUB,
+      JSTF).   After validation  it is  no longer  necessary to  check
+      for errors in those tables while accessing them.
+
+      Note that  this module might  be moved to another library in the
+      future  to avoid  a tight  dependency between  FreeType and  the
+      OpenType specification.
+
+    - A new API in FT_BITMAP_H  (`FT_Bitmap_New', `FT_Bitmap_Convert',
+      `FT_Bitmap_Copy',  `FT_Bitmap_Embolden',  `FT_Bitmap_Done')  has
+      been added.   Its  use is  to convert an  FT_Bitmap structure in
+      1bpp, 2bpp,  4bpp, or 8bpp  format into  another 8bpp FT_Bitmap,
+      probably using a different pitch, and to further manipulate it.
+
+    - A new  API `FT_Outline_Embolden'  (in FT_OUTLINE_H) gives  finer
+      control how  outlines are embolded.
+
+    - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H)  now handles bitmaps
+      also (code contributed  by Chia I Wu).  Note that this  function
+      is still experimental and may be replaced with a better API.
+
+    - The method  how BDF and PCF  bitmap fonts  are accessed has been
+      refined.   Formerly,   FT_Set_Pixel_Sizes  and  FT_Set_Char_Size
+      were  synonyms in  FreeType's  BDF and PCF interface.  This  has
+      changed now.  FT_Set_Pixel_Sizes  should be  used to  select the
+      actual  font dimensions  (the `strike',  which is the sum of the
+      `FONT_ASCENT'    and    `FONT_DESCENT'    properties),     while
+      FT_Set_Char_Size  selects  the  `nominal' size  (the `PIXELSIZE'
+      property).  In both functions, the width parameter is ignored.
+
+
+  III. MISCELLANEOUS
+
+    - The BDF driver  no longer converts  all returned bitmaps  with a
+      depth of 2bpp or 4bpp to a depth of 8bpp.  The documentation has
+      not  mentioned  this  explicitly,  but  implementors  might have
+      relied on this after looking into the source files.
+
+    - A new option `--ftversion' has been  added to freetype-config to
+      return the FreeType version.
+
+    - The  memory  debugger  has  been  updated   to  dump  allocation
+      statistics on  all allocation  sources in the library.   This is
+      useful to  spot greedy  allocations when  loading and processing
+      fonts.
+
+    - We removed a huge array of constant pointers to constant strings
+      in the `psnames' module.   The problem was that  compilations in
+      PIC mode (i.e.,  when generating a  Unix shared object/dll)  put
+      the array  into the non-shared  writable section of  the library
+      since absolute pointers are not relocatable by nature.
+
+      This reduces the memory consumption by approximately 16KByte per
+      process linked  to FreeType.   We now also store  the array in a
+      compressed form (as a trie) which saves about 20KByte of code as
+      well.
+
+    - Kirill  Smelkov provided  patches to make  src/raster/ftraster.c
+      compile stand-alone again.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.9 and 2.1.8
+
+  I. IMPORTANT BUG FIXES
+
+    - The function  `FT_Get_CharMap_Index' was only declared,  without
+      any  real  code.   For  consistency,  it  has  been  renamed  to
+      `FT_Get_Charmap_Index'.   (This function is needed  to implement
+      cmap caches.)
+
+    - `FT_Outline_Get_BBox'  sometimes returned  incorrect values  for
+      conic outlines (e.g., for TrueType fonts).
+
+    - Handling of `bhed' table has been fixed.
+
+    - The TrueType driver with enabled byte code interpreter sometimes
+      returned artifacts due to incorrect rounding.  This bug has been
+      introduced after version 2.1.4.
+
+    - The BDF driver dropped the last glyph in the font.
+
+    - The BDF driver now uses the DEFAULT_CHAR property (if available)
+      to select a glyph shape for the undefined glyph.
+
+    - The stroker failed for closed outlines and single points.
+
+
+  II. IMPORTANT CHANGES
+
+    - George  Williams   contributed  code  to   handle  Apple's  font
+      distortion technology found in GX fonts (`avar', `cvar', `fvar',
+      and `gvar' tables;  the Multiple Masters  API has been  slightly
+      extended to cope with the new functionality).
+
+    - The `FT_GlyphSlotRec' structure has been extended:  The elements
+      `lsb_delta' and  `rsb_delta' give the difference  between hinted
+      and  unhinted  left and right  side bearings  if autohinting  is
+      active.  Using those values can improve the inter-letter spacing
+      considerably.   See the documentation of  `FT_GlyphSlotRec'  and
+      the `ftstring' demo program how to use it.
+
+    - Loading TrueType and Type 1 fonts has been made much faster.
+
+    - The stroker is  no longer experimental (but the  cache subsystem
+      still is).
+
+
+  III. MISCELLANEOUS
+
+    - A new  documentation file  `formats.txt' describes various  font
+      formats supported (and not supported) by FreeType.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.8 and 2.1.7
+
+  I. IMPORTANT BUG FIXES
+
+    - The native  TrueType hinter contained some  bugs which prevented
+      some fonts to be rendered correctly, most notably Legendum.otf.
+
+    - The PostScript hinter now produces improved results.
+
+    - The  linear advance  width  and height  values were  incorrectly
+      rounded,  making  them virtually  unusable  if  not loaded  with
+      FT_LOAD_LINEAR_DESIGN.
+
+    - Indexing CID-keyed CFF fonts is  now working: The glyph index is
+      correctly  treated as a  CID, similar  to FreeType's  CID driver
+      module.  Note that CID CMap support is still missing.
+
+    - The FT_FACE_FLAGS_GLYPH_NAMES flag is now  set correctly for all
+      font formats.
+
+    - Some subsetted Type 1  fonts weren't parsed correctly.  This bug
+      has been introduced in 2.1.7.  In summary, the Type 1 parser has
+      become more robust.
+
+    - Non-decimal numbers weren't parsed correctly in PS fonts.
+
+    - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
+      but one encoding.  Use  the new FT_WinFNT_ID_XXX values together
+      with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
+
+    - The descender metrics (face->size->metrics.descender) for WinFNT
+      bitmap fonts had the wrong sign.
+
+    - The (emulated) `seac' support for CFF fonts was broken.
+
+    - The `flex' operator didn't work for CFF fonts.
+
+    - PS glyphs  which  use  the   `hintmask'  operator  haven't  been
+      rendered correctly in some cases.
+
+    - Metrics for BDF and PCF bitmap font formats have been fixed.
+
+    - Autohinting  is now  disabled for  glyphs  which  are vertically
+      distorted  or mirrored  (using a  transformation matrix).   This
+      fixes a bug which produced zero-height glyphs.
+
+    - The   `freetype-config'   script   now  handles   --prefix   and
+      --exec-prefix correctly; it also  returns the proper --rpath (or
+      -R) value if FreeType has been built as a shared library.
+
+
+  II. IMPORTANT CHANGES
+
+    - Both  PCF  and BDF  drivers  now  handle  the SETWIDTH_NAME  and
+      ADD_STYLE_NAME    properties.     Values    are   appended    to
+      face->style_name; example: `Bold SemiCondensed'.
+
+    - The PCF driver now handles bitmap  fonts compressed with the LZW
+      algorithm (extension .pcf.Z, compressed with `compress').
+
+    - A  new  API   function  `FT_Get_CMap_Language_ID'  (declared  in
+      `tttables.h')  is  available  to   get  the  language  ID  of  a
+      TrueType/SFNT cmap.
+
+    - The hexadecimal format of  data after the `StartData' command in
+      CID-keyed Type 1 fonts is now supported.  While this can't occur
+      in  file-based   fonts,  it  can   happen  in  document-embedded
+      resources of PostScript documents.
+
+    - Embedded bitmaps in SFNT-based CFF fonts are now supported.
+
+    - A simple  API is  now available  to control  FreeType's  tracing
+      mechanism if compiled  with FT_DEBUG_LEVEL_TRACE.   See the file
+      `ftdebug.h' for more details.
+
+    - YAMATO Masatake contributed improved  handling of MacOS resource
+      forks on non-MacOS platforms (for example, Linux can mount MacOS
+      file systems).
+
+    - Support for MacOS has been improved; there is now a new function
+      `FT_New_Face_From_FSSpec'  similar to `FT_New_Face'  except that
+      it accepts an FSSpec instead of a path.
+
+    - The cache sub-system has been rewritten.
+
+      - There is now support for deinstallation of faces.
+
+      - A new  API function `FTC_Manager_RemoveFaceID'  has been added
+        to  delete  all  `idle'  nodes  that  correspond  to  a  given
+        FTC_FaceID.  All `locked' nodes  (i.e., those with a reference
+        count > 0), will be modified to prevent them from appearing in
+        further  lookups (they  will  be cleaned  normally when  their
+        reference count reaches 0).
+
+      - There  is  now  support  for point  scaling  (i.e.,  providing
+        character sizes in points + dpis, instead of pixels).
+
+      - Three abstract cache classes are now available:
+
+          FTC_GCache:  Used to store  one glyph  item per  cache node,
+                      with the ability to group common attributes into
+                      `families'.      This    replaces     the    old
+                      FTC_GlyphCache class.
+
+          FTC_ICache: Used to store one FT_Glyph per cache node.  This
+                      extends  FTC_GCache.  Family  definition, family
+                      comparison, and  glyph loading are  however left
+                      to sub-classes.
+
+          FTC_SCache: Used to  store up to 16 small  bitmaps per cache
+                      node.    This    extends   FTC_GCache.    Family
+                      definition, family  comparison and glyph loading
+                      are however left to sub-classes.
+
+      - The file `src/cache/ftcbasic.c' implements:
+
+          FTC_ImageCache: Extends    FTC_ICache;   implements   family
+                          definitions and glyph loading similar to the
+                          old API.
+
+          FTC_SBitCache: Extends    FTC_SCache,    implements   family
+                         definitions and glyph  loading similar to the
+                         old API
+
+        Client  applications  should  be  able to  extend  FTC_GCache,
+        FTC_ICache, or FTC_SCache much more easily (i.e., less code to
+        write, and  less callbacks).  For example,  one could envision
+        caches  that are  capable of  storing  transformed (obliqued),
+        stroked,   emboldened,   or   colored   glyph   images.    Use
+        `ftcbasic.c' as an example.
+
+      - All public  APIs are now  in `include/freetype/ftcache.h', (to
+        be    accessed   as    `FT_CACHE_H').     The   contents    of
+        `include/freetype/cache/' is only  needed by applications that
+        wish to implement their own caches.
+
+      - There were some major performance improvements through the use
+        of  various programming  tricks.   Cache hits  are  up to  70%
+        faster than in the old code.
+
+      - The  FTC_CMapCache has  been simplified.  Charmaps can only be
+        accessed by  index right now.  There  is also a  new API named
+        `FT_Charmap_GetIndex' for this purpose.
+
+      - The  demo programs  have been  updated to  the new  code.  The
+        previous versions will not work with the current one.
+
+      - Using  an invalid face  index in FT_Open_Face and friends  now
+        causes an error even if the font contains a single face only.
+
+
+  III. MISCELLANEOUS
+
+    - Wolfgang Domröse contributed support files for building FreeType
+      on the Atari using the PureC compiler.  Note that the Atari is a
+      16bit platform.
+
+    - Vitaliy Pasternak contributed project files for VS.NET 2003.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.7 and 2.1.6
+
+  I. IMPORTANT BUG FIXES
+
+    - Updated  to newest  libtool  version, fixing  build problems  on
+      various platforms.
+
+    - On  Unix  platforms,  `make  install' didn't  copy  the  correct
+      `ftconfig.h' file.
+
+  Note that version 2.1.7  contains the same library  C source code as
+  version 2.1.6.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.6 and 2.1.5
+
+  I. IMPORTANT BUG FIXES
+
+    - The PFR  font driver didn't  load kerning tables  correctly, and
+      the functions in FT_PFR_H didn't work at all.
+
+    - Type 1 font  files in  binary format  (PFB) with  an end-of-file
+      indicator weren't accepted by the FreeType engine.
+
+    - Fonts which contain /PaintType  and /StrokeWidth no longer cause
+      a segfault.  This bug has been introduced in version 2.1.5.
+
+    - Fonts  loaded  with   FT_LOAD_RENDER  no  longer  cause  strange
+      results.  This bug has been introduced in version 2.1.5.
+
+    - Some  Windows   (bitmap)  FNT/FON  files   couldn't  be  handled
+      correctly.
+
+
+  II. IMPORTANT CHANGES
+
+    - The internal  module API  has been heavily  changed in  favor of
+      massive simplifications within the font engine.  This also means
+      that authors of third-party modules must adapt their code to the
+      new scheme.
+
+      NOTE:  THE NEW SCHEME IS NOT COMPLETED YET.  PLEASE WAIT UNTIL A
+      FINAL ANNOUNCEMENT!
+
+    - The PostScript  parser has been enhanced to  handle comments and
+      strings   correctly.   Additionally,   more  syntax   forms  are
+      recognized.
+
+    - Added the  optional unpatented hinting system  for TrueType.  It
+      allows  typefaces which  need hinting  to produce  correct glyph
+      forms (e.g., Chinese typefaces  from Dynalab) to work acceptably
+      without infringing Apple patents.   This system is compiled only
+      if  TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING  is  defined  in
+      ftoption.h (activated by default).
+
+
+  III. MISCELLANEOUS
+
+    - There  is now  a guard  in the  public header  files  to protect
+      against inclusion of freetype.h from FreeType 1.
+
+    - Direct inclusion of freetype.h  and other public header files no
+      longer works.  You have to use the documented scheme
+
+        #include <ft2build.h>
+        #include FT_FREETYPE_H
+
+      to load freetype.h with  a symbolic name.  This protects against
+      renaming  of public  header  files (which  shouldn't happen  but
+      actually  has, avoiding two  public header  files with  the same
+      name).
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.5 and 2.1.4
+
+  I. IMPORTANT BUG FIXES
+
+    - Parsing the /CIDFontName field  now removes the leading slash to
+      be in sync with other font drivers.
+
+    - gzip support was buggy.  Some fonts could not be read.
+
+    - Fonts which  have nested subglyphs  more than one level  deep no
+      longer cause a segfault.
+
+    - Creation of synthetic  cmaps for fonts in CFF  format was broken
+      partially.
+
+    - Numeric  font  dictionary entries  for  synthetic  fonts are  no
+      longer overwritten.
+
+    - The font matrix  wasn't applied to the advance  width for Type1,
+      CID, and  CFF fonts.  This caused problems  when loading certain
+      synthetic Type 1 fonts like `Helvetica Narrow'.
+
+    - The test  for the charset registry  in BDF and PCF  fonts is now
+      case-insensitive.
+
+    - FT_Vector_Rotate  sometimes  returned   strange  values  due  to
+      rounding errors.
+
+    - The  PCF  driver  now  returns  the  correct  number  of  glyphs
+      (including an artificial `notdef' glyph at index 0).
+
+    - FreeType now  supports buggy CMaps  which are contained  in many
+      CJK fonts from Dynalab.
+
+    - Opening  an invalid  font  on a  Mac  caused a  segfault due  to
+      double-freeing memory.
+
+    - BDF  fonts  with  more   than  32768  glyphs  weren't  supported
+      properly.
+
+
+  II. IMPORTANT CHANGES
+
+    - Accessing bitmap font formats has been synchronized.  To do that
+      the FT_Bitmap_Size  structure has  been extended to  contain new
+      fields `size', `x_ppem', and `y_ppem'.
+
+    - The FNT driver now returns multiple faces, not multiple strikes.
+
+    - The `psnames'  module has been  updated to the Adobe  Glyph List
+      version 2.0.
+
+    - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
+
+    - The algorithm for guessing the font style has been improved.
+
+    - For fonts in SFNT format, root->height is no longer increased if
+      the line gap  is zero.  There exist fonts  (containing e.g. form
+      drawing  characters) which  intentionally have  a zero  line gap
+      value.
+
+    - ft_glyph_bbox_xxx  flags   are  now  deprecated   in  favour  of
+      FT_GLYPH_BBOX_XXX.
+
+    - ft_module_xxx   flags   are   now   deprecated  in   favour   of
+      FT_MODULE_XXX.
+
+    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}      are     now
+      deprecated               in               favour              of
+      FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB}  -- those encodings
+      are not specific to Microsoft.
+
+
+  III. MISCELLANEOUS
+
+    - The  autohinter  has been  further  improved;  for example,  `m'
+      glyphs now retain its vertical symmetry.
+
+    - Partial support of Mac fonts on non-Mac platforms.
+
+    - `make   refdoc'   (after   first   `make')   builds   the   HTML
+      documentation.  You need Python for this.
+
+    - The make build system should  now work more reliably on DOS-like
+      platforms.
+
+    - Support for  EMX gcc  and Watson C/C++  compilers on  MS-DOS has
+      been added.
+
+    - Better VMS build support.
+
+    - Support for the pkg-config  package by providing a `freetype.pc'
+      file.
+
+    - New configure option --with-old-mac-fonts for Darwin.
+
+    - Some source files have been  renamed (mainly to fit into the 8.3
+      naming scheme).
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.4 and 2.1.3
+
+  I. IMPORTANT BUG FIXES
+
+    - Updated  to newest  libtool  version, fixing  build problems  on
+      various platforms.
+
+    - A fix  in the Gzip stream  reader: It couldn't  read certain .gz
+      files properly due to a  small typo.  In certain cases, FreeType
+      could  also loop  endlessly  when trying  to  load tiny  gzipped
+      files.
+
+    - The configure script now tries  to use the system-wide zlib when
+      it  finds one  (instead of  the  copy found  in src/gzip).   And
+      `freetype-config' has  been updated to return  relevant flags in
+      this case when invoked with `--libs' (e.g. `-lzlib').
+
+    - Certain fonts couldn't be loaded  by 2.1.3 because they lacked a
+      Unicode   charmap  (e.g.   SYMBOL.TTF).    FreeType  erroneously
+      rejected them.
+
+    - The CFF loader was modified to accept fonts which only contain a
+      subset of  their reference charset.  This  prevented the correct
+      use of PDF-embedded fonts.
+
+    - The logic to detect Unicode charmaps has been modified.  This is
+      required to  support fonts which include both  16-bit and 32-bit
+      charmaps (like very  recent asian ones) using the  new 10 and 12
+      SFNT formats.
+
+    - The TrueType  loader now limits  the depth of  composite glyphs.
+      This is necessary to prevent broken fonts to break the engine by
+      blowing the stack with recursive glyph definitions.
+
+    - The CMap cache is now  capable of managing UCS-4 character codes
+      that   are   mapped   through   extended  charmaps   in   recent
+      TrueType/OpenType fonts.
+
+    - The   cache  sub-system   now  properly   manages  out-of-memory
+      conditions  instead of  blindly  reporting them  to the  caller.
+      This means that it will try to empty the cache before restarting
+      its allocations to see if that can help.
+
+    - The  PFR driver  didn't return  the list  of  available embedded
+      bitmaps properly.
+
+    - There was  a nasty  memory leak when  using embedded  bitmaps in
+      certain font formats.
+
+
+  II. IMPORTANT CHANGES
+
+    - David Chester  contributed some enhancements  to the auto-hinter
+      that  significantly increase  the  quality of  its output.   The
+      Postscript hinter was also improved in several ways.
+
+    - The FT_RENDER_MODE_LIGHT render mode was implemented.
+
+    - A new  API function called `FT_Get_BDF_Property'  has been added
+      to FT_BDF_H to  retrieve BDF properties from BDF  _and_ PCF font
+      files.   THIS  IS  STILL  EXPERIMENTAL,  since  it  hasn't  been
+      properly tested yet.
+
+    - A Windows FNT specific API has been added, mostly to access font
+      headers.  This is used by Wine.
+
+    - TrueType tables  without an `hmtx' table are  now tolerated when
+      an  incremental interface  is  used.  This  happens for  certain
+      Type42 fonts passed from Ghostscript to FreeType.
+
+    - The PFR font driver is  now capable of returning the font family
+      and style  names when  they are available  (instead of  the sole
+      `FontID').   This  is  performed  by parsing  an  *undocumented*
+      portion of the font file!
+
+
+  III. MISCELLANEOUS
+
+    - The path stroker in FT_STROKER_H has entered beta stage.  It now
+      works very  well, but  its interface might  change a bit  in the
+      future.  More on this in later releases.
+
+    - The documentation for  FT_Size_Metrics didn't appear properly in
+      the API reference.
+
+    - The file docs/VERSION.DLL has been updated to explain versioning
+      with FreeType  (i.e., comparing release/libtool/so  numbers, and
+      how to use them in autoconf scripts).
+
+    - The  installation  documentation  has been  seriously  revamped.
+      Everything is now in the `docs' directory.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.3 and 2.1.2
+
+  I. IMPORTANT BUG FIXES
+
+    - FT_Vector_Transform  had  been  incorrectly modified  in  2.1.2,
+      resulting  in  incorrect   transformations  being  applied  (for
+      example, rotations were processed in opposite angles).
+
+    - The format  8 and 12 TrueType charmap  enumeration routines have
+      been fixed (FT_Get_Next_Char returned invalid values).
+
+    - The  PFR font driver  returned incorrect  advance widths  if the
+      outline  and metrics resolution  defined in  the font  file were
+      different.
+
+    - FT_Glyph_To_Bitmap now returns  successfully when called with an
+      FT_BitmapGlyph argument (it previously returned an error).
+
+    - A bug  in the Type 1  loader that prevented  valid font bounding
+      boxes to be loaded from multiple master fonts.
+
+    - The SFNT  validation code has been rewritten.   FreeType can now
+      load `broken'  fonts that were  usable on Windows, but  not with
+      previous versions of the library.
+
+    - The computation of bearings in the BDF driver has been fixed.
+
+    - The Postscript hinter crashed when trying to hint certain glyphs
+      (more precisely,  when trying to  apply hints to an  empty glyph
+      outline).
+
+    - The  TrueType glyph  loader  now supports  composites in  `Apple
+      format'  (they differ slightly  from Microsoft/OpenType  ones in
+      the way transformation offsets are computed).
+
+    - FreeType was  very slow at opening certain  asian CID/CFF fonts,
+      due to  fixed increment  in dynamic array  re-allocations.  This
+      has  been changed  to  exponential behaviour  to get  acceptable
+      performance.
+
+
+
+  II. IMPORTANT CHANGES
+
+    - The PCF driver now supports gzip-compressed font files natively.
+      This means that  you will be able to use  all these bitmap fonts
+      that  come with  XFree86 with  FreeType (and  libXft/libXft2, by
+      extension).
+
+    - The  automatic and  postscript hinters  have both  been updated.
+      This  results in  a relatively  important increase  of rendering
+      quality since  many nasty defaults have been suppressed.  Please
+      visit the web page:
+
+        http://www.freetype.org/hinting/smooth-hinting.html
+
+      for additional details on this topic.
+
+    - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
+      (instead  of just  being  an FT_Int).   This  breaks source  and
+      binary  compatibility for  16bit systems  only,  while retaining
+      both of them for 32 and 64 bit ones.
+
+      Some new flags have been added consequently:
+
+        FT_LOAD_NO_AUTOHINT   :: Disable the use of the auto-hinter
+                                 (but not native format hinters).
+
+        FT_LOAD_TARGET_NORMAL :: Hint and render for normal
+                                 anti-aliased displays.
+
+        FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
+
+        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
+                                 BGR sub-pixel displays (like LCD
+                                 screens).  THIS IS STILL
+                                 EXPERIMENTAL!
+
+        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
+                                 vertical sub-pixel displays (like
+                                 rotated LCD screens).  THIS IS STILL
+                                 EXPERIMENTAL!
+
+      FT_LOAD_MONOCHROME   is  still   supported,  but   only  affects
+      rendering, not the hinting.
+
+      Note that the `ftview'  demo program available in the `ft2demos'
+      package  has been  updated to  support LCD-optimized  display on
+      non-paletted displays (under Win32 and X11).
+
+    - The  PFR  driver  now  supports embedded  bitmaps  (all  formats
+      supported), and returns correct kerning metrics for all glyphs.
+
+    - The TrueType charmap loader  now supports certain `broken' fonts
+      that load under Windows without problems.
+
+    - The cache API has been slightly modified (it's still a beta!):
+
+       - The type  FTC_ImageDesc has been removed; it  is now replaced
+         by  FTC_ImageTypeRec.   Note that  one  of  its  fields is  a
+         `load_flag' parameter for FT_Load_Glyph.
+
+       - The  field  `num_grays' of  FT_SBitRec  has  been changed  to
+         `max_grays'  in  order to  fit  within  a  single byte.   Its
+         maximum value is thus 255 (instead of 256 as previously).
+
+
+  III. MISCELLANEOUS
+
+    - Added support  for the  DESTDIR variable during  `make install'.
+      This simplifies packaging of FreeType.
+
+    - Included modified  copies of the  ZLib sources in  `src/gzip' in
+      order to support  gzip-compressed PCF fonts.  We do  not use the
+      system-provided  zlib  for  now,   though  this  is  a  probable
+      enhancement for future releases.
+
+    - The DocMaker tool used to generate the on-line API reference has
+      been   completely    rewritten.    It   is    now   located   in
+      `src/tools/docmaker/docmaker.py'.  Features:
+
+        - better cross-referenced output
+        - more polished output
+        - uses Python regular expressions  (though it didn't speed the
+          program)
+        - much  more  modular structure,  which  allows for  different
+          `backends'  in  order to  generate  HTML,  XML, or  whatever
+          format.
+
+      One can regenerate the API reference by calling:
+
+         python src/tools/docmaker/docmaker.py \
+                --prefix=ft2 \
+                --title=FreeType-2.1.3 \
+                --output=<outputdirectory>
+                include/freetype/*.h \
+                include/freetype/config/*.h \
+                include/freetype/cache/*.h
+
+    - A new, experimental, support for incremental font loading (i.e.,
+      loading  of fonts  where the  glyphs are  not in  the  font file
+      itself, but provided by an external component, like a Postscript
+      interpreter) has been added by Graham Asher.  This is still work
+      in progress, however.
+
+    - A new,  EXPERIMENTAL, path stroker  has been added.   It doesn't
+      suffer  from  severe  rounding  errors  and  treat  bezier  arcs
+      directly.  Still work in progress (i.e. not part of the official
+      API).   See  the file  <freetype/ftstroker.h>  for  some of  the
+      details.
+
+    - The massive  re-formatting of sources and  internal re-design is
+      still under-way.  Many  internal functions, constants, and types
+      have been renamed.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.2 and 2.1.1
+
+  I. IMPORTANT BUG FIXES
+
+    - Many  font drivers didn't  select a  Unicode charmap  by default
+      when a new face  was opened (with the FT_CONFIG_OPTION_USE_CMAPS
+      options enabled),  causing many applications  to not be  able to
+      display text correctly with the 2.1.x releases.
+
+    - The  PFR driver had  a bug  in its  composite loading  code that
+      produces incorrectly placed accents with many fonts.
+
+    - The Type42 driver crashed sometimes due to a nasty bug.
+
+    - The Type 1 custom encoding  charmap didn't handle the case where
+      the first glyph index wasn't 0.
+
+    - A  serious  typo  in  the  TrueType  composite  loader  produced
+      incorrectly placed  glyphs in fonts  like `Wingdings' and  a few
+      others.
+
+
+  II. MISCELLANEOUS
+
+    - The Win32  Visual C++ project  file has been updated  to include
+      the PFR driver as well.
+
+    - `freetype.m4' is  now installed by default by  `make install' on
+      Unix systems.
+
+    - The function  FT_Get_PS_Font_Info now works with  CID and Type42
+      fonts as well.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.1 and 2.1.0
+
+  I. IMPORTANT BUG FIXES
+
+    - The  `version_info'  returned   by  `freetype-config'  in  2.1.0
+      returned an invalid value.  It now returns 9:1:3 (2.0.9 returned
+      9:0:3).
+
+    - Version 2.1.0  couldn't be linked against  applications on Win32
+      and  Amiga systems  due  to  a new  debug  function that  wasn't
+      properly   propagated  to   the  system-specific   directory  in
+      `builds'.
+
+    - Various MacOS and Mac OS X specific fixes.
+
+    - Fixed  a bug in  the TrueType  charmap validation  routines that
+      made version  2.1.0 too restrictive  -- many popular  fonts have
+      been rejected.
+
+    - There was  still a very small difference  between the monochrome
+      glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
+      bytecode  interpreter enabled.   This was  caused by  an invalid
+      flag setting in the TrueType glyph loader, making the rasterizer
+      change  its  drop-out   control  mode.   Now  the results should
+      _really_ be completely identical.
+
+    - The TrueType name table loader has been improved to support many
+      popular  though buggy Asian  fonts.  It  now ignores  empty name
+      entries,  invalid  pointer offsets  and  a  few other  incorrect
+      subtleties.  Moreover,  name strings  are now loaded  on demand,
+      which reduces the memory load  of many faces (e.g. the ARIAL.TTF
+      font file contains a 10kByte name table with 70 names).
+
+    - Fixed a bug in the Postscript hinter that prevented family blues
+      substitution to happen correctly.
+
+
+  II. NEW FEATURES
+
+    - Three new font drivers in this release:
+
+      * A  BDF  font driver,  contributed  by  Franco Zappa  Nardelli,
+        heavily  modified   by  Werner  Lemberg.    It  also  supports
+        anti-aliased bitmaps (using a slightly extended BDF format).
+
+      * A Type42  font driver, contributed by Roberto  Alameda.  It is
+        still experimental but seems to work relatively well.
+
+      * A PFR  font driver, contributed  by David Turner  himself.  It
+        doesn't  support PFR  hinting --  note that  BitStream  has at
+        least two patents on this format!
+
+
+  III. MISCELLANEOUS
+
+    - The  cache  sub-system has  been  optimized  in important  ways.
+      Cache hits are now significantly faster.  For example, using the
+      CMap cache is about  twice faster than calling FT_Get_Char_Index
+      on most platforms.  Similarly, using an SBit cache is about five
+      times faster  than loading the  bitmaps from a bitmap  file, and
+      300 to  500 times  faster than generating  them from  a scalable
+      format.
+
+      Note that  you should recompile  your sources if you  designed a
+      custom  cache  class for  the  FT2  Cache  subsystem, since  the
+      changes performed are source, but not binary, compatible.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.1.0 and 2.0.9
+
+  I. IMPORTANT BUG FIXES
+
+    - The  TrueType bytecode  interpreter  has been  fixed to  produce
+      _exactly_ the same output as FreeType 1.x.  Previous differences
+      were due  to slightly distinct  fixed-point computation routines
+      used to perform dot products and vector length measurements.
+
+      It seems  that native TrueType hinting  is _extremely_ sensitive
+      to  rounding errors.  The  required vector  computation routines
+      have been optimized and placed within the `ttinterp.c' file.
+
+    - Fixed the parsing of accelerator tables in the PCF font driver.
+
+    - Fixed the Type1 glyph loader  routine used to compute the font's
+      maximum advance width.
+
+
+  II. NEW FEATURES
+
+    - The `configure' script used on Unix systems has been modified to
+      check  that  GNU  Make  is  being used  to  build  the  library.
+      Otherwise,  it  will display  a  message  proposing  to use  the
+      GNUMAKE environment variable to name it.
+
+      The Unix-specific file README.UNX has been modified accordingly.
+
+
+  III. MISCELLANEOUS
+
+    - The  FreeType  License in  `docs/FTL.TXT'  has  been updated  to
+      include  a  proposed preferred  disclaimer.   If  you are  using
+      FreeType in your products, you are encouraged (but not mandated)
+      to use the following text in your documentation:
+
+      """
+        Portions of this software are copyright © 1996-2002 The
+        FreeType Project (www.freetype.org).  All rights reserved.
+      """
+
+    - The default size of the render pool has been reduced to 16kByte.
+      This  shouldn't result  in any  noticeable  performance penalty,
+      unless you are  using the engine as-is to  render very large and
+      complex glyphs.
+
+    - The  FreeType 2  redesign has  begun.  More  information  can be
+      found at this URL:
+
+        http://www.freetype.org/freetype2/redesign.html
+
+      The following  internal changes  have been performed  within the
+      sources of this release:
+
+        - Many   internal  types   have  been   renamed   to  increase
+          consistency.   The  following  should  be true,  except  for
+          public types:
+
+            * All structure  types have a name ending  in `Rec' (short
+              for `record').
+
+            * A  pointer-to-structure type  has the  same name  as the
+              structure, _without_ the `Rec' suffix.
+
+              Example:
+
+                typedef struct FooRec_
+                {
+                  ...
+
+                } FooRec, *Foo;
+
+        - Many   internal  macros  have   been  renamed   to  increase
+          consistency.  The following should be true:
+
+            * All  macros  have a  name  beginning  with `FT_'.   This
+              required a few changes like
+
+                ALLOC   => FT_ALLOC
+                FREE    => FT_FREE
+                REALLOC => FT_REALLOC
+
+            * All  macros are completely  UPPERCASE.  This  required a
+              few changes like:
+
+                READ_Short  => FT_READ_SHORT
+                NEXT_Short  => FT_NEXT_SHORT
+                GET_ULongLE => FT_GET_ULONG_LE
+                MEM_Set     => FT_MEM_SET
+                MEM_Copy    => FT_MEM_COPY
+                etc.
+
+            * Whenever   possible,   all   macro  names   follow   the
+              FT_<OBJECT>_<METHOD> pattern.  For example
+
+                ACCESS_Frame   => FT_FRAME_ENTER
+                FORGET_Frame   => FT_FRAME_EXIT
+                EXTRACT_Frame  => FT_FRAME_EXTRACT
+                RELEASE_Frame  => FT_FRAME_RELEASE
+
+                FILE_Pos       => FT_STREAM_POS
+                FILE_Seek      => FT_STREAM_SEEK
+                FILE_Read      => FT_STREAM_READ
+                FILE_ReadAt    => FT_STREAM_READ_AT
+                READ_Fields    => FT_STREAM_READ_FIELDS
+
+        - Many  internal functions  have  been renamed  to follow  the
+          FT_<Object>_<Method> pattern.  For example:
+
+            FT_Seek_Stream       => FT_Stream_Seek
+            FT_Read_Stream_At    => FT_Stream_ReadAt
+            FT_Done_Stream       => FT_Stream_Close
+            FT_New_Stream        => FT_Stream_Open
+            FT_New_Memory_Stream => FT_Stream_OpenMemory
+            FT_Extract_Frame     => FT_Stream_ExtractFrame
+
+          Note that method names do not contain `_'.
+
+        - The FT_ALLOC_ARRAY  and FT_REALLOC_ARRAY have  been replaced
+          with  FT_NEW_ARRAY and  FT_RENEW_ARRAY which  do not  take a
+          type  as the  fourth argument.   Instead, the  array element
+          type  size is computed  automatically from  the type  of the
+          target pointer used.
+
+        - A  new object  class, FT_CMap,  has been  introduced.  These
+          internal  objects are  used to  model character  maps.  This
+          eases  the support  of additional  charmap types  within the
+          engine.
+
+        - A new  configuration file named `ftstdlib.h'  has been added
+          to `include/freetype/config'.  It  is used to define aliases
+          for  _every_ routine  of the  ISO  C library  that the  font
+          engine   uses.    Each    aliases   has   a   `ft_'   prefix
+          (e.g. `ft_strlen' is an alias for `strlen').
+
+          This is  used to  ease the porting  of FreeType 2  to exotic
+          runtime environments where the ISO C Library isn't available
+          (e.g.  XFree86 extension modules).
+
+      More details are available in the `ChangeLog' file.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.9 and 2.0.8
+
+  I. IMPORTANT BUG FIXES
+
+    - Certain fonts like `foxjump.ttf' contain broken name tables with
+      invalid entries and wild offsets.  This caused FreeType to crash
+      when trying to load them.
+
+      The  SFNT `name'  table  loader has  been  fixed to  be able  to
+      support these strange fonts.
+
+      Moreover, the code  in charge of processing this  table has been
+      changed  to always favour  Windows-formatted entries  over other
+      ones.  Hence,  a font that works  on Windows but not  on the Mac
+      will  load cleanly in  FreeType and  report accurate  values for
+      Family & PostScript names.
+
+    - The CID font driver has been fixed.  It unfortunately returned a
+      Postscript   Font   name   with   a   leading   slash,   as   in
+      `/MunhwaGothic-Regular'.
+
+    - FreeType  2 should now  compile fine  on AIX  4.3.3 as  a shared
+      library.
+
+    - A  bug  in the  Postscript  hinter  has  been found  and  fixed,
+      removing un-even stem widths at small pixel sizes (like 14-17).
+
+      This  improves the  quality of  a certain  number  of Postscript
+      fonts.
+
+
+  II. NEW FEATURES
+
+    - A  new function  named  `FT_Library_Version' has  been added  to
+      return  the current  library's major,  minor, and  patch version
+      numbers.   This is  important since  the  macros FREETYPE_MAJOR,
+      FREETYPE_MINOR,  and  FREETYPE_PATCH  cannot  be used  when  the
+      library is dynamically linked by a program.
+
+    - Two   new  APIs   have  been   added:   `FT_Get_First_Char'  and
+      `FT_Get_Next_Char'.
+
+      Together,  these can  be used  to iterate  efficiently  over the
+      currently  selected  charmap of  a  given  face.   Read the  API
+      reference for more details.
+
+
+  III. MISCELLANEOUS
+
+    - The FreeType sources are  under heavy internal re-factoring.  As
+      a consequence,  we have created  a branch named `STABLE'  on the
+      CVS to hold all future releases/fixes in the 2.0.x family.
+
+      The  HEAD  branch  now  contains  the  re-factored  sources  and
+      shouldn't  be used for  testing or  packaging new  releases.  In
+      case you  would like  to access the  2.0.9 sources from  our CVS
+      repository, use the tag `VER-2-0-9'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.8 and 2.0.7
+
+  I. IMPORTANT BUG FIXES
+
+    - There was  a small but  nasty bug in  `freetype-config.in' which
+      caused the `freetype-config' script to fail on Unix.
+
+      This didn't prevent the installation  of the library or even its
+      execution, but caused problems  when trying to compile many Unix
+      packages that depend on it.
+
+    - Some TrueType or OpenType fonts embedded in PDF documents do not
+      have  a  'cmap',  'post'  and  'name'  as  is  required  by  the
+      specification.  FreeType no longer refuses to load such fonts.
+
+    - Various fixes to the PCF font driver.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.7 and 2.0.6
+
+  I. IMPORTANT BUG FIXES
+
+    - Fixed  two  bugs in  the  Type 1  font  driver.   The first  one
+      resulted in a memory leak in subtle cases.  The other one caused
+      FreeType to crash when  trying to load `.gsf' files (Ghostscript
+      so-called Postscript fonts).
+
+      (This  made _many_  KDE applications  crash on  certain systems.
+       FreeType _is_ becoming a critical system component on Linux :-)
+
+    - Fixed a memory leak in the CFF font driver.
+
+    - Fixed a memory leak in the PCF font driver.
+
+    - Fixed       the        Visual       C++       project       file
+      `builds/win32/visualc/freetype.dsp' since  it didn't include the
+      Postscript hinter component, causing errors at build time.
+
+    - Fixed a  small rendering bug  in the anti-aliased  renderer that
+      only  occurred when  trying to  draw  thin (less  than 1  pixel)
+      strokes.
+
+    - Fixed  `builds/unix/freetype2.a4' which  is used  to  generate a
+      valid `freetype2.m4' for use with autoconf.
+
+    - Fixed the OpenVMS Makefiles.
+
+
+  II. MISCELLANEOUS
+
+    - Added  `configure'  and   `install'  scripts  to  the  top-level
+      directory.  A GNU-style installation is thus now easily possible
+      with
+
+        ./configure  <options>
+        make
+        make install
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.6 and 2.0.5
+
+  I. IMPORTANT BUG FIXES
+
+    - It wasn't possible to load embedded bitmaps when the auto-hinter
+      was used.  This is now fixed.
+
+    - The TrueType  font driver  didn't load some  composites properly
+      (the  sub-glyphs  were  slightly  shifted,  and  this  was  only
+      noticeable when using monochrome rendering).
+
+    - Various  fixes  to the  auto-hinter.   They  merely improve  the
+      output of sans-serif fonts.   Note that there are still problems
+      with serifed fonts and composites (accented characters).
+
+    - All scalable  font drivers erroneously  returned un-fitted glyph
+      advances when hinting was  requested.  This created problems for
+      a number  of layout applications.  This  is a very  old bug that
+      got  undetected mainly  because most  test/demo  program perform
+      rounding explicitly or implicitly (through the cache).
+
+    - `FT_Glyph_To_Bitmap' did erroneously  modify the source glyph in
+      certain cases.
+
+    - `glnames.py'  still contained  a bug  that made  FreeType return
+      invalid names for certain glyphs.
+
+    - The  library crashed  when  loading certain  Type  1 fonts  like
+      `sadn.pfb'  (`Stalingrad  Normal'),   which  appear  to  contain
+      pathetic font info dictionaries.
+
+    - The TrueType glyph  loader is now much more  paranoid and checks
+      everything when loading a given glyph image.  This was necessary
+      to avoid problems (crashes and/or memory overwrites) with broken
+      fonts that came from a really buggy automatic font converter.
+
+
+  II. IMPORTANT UPDATES AND NEW FEATURES
+
+    - Important updates to the Mac-specific parts of the library.
+
+    - The caching sub-system has  been completely re-designed, and its
+      API has  evolved (the  old one is  still supported  for backward
+      compatibility).
+
+      The documentation for it is  not yet completed, sorry.  For now,
+      you are encouraged to continue  using the old API.  However, the
+      ftview  demo program in  the ft2demos  package has  already been
+      updated to use the new caching functions.
+
+    - A new charmap cache is provided too.  See `FTC_CMapCache'.  This
+      is useful to perform  character code -> glyph index translations
+      quickly, without the need for an opened FT_Face.
+
+    - A NEW POSTSCRIPT HINTER module  has been added to support native
+      hints in  the following  formats: PostScript Type  1, PostScript
+      CID, and CFF/CEF.
+
+      Please test!  Note that  the auto-hinter produces better results
+      for a number of  badly-hinted fonts (mostly auto-generated ones)
+      though.
+
+    - A memory debugger is now  part of the standard FreeType sources.
+      To      enable      it,      define      FT_DEBUG_MEMORY      in
+      <freetype/config/ftoption.h>, and recompile the library.
+
+      Additionally, define  the _environment_ variable FT_DEBUG_MEMORY
+      and run any program using FreeType.  When the library is exited,
+      a  summary  of memory  footprints  and  possible  leaks will  be
+      displayed.
+
+      This works transparently with  _any_ program that uses FreeType.
+      However, you  will need a lot  of memory to  use this (allocated
+      blocks are never  released to the heap to  detect double deletes
+      easily).
+
+
+  III. MISCELLANEOUS
+
+    - We  are  aware  of  subtle  differences between  the  output  of
+      FreeType  versions   1  and  2  when  it   comes  to  monochrome
+      TrueType-hinted glyphs.   These are  most probably due  to small
+      differences in the monochrome rasterizers and will be worked out
+      in an upcoming release.
+
+    - We have decided to fork the sources in a `stable' branch, and an
+      `unstable' one, since FreeType  is becoming a critical component
+      of many Unix systems.
+
+      The next  bug-fix releases of  the library will be  named 2.0.7,
+      2.0.8, etc.,  while the `2.1'  branch will contain a  version of
+      the sources where we will start major reworking of the library's
+      internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
+      more distant future.
+
+      We  also hope  that this  scheme will  allow much  more frequent
+      releases than in the past.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.5 and 2.0.4
+
+  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE
+  WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
+
+  - Fixed a bug that made  certain glyphs, like `Cacute', `cacute' and
+    `lslash'  unavailable from Unicode  charmaps of  Postscript fonts.
+    This prevented the correct display of Polish text, for example.
+
+  - The kerning table of Type 1 fonts was loaded by FreeType, when its
+    AFM    file    was    attached    to    its    face,    but    the
+    FT_FACE_FLAG_HAS_KERNING   bit  flags   was  not   set  correctly,
+    preventing FT_Get_Kerning to return meaningful values.
+
+  - Improved  SFNT (TrueType  & OpenType)  charmap  support.  Slightly
+    better performance, as well as support for the new formats defined
+    by the OpenType 1.3 specification (8, 10, and 12)
+
+  - Fixed a  serious typo in `src/base/ftcalc.c'  which caused invalid
+    computations in certain rare cases, producing ugly artefacts.
+
+  - The  size  of the  EM  square is  computed  with  a more  accurate
+    algorithm for Postscript fonts.   The old one caused slight errors
+    with embedded fonts found in PDF documents.
+
+  - Fixed  a  bug in  the  cache  manager  that prevented  normal  LRU
+    behaviour  within the cache  manager, causing  unnecessary reloads
+    (for FT_Face and FT_Size objects only).
+
+  - Added  a new  function named  `FT_Get_Name_Index' to  retrieve the
+    glyph index of a given glyph name, when found in a face.
+
+  - Added  a new function  named `FT_Get_Postscript_Name'  to retrieve
+    the `unique' Postscript font name of a given face.
+
+  - Added   a   new   public   header  size   named   FT_SIZES_H   (or
+    <freetype/ftsizes.h>) providing  new FT_Size-management functions:
+    FT_New_Size, FT_Activate_Size, FT_Done_Size.
+
+  - Fixed a  reallocation bug that  generated a dangling  pointer (and
+    possibly    memory    leaks)    with    Postscript    fonts    (in
+    src/psaux/psobjs.c).
+
+  - Many fixes for 16-bit correctness.
+
+  - Removed many pedantic compiler warnings from the sources.
+
+  - Added an Amiga build directory in `builds/amiga'.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.4 and 2.0.3
+
+  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely,
+    the font  transformation set through  FT_Set_Transform was applied
+    twice to auto-hinted glyphs, resulting in incorrectly rotated text
+    output.
+
+  - Fixed _many_  compiler warnings.   FT2 should now  compile cleanly
+    with Visual  C++'s most pedantic warning level  (/W4).  It already
+    compiled fine with GCC and a few other compilers.
+
+  - Fixed a bug  that prevented the linear advance  width of composite
+    TrueType glyphs to be correctly returned.
+
+  - Fixed    the    Visual    C++    project    files    located    in
+    `builds/win32/visualc' (previous versions  used older names of the
+    library).
+
+  - Many  32-bit constants  have an  `L' appended  to their  value, in
+    order to improve the 16-bitness  of the code.  Someone is actually
+    trying to use FT2 on an Atari ST machine!
+
+  - Updated  the  `builds/detect.mk' file  in  order to  automatically
+    build FT2  on AIX systems.   AIX uses `/usr/sbin/init'  instead of
+    `/sbin/init' and wasn't previously  detected as a Unix platform by
+    the FreeType build system.
+
+  - Updated  the  Unix-specific  portions  of the  build  system  (new
+    libtool version, etc.).
+
+  - The  SFNT kerning  loader now  ensures  that the  table is  sorted
+    (since some problem fonts do not meet this requirement).
+
+
+=======================================================================
+
+CHANGES BETWEEN 2.0.3 and 2.0.2
+
+  I. CHANGES TO THE MODULES / FONT DRIVERS
+
+    - THE  AUTO-HINTER HAS  BEEN SLIGHTLY  IMPROVED, in  order  to fix
+      several annoying artefacts, mainly:
+
+        - Blue  zone alignment  of  horizontal stems  wasn't performed
+          correctly, resulting in artefacts  like the `d' being placed
+          one pixel below the `b' in some fonts like Time New Roman.
+
+        - Overshoot thresholding  wasn't performed correctly, creating
+          unpleasant artefacts at large character pixel sizes.
+
+        - Composite glyph loading has  been simplified.  This gets rid
+          of  various artefacts  where the  components of  a composite
+          glyphs were not correctly spaced.
+
+      These are  the last changes to the  current auto-hinting module.
+      A new  hinting sub-system is currently  in the work  in order to
+      support native hints  in Type 1 / CFF /  OpenType fonts, as well
+      as globally improve rendering.
+
+    - The  PCF  driver has  been  fixed.   It  reported invalid  glyph
+      dimensions for the fonts available on Solaris.
+
+    - The Type  1, CID and CFF  drivers have been modified  to fix the
+      computation of the EM size.
+
+    - The Type 1  driver has been fixed to avoid  a dangerous bug that
+      crashed the library with non-conforming fonts (i.e. ones that do
+      not place the .notdef glyph at position 0).
+
+    - The TrueType  driver had a  rather subtle bug  (dangling pointer
+      when loading  composite glyphs) that could crash  the library in
+      rare occasions!
+
+
+  II. HIGH-LEVEL API CHANGES
+
+    - The error  code enumeration values have been  changed.  An error
+      value  is decomposed  in  a  generic error  code,  and a  module
+      number.  see <freetype/fterrors.h> for details.
+
+    - A   new  public   header   file  has   been  introduced,   named
+      FT_TRIGONOMETRY_H    (include/freetype/fttrigon.h),    providing
+      trigonometric functions to  compute sines, cosines, arctangents,
+      etc. with 16.16 fixed precision.  The implementation is based on
+      the CORDIC  algorithm and is very fast  while being sufficiently
+      accurate.
+
+
+  III. INTERNALS
+
+    - Added  BeOS-specific files  in the  old build  sub-system.  Note
+      that no changes were required to compile the library with Jam.
+
+    - The  configuration  is now  capable  of automatically  detecting
+      64-bit integers  on a set  of predefined compilers  (GCC, Visual
+      C++, Borland C++) and will use them by default.  This provides a
+      small performance boost.
+
+    - A  small memory leak  that happened  when opening  0-sized files
+      (duh!)  have been fixed.
+
+    - Fixed bezier  stack depth  bug in the  routines provided  by the
+      FT_BBOX_H  header   file.   Also  fixed  similar   bugs  in  the
+      rasterizers.
+
+    - The outline bounding  box code has been rewritten  to use direct
+      computations,  instead of  bezier sub-division,  to  compute the
+      exact bounding box of glyphs.   This is slightly slower but more
+      accurate.
+
+    - The build system has been  improved and fixed, mainly to support
+      `make'  on Windows  2000  correctly, avoid  problems with  `make
+      distclean' on non Unix systems, etc.
+
+    - Hexadecimal  constants  have been  suffixed  with  `U' to  avoid
+      problems with certain compilers on 64-bit platforms.
+
+    - A new directory named `src/tools' has been created.  It contains
+      Python scripts and simple unit test programs used to develop the
+      library.
+
+    - The DocMaker tool has been  moved from `docs' to `src/tools' and
+      has been updated with the following:
+
+         - Now accepts the `--title=XXXX' or `-t XXXX' option from the
+           command line to set the project's name in the generated API
+           reference.
+
+         - Now accepts the `--output=DIR'  or `-o DIR' option from the
+           command line to set  the output directory for all generated
+           HTML files.
+
+         - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
+           command  line  to  set  the  file prefix  to  use  for  all
+           generated HTML files.
+
+         - Now generates the current  time/data on each generated page
+           in order to distinguish between versions.
+
+      DocMaker  can be  used with  other  projects now,  not only  FT2
+      (e.g. MLib, FTLayout, etc.).
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.2 and 2.0.1
+
+  I. CHANGES TO THE MODULES / FONT DRIVERS
+
+    - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
+      avoid legal problems  with the Apple patents.  It  seems that we
+      mistakenly  turned this option  on in  previous releases  of the
+      build.
+
+      Note that if  you want to use the  bytecode interpreter in order
+      to get high-quality TrueType  rendering, you will need to toggle
+      by        hand        the        definition        of        the
+      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
+      `include/freetype/config/ftoption.h'.
+
+    - The CFF driver has been improved by Tom Kacvinsky and Sander van
+      der Wal:
+
+      * Support for `seac' emulation.
+      * Support for `dotsection'.
+      * Support for retrieving glyph names through
+        `FT_Get_Glyph_Name'.
+
+      The first two items are necessary to correctly a large number of
+      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
+
+    - The Type 1 driver was also improved by Tom & others:
+
+      * Better EM size computation.
+      * Better support for synthetic (transformed) fonts.
+      * The  Type 1  driver returns  the charstrings  corresponding to
+        each glyph in the  `glyph->control_data' field after a call to
+        `FT_Load_Glyph' (thanks Ha Shao).
+
+    - Various other bugfixes, including the following:
+
+      * Fixed a nasty memory leak in the Type 1 driver.
+      * The autohinter  and the pcf  driver used static  writable data
+        when they shouldn't.
+      * Many casts were added to  make the code more 64-bits safe.  It
+        also now compiles on Windows XP 64-bits without warnings.
+      * Some incorrect writable statics were removed in the `autohint'
+        and `pcf' drivers.  FreeType 2 now compiles on Epoc again.
+
+
+  II. CHANGES TO THE HIGH-LEVEL API
+
+    - The library header files inclusion scheme has been changed.  The
+      old scheme looked like:
+
+        #include <freetype/freetype.h>
+        #include <freetype/ftglyph.h>
+        #include <freetype/ftcache.h>
+        #include <freetype/cache/ftimage.h>
+
+      Now you should use:
+
+        #include <ft2build.h>
+        #include FT_FREETYPE_H
+        #include FT_GLYPH_H
+        #include FT_CACHE_H
+        #include FT_CACHE_IMAGE_H
+
+      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
+      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
+      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
+
+      The  file <ft2build.h>  is used  to define  the  header filename
+      macros.  The complete and  commented list of macros is available
+      in the API reference under the section name `Header File Macros'
+      in Chapter I.
+
+      For more information, see section I of the following document:
+
+        http://www.freetype.org/
+          freetype2/docs/tutorial/step1.html
+
+      or
+
+        http://freetype.sourceforge.net/
+          freetype2/docs/tutorial/step1.html
+
+    - Many, many comments have been added to the public source file in
+      order to  automatically generate  the API Reference  through the
+      `docmaker.py' Python script.
+
+      The latter has been updated  to support the grouping of sections
+      in chapters and better index sort.  See:
+
+        http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
+
+
+  III. CHANGES TO THE BUILD PROCESS
+
+    - If you  are not  building FreeType 2  with its own  build system
+      (but with your own Makefiles or project files), you will need to
+      be  aware that  the  build  process has  changed  a little  bit.
+
+      You don't  need to put the  `src' directory in  the include path
+      when  compiling  any FT2  component.   Instead,  simply put  the
+      component's directory in the current include path.
+
+      So, if you were doing something like:
+
+        cc -c -Iinclude -Isrc src/base/ftbase.c
+
+      change the line to:
+
+        cc -c -Iinclude -Isrc/base src/base/ftbase.c
+
+      If you were doing something like:
+
+        cd src/base
+        cc -c -I../../include -I.. ftbase.c
+
+      change it to:
+
+        cd src/base
+        cc -c -I../../include ftbase.c
+
+
+======================================================================
+
+CHANGES BETWEEN 2.0.1 and 2.0
+
+  2.0.1 introduces a few changes:
+
+    - Fixed many bugs related to  the support of CFF / OpenType fonts.
+      These  formats are  now much  better supported  though  there is
+      still work planned to  deal with charset tables and PDF-embedded
+      CFF files that use the old `seac' command.
+
+    - The  library could not  be compiled  in debug  mode with  a very
+      small  number   of  C  compilers   whose  pre-processors  didn't
+      implement the `##'  directive correctly (i.e. per se  the ANSI C
+      specification!)  An elegant fix was found.
+
+    - Added  support for  the  free Borland  command-line C++  Builder
+      compiler.   Use `make  setup bcc32'.   Also fixed  a  few source
+      lines that generated new warnings with BCC32.
+
+    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
+      a conic Bezier arc.
+
+    - Updated the INSTALL file to add IDE compilation.
+
+    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
+      correct   support   of  synthetic   (obliqued)   fonts  in   the
+      auto-hinter, better support for embedded bitmaps in a SFNT font.
+
+    - Fixed some problems with `freetype-config'.
+
+  Finally, the `standard' scheme for including FreeType headers is now
+  gradually changing,  but this will  be explained in a  later release
+  (probably 2.0.2).
+
+  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
+  for their contributions!
+
+
+======================================================================
+
+CHANGES BETWEEN beta8 and 2.0
+
+  - Changed  the default  installation  path for  public headers  from
+    `include/freetype' to `include/freetype2'.
+
+    Also added a new `freetype-config' that is automatically generated
+    and installed  on Unix and  Cygwin systems.  The script  itself is
+    used to retrieve the current  install path, C compilation flags as
+    well as linker flags.
+
+  - Fixed several small bugs:
+
+    * Incorrect max advance width for fixed-pitch Type 1 fonts.
+    * Incorrect glyph names for certain TrueType fonts.
+    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
+      called.
+    * The  linearHoriAdvance  and  linearVertAdvance  fields  were not
+      correctly returned for glyphs processed by the auto-hinter.
+    * `type1z'  renamed back to  `type1'; the  old `type1'  module has
+      been removed.
+
+  - Revamped the  build system  to make it  a lot more  generic.  This
+    will  allow us  to  re-use  nearly un-modified  in  lots of  other
+    projects (including FreeType Layout).
+
+  - Changed `cid' to use `psaux' too.
+
+  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
+    the sources  in `src/cache'.  Note  that it compiles but  is still
+    untested for now.
+
+  - Updated `docs/docmaker.py', a draft  API reference is available at
+    http://www.freetype.org/ft2api.html.
+
+  - Changed `type1' to use `psaux'.
+
+  - Created a  new module named  `psaux' to hold  the Type 1 &  Type 2
+    parsing routines.  It should be  used by `type1', `cid', and `cff'
+    in the future.
+
+  - Fixed an important bug in `FT_Glyph_Get_CBox'.
+
+  - Fixed  some compiler  warnings  that happened  since the  TrueType
+    bytecode decoder was deactivated by default.
+
+  - Fixed two memory leaks:
+
+    * The    memory   manager   (16    bytes)   isn't    released   in
+      FT_Done_FreeType!
+    * Using custom input streams, the  copy of the original stream was
+      never released.
+
+  - Fixed the  auto-hinter by performing automatic  computation of the
+    `filling direction' of each glyph.   This is done through a simple
+    and  fast approximation, and  seems to  work (problems  spotted by
+    Werner though).  The Arphic fonts are a lot nicer though there are
+    still a lot of things to do to handle Asian fonts correctly.
+
+
+======================================================================
+
+BETA-8 (RELEASE CANDIDATE) CHANGES
+
+  - Deactivated the TrueType bytecode interpreter by default.
+
+  - Deactivated the `src/type1' font driver.  Now `src/type1z' is used
+    by default.
+
+  - Updates to the build system.  We now compile the library correctly
+    under  Unix  system  through  `configure' which  is  automatically
+    called on the first `make' invocation.
+
+  - Added the auto-hinting module!  Fixing some bugs here and there.
+
+  - Found some bugs in the  composite loader (seac) of the Type1-based
+    font drivers.
+
+  - Renamed the directory `freetype2/config' to `freetype2/builds' and
+    updated all relevant files.
+
+  - Found a memory leak in the `type1' driver.
+
+  - Incorporated Tom's patches to  support flex operators correctly in
+    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
+    fonts to be done with this driver :-)
+
+  - Added the  Windows FNT/FON driver in `src/winfonts'.   For now, it
+    always  `simulates'   a  Unicode  charmap,  so   it  shouldn't  be
+    considered completed right now.
+
+    It  is there  to be  more a  proof of  concept than  anything else
+    anyway.  The driver is a single  C source file, that compiles to 3
+    Kb of code.
+
+    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
+    finish them now.
+
+  - CHANGES TO THE HIGH-LEVEL API
+
+    * FT_Get_Kerning has a new parameter that allows you to select the
+      coordinates of the kerning  vector (font units, scaled, scaled +
+      grid-fitted).
+    * The  outline functions are  now in <freetype/ftoutln.h>  and not
+      part of <freetype/freetype.h> anymore.
+    * <freetype/ftmodule.h>    now     contains    declarations    for
+       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
+    * The so-called convenience  functions have moved from `ftoutln.c'
+      to  `ftglyph.c',  and  are  thus available  with  this  optional
+      component    of   the   library.     They   are    declared   in
+      <freetype/ftglyph.h> now.
+    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
+      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
+      To generate a monochrome bitmap, use ft_render_mode_mono, or the
+      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
+      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
+    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
+      solving a few headaches :-)
+    * The type FT_GlyphSlotRec has now a `library' field.
+
+  - CHANGES TO THE `ftglyph.h' API
+
+    This API has  been severely modified in order  to make it simpler,
+    clearer, and more  efficient.  It certainly now looks  like a real
+    `glyph factory'  object, and allows client  applications to manage
+    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
+    knowing their original format.
+
+  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
+    support for pure CFF + CEF fonts should come in?
+
+  - Cleaned up  source code in order  to avoid two  functions with the
+    same name.  Also  changed the names of the  files in `type1z' from
+    `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
+
+    `make multi' now works well :-)
+
+    Also removed the use of `cidafm' for now, even if the source files
+    are  still there.  This  functionality will  certainly  go into  a
+    specific module.
+
+  - ADDED SUPPORT FOR THE AUTO-HINTER
+
+    It  works :-) I  have a  demo program  which simply  is a  copy of
+    `ftview'       that      does       a      `FT_Add_Module(library,
+    &autohinter_module_class)' after  library initialization, and Type
+    1 & OpenType/CFF fonts are now hinted.
+
+    CID  fonts are  not hinted,  as they  include no  charmap  and the
+    auto-hinter doesn't include  `generic' global metrics computations
+    yet.
+
+    Now, I need to release this thing to the FreeType 2 source.
+
+  - CHANGES TO THE RENDERER MODULES
+
+    The  monochrome  and smooth  renderers  are  now  in two  distinct
+    directories, namely `src/raster1' and `src/smooth'.  Note that the
+    old `src/renderer' is now gone.
+
+    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
+    simple #define toggle in 'src/raster1/ftraster.c'.
+
+    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
+    select the best renderer  available, depending on render mode.  If
+    the current renderer for a  given glyph image format isn't capable
+    of supporting  the render mode, another  one will be  found in the
+    library's list.   This means that client applications  do not need
+    to  switch or  set  the  renderers themselves  (as  in the  latest
+    change), they'll get what they want automatically.  At last.
+
+    Changed the demo programs accordingly.
+
+  - MAJOR INTERNAL REDESIGN:
+
+    A lot of internal modifications  have been performed lately on the
+    source in order to provide the following enhancements:
+
+    * More generic module support:
+
+      The FT_Module  type is  now defined to  represent a handle  to a
+      given  module.   The  file  <freetype/ftmodule.h>  contains  the
+      FT_Module_Class definition, as well as the module-loading public
+      API.
+
+      The  FT_Driver type  is still  defined, and  still  represents a
+      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
+      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
+
+    * Support for generic glyph image types:
+
+      The FT_Renderer  type is a pointer  to a module  used to perform
+      various operations on glyph image.
+
+      Each renderer is  capable of handling images in  a single format
+      (e.g. ft_glyph_format_outline).  Its functions are used to:
+
+      - transform an glyph image
+      - render a glyph image into a bitmap
+      - return the control box (dimensions) of a given glyph image
+
+      The scan converters `ftraster.c' and `ftgrays.c' have been moved
+      to the new directory `src/renderer', and are used to provide two
+      default renderer modules.
+
+      One corresponds  to the `standard' scan-converter,  the other to
+      the `smooth' one.
+
+      he  current  renderer  can  be  set  through  the  new  function
+      FT_Set_Renderer.
+
+      The old raster-related function FT_Set_Raster, FT_Get_Raster and
+      FT_Set_Raster_Mode have now disappeared, in favor of the new:
+
+        FT_Get_Renderer
+        FT_Set_Renderer
+
+      See the file <freetype/ftrender.h> for more details.
+
+      These  changes  were  necessary  to properly  support  different
+      scalable formats in the future, like bi-color glyphs, etc.
+
+    * Glyph loader object:
+
+      A  new  internal  object,  called  a  'glyph  loader'  has  been
+      introduced in the base layer.  It is used by all scalable format
+      font drivers to load glyphs and composites.
+
+      This object  has been  created to reduce  the code size  of each
+      driver,  as  each  one  of  them  basically  re-implemented  its
+      functionality.
+
+      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
+      more information.
+
+    * FT_GlyphSlot has new fields:
+
+      In  order   to  support  extended  features   (see  below),  the
+      FT_GlyphSlot structure has a few new fields:
+
+      linearHoriAdvance:
+
+        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
+        unhinted) advance  width for the  glyph, expressed as  a 16.16
+        fixed pixel value.  This is useful to perform WYSIWYG text.
+
+      linearVertAdvance:
+        This field  gives the linearly  scaled advance height  for the
+        glyph  (relevant in  vertical  glyph layouts  only).  This  is
+        useful to perform WYSIWYG text.
+
+        Note that  the two above field replace  the removed `metrics2'
+        field in the glyph slot.
+
+      advance:
+        This field is a vector  that gives the transformed advance for
+        the glyph.   By default, it corresponds to  the advance width,
+        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
+        FT_Load_Glyph or FT_Load_Char.
+
+      bitmap_left:
+        This  field gives  the  distance in  integer  pixels from  the
+        current pen position  to the left-most pixel of  a glyph image
+        IF IT IS  A BITMAP.  It is only valid  when the `format' field
+        is set to `ft_glyph_format_bitmap', for example, after calling
+        the new function FT_Render_Glyph.
+
+      bitmap_top:
+        This  field gives  the  distance in  integer  pixels from  the
+        current pen position (located on the baseline) to the top-most
+        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
+        correspond to upwards Y.
+
+      loader:
+        This  is a  new  private  field for  the  glyph slot.   Client
+        applications should not touch it.
+
+
+    * Support for transforms and direct rendering in FT_Load_Glyph:
+
+      Most of the functionality found in <freetype/ftglyph.h> has been
+      moved to the core library.  Hence, the following:
+
+      - A   transform   can   be   specified  for   a   face   through
+        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
+        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
+        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
+        was set in the load flags.
+
+      - Once  a  glyph image  has  been  loaded,  it can  be  directly
+        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
+        function.  Note that this  function takes the glyph image from
+        the glyph slot,  and converts it to a  bitmap whose properties
+        are returned  in `face.glyph.bitmap', `face.glyph.bitmap_left'
+        and `face.glyph.bitmap_top'.  The  original native image might
+        be lost after the conversion.
+
+      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
+        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
+        automatically when needed.
+
+  - Reformatted all  modules source  code in order  to get rid  of the
+    basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
+    `T1_Fixed'  instead  of  `FT_Fixed').  Hence  the  format-specific
+    prefixes like  `TT_', `T1_',  `T2_' and `CID_'  are only  used for
+    relevant structures.
+
+
+======================================================================
+
+OLD CHANGES FOR BETA 7
+
+  - bug-fixed the  OpenType/CFF parser.  It  now loads and displays my
+    two  fonts nicely,  but I'm  pretty certain  that more  testing is
+    needed :-)
+
+  - fixed the crummy Type 1 hinter, it now handles accented characters
+    correctly (well, the accent is  not always well placed, but that's
+    another problem..)
+
+  - added the CID-keyed Type 1 driver in `src/cid'.  Works pretty well
+    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
+    really useful CMAP files..
+
+  - fixed  two  bugs  in  the  smooth  renderer  (src/base/ftgrays.c).
+    Thanks to Boris Letocha for spotting them and providing a fix.
+
+  - fixed potential `divide by zero' bugs in ftcalc.c.
+
+  - added source  code for  the OpenType/CFF driver  (still incomplete
+    though..)
+
+  - modified the  SFNT driver slightly  to perform more  robust header
+    checks  in TT_Load_SFNT_Header.  This prevents certain  font files
+    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
+    `recognized' as TrueType font files..
+
+  - moved a lot of stuff from  the TrueType driver to the SFNT module,
+    this   allows   greater   code   re-use   between   font   drivers
+    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
+
+  - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
+    to minimally speed it up..
+
+  - added  support for  Multiple Master  fonts in  `type1z'.  There is
+    also a new file named <freetype/ftmm.h> which defines functions to
+    manage them from client applications.
+
+    The new file `src/base/ftmm.c' is also optional to the engine..
+
+  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
+    small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
+
+  - a minor fix to the Type 1 driver to let them apply the font matrix
+    correctly (used for many oblique fonts..)
+
+  - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
+    to use %p instead of %lx).  Thanks to Karl Robillard.
+
+  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
+    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
+    cropped when  loaded from a file  (maybe I should  move the bitmap
+    cropper to the base layer ??).
+
+  - changed the default  number of gray levels of  the smooth renderer
+    to 256  (instead of  the previous 128).  Of course, the  human eye
+    can't see any difference ;-)
+
+  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
+    of subglyphs in a TrueType font now..
+
+
+======================================================================
+
+OLD CHANGES 16 May 2000
+
+  - tagged `BETA-6'  in the  CVS tree.  This one is a  serious release
+    candidate even though it doesn't incorporate the auto-hinter yet..
+
+  - various obsolete files were removed, and copyright header updated
+
+  - finally  updated  the  standard   raster  to  fix  the  monochrome
+    rendering bug + re-enable  support for 5-gray levels anti-aliasing
+    (suck, suck..)
+
+  - created new header files, and modified sources accordingly:
+
+     <freetype/fttypes.h>
+       - simple FreeType types, without the API
+     <freetype/internal/ftmemory.h>
+       - definition of memory-management macros
+
+  - added   the   `DSIG'   (OpenType   Digital   Signature)   tag   to
+    <freetype/tttags.h>
+
+  - light update/cleaning of the build system + changes to the sources
+    in  order  to  get  rid  of _all_  compiler  warnings  with  three
+    compilers, i.e:
+
+    gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
+    LCC
+
+    IMPORTANT NOTE FOR WIN32-LCC USERS:
+    |
+    |  It seems the C pre-processor  that comes with LCC is broken, it
+    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
+    |  correctly   when  one  of   the  argument  is  a  macro.  Also,
+    |  something like:
+    |
+    |     #define F(x)  print##x
+    |
+    |     F(("hello"))
+    |
+    |  will get incorrectly translated to:
+    |
+    |     print "hello")
+    |
+    |  by its pre-processor.  For this reason, you simply cannot build
+    |  FreeType 2 in debug mode with this compiler..
+
+  - yet  another massive grunt work.  I've  changed the  definition of
+    the EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These
+    now take an argument, which is the function's return value type.
+
+    This  is necessary to  compile FreeType  as a  DLL on  Windows and
+    OS/2.  Depending on the compiler used, a compiler-specific keyword
+    like  __export or __system  must be  placed before  (VisualC++) or
+    after (BorlandC++) the type..
+
+    Of course, this needed a lot of changes throughout the source code
+    to make it compile again...  All cleaned up now, apparently..
+
+    Note also  that there is a  new EXPORT_VAR macro  defined to allow
+    the   _declaration_    of   an   exportable    public   (constant)
+    variable.  This  is  the   case  of  the  raster  interfaces  (see
+    ftraster.h and ftgrays.h), as well as each module's interface (see
+    sfdriver.h, psdriver.h, etc..)
+
+  - new feature: it  is now possible to pass  extra parameters to font
+                 drivers  when creating  a new  face object.  For now,
+                 this capability is unused.  It could however prove to
+                 be useful in a near future..
+
+      the FT_Open_Args structure was  changes, as well as the internal
+      driver interface  (the specific `init_face'  module function has
+      now a different signature).
+
+  - updated the tutorial (not finished though).
+
+  - updated the top-level BUILD  document
+
+  - fixed  a  potential memory  leak  that  could  occur when  loading
+    embedded bitmaps.
+
+  - added     the     declaration     of     FT_New_Memory_Face     in
+    <freetype/freetype.h>, as  it was  missing from the  public header
+    (the implementation was already in `ftobjs.c').
+
+  - the file <freetype/fterrors.h> has been seriously updated in order
+    to allow  the automatic generation  of error message tables.   See
+    the comments within it for more information.
+
+  - major directory  hierarchy re-organisation.  This was done for two
+    things:
+
+      * first,  to ease  the `manual'  compilation of  the  library by
+        requiring at lot less include paths :-)
+
+      * second,  to  allow  external  programs to  effectively  access
+        internal  data  fields.  For example,  this  can be  extremely
+        useful if  someone wants  to write a  font producer or  a font
+        manager on top of FreeType.
+
+    Basically, you  should now use  the 'freetype/' prefix  for header
+    inclusion, as in:
+
+        #include <freetype/freetype.h>
+        #include <freetype/ftglyph.h>
+
+    Some new include sub-directories are available:
+
+     a. the  `freetype/config' directory,  contains two files  used to
+        configure  the  build  of  the  library.  Client  applications
+        should  not need  to look  at these  normally, but they can if
+        they want.
+
+        #include <freetype/config/ftoption.h>
+        #include <freetype/config/ftconfig.h>
+
+     b. the `freetype/internal'  directory, contains header files that
+        describes library  internals.  These are the header files that
+        were  previously  found  in  the `src/base'  and  `src/shared'
+        directories.
+
+
+    As  usual, the build  system and  the demos  have been  updated to
+    reflect the change..
+
+    Here's a layout of the new directory hierarchy:
+
+    TOP_DIR
+      include/
+         freetype/
+            freetype.h
+            ...
+            config/
+              ftoption.h
+              ftconfig.h
+              ftmodule.h
+
+            internal/
+              ftobjs.h
+              ftstream.h
+              ftcalc.h
+              ...
+
+      src/
+         base/
+            ...
+
+         sfnt/
+         psnames/
+         truetype/
+         type1/
+         type1z/
+
+
+    Compiling a module is now  much easier, for example, the following
+    should work when in the TOP_DIR directory on an ANSI build:
+
+       gcc -c -I./include -I./src/base src/base/ftbase.c
+       gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
+       etc..
+
+    (of course, using -Iconfig/<system> if you provide system-specific
+     configuration files).
+
+  - updated the structure of FT_Outline_Funcs in order to allow direct
+    coordinate scaling within  the outline decomposition routine (this
+    is  important for virtual  `on' points  with TrueType  outlines) +
+    updates to the rasters to support this..
+
+  - updated  the OS/2  table  loading code  in `src/sfnt/ttload.c'  in
+    order to support version 2 of the table (see OpenType 1.2 spec)
+
+  - created  `include/tttables.h'  and  `include/t1tables.h' to  allow
+    client applications to access some of  the SFNT and T1 tables of a
+    face  with  a  procedural  interface (see  `FT_Get_Sfnt_Table')  +
+    updates to internal source files to reflect the change..
+
+  - some  cleanups in  the source  code to  get rid  of  warnings when
+    compiling with the `-Wall -W -ansi -pedantic' options in gcc.
+
+  - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
+    its header to `include/ftgrays.h'
+
+  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
+    with up to 80 sub-glyphs !! Thanks to Werner
+
+
+======================================================================
+
+OLD CHANGES - 14-apr-2000
+
+  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
+    correct loading of some CJK glyphs in mingli.ttf
+
+  - improved the standard Type 1 hinter in `src/type1'
+
+  - fixed two bugs  in the experimental Type 1  driver in `src/type1z'
+    to handle the new XFree86 4.0 fonts (and a few other ones..)
+
+  - the smooth  renderer is now  complete and supports  sub-banding to
+    render large glyphs  at high speed.  However, it is still  located
+    in `demos/src/ftgrays.c' and should move to the  library itself in
+    the next  beta.  NOTE: The  smooth  renderer  doesn't  compile  in
+    stand-alone mode anymore, but this should be fixed RSN..
+
+  - introduced convenience  functions to  more easily deal  with glyph
+    images, see  `include/ftglyph.h' for more details, as  well as the
+    new  demo program  named `demos/src/ftstring.c'  that demonstrates
+    its use
+
+  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
+    drivers  (this  is required  by  the  auto-hinter  to improve  its
+    results).
+
+  - changed   the  raster   interface,  in   order  to   allow  client
+    applications  to   provide  their   own  span-drawing   callbacks.
+    However,   only   the   smooth   renderer   supports   this.   See
+    `FT_Raster_Params' in the file `include/ftimage.h'.
+
+  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
+    computation!
+
+  - Note: The tutorial is out-of-date.
+
+
+======================================================================
+
+OLD CHANGES - 12-mar-2000
+
+  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
+    configuration         files         are         located         in
+    `freetype2/config'.  System-specific over-rides  can be  placed in
+    `freetype2/config/<system>'.
+
+  - moved all configuration macros to `config/ftoption.h'
+
+  - improvements in the Type 1 driver with AFM support
+
+  - changed the fields  in the FT_Outline structure :  the old `flags'
+    array is re-named `tags', while all ancient flags are encoded into
+    a single unsigned int named `flags'.
+
+  - introduced     new      flags     in     FT_Outline.flags     (see
+    ft_outline_.... enums in `ftimage.h').
+
+  - changed outline functions to `FT_Outline_<action>' syntax
+
+  - added a smooth anti-alias renderer to the demonstration programs
+
+  - added Mac graphics driver (thanks Just)
+
+  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
+    FT_Open_Args descriptor..
+
+  - various  cleanups,  a  few  more API  functions  implemented  (see
+    FT_Attach_File)
+
+  - updated some docs
+
+
+======================================================================
+
+OLD CHANGES - 22-feb-2000
+
+  - introduced the `psnames' module.  It is used to:
+
+      o convert  a Postscript glyph  name into the  equivalent Unicode
+        character code (used by the  Type 1 driver(s) to synthesize on
+        the fly a Unicode charmap).
+
+      o provide an  interface to retrieve the Postscript  names of the
+        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
+        (the Macintosh  names are  used by the  SFNT-module postscript
+        names support routines, while the other two tables are used by
+        the Type 1 driver(s)).
+
+  - introduced the `type1z' alternate Type 1 driver.  This is a (still
+    experimental) driver  for the Type  1 format that  will ultimately
+    replace the one  in `src/type1'.  It uses pattern matching to load
+    data from the font, instead of a finite  state analyzer.  It works
+    much better than the `old' driver with `broken' fonts.  It is also
+    much smaller (under 15 Kb).
+
+  - the  Type 1  drivers (both  in `src/type1'  and  `src/type1z') are
+    nearly  complete.  They  both  provide automatic  Unicode  charmap
+    synthesis through  the `psnames' module.  No re-encoding vector is
+    needed.  (note  that they  still  leak  memory  due to  some  code
+    missing, and I'm getting lazy).
+
+    Trivial AFM support has been added to read kerning information but
+    wasn't exactly tested as it should ;-)
+
+  - The TrueType  glyph loader has  been seriously rewritten  (see the
+    file  `src/truetype/ttgload.c'.  It is now  much, much  simpler as
+    well as  easier to read,  maintain and understand  :-) Preliminary
+    versions introduced a  memory leak that has been  reported by Jack
+    Davis, and is now fixed..
+
+  - introduced  the new  `ft_glyph_format_plotter', used  to represent
+    stroked outlines  like Windows `Vector' fonts, and  certain Type 1
+    fonts  like `Hershey'.  The corresponding  raster will  be written
+    soon.
+
+  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
+    interface that uses a structure  to describe the input stream, the
+    driver (if required), etc..
+
+
+TODO
+
+  - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
+
+  - Add a function like FT_Load_Character(face, char_code, load_flags)
+    that  would   really  embed  a  call   to  FT_Get_Char_Index  then
+    FT_Load_Glyph to ease developer's work.
+
+  - Update the tutorial!
+
+  - consider adding  support for Multiple  Master fonts in the  Type 1
+    drivers.
+
+  - Test the AFM routines of the  Type 1 drivers to check that kerning
+    information is returned correctly.
+
+  - write a decent auto-gridding component  !! We need this to release
+    FreeType 2.0 gold !
+
+
+less urgent needs:
+
+  - add a CFF/Type2 driver
+  - add a BDF driver
+  - add a FNT/PCF/HBF driver
+  - add a Speedo driver from the X11 sources
+
+
+======================================================================
+
+OLDER CHANGES - 27-jan-2000
+
+  - updated the  `sfnt' module  interface to allow  several SFNT-based
+    drivers to co-exist peacefully
+
+  - updated  the `T1_Face'  type  to better  separate Postscript  font
+    content  from the  rest of  the FT_Face  structure.  Might be used
+    later by the CFF/Type2 driver..
+
+  - added an experimental replacement Type 1 driver featuring advanced
+    (and speedy) pattern matching to retrieve the data from postscript
+    fonts.
+
+  - very minor  changes in the implementation  of FT_Set_Char_Size and
+    FT_Set_Pixel_Sizes (they now implement default to lighten the font
+    driver's code).
+
+
+======================================================================
+
+OLD MESSAGE
+
+This file summarizes the changes  that occurred  since the last `beta'
+of FreeType 2. Because the list is important, it has been divided into
+separate sections:
+
+Table Of Contents:
+
+    I   High-Level Interface (easier !)
+   II   Directory Structure
+  III   Glyph Image Formats
+   IV   Build System
+    V   Portability
+   VI   Font Drivers
+
+
+----------------------------------------------------------------------
+
+High-Level Interface:
+
+  The high-level API has been considerably simplified.  Here is how:
+
+    - resource objects have disappeared.  this means that face objects
+      can now be created with  a single function call (see FT_New_Face
+      and FT_Open_Face)
+
+    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
+      and a glyph slot object  are automatically created for the face,
+      and can  be accessed  through `face->glyph' and  `face->size' if
+      one really  needs to.   In most cases,  there's no need  to call
+      FT_New_Size or FT_New_Glyph.
+
+    - similarly,  FT_Load_Glyph  now  only  takes  a  `face'  argument
+      (instead  of a  glyph  slot  and a  size).  Also,  its  `result'
+      parameter is  gone, as the glyph  image type is  returned in the
+      field `face->glyph.format'
+
+    - the list  of available  charmaps is directly  accessible through
+      `face->charmaps', counting `face->num_charmaps'  elements.  Each
+      charmap  has an  'encoding'  field which  specifies which  known
+      encoding it deals with.  Valid values are, for example:
+
+          ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
+          ft_encoding_apple_roman
+          ft_encoding_sjis
+          ft_encoding_adobe_standard
+          ft_encoding_adobe_expert
+
+      other  values may  be added  in the  future.  Each charmap still
+      holds  its `platform_id'  and `encoding_id'  values in  case the
+      encoding is too exotic for the current library
+
+
+----------------------------------------------------------------------
+
+Directory Structure:
+
+  Should seem obvious to most of you:
+
+     freetype/
+         config/        -- configuration sub-makefiles
+            ansi/
+            unix/       -- platform-specific configuration files
+            win32/
+            os2/
+            msdos/
+
+         include/       -- public header  files, those to  be included
+                           directly by client apps
+
+         src/           -- sources of the library
+           base/        -- the base layer
+           sfnt/        -- the sfnt `driver'  (see the drivers section
+                           below)
+           truetype/    -- the truetype driver
+           type1/       -- the type1 driver
+           shared/      -- some header files shared between drivers
+
+         demos/         -- demos/tools
+
+         docs/          -- documentation (a bit empty for now)
+
+
+----------------------------------------------------------------------
+
+Glyph Image Formats:
+
+  Drivers are now able to  register new glyph image formats within the
+  library.  For  now, the  base layer supports  of course  bitmaps and
+  vector  outlines, but  one  could imagine  something different  like
+  colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
+  ??).
+
+  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
+  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
+  should encompass all known bitmap types.
+
+  Each new  image format  must provide at  least one `raster',  i.e. a
+  module capable of  transforming the glyph image into a bitmap.  It's
+  also possible  to change the default  raster used for  a given glyph
+  image format.
+
+  The default outline  scan-converter now uses 128 levels  of grays by
+  default,  which tends  to smooth  many  things.  Note that the  demo
+  programs have been updated significantly in order to display these..
+
+
+----------------------------------------------------------------------
+
+Build system:
+
+  You still need  GNU Make to build the library.  The build system has
+  been very seriously re-vamped in order to provide things like :
+
+   - automatic host platform  detection (reverting to 'config/ansi' if
+     it is not detected, with pseudo-standard compilation flags)
+
+   - the ability to compile from the Makefiles with very different and
+     exotic compilers.  Note that linking the library can be difficult
+     for some platforms.
+
+     For example, the file `config/win32/lcclib.bat' is invoked by the
+     build system to create the `.lib' file with LCC-Win32 because its
+     librarian  has too  many flaws  to be  invoked directly  from the
+     Makefile.
+
+  Here's how it works:
+
+  - the first time you type `make',  the build system runs a series of
+    sub-makefiles  in order  to detect  your host  platform.  It  then
+    dumps what it found, and creates a file called `config.mk' in  the
+    current  directory.  This is a  sub-Makefile used  to  define many
+    important Make variables used to build the library.
+
+  - the second time, the build system detects the `config.mk' then use
+    it  to  build the  library.  All object  files  go  into 'obj'  by
+    default,  as well  as the  library file,  but this  can  easily be
+    changed.
+
+  Note that  you can run `make  setup' to force  another host platform
+  detection  even   if  a  `config.mk'  is  present   in  the  current
+  directory.  Another solution  is  simply to  delete  the file,  then
+  re-run make.
+
+  Finally, the  default compiler  for all platforms  is gcc  (for now,
+  this will hopefully changed in the future).  You can however specify
+  a different  compiler by specifying  it after the 'setup'  target as
+  in:
+
+      gnumake setup lcc         on Win32 to use the LCC compiler
+      gnumake setup visualc     on Win32 to use Visual C++
+
+  See  the file  `config/<system>/detect.mk' for  a list  of supported
+  compilers for your platforms.
+
+  It should be relatively easy  to write new detection rules files and
+  config.mk..
+
+  Finally, to  build the demo programs,  go to `demos'  and launch GNU
+  Make, it will use the `config.mk'  in the top directory to build the
+  test programs..
+
+
+----------------------------------------------------------------------
+
+Portability:
+
+  In  the  previous  beta,  a  single FT_System  object  was  used  to
+  encompass  all  low-level  operations like  thread  synchronisation,
+  memory management and i/o access.  This has been greatly simplified:
+
+    - thread synchronisation  has been dropped, for  the simple reason
+      that the library  is already re-entrant, and that  if you really
+      need  two  threads accessing  the  same  FT_Library, you  should
+      really synchronize access to it yourself with a simple mutex.
+
+    - memory  management is  performed  through a  very simple  object
+      called `FT_Memory',  which really is a table  containing a table
+      of pointers to  functions like malloc, realloc and  free as well
+      as some user data (closure).
+
+    - resources have disappeared (they created more problems than they
+      solved), and  i/o management have  been simplified greatly  as a
+      result.  Streams are  defined through  FT_Stream objects,  which
+      can be either memory-based or disk-based.
+
+      Note that  each face  has its own  stream, which is  closed only
+      when  the  face object  is  destroyed.  Hence,  a function  like
+      TT_Flush_Face in 1.x cannot be directly  supported.  However, if
+      you really need something like  this, you can easily tailor your
+      own streams  to achieve the same  feature at a  lower level (and
+      use FT_Open_Face instead of FT_New_Face to create the face).
+
+  See the file  `include/ftsystem.h' for more details, as  well as the
+  implementations found in `config/unix' and `config/ansi'.
+
+
+----------------------------------------------------------------------
+
+Font Drivers:
+
+  The  Font Driver  interface has  been modified  in order  to support
+  extensions & versioning.
+
+
+  The  list of  the font  drivers that  are statically  linked  to the
+  library at compile time is  managed through a new configuration file
+  called `config/<platform>/ftmodule.h'.
+
+  This  file is  autogenerated  when  invoking  `make modules'.   This
+  target  will  parse  all  sub-directories  of  'src', looking  for a
+  `module.mk' rules  file, used  to describe  the driver to  the build
+  system.
+
+  Hence, one  should call  `make modules' each  time a font  driver is
+  added or removed from the `src' directory.
+
+  Finally, this  version  provides  a `pseudo-driver'  in  `src/sfnt'.
+  This  driver  doesn't  support  font  files  directly, but  provides
+  services used by all TrueType-like font drivers.  Hence, its code is
+  shared between  the TrueType & OpenType  font formats,  and possibly
+  more formats to come if we're lucky..
+
+
+----------------------------------------------------------------------
+
+Extensions support:
+
+  The extensions support is inspired by the one found in 1.x.
+
+  Now, each font driver has  its own `extension registry', which lists
+  which extensions  are available  for the font  faces managed  by the
+  driver.
+
+  Extension ids are  now strings, rather than 4-byte  tags, as this is
+  usually more readable.
+
+  Each extension has:
+    - some data, associated to each face object
+    - an interface (table of function pointers)
+
+  An extension  that is format-specific should  simply register itself
+  to the correct font driver.  Here is some example code:
+
+   // Registering an extensions
+   //
+   FT_Error  FT_Init_XXXX_Extension( FT_Library  library )
+   {
+     FT_DriverInterface*  tt_driver;
+
+     driver = FT_Get_Driver( library, "truetype" );
+     if (!driver) return FT_Err_Unimplemented_Feature;
+
+     return FT_Register_Extension( driver, &extension_class );
+   }
+
+
+   // Implementing the extensions
+   //
+   FT_Error  FT_Proceed_Extension_XXX( FT_Face  face )
+   {
+     FT_XXX_Extension            ext;
+     FT_XXX_Extension_Interface  ext_interface;
+
+     ext = FT_Get_Extension( face, "extensionid", &ext_interface );
+     if (!ext) return error;
+
+     return ext_interface->do_it(ext);
+   }
+
+------------------------------------------------------------------------
+
+Copyright 2000-2013 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file  is  part  of the  FreeType  project, and may  only be  used,
+modified,  and  distributed  under  the  terms of  the FreeType  project
+license, LICENSE.TXT.   By continuing to use, modify, or distribute this
+file you  indicate that  you have  read the  license and understand  and
+accept it fully.
+
+
+Local Variables:
+version-control: never
+coding: utf-8
+End:
+
+--- end of CHANGES ---

+ 155 - 150
Source/ThirdParty/FreeType/docs/CUSTOMIZE

@@ -1,150 +1,155 @@
-How to customize the compilation of the library
-===============================================
-
-  FreeType  is highly  customizable  to fit  various  needs, and  this
-  document  describes  how  it  is  possible  to  select  options  and
-  components at compilation time.
-
-
-I. Configuration macros
-
-  The  file found  in `include/freetype/config/ftoption.h'  contains a
-  list  of  commented configuration  macros  that  can  be toggled  by
-  developers  to  indicate  which  features  should  be  active  while
-  building the library.
-
-  These  options range  from debug  level to  availability  of certain
-  features,   like  native   TrueType  hinting   through   a  bytecode
-  interpreter.
-
-  We  invite you  to read  this file  for more  information.   You can
-  change the  file's content to suit  your needs, or  override it with
-  one of the techniques described below.
-
-
-II. Modules list
-
-  If you  use GNU make  please edit the top-level  file `modules.cfg'.
-  It contains a  list of available FreeType modules  and extensions to
-  be compiled.  Change it to suit your own preferences.  Be aware that
-  certain modules  depend on  others, as described  in the  file.  GNU
-  make  uses `modules.cfg'  to  generate `ftmodule.h'  (in the  object
-  directory).
-
-  If  you don't  use  GNU make  you  have to  manually  edit the  file
-  `include/freetype/config/ftmodule.h'  (which is  *not* used  with if
-  compiled with GNU make) to  add or remove the drivers and components
-  you want  to compile into  the library.  See `INSTALL.ANY'  for more
-  information.
-
-
-III. System interface
-
-  FreeType's  default interface to  the system  (i.e., the  parts that
-  deal  with  memory  management   and  i/o  streams)  is  located  in
-  `src/base/ftsystem.c'.
-
-  The current  implementation uses standard C library  calls to manage
-  memory  and to read  font files.   It is  however possible  to write
-  custom implementations to suit specific systems.
-
-  To  tell the  GNU Make-based  build system  to use  a  custom system
-  interface, you have to  define the environment variable FTSYS_SRC to
-  point to the relevant implementation:
-
-    on Unix:
-
-      ./configure <your options>
-      export FTSYS_SRC=foo/my_ftsystem.c
-      make
-      make install
-
-    on Windows:
-
-      make setup <compiler>
-      set FTSYS_SRC=foo/my_ftsystem.c
-      make
-
-
-IV. Overriding default configuration and module headers
-
-  It  is possible  to override  the default  configuration  and module
-  headers without  changing the original files.  There  are three ways
-  to do that:
-
-
-  1. With GNU make
-
-    [This is actually a combination of method 2 and 3.]
-
-    Just put your custom  `ftoption.h' file into the objects directory
-    (normally  `<topdir>/objs'),  which  GNU  make  prefers  over  the
-    standard location.   No action is needed  for `ftmodule.h' because
-    it is generated automatically in the objects directory.
-
-
-  2. Using the C include path
-
-    Use the  C include path  to ensure that  your own versions  of the
-    files are used at compile time when the lines
-
-      #include FT_CONFIG_OPTIONS_H
-      #include FT_CONFIG_MODULES_H
-
-    are      compiled.       Their      default      values      being
-    <freetype/config/ftoption.h> and <freetype/config/ftmodule.h>, you
-    can do something like:
-
-      custom/
-        freetype/
-          config/
-            ftoption.h    => custom options header
-            ftmodule.h    => custom modules list
-
-      include/            => normal FreeType 2 include
-        freetype/
-          ...
-
-    then change the C include path to always give the path to `custom'
-    before the FreeType 2 `include'.
-
-
-  3. Redefining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H
-
-    Another way to do the same thing is to redefine the macros used to
-    name  the configuration  headers.  To  do  so, you  need a  custom
-    `ft2build.h' whose content can be as simple as:
-
-      #ifndef __FT2_BUILD_MY_PLATFORM_H__
-      #define __FT2_BUILD_MY_PLATFORM_H__
-
-      #define FT_CONFIG_OPTIONS_H  <custom/my-ftoption.h>
-      #define FT_CONFIG_MODULES_H  <custom/my-ftmodule.h>
-
-      #include <freetype/config/ftheader.h>
-
-      #endif /* __FT2_BUILD_MY_PLATFORM_H__ */
-
-    Place those files in a separate directory, e.g.,
-
-      custom/
-        ft2build.h           => custom version described above
-        my-ftoption.h        => custom options header
-        my-ftmodule.h        => custom modules list header
-
-    and change  the C include path  to ensure that  `custom' is always
-    placed before the FT2 `include' during compilation.
-
-----------------------------------------------------------------------
-
-Copyright 2003, 2005, 2006 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of CUSTOMIZE ---
+How to customize the compilation of the library
+===============================================
+
+  FreeType  is highly  customizable  to fit  various  needs, and  this
+  document  describes  how  it  is  possible  to  select  options  and
+  components at compilation time.
+
+
+I. Configuration macros
+
+  The  file found  in `include/freetype/config/ftoption.h'  contains a
+  list  of  commented configuration  macros  that  can  be toggled  by
+  developers  to  indicate  which  features  should  be  active  while
+  building the library.
+
+  These  options range  from debug  level to  availability  of certain
+  features,   like  native   TrueType  hinting   through   a  bytecode
+  interpreter.
+
+  We  invite you  to read  this file  for more  information.   You can
+  change the  file's content to suit  your needs, or  override it with
+  one of the techniques described below.
+
+
+II. Modules list
+
+  If you  use GNU make  please edit the top-level  file `modules.cfg'.
+  It contains a  list of available FreeType modules  and extensions to
+  be compiled.  Change it to suit your own preferences.  Be aware that
+  certain modules  depend on  others, as described  in the  file.  GNU
+  make  uses `modules.cfg'  to  generate `ftmodule.h'  (in the  object
+  directory).
+
+  If you build FreeType in a directory separate from the source files,
+  put your  customized `modules.cfg' in  that directory; that  way you
+  can keep the source files `clean'.
+
+  If  you don't  use  GNU make  you  have to  manually  edit the  file
+  `include/freetype/config/ftmodule.h'  (which is  *not* used  with if
+  compiled with GNU make) to  add or remove the drivers and components
+  you want  to compile into  the library.  See `INSTALL.ANY'  for more
+  information.
+
+
+III. System interface
+
+  FreeType's  default interface to  the system  (i.e., the  parts that
+  deal  with  memory  management   and  i/o  streams)  is  located  in
+  `src/base/ftsystem.c'.
+
+  The current  implementation uses standard C library  calls to manage
+  memory  and to read  font files.   It is  however possible  to write
+  custom implementations to suit specific systems.
+
+  To  tell the  GNU Make-based  build system  to use  a  custom system
+  interface, you have to  define the environment variable FTSYS_SRC to
+  point to the relevant implementation:
+
+    on Unix:
+
+      ./configure <your options>
+      export FTSYS_SRC=foo/my_ftsystem.c
+      make
+      make install
+
+    on Windows:
+
+      make setup <compiler>
+      set FTSYS_SRC=foo/my_ftsystem.c
+      make
+
+
+IV. Overriding default configuration and module headers
+
+  It  is possible  to override  the default  configuration  and module
+  headers without  changing the original files.  There  are three ways
+  to do that:
+
+
+  1. With GNU make
+
+    [This is actually a combination of method 2 and 3.]
+
+    Just put your custom `ftoption.h'  file into the objects directory
+    (normally `<topdir>/objs' if you build  in the source tree, or the
+    directory where  you invoke configure  if you build in  a separate
+    directory), which GNU make prefers over the standard location.  No
+    action  is  needed  for   `ftmodule.h'  because  it  is  generated
+    automatically in the objects directory.
+
+  2. Using the C include path
+
+    Use the  C include path  to ensure that  your own versions  of the
+    files are used at compile time when the lines
+
+      #include FT_CONFIG_OPTIONS_H
+      #include FT_CONFIG_MODULES_H
+
+    are      compiled.       Their      default      values      being
+    <freetype/config/ftoption.h> and <freetype/config/ftmodule.h>, you
+    can do something like:
+
+      custom/
+        freetype/
+          config/
+            ftoption.h    => custom options header
+            ftmodule.h    => custom modules list
+
+      include/            => normal FreeType 2 include
+        freetype/
+          ...
+
+    then change the C include path to always give the path to `custom'
+    before the FreeType 2 `include'.
+
+
+  3. Redefining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H
+
+    Another way to do the same thing is to redefine the macros used to
+    name  the configuration  headers.  To  do  so, you  need a  custom
+    `ft2build.h' whose content can be as simple as:
+
+      #ifndef __FT2_BUILD_MY_PLATFORM_H__
+      #define __FT2_BUILD_MY_PLATFORM_H__
+
+      #define FT_CONFIG_OPTIONS_H  <custom/my-ftoption.h>
+      #define FT_CONFIG_MODULES_H  <custom/my-ftmodule.h>
+
+      #include <freetype/config/ftheader.h>
+
+      #endif /* __FT2_BUILD_MY_PLATFORM_H__ */
+
+    Place those files in a separate directory, e.g.,
+
+      custom/
+        ft2build.h           => custom version described above
+        my-ftoption.h        => custom options header
+        my-ftmodule.h        => custom modules list header
+
+    and change  the C include path  to ensure that  `custom' is always
+    placed before the FT2 `include' during compilation.
+
+----------------------------------------------------------------------
+
+Copyright 2003, 2005, 2006, 2012 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of CUSTOMIZE ---

+ 202 - 202
Source/ThirdParty/FreeType/docs/DEBUG

@@ -1,202 +1,202 @@
-Debugging within the FreeType sources
-=====================================
-
-I. Configuration macros
------------------------
-
-There  are several ways  to enable  debugging features  in a  FreeType 2
-builds.   This is controlled  through the  definition of  special macros
-located in the file `ftoptions.h'.  The macros are:
-
-
-  FT_DEBUG_LEVEL_ERROR
-
-    #define this macro  if you want to compile  the FT_ERROR macro calls
-    to  print error messages  during program  execution.  This  will not
-    stop  the  program.   Very  useful  to  spot  invalid  fonts  during
-    development and to code workarounds for them.
-
-  FT_DEBUG_LEVEL_TRACE
-
-    #define this macro  if you want to compile  both macros FT_ERROR and
-    FT_TRACE.   This also  includes the  variants  FT_TRACE0, FT_TRACE1,
-    FT_TRACE2, ..., FT_TRACE7.
-
-    The  trace  macros are  used  to  send  debugging messages  when  an
-    appropriate  `debug  level' is  configured  at  runtime through  the
-    FT2_DEBUG environment variable (more on this later).
-
-  FT_DEBUG_MEMORY
-
-    If  this macro is  #defined, the  FreeType engine  is linked  with a
-    small  but  effective  debugging  memory  manager  that  tracks  all
-    allocations and frees that are performed within the font engine.
-
-    When  the  FT2_DEBUG_MEMORY   environment  variable  is  defined  at
-    runtime,  a call  to FT_Done_FreeType  will dump  memory statistics,
-    including the list of leaked memory blocks with the source locations
-    where these were allocated.  It is always a very good idea to define
-    this in development builds.  This works with _any_ program linked to
-    FreeType, but  requires a big  deal of memory (the  debugging memory
-    manager never frees the blocks to the heap in order to detect double
-    frees).
-
-    When FT2_DEBUG_MEMORY isn't defined at runtime, the debugging memory
-    manager is ignored, and performance is unaffected.
-
-
-II. Debugging macros
---------------------
-
-Several macros can be used within the FreeType sources to help debugging
-its code:
-
-
-  1. FT_ERROR(( ... ))
-
-    This macro is  used to send debug messages  that indicate relatively
-    serious  errors (like  broken font  files),  but will  not stop  the
-    execution of  the running program.   Its code is compiled  only when
-    either FT_DEBUG_LEVEL_ERROR  or FT_DEBUG_LEVEL_TRACE are  defined in
-    `ftoption.h'.
-
-    Note that you  have to use a printf-like  signature, but with double
-    parentheses, like in
-
-      FT_ERROR(( "your %s is not %s\n", "foo", "bar" ));
-
-
-  2. FT_ASSERT( condition )
-
-    This macro  is used to check  strong assertions at  runtime.  If its
-    condition isn't TRUE,  the program will abort with  a panic message.
-    Its   code   is  compiled   when   either  FT_DEBUG_LEVEL_ERROR   or
-    FT_DEBUG_LEVEL_TRACE are defined.  You don't need double parentheses
-    here.  For example
-
-      FT_ASSERT( ptr != NULL );
-
-
-  3. FT_TRACE( level, (message...) )
-
-    The  FT_TRACE  macro  is  used  to  send  general-purpose  debugging
-    messages during  program execution.   This macro uses  an *implicit*
-    macro named FT_COMPONENT used to name the current FreeType component
-    being run.
-
-    The developer should always  define FT_COMPONENT as appropriate, for
-    example as in
-
-      #undef  FT_COMPONENT
-      #define FT_COMPONENT  trace_io
-
-    The  value  of  the  FT_COMPONENT  macro  is  an  enumeration  named
-    trace_XXXX where XXXX  is one of the component  names defined in the
-    internal file `freetype/internal/fttrace.h'.  If you modify FreeType
-    source  and insert  new trace_XXXX macro,  you  must register  it in
-    fttrace.h. If you insert or remove many trace macros,  you can check
-    the undefined or the unused trace macro by src/tools/chktrcmp.py.
-
-    Each  such component  is assigned  a `debug  level', ranging  from 0
-    to  7,  through  the  use  of  the  FT2_DEBUG  environment  variable
-    (described below) when a program linked with FreeType starts.
-
-    When FT_TRACE  is called, its  level is compared  to the one  of the
-    corresponding component.   Messages with trace  levels *higher* than
-    the corresponding component level are filtered and never printed.
-
-    This  means that  trace messages  with level  0 are  always printed,
-    those with level 2 are only  printed when the component level is *at
-    least* 2.
-
-    The  second  parameter  to  FT_TRACE must  contain  parentheses  and
-    correspond to a printf-like call, as in
-
-      FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) )
-
-    The shortcut macros  FT_TRACE0, FT_TRACE1, FT_TRACE2, ..., FT_TRACE7
-    can be  used with  constant level indices,  and are much  cleaner to
-    use, as in
-
-     FT_TRACE2(( "your %s is not %s\n", "foo", "bar" ));
-
-
-III. Environment variables
---------------------------
-
-The  following  environment   variables  control  debugging  output  and
-behaviour of FreeType at runtime.
-
-
-  FT2_DEBUG
-
-    This   variable  is   only  used   when  FreeType   is   built  with
-    FT_DEBUG_LEVEL_TRACE defined.  It contains a list of component level
-    definitions, following this format:
-
-       component1:level1 component2:level2 component3:level3 ...
-
-    where `componentX' is the name of a tracing component, as defined in
-    `fttrace.h',  but  without the  `trace_'  prefix.   `levelX' is  the
-    corresponding level to use at runtime.
-
-    `any'  is a  special  component  name that  will  be interpreted  as
-    `any/all components'.  For example, the following definitions
-
-       set FT2_DEBUG=any:2 memory:5 io:4        (on Windows)
-       export FT2_DEBUG="any:2 memory:5 io:4"   (on Linux with bash)
-
-    both stipulate that  all components should have level  2, except for
-    the memory and io components which will be set to trace levels 5 and
-    4, respectively.
-
-
-  FT2_DEBUG_MEMORY
-
-    This  environment variable, when  defined, tells  FreeType to  use a
-    debugging memory  manager that will  track leaking memory  blocks as
-    well as other  common errors like double frees.   It is also capable
-    of  reporting  _where_  the  leaking blocks  were  allocated,  which
-    considerably saves time when debugging new additions to the library.
-
-    This  code  is  only  compiled  when  FreeType  is  built  with  the
-    FT_DEBUG_MEMORY macro  #defined in  `ftoption.h' though, it  will be
-    ignored in other builds.
-
-
-  FT2_ALLOC_TOTAL_MAX
-
-    This  variable is ignored  if FT2_DEBUG_MEMORY  is not  defined.  It
-    allows you to specify a maximum heap size for all memory allocations
-    performed by FreeType.   This is very useful to  test the robustness
-    of  the  font  engine and  programs  that  use  it in  tight  memory
-    conditions.
-
-    If it is  undefined, or if its value is  not strictly positive, then
-    no allocation bounds are checked at runtime.
-
-
-  FT2_ALLOC_COUNT_MAX
-
-    This  variable is ignored  if FT2_DEBUG_MEMORY  is not  defined.  It
-    allows  you  to  specify  a  maximum number  of  memory  allocations
-    performed    by     FreeType    before    returning     the    error
-    FT_Err_Out_Of_Memory.  This is useful  for debugging and testing the
-    engine's robustness.
-
-    If it is  undefined, or if its value is  not strictly positive, then
-    no allocation bounds are checked at runtime.
-
-------------------------------------------------------------------------
-
-Copyright 2002, 2003, 2004, 2005, 2009 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part  of the  FreeType  project, and  may  only be  used,
-modified,  and  distributed under  the  terms  of  the FreeType  project
-license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
-file  you indicate that  you have  read the  license and  understand and
-accept it fully.
-
-
---- end of DEBUG ---
+Debugging within the FreeType sources
+=====================================
+
+I. Configuration macros
+-----------------------
+
+There  are several ways  to enable  debugging features  in a  FreeType 2
+builds.   This is controlled  through the  definition of  special macros
+located in the file `ftoptions.h'.  The macros are:
+
+
+  FT_DEBUG_LEVEL_ERROR
+
+    #define this macro  if you want to compile  the FT_ERROR macro calls
+    to  print error messages  during program  execution.  This  will not
+    stop  the  program.   Very  useful  to  spot  invalid  fonts  during
+    development and to code workarounds for them.
+
+  FT_DEBUG_LEVEL_TRACE
+
+    #define this macro  if you want to compile  both macros FT_ERROR and
+    FT_TRACE.   This also  includes the  variants  FT_TRACE0, FT_TRACE1,
+    FT_TRACE2, ..., FT_TRACE7.
+
+    The  trace  macros are  used  to  send  debugging messages  when  an
+    appropriate  `debug  level' is  configured  at  runtime through  the
+    FT2_DEBUG environment variable (more on this later).
+
+  FT_DEBUG_MEMORY
+
+    If  this macro is  #defined, the  FreeType engine  is linked  with a
+    small  but  effective  debugging  memory  manager  that  tracks  all
+    allocations and frees that are performed within the font engine.
+
+    When  the  FT2_DEBUG_MEMORY   environment  variable  is  defined  at
+    runtime,  a call  to FT_Done_FreeType  will dump  memory statistics,
+    including the list of leaked memory blocks with the source locations
+    where these were allocated.  It is always a very good idea to define
+    this in development builds.  This works with _any_ program linked to
+    FreeType, but  requires a big  deal of memory (the  debugging memory
+    manager never frees the blocks to the heap in order to detect double
+    frees).
+
+    When FT2_DEBUG_MEMORY isn't defined at runtime, the debugging memory
+    manager is ignored, and performance is unaffected.
+
+
+II. Debugging macros
+--------------------
+
+Several macros can be used within the FreeType sources to help debugging
+its code:
+
+
+  1. FT_ERROR(( ... ))
+
+    This macro is  used to send debug messages  that indicate relatively
+    serious  errors (like  broken font  files),  but will  not stop  the
+    execution of  the running program.   Its code is compiled  only when
+    either FT_DEBUG_LEVEL_ERROR  or FT_DEBUG_LEVEL_TRACE are  defined in
+    `ftoption.h'.
+
+    Note that you  have to use a printf-like  signature, but with double
+    parentheses, like in
+
+      FT_ERROR(( "your %s is not %s\n", "foo", "bar" ));
+
+
+  2. FT_ASSERT( condition )
+
+    This macro  is used to check  strong assertions at  runtime.  If its
+    condition isn't TRUE,  the program will abort with  a panic message.
+    Its   code   is  compiled   when   either  FT_DEBUG_LEVEL_ERROR   or
+    FT_DEBUG_LEVEL_TRACE are defined.  You don't need double parentheses
+    here.  For example
+
+      FT_ASSERT( ptr != NULL );
+
+
+  3. FT_TRACE( level, (message...) )
+
+    The  FT_TRACE  macro  is  used  to  send  general-purpose  debugging
+    messages during  program execution.   This macro uses  an *implicit*
+    macro named FT_COMPONENT used to name the current FreeType component
+    being run.
+
+    The developer should always  define FT_COMPONENT as appropriate, for
+    example as in
+
+      #undef  FT_COMPONENT
+      #define FT_COMPONENT  trace_io
+
+    The  value  of  the  FT_COMPONENT  macro  is  an  enumeration  named
+    trace_XXXX where XXXX  is one of the component  names defined in the
+    internal file `freetype/internal/fttrace.h'.  If you modify FreeType
+    source  and insert  new trace_XXXX macro,  you  must register  it in
+    fttrace.h. If you insert or remove many trace macros,  you can check
+    the undefined or the unused trace macro by src/tools/chktrcmp.py.
+
+    Each  such component  is assigned  a `debug  level', ranging  from 0
+    to  7,  through  the  use  of  the  FT2_DEBUG  environment  variable
+    (described below) when a program linked with FreeType starts.
+
+    When FT_TRACE  is called, its  level is compared  to the one  of the
+    corresponding component.   Messages with trace  levels *higher* than
+    the corresponding component level are filtered and never printed.
+
+    This  means that  trace messages  with level  0 are  always printed,
+    those with level 2 are only  printed when the component level is *at
+    least* 2.
+
+    The  second  parameter  to  FT_TRACE must  contain  parentheses  and
+    correspond to a printf-like call, as in
+
+      FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) )
+
+    The shortcut macros  FT_TRACE0, FT_TRACE1, FT_TRACE2, ..., FT_TRACE7
+    can be  used with  constant level indices,  and are much  cleaner to
+    use, as in
+
+     FT_TRACE2(( "your %s is not %s\n", "foo", "bar" ));
+
+
+III. Environment variables
+--------------------------
+
+The  following  environment   variables  control  debugging  output  and
+behaviour of FreeType at runtime.
+
+
+  FT2_DEBUG
+
+    This   variable  is   only  used   when  FreeType   is   built  with
+    FT_DEBUG_LEVEL_TRACE defined.  It contains a list of component level
+    definitions, following this format:
+
+       component1:level1 component2:level2 component3:level3 ...
+
+    where `componentX' is the name of a tracing component, as defined in
+    `fttrace.h',  but  without the  `trace_'  prefix.   `levelX' is  the
+    corresponding level to use at runtime.
+
+    `any'  is a  special  component  name that  will  be interpreted  as
+    `any/all components'.  For example, the following definitions
+
+       set FT2_DEBUG=any:2 memory:5 io:4        (on Windows)
+       export FT2_DEBUG="any:2 memory:5 io:4"   (on Linux with bash)
+
+    both stipulate that  all components should have level  2, except for
+    the memory and io components which will be set to trace levels 5 and
+    4, respectively.
+
+
+  FT2_DEBUG_MEMORY
+
+    This  environment variable, when  defined, tells  FreeType to  use a
+    debugging memory  manager that will  track leaking memory  blocks as
+    well as other  common errors like double frees.   It is also capable
+    of  reporting  _where_  the  leaking blocks  were  allocated,  which
+    considerably saves time when debugging new additions to the library.
+
+    This  code  is  only  compiled  when  FreeType  is  built  with  the
+    FT_DEBUG_MEMORY macro  #defined in  `ftoption.h' though, it  will be
+    ignored in other builds.
+
+
+  FT2_ALLOC_TOTAL_MAX
+
+    This  variable is ignored  if FT2_DEBUG_MEMORY  is not  defined.  It
+    allows you to specify a maximum heap size for all memory allocations
+    performed by FreeType.   This is very useful to  test the robustness
+    of  the  font  engine and  programs  that  use  it in  tight  memory
+    conditions.
+
+    If it is  undefined, or if its value is  not strictly positive, then
+    no allocation bounds are checked at runtime.
+
+
+  FT2_ALLOC_COUNT_MAX
+
+    This  variable is ignored  if FT2_DEBUG_MEMORY  is not  defined.  It
+    allows  you  to  specify  a  maximum number  of  memory  allocations
+    performed    by     FreeType    before    returning     the    error
+    FT_Err_Out_Of_Memory.  This is useful  for debugging and testing the
+    engine's robustness.
+
+    If it is  undefined, or if its value is  not strictly positive, then
+    no allocation bounds are checked at runtime.
+
+------------------------------------------------------------------------
+
+Copyright 2002, 2003, 2004, 2005, 2009 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part  of the  FreeType  project, and  may  only be  used,
+modified,  and  distributed under  the  terms  of  the FreeType  project
+license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
+file  you indicate that  you have  read the  license and  understand and
+accept it fully.
+
+
+--- end of DEBUG ---

+ 169 - 169
Source/ThirdParty/FreeType/docs/FTL.TXT

@@ -1,169 +1,169 @@
-                    The FreeType Project LICENSE
-                    ----------------------------
-
-                            2006-Jan-27
-
-                    Copyright 1996-2002, 2006 by
-          David Turner, Robert Wilhelm, and Werner Lemberg
-
-
-
-Introduction
-============
-
-  The FreeType  Project is distributed in  several archive packages;
-  some of them may contain, in addition to the FreeType font engine,
-  various tools and  contributions which rely on, or  relate to, the
-  FreeType Project.
-
-  This  license applies  to all  files found  in such  packages, and
-  which do not  fall under their own explicit  license.  The license
-  affects  thus  the  FreeType   font  engine,  the  test  programs,
-  documentation and makefiles, at the very least.
-
-  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG
-  (Independent JPEG  Group) licenses, which  all encourage inclusion
-  and  use of  free  software in  commercial  and freeware  products
-  alike.  As a consequence, its main points are that:
-
-    o We don't promise that this software works. However, we will be
-      interested in any kind of bug reports. (`as is' distribution)
-
-    o You can  use this software for whatever you  want, in parts or
-      full form, without having to pay us. (`royalty-free' usage)
-
-    o You may not pretend that  you wrote this software.  If you use
-      it, or  only parts of it,  in a program,  you must acknowledge
-      somewhere  in  your  documentation  that  you  have  used  the
-      FreeType code. (`credits')
-
-  We  specifically  permit  and  encourage  the  inclusion  of  this
-  software, with  or without modifications,  in commercial products.
-  We  disclaim  all warranties  covering  The  FreeType Project  and
-  assume no liability related to The FreeType Project.
-
-
-  Finally,  many  people  asked  us  for  a  preferred  form  for  a
-  credit/disclaimer to use in compliance with this license.  We thus
-  encourage you to use the following text:
-
-   """
-    Portions of this software are copyright © <year> The FreeType
-    Project (www.freetype.org).  All rights reserved.
-   """
-
-  Please replace <year> with the value from the FreeType version you
-  actually use.
-
-
-Legal Terms
-===========
-
-0. Definitions
---------------
-
-  Throughout this license,  the terms `package', `FreeType Project',
-  and  `FreeType  archive' refer  to  the  set  of files  originally
-  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and
-  Werner Lemberg) as the `FreeType Project', be they named as alpha,
-  beta or final release.
-
-  `You' refers to  the licensee, or person using  the project, where
-  `using' is a generic term including compiling the project's source
-  code as  well as linking it  to form a  `program' or `executable'.
-  This  program is  referred to  as  `a program  using the  FreeType
-  engine'.
-
-  This  license applies  to all  files distributed  in  the original
-  FreeType  Project,   including  all  source   code,  binaries  and
-  documentation,  unless  otherwise  stated   in  the  file  in  its
-  original, unmodified form as  distributed in the original archive.
-  If you are  unsure whether or not a particular  file is covered by
-  this license, you must contact us to verify this.
-
-  The FreeType  Project is copyright (C) 1996-2000  by David Turner,
-  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as
-  specified below.
-
-1. No Warranty
---------------
-
-  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY
-  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,
-  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR
-  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
-  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO
-  USE, OF THE FREETYPE PROJECT.
-
-2. Redistribution
------------------
-
-  This  license  grants  a  worldwide, royalty-free,  perpetual  and
-  irrevocable right  and license to use,  execute, perform, compile,
-  display,  copy,   create  derivative  works   of,  distribute  and
-  sublicense the  FreeType Project (in  both source and  object code
-  forms)  and  derivative works  thereof  for  any  purpose; and  to
-  authorize others  to exercise  some or all  of the  rights granted
-  herein, subject to the following conditions:
-
-    o Redistribution of  source code  must retain this  license file
-      (`FTL.TXT') unaltered; any  additions, deletions or changes to
-      the original  files must be clearly  indicated in accompanying
-      documentation.   The  copyright   notices  of  the  unaltered,
-      original  files must  be  preserved in  all  copies of  source
-      files.
-
-    o Redistribution in binary form must provide a  disclaimer  that
-      states  that  the software is based in part of the work of the
-      FreeType Team,  in  the  distribution  documentation.  We also
-      encourage you to put an URL to the FreeType web page  in  your
-      documentation, though this isn't mandatory.
-
-  These conditions  apply to any  software derived from or  based on
-  the FreeType Project,  not just the unmodified files.   If you use
-  our work, you  must acknowledge us.  However, no  fee need be paid
-  to us.
-
-3. Advertising
---------------
-
-  Neither the  FreeType authors and  contributors nor you  shall use
-  the name of the  other for commercial, advertising, or promotional
-  purposes without specific prior written permission.
-
-  We suggest,  but do not require, that  you use one or  more of the
-  following phrases to refer  to this software in your documentation
-  or advertising  materials: `FreeType Project',  `FreeType Engine',
-  `FreeType library', or `FreeType Distribution'.
-
-  As  you have  not signed  this license,  you are  not  required to
-  accept  it.   However,  as  the FreeType  Project  is  copyrighted
-  material, only  this license, or  another one contracted  with the
-  authors, grants you  the right to use, distribute,  and modify it.
-  Therefore,  by  using,  distributing,  or modifying  the  FreeType
-  Project, you indicate that you understand and accept all the terms
-  of this license.
-
-4. Contacts
------------
-
-  There are two mailing lists related to FreeType:
-
-    o [email protected]
-
-      Discusses general use and applications of FreeType, as well as
-      future and  wanted additions to the  library and distribution.
-      If  you are looking  for support,  start in  this list  if you
-      haven't found anything to help you in the documentation.
-
-    o [email protected]
-
-      Discusses bugs,  as well  as engine internals,  design issues,
-      specific licenses, porting, etc.
-
-  Our home page can be found at
-
-    http://www.freetype.org
-
-
---- end of FTL.TXT ---
+                    The FreeType Project LICENSE
+                    ----------------------------
+
+                            2006-Jan-27
+
+                    Copyright 1996-2002, 2006 by
+          David Turner, Robert Wilhelm, and Werner Lemberg
+
+
+
+Introduction
+============
+
+  The FreeType  Project is distributed in  several archive packages;
+  some of them may contain, in addition to the FreeType font engine,
+  various tools and  contributions which rely on, or  relate to, the
+  FreeType Project.
+
+  This  license applies  to all  files found  in such  packages, and
+  which do not  fall under their own explicit  license.  The license
+  affects  thus  the  FreeType   font  engine,  the  test  programs,
+  documentation and makefiles, at the very least.
+
+  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG
+  (Independent JPEG  Group) licenses, which  all encourage inclusion
+  and  use of  free  software in  commercial  and freeware  products
+  alike.  As a consequence, its main points are that:
+
+    o We don't promise that this software works. However, we will be
+      interested in any kind of bug reports. (`as is' distribution)
+
+    o You can  use this software for whatever you  want, in parts or
+      full form, without having to pay us. (`royalty-free' usage)
+
+    o You may not pretend that  you wrote this software.  If you use
+      it, or  only parts of it,  in a program,  you must acknowledge
+      somewhere  in  your  documentation  that  you  have  used  the
+      FreeType code. (`credits')
+
+  We  specifically  permit  and  encourage  the  inclusion  of  this
+  software, with  or without modifications,  in commercial products.
+  We  disclaim  all warranties  covering  The  FreeType Project  and
+  assume no liability related to The FreeType Project.
+
+
+  Finally,  many  people  asked  us  for  a  preferred  form  for  a
+  credit/disclaimer to use in compliance with this license.  We thus
+  encourage you to use the following text:
+
+   """
+    Portions of this software are copyright © <year> The FreeType
+    Project (www.freetype.org).  All rights reserved.
+   """
+
+  Please replace <year> with the value from the FreeType version you
+  actually use.
+
+
+Legal Terms
+===========
+
+0. Definitions
+--------------
+
+  Throughout this license,  the terms `package', `FreeType Project',
+  and  `FreeType  archive' refer  to  the  set  of files  originally
+  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and
+  Werner Lemberg) as the `FreeType Project', be they named as alpha,
+  beta or final release.
+
+  `You' refers to  the licensee, or person using  the project, where
+  `using' is a generic term including compiling the project's source
+  code as  well as linking it  to form a  `program' or `executable'.
+  This  program is  referred to  as  `a program  using the  FreeType
+  engine'.
+
+  This  license applies  to all  files distributed  in  the original
+  FreeType  Project,   including  all  source   code,  binaries  and
+  documentation,  unless  otherwise  stated   in  the  file  in  its
+  original, unmodified form as  distributed in the original archive.
+  If you are  unsure whether or not a particular  file is covered by
+  this license, you must contact us to verify this.
+
+  The FreeType  Project is copyright (C) 1996-2000  by David Turner,
+  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as
+  specified below.
+
+1. No Warranty
+--------------
+
+  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY
+  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,
+  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR
+  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO
+  USE, OF THE FREETYPE PROJECT.
+
+2. Redistribution
+-----------------
+
+  This  license  grants  a  worldwide, royalty-free,  perpetual  and
+  irrevocable right  and license to use,  execute, perform, compile,
+  display,  copy,   create  derivative  works   of,  distribute  and
+  sublicense the  FreeType Project (in  both source and  object code
+  forms)  and  derivative works  thereof  for  any  purpose; and  to
+  authorize others  to exercise  some or all  of the  rights granted
+  herein, subject to the following conditions:
+
+    o Redistribution of  source code  must retain this  license file
+      (`FTL.TXT') unaltered; any  additions, deletions or changes to
+      the original  files must be clearly  indicated in accompanying
+      documentation.   The  copyright   notices  of  the  unaltered,
+      original  files must  be  preserved in  all  copies of  source
+      files.
+
+    o Redistribution in binary form must provide a  disclaimer  that
+      states  that  the software is based in part of the work of the
+      FreeType Team,  in  the  distribution  documentation.  We also
+      encourage you to put an URL to the FreeType web page  in  your
+      documentation, though this isn't mandatory.
+
+  These conditions  apply to any  software derived from or  based on
+  the FreeType Project,  not just the unmodified files.   If you use
+  our work, you  must acknowledge us.  However, no  fee need be paid
+  to us.
+
+3. Advertising
+--------------
+
+  Neither the  FreeType authors and  contributors nor you  shall use
+  the name of the  other for commercial, advertising, or promotional
+  purposes without specific prior written permission.
+
+  We suggest,  but do not require, that  you use one or  more of the
+  following phrases to refer  to this software in your documentation
+  or advertising  materials: `FreeType Project',  `FreeType Engine',
+  `FreeType library', or `FreeType Distribution'.
+
+  As  you have  not signed  this license,  you are  not  required to
+  accept  it.   However,  as  the FreeType  Project  is  copyrighted
+  material, only  this license, or  another one contracted  with the
+  authors, grants you  the right to use, distribute,  and modify it.
+  Therefore,  by  using,  distributing,  or modifying  the  FreeType
+  Project, you indicate that you understand and accept all the terms
+  of this license.
+
+4. Contacts
+-----------
+
+  There are two mailing lists related to FreeType:
+
+    o [email protected]
+
+      Discusses general use and applications of FreeType, as well as
+      future and  wanted additions to the  library and distribution.
+      If  you are looking  for support,  start in  this list  if you
+      haven't found anything to help you in the documentation.
+
+    o [email protected]
+
+      Discusses bugs,  as well  as engine internals,  design issues,
+      specific licenses, porting, etc.
+
+  Our home page can be found at
+
+    http://www.freetype.org
+
+
+--- end of FTL.TXT ---

+ 340 - 340
Source/ThirdParty/FreeType/docs/GPL.TXT → Source/ThirdParty/FreeType/docs/GPLv2.TXT

@@ -1,340 +1,340 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

+ 83 - 91
Source/ThirdParty/FreeType/docs/INSTALL

@@ -1,91 +1,83 @@
-
-There are  several ways  to build the  FreeType library,  depending on
-your system and the level of  customization you need.  Here is a short
-overview of the documentation available:
-
-
-I. Normal installation and upgrades
-===================================
-
-  1. Native TrueType Hinting
-
-    Native TrueType hinting is  disabled by default[1].  If you really
-    need it, read the file `TRUETYPE' for information.
-
-
-  2. Unix Systems (including Mac OS X, Cygwin, and MSys on Windows)
-
-    Please read *both* `UPGRADE.UNIX' and `INSTALL.UNIX' to install or
-    upgrade FreeType  2 on  a Unix system.   Note that you  *need* GNU
-    Make for automatic compilation,  since other make tools won't work
-    (this includes BSD Make).
-
-    GNU Make VERSION 3.80 OR NEWER IS NEEDED!
-
-
-  3. On VMS with the `mms' build tool
-
-    See `INSTALL.VMS' for installation instructions on this platform.
-
-
-  4. Other systems using GNU Make
-
-    On non-Unix platforms,  it is possible to build  the library using
-    GNU Make  utility.  Note that  *NO OTHER MAKE TOOL  WILL WORK*[2]!
-    This  methods supports  several  compilers on  Windows, OS/2,  and
-    BeOS, including MinGW, Visual C++, Borland C++, and more.
-
-    Instructions are provided in the file `INSTALL.GNU'.
-
-
-  5. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
-
-    We provide a  small number of `project files'  for various IDEs to
-    automatically build  the library as  well.  Note that  these files
-    are  not supported  and only  sporadically maintained  by FreeType
-    developers, so don't expect them to work in each release.
-
-    To find them, have a  look at the content of the `builds/<system>'
-    directory, where <system> stands for your OS or environment.
-
-
-  6. From you own IDE, or own Makefiles
-
-    If  you  want  to  create   your  own  project  file,  follow  the
-    instructions   given  in  the   `INSTALL.ANY'  document   of  this
-    directory.
-
-
-II. Custom builds of the library
-================================
-
-  Customizing the compilation  of FreeType is easy, and  allows you to
-  select only the components of  the font engine that you really need.
-  For more details read the file `CUSTOMIZE'.
-
-
-----------------------------------------------------------------------
-
-[1] More details on:  http://www.freetype.org/patents.html
-
-[2] make++, a make tool written in Perl, has sufficient support of GNU
-    make extensions to build FreeType.  See
-
-      http://makepp.sourceforge.net
-
-    for more information; you need version 1.19 or newer, and you must
-    pass option `--norc-substitution'.
-
-----------------------------------------------------------------------
-
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of INSTALL ---
+
+There are  several ways  to build the  FreeType library,  depending on
+your system and the level of  customization you need.  Here is a short
+overview of the documentation available:
+
+
+I. Normal installation and upgrades
+===================================
+
+  1. Unix Systems (including Mac OS X, Cygwin, and MSys on Windows)
+
+    Please read `INSTALL.UNIX' to install or upgrade FreeType  2 on  a
+    Unix system.   Note  that  you  *need*  GNU  Make   for  automatic
+    compilation,  since other make tools won't work (this includes BSD
+    Make).
+
+    GNU Make VERSION 3.80 OR NEWER IS NEEDED!
+
+
+  2. On VMS with the `mms' build tool
+
+    See `INSTALL.VMS' for installation instructions on this platform.
+
+
+  3. Other systems using GNU Make
+
+    On non-Unix platforms,  it is possible to build  the library using
+    GNU Make  utility.  Note that  *NO OTHER MAKE TOOL  WILL WORK*[1]!
+    This  methods supports  several  compilers on  Windows, OS/2,  and
+    BeOS, including MinGW, Visual C++, Borland C++, and more.
+
+    Instructions are provided in the file `INSTALL.GNU'.
+
+
+  4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
+
+    We provide a  small number of `project files'  for various IDEs to
+    automatically build  the library as  well.  Note that  these files
+    are  not supported  and only  sporadically maintained  by FreeType
+    developers, so don't expect them to work in each release.
+
+    To find them, have a  look at the content of the `builds/<system>'
+    directory, where <system> stands for your OS or environment.
+
+
+  5. From you own IDE, or own Makefiles
+
+    If  you  want  to  create   your  own  project  file,  follow  the
+    instructions   given  in  the   `INSTALL.ANY'  document   of  this
+    directory.
+
+
+II. Custom builds of the library
+================================
+
+  Customizing the compilation  of FreeType is easy, and  allows you to
+  select only the components of  the font engine that you really need.
+  For more details read the file `CUSTOMIZE'.
+
+
+----------------------------------------------------------------------
+
+[1] make++, a make tool written in Perl, has sufficient support of GNU
+    make extensions to build FreeType.  See
+
+      http://makepp.sourceforge.net
+
+    for more information; you need version 1.19 or newer, and you must
+    pass option `--norc-substitution'.
+
+----------------------------------------------------------------------
+
+Copyright   2000-2008, 2010-2011
+by David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of INSTALL ---

+ 156 - 151
Source/ThirdParty/FreeType/docs/INSTALL.ANY

@@ -1,151 +1,156 @@
-Instructions on how to build FreeType with your own build tool
-==============================================================
-
-See  the  file `CUSTOMIZE'  to  learn  how  to customize  FreeType  to
-specific environments.
-
-
-I. Standard procedure
----------------------
-
-  * DISABLE PRE-COMPILED  HEADERS!  This is very  important for Visual
-    C++, because FreeType uses lines like:
-
-      #include FT_FREETYPE_H
-
-    which are not correctly supported by this compiler while being ISO
-    C compliant!
-
-  * You  need  to  add  the directories  `freetype2/include'  to  your
-    include path when compiling the library.
-
-  * FreeType 2 is made of  several components; each of them is located
-    in    a   subdirectory    of   `freetype2/src'.     For   example,
-    `freetype2/src/truetype/' contains the TrueType font driver.
-
-  * DO NOT COMPILE ALL C FILES!  Rather, compile the following ones.
-
-    -- base components (required)
-
-      src/base/ftsystem.c
-      src/base/ftinit.c
-      src/base/ftdebug.c
-
-      src/base/ftbase.c
-
-      src/base/ftbbox.c       -- recommended, see <freetype/ftbbox.h>
-      src/base/ftglyph.c      -- recommended, see <freetype/ftglyph.h>
-
-      src/base/ftbdf.c        -- optional, see <freetype/ftbdf.h>
-      src/base/ftbitmap.c     -- optional, see <freetype/ftbitmap.h>
-      src/base/ftcid.c        -- optional, see <freetype/ftcid.h>
-      src/base/ftfstype.c     -- optional
-      src/base/ftgasp.c       -- optional, see <freetype/ftgasp.h>
-      src/base/ftgxval.c      -- optional, see <freetype/ftgxval.h>
-      src/base/ftlcdfil.c     -- optional, see <freetype/ftlcdfil.h>
-      src/base/ftmm.c         -- optional, see <freetype/ftmm.h>
-      src/base/ftotval.c      -- optional, see <freetype/ftotval.h>
-      src/base/ftpatent.c     -- optional
-      src/base/ftpfr.c        -- optional, see <freetype/ftpfr.h>
-      src/base/ftstroke.c     -- optional, see <freetype/ftstroke.h>
-      src/base/ftsynth.c      -- optional, see <freetype/ftsynth.h>
-      src/base/fttype1.c      -- optional, see <freetype/t1tables.h>
-      src/base/ftwinfnt.c     -- optional, see <freetype/ftwinfnt.h>
-      src/base/ftxf86.c       -- optional, see <freetype/ftxf86.h>
-
-      src/base/ftmac.c        -- only on the Macintosh
-
-    -- font drivers (optional; at least one is needed)
-
-      src/bdf/bdf.c           -- BDF font driver
-      src/cff/cff.c           -- CFF/OpenType font driver
-      src/cid/type1cid.c      -- Type 1 CID-keyed font driver
-      src/pcf/pcf.c           -- PCF font driver
-      src/pfr/pfr.c           -- PFR/TrueDoc font driver
-      src/sfnt/sfnt.c         -- SFNT files support
-                                 (TrueType & OpenType)
-      src/truetype/truetype.c -- TrueType font driver
-      src/type1/type1.c       -- Type 1 font driver
-      src/type42/type42.c     -- Type 42 font driver
-      src/winfonts/winfnt.c   -- Windows FONT / FNT font driver
-
-    -- rasterizers (optional; at least one is needed for vector
-       formats)
-
-      src/raster/raster.c     -- monochrome rasterizer
-      src/smooth/smooth.c     -- anti-aliasing rasterizer
-
-    -- auxiliary modules (optional)
-
-      src/autofit/autofit.c   -- auto hinting module
-      src/cache/ftcache.c     -- cache sub-system (in beta)
-      src/gzip/ftgzip.c       -- support for compressed fonts (.gz)
-      src/lzw/ftlzw.c         -- support for compressed fonts (.Z)
-      src/gxvalid/gxvalid.c   -- TrueTypeGX/AAT table validation
-      src/otvalid/otvalid.c   -- OpenType table validation
-      src/psaux/psaux.c       -- PostScript Type 1 parsing
-      src/pshinter/pshinter.c -- PS hinting module
-      src/psnames/psnames.c   -- PostScript glyph names support
-
-
-    Notes:
-
-      `ftcache.c'  needs `ftglyph.c'
-      `ftfstype.c' needs `fttype1.c'
-      `ftglyph.c'  needs `ftbitmap.c'
-      `ftstroke.c' needs `ftglyph.c'
-      `ftsynth.c'  needs `ftbitmap.c'
-
-      `cff.c'      needs `sfnt.c', `pshinter.c', and `psnames.c'
-      `truetype.c' needs `sfnt.c' and `psnames.c'
-      `type1.c'    needs `psaux.c' `pshinter.c', and `psnames.c'
-      `type1cid.c' needs `psaux.c', `pshinter.c', and `psnames.c'
-      `type42.c'   needs `truetype.c'
-
-
-  Read the file `CUSTOMIZE' in case  you want to compile only a subset
-  of  the  drivers,  renderers,   and  optional  modules;  a  detailed
-  description of the various base  extension is given in the top-level
-  file `modules.cfg'.
-
-  You are done.  In case of problems, see the archives of the FreeType
-  development mailing list.
-
-
-II. Support for flat-directory compilation
-------------------------------------------
-
-  It is  possible to  put all  FreeType 2 source  files into  a single
-  directory, with the *exception* of the `include' hierarchy.
-
-  1. Copy all files in current directory
-
-      cp freetype2/src/base/*.[hc] .
-      cp freetype2/src/raster1/*.[hc] .
-      cp freetype2/src/smooth/*.[hc] .
-      etc.
-
-  2. Compile sources
-
-      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftsystem.c
-      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftinit.c
-      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftdebug.c
-      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftbase.c
-      etc.
-
-    You don't  need to define  the FT_FLAT_COMPILATION macro  (as this
-    was required in previous releases of FreeType 2).
-
-----------------------------------------------------------------------
-
-Copyright 2003, 2005, 2006, 2009, 2010 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of INSTALL.ANY ---
+Instructions on how to build FreeType with your own build tool
+==============================================================
+
+See  the  file `CUSTOMIZE'  to  learn  how  to customize  FreeType  to
+specific environments.
+
+
+I. Standard procedure
+---------------------
+
+  * DISABLE PRE-COMPILED  HEADERS!  This is very  important for Visual
+    C++, because FreeType uses lines like:
+
+      #include FT_FREETYPE_H
+
+    which are not correctly supported by this compiler while being ISO
+    C compliant!
+
+  * You  need  to  add  the directories  `freetype2/include'  to  your
+    include path when compiling the library.
+
+  * FreeType 2 is made of  several components; each of them is located
+    in    a   subdirectory    of   `freetype2/src'.     For   example,
+    `freetype2/src/truetype/' contains the TrueType font driver.
+
+  * DO NOT COMPILE ALL C FILES!  Rather, compile the following ones.
+
+    -- base components (required)
+
+      src/base/ftsystem.c
+      src/base/ftinit.c
+      src/base/ftdebug.c
+
+      src/base/ftbase.c
+
+      src/base/ftbbox.c       -- recommended, see <freetype/ftbbox.h>
+      src/base/ftglyph.c      -- recommended, see <freetype/ftglyph.h>
+
+      src/base/ftbdf.c        -- optional, see <freetype/ftbdf.h>
+      src/base/ftbitmap.c     -- optional, see <freetype/ftbitmap.h>
+      src/base/ftcid.c        -- optional, see <freetype/ftcid.h>
+      src/base/ftfstype.c     -- optional
+      src/base/ftgasp.c       -- optional, see <freetype/ftgasp.h>
+      src/base/ftgxval.c      -- optional, see <freetype/ftgxval.h>
+      src/base/ftlcdfil.c     -- optional, see <freetype/ftlcdfil.h>
+      src/base/ftmm.c         -- optional, see <freetype/ftmm.h>
+      src/base/ftotval.c      -- optional, see <freetype/ftotval.h>
+      src/base/ftpatent.c     -- optional
+      src/base/ftpfr.c        -- optional, see <freetype/ftpfr.h>
+      src/base/ftstroke.c     -- optional, see <freetype/ftstroke.h>
+      src/base/ftsynth.c      -- optional, see <freetype/ftsynth.h>
+      src/base/fttype1.c      -- optional, see <freetype/t1tables.h>
+      src/base/ftwinfnt.c     -- optional, see <freetype/ftwinfnt.h>
+      src/base/ftxf86.c       -- optional, see <freetype/ftxf86.h>
+
+      src/base/ftmac.c        -- only on the Macintosh
+
+    -- font drivers (optional; at least one is needed)
+
+      src/bdf/bdf.c           -- BDF font driver
+      src/cff/cff.c           -- CFF/OpenType font driver
+      src/cid/type1cid.c      -- Type 1 CID-keyed font driver
+      src/pcf/pcf.c           -- PCF font driver
+      src/pfr/pfr.c           -- PFR/TrueDoc font driver
+      src/sfnt/sfnt.c         -- SFNT files support
+                                 (TrueType & OpenType)
+      src/truetype/truetype.c -- TrueType font driver
+      src/type1/type1.c       -- Type 1 font driver
+      src/type42/type42.c     -- Type 42 font driver
+      src/winfonts/winfnt.c   -- Windows FONT / FNT font driver
+
+    -- rasterizers (optional; at least one is needed for vector
+       formats)
+
+      src/raster/raster.c     -- monochrome rasterizer
+      src/smooth/smooth.c     -- anti-aliasing rasterizer
+
+    -- auxiliary modules (optional)
+
+      src/autofit/autofit.c   -- auto hinting module
+      src/cache/ftcache.c     -- cache sub-system (in beta)
+      src/gzip/ftgzip.c       -- support for compressed fonts (.gz)
+      src/lzw/ftlzw.c         -- support for compressed fonts (.Z)
+      src/bzip2/ftbzip2.c     -- support for compressed fonts (.bz2)
+      src/gxvalid/gxvalid.c   -- TrueTypeGX/AAT table validation
+      src/otvalid/otvalid.c   -- OpenType table validation
+      src/psaux/psaux.c       -- PostScript Type 1 parsing
+      src/pshinter/pshinter.c -- PS hinting module
+      src/psnames/psnames.c   -- PostScript glyph names support
+
+
+    Notes:
+
+      `ftcache.c'  needs `ftglyph.c'
+      `ftfstype.c' needs `fttype1.c'
+      `ftglyph.c'  needs `ftbitmap.c'
+      `ftstroke.c' needs `ftglyph.c'
+      `ftsynth.c'  needs `ftbitmap.c'
+
+      `cff.c'      needs `sfnt.c', `pshinter.c', and `psnames.c'
+      `truetype.c' needs `sfnt.c' and `psnames.c'
+      `type1.c'    needs `psaux.c' `pshinter.c', and `psnames.c'
+      `type1cid.c' needs `psaux.c', `pshinter.c', and `psnames.c'
+      `type42.c'   needs `truetype.c'
+
+      To use `ftbzip2.c', an application must be linked with a library
+      which implements bzip2 support  (and the bzip2 header files must
+      be available also during compilation).
+
+
+  Read the file `CUSTOMIZE' in case  you want to compile only a subset
+  of  the  drivers,  renderers,   and  optional  modules;  a  detailed
+  description of the various base  extension is given in the top-level
+  file `modules.cfg'.
+
+  You are done.  In case of problems, see the archives of the FreeType
+  development mailing list.
+
+
+II. Support for flat-directory compilation
+------------------------------------------
+
+  It is  possible to  put all  FreeType 2 source  files into  a single
+  directory, with the *exception* of the `include' hierarchy.
+
+  1. Copy all files in current directory
+
+      cp freetype2/src/base/*.[hc] .
+      cp freetype2/src/raster1/*.[hc] .
+      cp freetype2/src/smooth/*.[hc] .
+      etc.
+
+  2. Compile sources
+
+      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftsystem.c
+      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftinit.c
+      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftdebug.c
+      cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftbase.c
+      etc.
+
+    You don't  need to define  the FT_FLAT_COMPILATION macro  (as this
+    was required in previous releases of FreeType 2).
+
+----------------------------------------------------------------------
+
+Copyright 2003, 2005, 2006, 2009, 2010 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of INSTALL.ANY ---

+ 135 - 135
Source/ThirdParty/FreeType/docs/INSTALL.CROSS

@@ -1,135 +1,135 @@
-This document contains instructions on how to cross-build the FreeType
-library on Unix systems, for example, building binaries for Linux/MIPS
-on  FreeBSD/i386.   Before   reading  this  document,  please  consult
-INSTALL.UNIX for required tools and the basic self-building procedure.
-
-
-  1. Required Tools
-  -----------------
-
-    For self-building the FreeType library  on a Unix system, GNU Make
-    3.80 or  newer is required.   INSTALL.UNIX  contains  hints how to
-    check the installed `make'.
-
-    The GNU C  compiler to cross-build the target  system is required.
-    At present, using non-GNU cross compiler is not tested.  The cross
-    compiler is  expected to be  installed with a system  prefix.  For
-    example, if  your building system  is FreeBSD/i386 and  the target
-    system is Linux/MIPS, the  cross compiler should be installed with
-    the name `mips-ip22-linuxelf-gcc'.
-
-    A C  compiler for a self-build  is required also, to  build a tool
-    that  is executed  during  the building  procedure.  Non-GNU  self
-    compilers are acceptable, but such a setup is not tested yet.
-
-
-  2. Configuration
-  ----------------
-
-    2.1. Building and target system
-
-      To configure for  cross-build, the options `--host=<system>' and
-      `--build=<system>' must be passed to configure.  For example, if
-      your building  system is FreeBSD/i386  and the target  system is
-      Linux/MIPS, say
-
-        ./configure \
-          --build=i386-unknown-freebsd \
-          --host=mips-ip22-linuxelf \
-          [other options]
-
-      It should  be noted that `--host=<system>'  specifies the system
-      where the built binaries will  be executed, not the system where
-      the build actually happens.   Older versions of GNU autoconf use
-      the option  pair `--host=' and `--target='.  This  is broken and
-      doesn't work.  Similarly, an explicit CC specification like
-
-        env CC=mips-ip22-linux-gcc ./configure
-
-      or
-
-        env CC=/usr/local/mips-ip22-linux/bin/gcc ./configure
-
-      doesn't   work  either;  such   a  configuration   confuses  the
-      `configure' script while  trying to find the cross  and native C
-      compilers.
-
-
-    2.2. The prefix to install FreeType2
-
-      Setting `--prefix=<prefix>'  properly is important.   The prefix
-      to install FreeType2 is  written into the freetype-config script
-      and freetype2.pc configuration file.
-
-      If  the built  FreeType  2 library  is  used as  a  part of  the
-      cross-building system,  the prefix  is expected to  be different
-      from the self-building  system.  For example, configuration with
-      `--prefix=/usr/local'  installs binaries  into  the system  wide
-      `/usr/local'  directory  which  then  can't be  executed.   This
-      causes confusion in configuration  of all applications which use
-      FreeType2.   Instead,  use a  prefix to install  the cross-build
-      into     a     separate     system    tree,     for     example,
-      `--prefix=/usr/local/mips-ip22-linux/'.
-
-      On the other  hand, if the built FreeType2 is used  as a part of
-      the target system, the prefix to install should reflect the file
-      system structure of the target system.
-
-
-  3. Building command
-  -------------------
-
-    If  the  configuration  finishes successfully,  invoking  GNU make
-    builds FreeType2.  Just say
-
-      make
-
-    or
-
-      gmake
-
-    depending on the name the GNU make binary actually has.
-
-
-  4. Installation
-  ---------------
-
-    Saying
-
-      make install
-
-    as usual to install FreeType2 into the directory tree specified by
-    the argument of the `--prefix' option.
-
-    As noted in section 2.2,  FreeType2  is sometimes configured to be
-    installed  into the  system directory  of the  target  system, and
-    should  not be installed  in the  cross-building system.   In such
-    cases, the  make variable `DESTDIR'  is useful to change  the root
-    directory in the installation.  For example, after
-
-      make DESTDIR=/mnt/target_system_root/ install
-
-    the built FreeType2 library files are installed into the directory
-    `/mnt/target_system_root/<prefix_in_configure>/lib'.
-
-
-  5. TODO
-  -------
-
-    Cross building between Cygwin (or MSys) and Unix must be tested.
-
-
-----------------------------------------------------------------------
-
-Copyright 2006, 2008 by suzuki toshiya
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of INSTALL.CROSS ---
+This document contains instructions on how to cross-build the FreeType
+library on Unix systems, for example, building binaries for Linux/MIPS
+on  FreeBSD/i386.   Before   reading  this  document,  please  consult
+INSTALL.UNIX for required tools and the basic self-building procedure.
+
+
+  1. Required Tools
+  -----------------
+
+    For self-building the FreeType library  on a Unix system, GNU Make
+    3.80 or  newer is required.   INSTALL.UNIX  contains  hints how to
+    check the installed `make'.
+
+    The GNU C  compiler to cross-build the target  system is required.
+    At present, using non-GNU cross compiler is not tested.  The cross
+    compiler is  expected to be  installed with a system  prefix.  For
+    example, if  your building system  is FreeBSD/i386 and  the target
+    system is Linux/MIPS, the  cross compiler should be installed with
+    the name `mips-ip22-linuxelf-gcc'.
+
+    A C  compiler for a self-build  is required also, to  build a tool
+    that  is executed  during  the building  procedure.  Non-GNU  self
+    compilers are acceptable, but such a setup is not tested yet.
+
+
+  2. Configuration
+  ----------------
+
+    2.1. Building and target system
+
+      To configure for  cross-build, the options `--host=<system>' and
+      `--build=<system>' must be passed to configure.  For example, if
+      your building  system is FreeBSD/i386  and the target  system is
+      Linux/MIPS, say
+
+        ./configure \
+          --build=i386-unknown-freebsd \
+          --host=mips-ip22-linuxelf \
+          [other options]
+
+      It should  be noted that `--host=<system>'  specifies the system
+      where the built binaries will  be executed, not the system where
+      the build actually happens.   Older versions of GNU autoconf use
+      the option  pair `--host=' and `--target='.  This  is broken and
+      doesn't work.  Similarly, an explicit CC specification like
+
+        env CC=mips-ip22-linux-gcc ./configure                 # BAD
+
+      or
+
+        env CC=/usr/local/mips-ip22-linux/bin/gcc ./configure  # BAD
+
+      doesn't   work  either;  such   a  configuration   confuses  the
+      `configure' script while  trying to find the cross  and native C
+      compilers.
+
+
+    2.2. The prefix to install FreeType2
+
+      Setting `--prefix=<prefix>'  properly is important.   The prefix
+      to install FreeType2 is  written into the freetype-config script
+      and freetype2.pc configuration file.
+
+      If  the built  FreeType  2 library  is  used as  a  part of  the
+      cross-building system,  the prefix  is expected to  be different
+      from the self-building  system.  For example, configuration with
+      `--prefix=/usr/local'  installs binaries  into  the system  wide
+      `/usr/local'  directory  which  then  can't be  executed.   This
+      causes confusion in configuration  of all applications which use
+      FreeType2.   Instead,  use a  prefix to install  the cross-build
+      into     a     separate     system    tree,     for     example,
+      `--prefix=/usr/local/mips-ip22-linux/'.
+
+      On the other  hand, if the built FreeType2 is used  as a part of
+      the target system, the prefix to install should reflect the file
+      system structure of the target system.
+
+
+  3. Building command
+  -------------------
+
+    If  the  configuration  finishes successfully,  invoking  GNU make
+    builds FreeType2.  Just say
+
+      make
+
+    or
+
+      gmake
+
+    depending on the name the GNU make binary actually has.
+
+
+  4. Installation
+  ---------------
+
+    Saying
+
+      make install
+
+    as usual to install FreeType2 into the directory tree specified by
+    the argument of the `--prefix' option.
+
+    As noted in section 2.2,  FreeType2  is sometimes configured to be
+    installed  into the  system directory  of the  target  system, and
+    should  not be installed  in the  cross-building system.   In such
+    cases, the  make variable `DESTDIR'  is useful to change  the root
+    directory in the installation.  For example, after
+
+      make DESTDIR=/mnt/target_system_root/ install
+
+    the built FreeType2 library files are installed into the directory
+    `/mnt/target_system_root/<prefix_in_configure>/lib'.
+
+
+  5. TODO
+  -------
+
+    Cross building between Cygwin (or MSys) and Unix must be tested.
+
+
+----------------------------------------------------------------------
+
+Copyright 2006, 2008, 2012 by suzuki toshiya
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of INSTALL.CROSS ---

+ 159 - 159
Source/ThirdParty/FreeType/docs/INSTALL.GNU

@@ -1,159 +1,159 @@
-This document contains instructions  how to build the FreeType library
-on non-Unix systems  with the help of GNU Make.  Note  that if you are
-running Cygwin or MSys in  Windows, you should follow the instructions
-in the file INSTALL.UNIX instead.
-
-
-  FreeType 2 includes a powerful and flexible build system that allows
-  you to  easily compile it on  a great variety of  platforms from the
-  command line.  To do so, just follow these simple instructions.
-
-  1. Install GNU Make
-  -------------------
-
-    Because  GNU Make  is  the  only Make  tool  supported to  compile
-    FreeType 2, you should install it on your machine.
-
-    The FreeType 2 build system relies on many features special to GNU
-    Make.
-
-    NEARLY ALL OTHER MAKE TOOLS  FAIL, INCLUDING `BSD MAKE', SO REALLY
-    INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM!
-
-    Note that  make++, a  make tool written  in Perl,  supports enough
-    features of GNU make to compile FreeType.  See
-
-      http://makepp.sourceforge.net
-
-    for more information; you need version 1.19 or newer, and you must
-    pass option `--norc-substitution'.
-
-    Make sure that you are invoking GNU Make from the command line, by
-    typing something like:
-
-      make -v
-
-    to display its version number.
-
-    VERSION 3.80 OR NEWER IS NEEDED!
-
-
-  2. Invoke `make'
-  ----------------
-
-    Go to  the root  directory of FreeType  2, then simply  invoke GNU
-    Make from the command line.   This will launch the FreeType 2 host
-    platform  detection routines.   A summary  will be  displayed, for
-    example, on Win32.
-
-
-      ==============================================================
-      FreeType build system -- automatic system detection
-
-      The following settings are used:
-
-        platform                     win32
-        compiler                     gcc
-        configuration directory      .\builds\win32
-        configuration rules          .\builds\win32\w32-gcc.mk
-
-      If this does not correspond to your system or settings please
-      remove the file 'config.mk' from this directory then read the
-      INSTALL file for help.
-
-      Otherwise, simply type 'make' again to build the library
-      or 'make refdoc' to build the API reference (the latter needs
-      python).
-      =============================================================
-
-
-    If the detected settings correspond to your platform and compiler,
-    skip to step 5.  Note that if your platform is completely alien to
-    the build system, the detected platform will be `ansi'.
-
-
-  3. Configure the build system for a different compiler
-  ------------------------------------------------------
-
-    If the build system correctly detected your platform, but you want
-    to use a different compiler  than the one specified in the summary
-    (for most platforms, gcc is the default compiler), invoke GNU Make
-    with
-
-      make setup <compiler>
-
-    Examples:
-
-      to use Visual C++ on Win32, type:  `make setup visualc'
-      to use Borland C++ on Win32, type  `make setup bcc32'
-      to use Watcom C++ on Win32, type   `make setup watcom'
-      to use Intel C++ on Win32, type    `make setup intelc'
-      to use LCC-Win32 on Win32, type:   `make setup lcc'
-      to use Watcom C++ on OS/2, type    `make setup watcom'
-      to use VisualAge C++ on OS/2, type `make setup visualage'
-
-    The  <compiler> name to  use is  platform-dependent.  The  list of
-    available  compilers for  your  system is  available  in the  file
-    `builds/<system>/detect.mk'.
-
-    If you  are satisfied  by the new  configuration summary,  skip to
-    step 5.
-
-
-  4. Configure the build system for an unknown platform/compiler
-  --------------------------------------------------------------
-
-    The auto-detection/setup  phase of the build system  copies a file
-    to the current directory under the name `config.mk'.
-
-    For    example,    on    OS/2+gcc,    it   would    simply    copy
-    `builds/os2/os2-gcc.mk' to `./config.mk'.
-
-    If for  some reason your  platform isn't correctly  detected, copy
-    manually the configuration sub-makefile to `./config.mk' and go to
-    step 5.
-
-    Note  that  this file  is  a  sub-Makefile  used to  specify  Make
-    variables  for compiler  and linker  invocation during  the build.
-    You can  easily create your own  version from one  of the existing
-    configuration files,  then copy it to the  current directory under
-    the name `./config.mk'.
-
-
-  5. Build the library
-  --------------------
-
-    The auto-detection/setup  phase should have  copied a file  in the
-    current  directory,  called  `./config.mk'.   This  file  contains
-    definitions of various Make  variables used to invoke the compiler
-    and linker during the build.  [It has also generated a file called
-    `ftmodule.h'   in  the  objects   directory  (which   is  normally
-    `<toplevel>/objs/');  please read  the  file `docs/CUSTOMIZE'  for
-    customization of FreeType.]
-
-    To  launch  the build,  simply  invoke  GNU  Make again:  The  top
-    Makefile will detect the configuration file and run the build with
-    it.
-
-
-  Final note
-
-    The build  system builds a  statically linked library of  the font
-    engine in the  `objs' directory.  It does _not_  support the build
-    of  DLLs on  Windows and  OS/2.  If  you need  these, you  have to
-    either   use  an   IDE-specific  project   file,  or   follow  the
-    instructions in `INSTALL.ANY' to create your own Makefiles.
-
-----------------------------------------------------------------------
-
-Copyright 2003, 2004, 2005, 2006, 2008 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of INSTALL.GNU ---
+This document contains instructions  how to build the FreeType library
+on non-Unix systems  with the help of GNU Make.  Note  that if you are
+running Cygwin or MSys in  Windows, you should follow the instructions
+in the file INSTALL.UNIX instead.
+
+
+  FreeType 2 includes a powerful and flexible build system that allows
+  you to  easily compile it on  a great variety of  platforms from the
+  command line.  To do so, just follow these simple instructions.
+
+  1. Install GNU Make
+  -------------------
+
+    Because  GNU Make  is  the  only Make  tool  supported to  compile
+    FreeType 2, you should install it on your machine.
+
+    The FreeType 2 build system relies on many features special to GNU
+    Make.
+
+    NEARLY ALL OTHER MAKE TOOLS  FAIL, INCLUDING `BSD MAKE', SO REALLY
+    INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM!
+
+    Note that  make++, a  make tool written  in Perl,  supports enough
+    features of GNU make to compile FreeType.  See
+
+      http://makepp.sourceforge.net
+
+    for more information; you need version 1.19 or newer, and you must
+    pass option `--norc-substitution'.
+
+    Make sure that you are invoking GNU Make from the command line, by
+    typing something like:
+
+      make -v
+
+    to display its version number.
+
+    VERSION 3.80 OR NEWER IS NEEDED!
+
+
+  2. Invoke `make'
+  ----------------
+
+    Go to  the root  directory of FreeType  2, then simply  invoke GNU
+    Make from the command line.   This will launch the FreeType 2 host
+    platform  detection routines.   A summary  will be  displayed, for
+    example, on Win32.
+
+
+      ==============================================================
+      FreeType build system -- automatic system detection
+
+      The following settings are used:
+
+        platform                     win32
+        compiler                     gcc
+        configuration directory      .\builds\win32
+        configuration rules          .\builds\win32\w32-gcc.mk
+
+      If this does not correspond to your system or settings please
+      remove the file 'config.mk' from this directory then read the
+      INSTALL file for help.
+
+      Otherwise, simply type 'make' again to build the library
+      or 'make refdoc' to build the API reference (the latter needs
+      python).
+      =============================================================
+
+
+    If the detected settings correspond to your platform and compiler,
+    skip to step 5.  Note that if your platform is completely alien to
+    the build system, the detected platform will be `ansi'.
+
+
+  3. Configure the build system for a different compiler
+  ------------------------------------------------------
+
+    If the build system correctly detected your platform, but you want
+    to use a different compiler  than the one specified in the summary
+    (for most platforms, gcc is the default compiler), invoke GNU Make
+    with
+
+      make setup <compiler>
+
+    Examples:
+
+      to use Visual C++ on Win32, type:  `make setup visualc'
+      to use Borland C++ on Win32, type  `make setup bcc32'
+      to use Watcom C++ on Win32, type   `make setup watcom'
+      to use Intel C++ on Win32, type    `make setup intelc'
+      to use LCC-Win32 on Win32, type:   `make setup lcc'
+      to use Watcom C++ on OS/2, type    `make setup watcom'
+      to use VisualAge C++ on OS/2, type `make setup visualage'
+
+    The  <compiler> name to  use is  platform-dependent.  The  list of
+    available  compilers for  your  system is  available  in the  file
+    `builds/<system>/detect.mk'.
+
+    If you  are satisfied  by the new  configuration summary,  skip to
+    step 5.
+
+
+  4. Configure the build system for an unknown platform/compiler
+  --------------------------------------------------------------
+
+    The auto-detection/setup  phase of the build system  copies a file
+    to the current directory under the name `config.mk'.
+
+    For    example,    on    OS/2+gcc,    it   would    simply    copy
+    `builds/os2/os2-gcc.mk' to `./config.mk'.
+
+    If for  some reason your  platform isn't correctly  detected, copy
+    manually the configuration sub-makefile to `./config.mk' and go to
+    step 5.
+
+    Note  that  this file  is  a  sub-Makefile  used to  specify  Make
+    variables  for compiler  and linker  invocation during  the build.
+    You can  easily create your own  version from one  of the existing
+    configuration files,  then copy it to the  current directory under
+    the name `./config.mk'.
+
+
+  5. Build the library
+  --------------------
+
+    The auto-detection/setup  phase should have  copied a file  in the
+    current  directory,  called  `./config.mk'.   This  file  contains
+    definitions of various Make  variables used to invoke the compiler
+    and linker during the build.  [It has also generated a file called
+    `ftmodule.h'   in  the  objects   directory  (which   is  normally
+    `<toplevel>/objs/');  please read  the  file `docs/CUSTOMIZE'  for
+    customization of FreeType.]
+
+    To  launch  the build,  simply  invoke  GNU  Make again:  The  top
+    Makefile will detect the configuration file and run the build with
+    it.
+
+
+  Final note
+
+    The build  system builds a  statically linked library of  the font
+    engine in the  `objs' directory.  It does _not_  support the build
+    of  DLLs on  Windows and  OS/2.  If  you need  these, you  have to
+    either   use  an   IDE-specific  project   file,  or   follow  the
+    instructions in `INSTALL.ANY' to create your own Makefiles.
+
+----------------------------------------------------------------------
+
+Copyright 2003, 2004, 2005, 2006, 2008 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of INSTALL.GNU ---

+ 32 - 32
Source/ThirdParty/FreeType/docs/INSTALL.MAC

@@ -1,32 +1,32 @@
-Please follow the instructions  in INSTALL.UNIX to install FreeType on
-Mac OS X.
-
-Currently FreeType2 functions based on some deprecated Carbon APIs
-return FT_Err_Unimplemented_Feature always, even if FreeType2 is
-configured and built on the system that deprecated Carbon APIs are
-available. To enable deprecated FreeType2 functions as far as possible,
-replace src/base/ftmac.c by builds/mac/ftmac.c.
-
-Starting with Mac OS X 10.5, gcc defaults the deployment target
-to 10.5. In previous versions of Mac OS X, this defaulted to 10.1.
-If you want your built binaries to run only on 10.5, this change
-does not concern you.  If you want them to also run on older versions
-of Mac OS X, then you must either set the MACOSX_DEPLOYMENT_TARGET
-environment variable or pass -mmacosx-version-min to gcc. You should
-specify the oldest version of Mac OS you want the code to run on.
-For example, if you use Bourne shell:
-
-	export MACOSX_DEPLOYMENT_TARGET=10.2
-
-or, if you use C shell:
-
-	setenv MACOSX_DEPLOYMENT_TARGET 10.2
-
-Alternatively, you could pass "-mmacosx-version-min=10.2" to gcc.
-
-Here the number 10.2 is the lowest version that the built binaries
-can run on. In the cases in above, the built binaries will run on
-Mac OS X 10.2 and later, but _not_ earlier. If you want to run on
-earlier, you have to set lower version, e.g. 10.0.
-
-For classic Mac OS (Mac OS 7, 8, 9) please refer to builds/mac/README.
+Please follow the instructions  in INSTALL.UNIX to install FreeType on
+Mac OS X.
+
+Currently FreeType2 functions based on some deprecated Carbon APIs
+return FT_Err_Unimplemented_Feature always, even if FreeType2 is
+configured and built on the system that deprecated Carbon APIs are
+available. To enable deprecated FreeType2 functions as far as possible,
+replace src/base/ftmac.c by builds/mac/ftmac.c.
+
+Starting with Mac OS X 10.5, gcc defaults the deployment target
+to 10.5. In previous versions of Mac OS X, this defaulted to 10.1.
+If you want your built binaries to run only on 10.5, this change
+does not concern you.  If you want them to also run on older versions
+of Mac OS X, then you must either set the MACOSX_DEPLOYMENT_TARGET
+environment variable or pass -mmacosx-version-min to gcc. You should
+specify the oldest version of Mac OS you want the code to run on.
+For example, if you use Bourne shell:
+
+	export MACOSX_DEPLOYMENT_TARGET=10.2
+
+or, if you use C shell:
+
+	setenv MACOSX_DEPLOYMENT_TARGET 10.2
+
+Alternatively, you could pass "-mmacosx-version-min=10.2" to gcc.
+
+Here the number 10.2 is the lowest version that the built binaries
+can run on. In the cases in above, the built binaries will run on
+Mac OS X 10.2 and later, but _not_ earlier. If you want to run on
+earlier, you have to set lower version, e.g. 10.0.
+
+For classic Mac OS (Mac OS 7, 8, 9) please refer to builds/mac/README.

+ 96 - 96
Source/ThirdParty/FreeType/docs/INSTALL.UNIX

@@ -1,96 +1,96 @@
-This  document contains  instructions  on how  to  build the  FreeType
-library on Unix  systems.  This also works for  emulations like Cygwin
-or MSys on Win32:
-
-
-  1. Ensure that you are using GNU Make
-  -------------------------------------
-
-    The FreeType build system  _exclusively_ works with GNU Make.  You
-    will  not be  able to  compile the  library with  the instructions
-    below using any other alternative (including BSD Make).
-
-    Check that you have GNU make by running the command:
-
-       make -v
-
-    This should dump some text that begins with:
-
-       GNU Make  <version number>
-       Copyright (C) <year> Free Software Foundation Inc.
-
-    Note that version  3.80 or higher is *required* or the  build will
-    fail.
-
-    It is also fine to have GNU Make under another name (e.g. 'gmake')
-    if you use the GNUMAKE variable as described below.
-
-    As  a  special exception,  'makepp'  can  also  be used  to  build
-    FreeType 2.  See the file docs/MAKEPP for details.
-
-
-  2. Regenerate the configure script if needed
-  --------------------------------------------
-
-    This only applies if you  are building a CVS snapshot or checkout,
-    *not* if you grabbed the sources of an official release.
-
-    You  need  to invoke  the  `autogen.sh'  script  in the  top-level
-    directory  in order  to  create the  `configure'  script for  your
-    platform.  Normally, this simply means typing:
-
-      sh autogen.sh
-
-    In case of problems, you  may need to install or upgrade Automake,
-    Autoconf or  Libtool.  See  README.CVS in the  top-level directory
-    for more information.
-
-
-  3. Build and install the library
-  --------------------------------
-
-    The following  should work  on all Unix  systems where  the `make'
-    command invokes GNU Make:
-
-      ./configure [options]
-      make
-      make install           (as root)
-
-    The default installation path  is `/usr/local'.  It can be changed
-    with the `--prefix=<path>' option.  Example:
-
-      ./configure --prefix=/usr
-
-    When using a different command to invoke GNU Make, use the GNUMAKE
-    variable.  For example,  if `gmake' is the command  to use on your
-    system, do something like:
-
-       GNUMAKE=gmake ./configure [options]
-       gmake
-       gmake install            (as root)
-
-    If  this still doesn't  work, there  must be  a problem  with your
-    system (e.g., you are using a very old version of GNU Make).
-
-    It  is possible  to  compile FreeType  in  a different  directory.
-    Assuming the FreeType source  files in directory `/src/freetype' a
-    compilation in directory `foo' works as follows:
-
-      cd foo
-      /src/freetype/configure [options]
-      make
-      make install
-
-----------------------------------------------------------------------
-
-Copyright 2003, 2004, 2005, 2006, 2007 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of INSTALL.UNIX ---
+This  document contains  instructions  on how  to  build the  FreeType
+library on Unix  systems.  This also works for  emulations like Cygwin
+or MSys on Win32:
+
+
+  1. Ensure that you are using GNU Make
+  -------------------------------------
+
+    The FreeType build system  _exclusively_ works with GNU Make.  You
+    will  not be  able to  compile the  library with  the instructions
+    below using any other alternative (including BSD Make).
+
+    Check that you have GNU make by running the command:
+
+       make -v
+
+    This should dump some text that begins with:
+
+       GNU Make  <version number>
+       Copyright (C) <year> Free Software Foundation Inc.
+
+    Note that version  3.80 or higher is *required* or the  build will
+    fail.
+
+    It is also fine to have GNU Make under another name (e.g. 'gmake')
+    if you use the MAKE variable as described below.
+
+    As  a  special exception,  'makepp'  can  also  be used  to  build
+    FreeType 2.  See the file docs/MAKEPP for details.
+
+
+  2. Regenerate the configure script if needed
+  --------------------------------------------
+
+    This only applies if you  are building a git snapshot or checkout,
+    *not* if you grabbed the sources of an official release.
+
+    You  need  to invoke  the  `autogen.sh'  script  in the  top-level
+    directory  in order  to  create the  `configure'  script for  your
+    platform.  Normally, this simply means typing:
+
+      sh autogen.sh
+
+    In case of problems, you  may need to install or upgrade Automake,
+    Autoconf or  Libtool.  See  README.git in the  top-level directory
+    for more information.
+
+
+  3. Build and install the library
+  --------------------------------
+
+    The following  should work  on all Unix  systems where  the `make'
+    command invokes GNU Make:
+
+      ./configure [options]
+      make
+      make install           (as root)
+
+    The default installation path  is `/usr/local'.  It can be changed
+    with the `--prefix=<path>' option.  Example:
+
+      ./configure --prefix=/usr
+
+    When using  a different command  to invoke GNU Make,  use the MAKE
+    variable.  For example,  if `gmake' is the command  to use on your
+    system, do something like:
+
+       MAKE=gmake ./configure [options]
+       gmake
+       gmake install            (as root)
+
+    If  this still doesn't  work, there  must be  a problem  with your
+    system (e.g., you are using a very old version of GNU Make).
+
+    It  is possible  to  compile FreeType  in  a different  directory.
+    Assuming the FreeType source  files in directory `/src/freetype' a
+    compilation in directory `foo' works as follows:
+
+      cd foo
+      /src/freetype/configure [options]
+      make
+      make install
+
+----------------------------------------------------------------------
+
+Copyright 2003-2007, 2013 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of INSTALL.UNIX ---

+ 62 - 62
Source/ThirdParty/FreeType/docs/INSTALL.VMS

@@ -1,62 +1,62 @@
-How to build the freetype2 library on VMS
------------------------------------------
-
-It is actually very  straightforward to install the Freetype2 library.
-Just  execute vms_make.com from  the toplevel  directory to  build the
-library.  This procedure currently accepts the following options:
-
-DEBUG
-  Build the library with debug information and without optimization.
-
-lopts=<value>
-  Options to pass to the link command e.g. lopts=/traceback
-
-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.
-
-
-To rebuild  the  sources it is necessary to  have MMS/MMK installed on
-the system.
-
-The library is available in the directory
-
-  [.LIB]
-
-To  compile applications  using  FreeType  2 you  have  to define  the
-logical FREETYPE pointing to the directory
-
-  [.INCLUDE.FREETYPE]
-
-i.e., if  the directory in which  this INSTALL.VMS file  is located is
-$disk:[freetype] then define the logical with
-
-  define freetype $disk:[freetype.include.freetype]
-
-This version has  been tested with Compaq C  V6.2-006 on OpenVMS Alpha
-V7.2-1.
-
-
-  Any problems can be reported to
-
-    Jouk Jansen <[email protected]> or
-    Martin P.J. Zinser <[email protected]>
-
-------------------------------------------------------------------------
-
-Copyright 2000, 2004 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file  is  part  of the  FreeType  project, and may  only be  used,
-modified,  and  distributed  under  the  terms of  the FreeType  project
-license, LICENSE.TXT.   By continuing to use, modify, or distribute this
-file you  indicate that  you have  read the  license and understand  and
-accept it fully.
-
-
---- end of INSTALL.VMS ---
+How to build the freetype2 library on VMS
+-----------------------------------------
+
+It is actually very  straightforward to install the Freetype2 library.
+Just  execute vms_make.com from  the toplevel  directory to  build the
+library.  This procedure currently accepts the following options:
+
+DEBUG
+  Build the library with debug information and without optimization.
+
+lopts=<value>
+  Options to pass to the link command e.g. lopts=/traceback
+
+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.
+
+
+To rebuild  the  sources it is necessary to  have MMS/MMK installed on
+the system.
+
+The library is available in the directory
+
+  [.LIB]
+
+To  compile applications  using  FreeType  2 you  have  to define  the
+logical FREETYPE pointing to the directory
+
+  [.INCLUDE.FREETYPE]
+
+i.e., if  the directory in which  this INSTALL.VMS file  is located is
+$disk:[freetype] then define the logical with
+
+  define freetype $disk:[freetype.include.freetype]
+
+This version has  been tested with Compaq C  V6.2-006 on OpenVMS Alpha
+V7.2-1.
+
+
+  Any problems can be reported to
+
+    Jouk Jansen <[email protected]> or
+    Martin P.J. Zinser <[email protected]>
+
+------------------------------------------------------------------------
+
+Copyright 2000, 2004 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file  is  part  of the  FreeType  project, and may  only be  used,
+modified,  and  distributed  under  the  terms of  the FreeType  project
+license, LICENSE.TXT.   By continuing to use, modify, or distribute this
+file you  indicate that  you have  read the  license and understand  and
+accept it fully.
+
+
+--- end of INSTALL.VMS ---

+ 37 - 31
Source/ThirdParty/FreeType/docs/LICENSE.TXT

@@ -1,31 +1,37 @@
-
-The  FreeType 2  font  engine is  copyrighted  work and  cannot be  used
-legally  without a  software license.   In  order to  make this  project
-usable  to a vast  majority of  developers, we  distribute it  under two
-mutually exclusive open-source licenses.
-
-This means  that *you* must choose  *one* of the  two licenses described
-below, then obey  all its terms and conditions when  using FreeType 2 in
-any of your projects or products.
-
-  - The FreeType License, found in  the file `FTL.TXT', which is similar
-    to the original BSD license *with* an advertising clause that forces
-    you  to  explicitly cite  the  FreeType  project  in your  product's
-    documentation.  All  details are in the license  file.  This license
-    is  suited  to products  which  don't  use  the GNU  General  Public
-    License.
-
-  - The GNU  General Public License  version 2, found in  `GPL.TXT' (any
-    later version can be used  also), for programs which already use the
-    GPL.  Note  that the  FTL is  incompatible with the  GPL due  to its
-    advertisement clause.
-
-The contributed BDF and PCF drivers come with a license similar  to that
-of the X Window System.  It is compatible to the above two licenses (see
-file src/bdf/README and src/pcf/README).
-
-The gzip module uses the zlib license (see src/gzip/zlib.h) which too is
-compatible to the above two licenses.
-
-
---- end of LICENSE.TXT ---
+
+The  FreeType 2  font  engine is  copyrighted  work and  cannot be  used
+legally  without a  software license.   In  order to  make this  project
+usable  to a vast  majority of  developers, we  distribute it  under two
+mutually exclusive open-source licenses.
+
+This means  that *you* must choose  *one* of the  two licenses described
+below, then obey  all its terms and conditions when  using FreeType 2 in
+any of your projects or products.
+
+  - The FreeType License, found in  the file `FTL.TXT', which is similar
+    to the original BSD license *with* an advertising clause that forces
+    you  to  explicitly cite  the  FreeType  project  in your  product's
+    documentation.  All  details are in the license  file.  This license
+    is  suited  to products  which  don't  use  the GNU  General  Public
+    License.
+
+    Note that  this license  is  compatible  to the  GNU General  Public
+    License version 3, but not version 2.
+
+  - The GNU General Public License version 2, found in  `GPLv2.TXT' (any
+    later version can be used  also), for programs which already use the
+    GPL.  Note  that the  FTL is  incompatible  with  GPLv2 due  to  its
+    advertisement clause.
+
+The contributed BDF and PCF drivers come with a license similar  to that
+of the X Window System.  It is compatible to the above two licenses (see
+file src/bdf/README and src/pcf/README).
+
+The gzip module uses the zlib license (see src/gzip/zlib.h) which too is
+compatible to the above two licenses.
+
+The MD5 checksum support (only used for debugging in development builds)
+is in the public domain.
+
+
+--- end of LICENSE.TXT ---

+ 5 - 5
Source/ThirdParty/FreeType/docs/MAKEPP

@@ -1,5 +1,5 @@
-As a special  exception, FreeType can also be  built with the 'makepp'
-build tool, available from http://makepp.sourceforge.net.
-
-Note, however. that  you will need at least version  1.19 and pass the
-option --norc-substitution to have it work correctly.
+As a special  exception, FreeType can also be  built with the 'makepp'
+build tool, available from http://makepp.sourceforge.net.
+
+Note, however. that  you will need at least version  1.19 and pass the
+option --norc-substitution to have it work correctly.

+ 0 - 27
Source/ThirdParty/FreeType/docs/PATENTS

@@ -1,27 +0,0 @@
-
-                    FreeType Patents Disclaimer
-                            August 1999
-
-
-
-WE HAVE  DISCOVERED THAT APPLE  OWNS SEVERAL PATENTS RELATED  TO THE
-RENDERING OF TRUETYPE  FONTS.  THIS COULD MEAN THAT  THE FREE USE OF
-FREETYPE  MIGHT BE  ILLEGAL IN  THE USA,  JAPAN, AND  POSSIBLY OTHER
-COUNTRIES, BE IT IN PROPRIETARY OR FREE SOFTWARE PRODUCTS.
-
-FOR  MORE DETAILS,  WE STRONGLY  ADVISE YOU  TO GO  TO  THE FREETYPE
-PATENTS PAGE AT THE FOLLOWING WEB ADDRESS:
-
-                http://www.freetype.org/patents.html
-
-WE WILL NOT PLACE INFORMATION IN THIS FILE AS THE SITUATION IS STILL
-UNDETERMINED FOR NOW.  AT THE  TIME THESE LINES ARE WRITTEN, WE HAVE
-CONTACTED APPLE'S  LEGAL DEPARTMENT AND ARE STILL  WAITING FOR THEIR
-ANSWER ON THE SUBJECT.
-
-PLEASE READ  THE `INSTALL' FILE TO  SEE HOW TO  DISABLE THE ENGINE'S
-BYTECODE INTERPRETER IN ORDER TO  BUILD A PATENT-FREE ENGINE, AT THE
-COST OF RENDERING QUALITY.
-
-
---- end of PATENTS ---

+ 90 - 77
Source/ThirdParty/FreeType/docs/PROBLEMS

@@ -1,77 +1,90 @@
-This  file describes various  problems that  have been  encountered in
-compiling,  installing  and   running  FreeType  2.   Suggestions  for
-additions or other improvements to this file are welcome.
-
-----------------------------------------------------------------------
-
-Running Problems
-================
-
-
-* Some Type 1, Multiple Masters, and CID-keyed PostScript fonts aren't
-  handled correctly.
-
------
-
-Of course,  there might be  bugs in FreeType,  but some fonts based on
-the  PostScript  format can't  behandled indeed.  The  reason  is that
-FreeType  doesn't contain a full  PostScript  interpreter  but applies
-pattern matching instead.  In case a font doesn't follow the  standard
-structure of the given font format, FreeType fails.  A typical example
-is Adobe's `Optima'  font family which  contains extra code  to switch
-between low and high resolution versions of the glyphs.
-
-It might be  possible to patch  FreeType in  some situations,  though.
-Please report failing fonts so that we investigate the problem and set
-up a list of such problematic fonts.
-
-----------------------------------------------------------------------
-
-
-Compilation Problems
-====================
-
-
-* I get an `internal compilation error' (ICE) while compiling FreeType
-  2.2.1 with Intel C++.
-
-  This has been reported for the following compiler version:
-
-    Intel(R) C++ Compiler for 32-bit applications,
-      Version 9.0 Build 20050430Z Package ID: W_CC_P_9.0.019
-
------
-
-The best solution is to update the compiler to version
-
-  Intel(R) C++ Compiler for 32-bit applications,
-    Version 9.1 Build 20060323Z Package ID: W_CC_P_9.1.022
-
-or newer.  If this isn't feasible, apply the following patch.
-
-
---- src/cache/ftcbasic.c 20 Mar 2006 12:10:24 -0000 1.20
-+++ src/cache/ftcbasic.c.patched 15 May 2006 02:51:02 -0000
-@@ -252,7 +252,7 @@
-   */
-
-   FT_CALLBACK_TABLE_DEF
--  const FTC_IFamilyClassRec  ftc_basic_image_family_class =
-+  FTC_IFamilyClassRec  ftc_basic_image_family_class =
-   {
-     {
-       sizeof ( FTC_BasicFamilyRec ),
-@@ -266,7 +266,7 @@
-
-
-   FT_CALLBACK_TABLE_DEF
--  const FTC_GCacheClassRec  ftc_basic_image_cache_class =
-+  FTC_GCacheClassRec  ftc_basic_image_cache_class =
-   {
-     {
-       ftc_inode_new,
-
-
-----------------------------------------------------------------------
-
---- end of PROBLEMS ---
+This  file describes various  problems that  have been  encountered in
+compiling,  installing  and   running  FreeType  2.   Suggestions  for
+additions or other improvements to this file are welcome.
+
+----------------------------------------------------------------------
+
+Running Problems
+================
+
+
+* Some Type 1, Multiple Masters, and CID-keyed PostScript fonts aren't
+  handled correctly.
+
+-----
+
+Of course,  there might be  bugs in FreeType,  but some fonts based on
+the  PostScript  format can't  be handled indeed.  The reason  is that
+FreeType  doesn't contain a full  PostScript  interpreter  but applies
+pattern matching instead.  In case a font doesn't follow the  standard
+structure of the given font format, FreeType fails.  A typical example
+is Adobe's `Optima'  font family which  contains extra code  to switch
+between low and high resolution versions of the glyphs.
+
+It might be  possible to patch  FreeType in  some situations,  though.
+Please report failing fonts so that we investigate the problem and set
+up a list of such problematic fonts.
+
+
+* Why do identical FreeType  versions render differently  on different
+  platforms?
+
+-----
+
+Different distributions compile FreeType with different options.   The
+developer  version of  a  distribution's  FreeType  package,  which is
+needed to compile  your program  against FreeType,  includes the  file
+ftoption.h.  Compare  each platform's  copy of ftoption.h to  find the
+differences.
+
+
+----------------------------------------------------------------------
+
+
+Compilation Problems
+====================
+
+
+* I get an `internal compilation error' (ICE) while compiling FreeType
+  2.2.1 with Intel C++.
+
+  This has been reported for the following compiler version:
+
+    Intel(R) C++ Compiler for 32-bit applications,
+      Version 9.0 Build 20050430Z Package ID: W_CC_P_9.0.019
+
+-----
+
+The best solution is to update the compiler to version
+
+  Intel(R) C++ Compiler for 32-bit applications,
+    Version 9.1 Build 20060323Z Package ID: W_CC_P_9.1.022
+
+or newer.  If this isn't feasible, apply the following patch.
+
+
+--- src/cache/ftcbasic.c 20 Mar 2006 12:10:24 -0000 1.20
++++ src/cache/ftcbasic.c.patched 15 May 2006 02:51:02 -0000
+@@ -252,7 +252,7 @@
+   */
+
+   FT_CALLBACK_TABLE_DEF
+-  const FTC_IFamilyClassRec  ftc_basic_image_family_class =
++  FTC_IFamilyClassRec  ftc_basic_image_family_class =
+   {
+     {
+       sizeof ( FTC_BasicFamilyRec ),
+@@ -266,7 +266,7 @@
+
+
+   FT_CALLBACK_TABLE_DEF
+-  const FTC_GCacheClassRec  ftc_basic_image_cache_class =
++  FTC_GCacheClassRec  ftc_basic_image_cache_class =
+   {
+     {
+       ftc_inode_new,
+
+
+----------------------------------------------------------------------
+
+--- end of PROBLEMS ---

+ 40 - 40
Source/ThirdParty/FreeType/docs/TODO

@@ -1,40 +1,40 @@
-Here is a list of items that need to be addressed in FreeType 2
----------------------------------------------------------------
-
-* Implement stem3/counter hints properly in the Postscript hinter.
-
-* Add CIDCMap support to the CID driver.
-
-* Add track kerning support to the PFR driver.
-
-* Add kerning (AFM file) support to the CID driver.
-
-
-Here is a list of bugs which should be handled
-----------------------------------------------
-
-Other bugs have been registered at the savannah bugzilla of FreeType.
-
-* CID driver:
-    Handle the case where a CID font has a top-level font matrix also
-    (see PLRM, 5.11.3, Type 0 CIDFonts).  Since CID_FaceInfoRec lacks
-    a font_matrix entry we have to directly apply it to all subfont
-    matrices.
-
-* CID driver:
-    Use top-level font matrix entry for setting the upem value, not the
-    entries in the FDarray.  If absent, use 1000.
-
-------------------------------------------------------------------------
-
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file  is  part  of the  FreeType  project, and may  only be  used,
-modified,  and  distributed  under  the  terms of  the FreeType  project
-license, LICENSE.TXT.   By continuing to use, modify, or distribute this
-file you  indicate that  you have  read the  license and understand  and
-accept it fully.
-
-
---- end of TODO ---
+Here is a list of items that need to be addressed in FreeType 2
+---------------------------------------------------------------
+
+* Implement stem3/counter hints properly in the Postscript hinter.
+
+* Add CIDCMap support to the CID driver.
+
+* Add track kerning support to the PFR driver.
+
+* Add kerning (AFM file) support to the CID driver.
+
+
+Here is a list of bugs which should be handled
+----------------------------------------------
+
+Other bugs have been registered at the savannah bugzilla of FreeType.
+
+* CID driver:
+    Handle the case where a CID font has a top-level font matrix also
+    (see PLRM, 5.11.3, Type 0 CIDFonts).  Since CID_FaceInfoRec lacks
+    a font_matrix entry we have to directly apply it to all subfont
+    matrices.
+
+* CID driver:
+    Use top-level font matrix entry for setting the upem value, not the
+    entries in the FDarray.  If absent, use 1000.
+
+------------------------------------------------------------------------
+
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file  is  part  of the  FreeType  project, and may  only be  used,
+modified,  and  distributed  under  the  terms of  the FreeType  project
+license, LICENSE.TXT.   By continuing to use, modify, or distribute this
+file you  indicate that  you have  read the  license and understand  and
+accept it fully.
+
+
+--- end of TODO ---

+ 0 - 40
Source/ThirdParty/FreeType/docs/TRUETYPE

@@ -1,40 +0,0 @@
-How to enable the TrueType native hinter if you need it
--------------------------------------------------------
-
-  The TrueType  bytecode interpreter is disabled in  all public releases
-  of the FreeType packages for patents reasons; see
-
-    http://www.freetype.org/patents.html
-
-  for more details.
-
-  However,  many Linux distributions  do enable  the interpreter  in the
-  FreeType packages (DEB/RPM/etc.) they produce for their platforms.  If
-  you are using TrueType fonts on your system, you most probably want to
-  enable it manually by doing the following:
-
-    - open the file `include/freetype/config/ftoption.h'
-
-    - locate a line that says:
-
-        /* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
-
-    - change it to:
-
-        #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
-
-  These steps must be done _before_ compiling the library.
-
-------------------------------------------------------------------------
-
-Copyright 2003, 2005, 2006 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part  of the  FreeType  project, and  may  only be  used,
-modified,  and  distributed under  the  terms  of  the FreeType  project
-license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
-file  you indicate that  you have  read the  license and  understand and
-accept it fully.
-
-
---- end of TRUETYPE ---

+ 0 - 137
Source/ThirdParty/FreeType/docs/UPGRADE.UNIX

@@ -1,137 +0,0 @@
-
-SPECIAL NOTE FOR UNIX USERS
-===========================
-
-  If  you are  installing  this release  of  FreeType on  a system  that
-  already uses  release 2.0.5  (or even an  older version), you  have to
-  perform a few special steps to ensure that everything goes well.
-
-
-  1. Enable the TrueType bytecode hinter if you need it
-  -----------------------------------------------------
-
-    See the instructions in the file `TRUETYPE' of this directory.
-
-    Note  that FreeType  supports  TrueType fonts  without the  bytecode
-    interpreter through its  auto-hinter, which now generates relatively
-    good results with most fonts.
-
-
-  2. Determine the correct installation path
-  ------------------------------------------
-
-    By   default,  the   configure  script   installs  the   library  in
-    `/usr/local'.   However,  many Unix  distributions  now install  the
-    library  in `/usr',  since FreeType  is becoming  a  critical system
-    component.
-
-    If FreeType is already installed on your system, type
-
-      freetype-config --prefix
-
-    on  the command  line.   This should  return  the installation  path
-    (e.g.,  `/usr'  or `/usr/local').   To  avoid  problems of  parallel
-    FreeType  versions, use  this path  for the  --prefix option  of the
-    configure script.
-
-    Otherwise, simply use `/usr' (or  whatever you think is adequate for
-    your installation).
-
-
-  3. Ensure that you are using GNU Make
-  -------------------------------------
-
-    The FreeType build  system _exclusively_ works with GNU  Make (as an
-    exception you  can use make++ which emulates  GNU Make sufficiently;
-    see http://makepp.sourceforge.net).  You will not be able to compile
-    the library with the  instructions below using any other alternative
-    (including BSD Make).
-
-    Trying to  compile the library with  a different Make  tool prints a
-    message like:
-
-      Sorry, GNU make is required to build FreeType2.
-
-    and the build process is aborted.  If this happens, install GNU Make
-    on your system, and use the GNUMAKE environment variable to name it.
-
-
-  4. Build and install the library
-  --------------------------------
-
-    The  following should  work on  all  Unix systems  where the  `make'
-    command invokes GNU Make:
-
-      ./configure --prefix=<yourprefix>
-      make
-      make install           (as root)
-
-    where `<yourprefix>' must be replaced  by the prefix returned by the
-    `freetype-config' command.
-
-    When using a  different command to invoke GNU  Make, use the GNUMAKE
-    variable.  For  example, if  `gmake' is the  command to use  on your
-    system, do something like:
-
-      GNUMAKE=gmake ./configure --prefix=<yourprefix>
-      gmake
-      gmake install            (as root)
-
-
-  5. Take care of XFree86 version 4
-  ---------------------------------
-
-    Certain Linux  distributions install _several_  versions of FreeType
-    on your  system.  For example, on  a fresh Mandrake  8.1 system, you
-    can find the following files:
-
-      /usr/lib/libfreetype.so             which links to
-      /usr/lib/libfreetype.6.1.0.so
-
-    and
-
-      /usr/X11R6/lib/libfreetype.so       which links to
-      /usr/X11R6/lib/libfreetype.6.0.so
-
-    Note that  these files  correspond to two  distinct versions  of the
-    library!  It seems that this  surprising issue is due to the install
-    scripts of  recent XFree86 servers (from 4.1.0)  which install their
-    own (dated) version of the library in `/usr/X11R6/lib'.
-
-    In certain  _rare_ cases  you may experience  minor problems  if you
-    install this  release of  the library in  `/usr' only,  namely, that
-    certain applications do not benefit from the bug fixes and rendering
-    improvements you would expect.
-
-    There are two good ways to deal with this situation:
-
-      - Install the library _twice_,  in `/usr' and in `/usr/X11R6' (you
-        have to  do that  each time you  install a new  FreeType release
-        though).
-
-      - Change the link in /usr/X11R6/lib/libfreetype.so to point to
-
-          /usr/lib/libfreetype.so,
-
-        and get rid of
-
-          /usr/X11R6/lib/libfreetype.6.0.so
-
-    The FreeType  Team is  not responsible for  this problem,  so please
-    contact  either   the  XFree86   development  team  or   your  Linux
-    distributor to help  clear this issue in case  the information given
-    here doesn't help.
-
-------------------------------------------------------------------------
-
-Copyright 2003, 2005 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part  of the  FreeType  project, and  may  only be  used,
-modified,  and  distributed under  the  terms  of  the FreeType  project
-license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
-file  you indicate that  you have  read the  license and  understand and
-accept it fully.
-
-
----- end of UPGRADE.UNIX ---

+ 123 - 0
Source/ThirdParty/FreeType/docs/VERSION.DLL

@@ -0,0 +1,123 @@
+Due  to our  use of  `libtool' to  generate and  install the  FreeType 2
+libraries on  Unix systems, as  well as  other historical events,  it is
+generally very  difficult to  know precisely which  release of  the font
+engine is installed on a given system.
+
+This file tries  to explain why and to document  ways to properly detect
+FreeType on Unix.
+
+
+1. Version and Release numbers
+------------------------------
+
+For each new  public release of FreeType 2, there  are generally *three*
+distinct `version' numbers to consider:
+
+  * The official FreeType 2 release number, like 2.3.1 or 2.4.10.
+
+  * The libtool (and  Unix) specific version number,  like 13.0.7.  This
+    is what `freetype-config --version' returns.
+
+  * The platform-specific  shared object  number, used for  example when
+    the library is installed as `/usr/lib/libfreetype.so.6.7.1'.
+
+The platform-specific  number is, unsurprisingly,  platform-specific and
+varies  with the  operating system  you are  using (several  variants of
+Linux, FreeBSD,  Solaris, etc.).  You  should thus _never_ use  it, even
+for simple tests.
+
+The libtool-specific  number does  not equal the  release number  but is
+tied to it.
+
+The release number is available  at *compile* time through the following
+macros defined in FT_FREETYPE_H:
+
+  - FREETYPE_MAJOR: major release number
+  - FREETYPE_MINOR: minor release number
+  - FREETYPE_PATCH: patch release number
+
+See below for a small autoconf fragment.
+
+The  release  number   is  also  available  at   *runtime*  through  the
+`FT_Library_Version' API.
+
+
+2. History
+----------
+
+The  following   table  gives,  for   all  releases  since   2.3.0,  the
+corresponding libtool number, as well  as the shared object number found
+on _most_ systems, but not all of them:
+
+
+    release     libtool     so
+  -------------------------------
+     2.5.0      16.2.10   6.10.2
+     2.4.12     16.1.10   6.10.1
+     2.4.11     16.0.10   6.10.0
+     2.4.10     15.0.9    6.9.0
+     2.4.9      14.1.8    6.8.1
+     2.4.8      14.0.8    6.8.0
+     2.4.7      13.2.7    6.7.2
+     2.4.6      13.1.7    6.7.1
+     2.4.5      13.0.7    6.7.0
+     2.4.4      12.2.6    6.6.2
+     2.4.3      12.1.6    6.6.1
+     2.4.2      12.0.6    6.6.0
+     2.4.1      11.1.5    6.5.1
+     2.4.0      11.0.5    6.5.0
+     2.3.12     10.0.4    6.4.0
+     2.3.11     9.22.3    6.3.22
+     2.3.10     9.21.3    6.3.21
+     2.3.9      9.20.3    6.3.20
+     2.3.8      9.19.3    6.3.19
+     2.3.7      9.18.3    6.3.18
+     2.3.6      9.17.3    6.3.17
+     2.3.5      9.16.3    6.3.16
+     2.3.4      9.15.3    6.3.15
+     2.3.3      9.14.3    6.3.14
+     2.3.2      9.13.3    6.3.13
+     2.3.1      9.12.3    6.3.12
+     2.3.0      9.11.3    6.3.11
+
+
+3. Autoconf Code Fragment
+-------------------------
+
+Lars Clausen contributed the following autoconf fragment to detect which
+version of  FreeType is  installed on  a system.  This  one tests  for a
+version that  is at least 2.0.9;  you should change it  to check against
+other release numbers.
+
+
+  AC_MSG_CHECKING([whether FreeType version is 2.0.9 or higher])
+  old_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS=`freetype-config --cflags`
+  AC_TRY_CPP([
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#if (FREETYPE_MAJOR*1000 + FREETYPE_MINOR)*1000 + FREETYPE_PATCH < 2000009
+#error Freetype version too low.
+#endif
+  ],
+  [AC_MSG_RESULT(yes)
+   FREETYPE_LIBS=`freetype-config --libs`
+   AC_SUBST(FREETYPE_LIBS)
+   AC_DEFINE(HAVE_FREETYPE,1,[Define if you have the FreeType2 library])
+   CPPFLAGS="$old_CPPFLAGS"],
+  [AC_MSG_ERROR([Need FreeType library version 2.0.9 or higher])])
+
+------------------------------------------------------------------------
+
+Copyright 2002-2013 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part  of the  FreeType  project, and  may  only be  used,
+modified,  and  distributed under  the  terms  of  the FreeType  project
+license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
+file  you indicate that  you have  read the  license and  understand and
+accept it fully.
+
+
+--- end of VERSION.DLL ---

+ 174 - 164
Source/ThirdParty/FreeType/docs/formats.txt

@@ -1,164 +1,174 @@
-This  file  contains a  list  of various  font  formats.   It gives  the
-reference document and whether it is supported in FreeType 2.
-
-
-  file type:
-    The only special  case is `MAC'; on older Mac  OS versions, a `file'
-    is  stored as  a  data and  a  resource fork,  this  is, within  two
-    separate data chunks.   In all other cases, the  font data is stored
-    in a single file.
-
-  wrapper format:
-    The format used  to represent the font data.  In  the table below it
-    is used only if the font format differs.  Possible values are `SFNT'
-    (binary), `PS' (a text header, followed by binary or text data), and
-    `LZW' (compressed with either `gzip' or `compress').
-
-  font format:
-    How the font  is to be accessed, possibly  after converting the file
-    type and  wrapper format  into a generic  form.  Bitmap  formats are
-    `BDF',  `PCF', and  one  form  of `WINFNT';  all  others are  vector
-    formats.
-
-  font type:
-    Sub-formats  of the font  format.  `SBIT'  and `MACSBIT'  are bitmap
-    formats, `MM' and `VAR' support optical axes.
-
-  glyph access:
-    If not specified, the glyph access is `standard' to the font format.
-    Values are  `CID' for CID-keyed  fonts, `SYNTHETIC' for  fonts which
-    are modified  versions of other  fonts by means of  a transformation
-    matrix, `COLLECTION' for collecting  multiple fonts (sharing most of
-    the data) into a single file, and `TYPE_0' for PS fonts which are to
-    be accessed in a tree-like structure.
-
-  FreeType driver:
-    The module in  the FreeType library which handles  the specific font
-    format.   A missing entry  means that  FreeType doesn't  support the
-    font format (yet).
-
-
-Please  send  additions  and/or  corrections  to [email protected]  or  to  the
-FreeType developer's list  at [email protected] (for subscribers
-only).   If you  can provide  a font  example for  a format  which isn't
-supported yet please send a mail too.
-
-
-file wrapper font   font    glyph      FreeType reference
-type format  format type    access     driver   documents
-----------------------------------------------------------------------------
-
----  ---     BDF    ---     ---        bdf      5005.BDF_Spec.pdf, X11
-
-
----  SFNT    PS     TYPE_1  ---        type1    Type 1 GX Font Format
-                                                (for the Mac) [3]
-MAC  SFNT    PS     TYPE_1  ---        type1    Type 1 GX Font Format
-                                                (for the Mac) [3]
----  SFNT    PS     TYPE_1  CID        cid      5180.sfnt.pdf (for the Mac)
-                                                [3]
-MAC  SFNT    PS     TYPE_1  CID        cid      5180.sfnt.pdf (for the Mac)
-                                                [3]
----  SFNT    PS     CFF     ---        cff      OT spec, 5176.CFF.pdf
-                                                (`OTTO' format)
-MAC  SFNT    PS     CFF     ---        cff      OT spec, 5176.CFF.pdf
-                                                (`OTTO' format)
----  SFNT    PS     CFF     CID        cff      OT spec, 5176.CFF.pdf
-MAC  SFNT    PS     CFF     CID        cff      OT spec, 5176.CFF.pdf
----  SFNT    PS     CFF     SYNTHETIC  ---      OT spec, 5176.CFF.pdf
-MAC  SFNT    PS     CFF     SYNTHETIC  ---      OT spec, 5176.CFF.pdf
----  SFNT    TT     SBIT    ---        sfnt     XFree86 (bitmaps only;
-                                                with `head' table)
----  SFNT    TT     MACSBIT ---        sfnt     OT spec (for the Mac;
-                                                bitmaps only; `bhed' table)
-MAC  SFNT    TT     MACSBIT ---        sfnt     OT spec (for the Mac;
-                                                bitmaps only; `bhed' table)
----  SFNT    TT     ---     ---        truetype OT spec (`normal' TT font)
-MAC  SFNT    TT     ---     ---        truetype OT spec (`normal' TT font)
-MAC  SFNT    TT     VAR     ---        truetype GX spec (`?var' tables)
----  SFNT    TT     ---     COLLECTION truetype OT spec (this can't be CFF)
-MAC  SFNT    TT     ---     COLLECTION truetype OT spec (this can't be CFF)
-
-
----  ---     PS     TYPE_1  ---        type1    T1_SPEC.pdf
-                                                (`normal' Type 1 font)
-MAC  ---     PS     TYPE_1  ---        type1    T1_SPEC.pdf
-                                                (`normal' Type 1 font)
----  ---     PS     TYPE_1  CID        cid      PLRM.pdf (CID Font Type 0;
-                                                Type 9 font)
----  ---     PS     MM      ---        type1    5015.Type1_Supp.pdf
-                                                (Multiple Masters)
----  ---     PS     CFF     ---        cff      5176.CFF.pdf (`pure' CFF)
----  ---     PS     CFF     CID        cff      5176.CFF.pdf (`pure' CFF)
----  ---     PS     CFF     SYNTHETIC  ---      5176.CFF.pdf (`pure' CFF)
----  PS      PS     CFF     ---        ---      PLRM.pdf (Type 2) [1]
----  PS      PS     CFF     CID        ---      PLRM.pdf (Type 2) [1]
----  PS      PS     CFF     SYNTHETIC  ---      PLRM.pdf (Type 2) [1]
----  ---     PS     ---     TYPE_0     ---      PLRM.pdf
----  ---     PS     TYPE_3  ---        ---      PLRM.pdf (never supported)
----  ---     PS     TYPE_3  CID        ---      PLRM.pdf (CID Font Type 1;
-                                                Type 10 font; never supported)
----  PS      PS     TYPE_14 ---        ---      PLRM.pdf (Chameleon font;
-                                                Type 14 font; never supported?)
----  ---     PS     TYPE_32 CID        ---      PLRM.pdf (CID Font Type 4;
-                                                Type 32 font; never supported?)
----  PS      TT     ---     ---        type42   5012.Type42_Spec.pdf
-                                                (Type 42 font)
----  PS      TT     ---     CID        ---      PLRM.pdf (CID Font Type 2;
-                                                Type 11 font)
-
-
----  ?       ?      CEF     ?          cff      ?
-
-
----  ---     PCF    ---     ---        pcf      X11, [4]
----  LZW     PCF    ---     ---        pcf      X11, [4]
-
-
----  ---     PFR    PFR0    ---        pfr      [2]
----  ---     PFR    PFR1    ---        ---      (undocumented, proprietary;
-                                                probably never supported)
-
-
----  ---     WINFNT ---     ---        winfonts MS Windows 3 Developer's Notes
----  ---     WINFNT VECTOR  ---        ---      MS Windows 3 Developer's Notes
-
-
-[1] Support should be rather simple since this is identical to `CFF' but
-    in a PS wrapper.
-
-[2] Official PFR specification:
-
-      http://www.bitstream.com/categories/developer/truedoc/pfrspec.html
-      http://www.bitstream.com/categories/developer/truedoc/pfrspec1.2.pdf
-
-    The  syntax of  the  auxiliary data  is  not defined  there, but  is
-    partially defined in  MHP 1.0.3 (also called ETSI  TS 101812 V1.3.1)
-    section 7.4.
-
-      http://www.etsi.org/
-      http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=18799
-
-    (free registration required).
-
-[3] Support is rudimentary currently; some tables are not loaded yet.
-
-[4] There is no formal PCF specification; you have to deduce the exact
-    format from the source code within X11.  George Williams did this for
-    his FontForge editor:
-
-      http://fontforge.sourceforge.net/pcf-format.html
-
-------------------------------------------------------------------------
-
-Copyright 2004, 2005, 2008, 2009 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part  of the  FreeType  project, and  may  only be  used,
-modified,  and  distributed under  the  terms  of  the FreeType  project
-license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
-file  you indicate that  you have  read the  license and  understand and
-accept it fully.
-
-
---- end of formats.txt ---
+This  file  contains a  list  of various  font  formats.   It gives  the
+reference document and whether it is supported in FreeType 2.
+
+
+  file type:
+    The only special  case is `MAC'; on older Mac  OS versions, a `file'
+    is  stored as  a  data and  a  resource fork,  this  is, within  two
+    separate data chunks.   In all other cases, the  font data is stored
+    in a single file.
+
+  wrapper format:
+    The format used  to represent the font data.  In  the table below it
+    is used only if the font format differs.  Possible values are `SFNT'
+    (binary), `PS' (a text header, followed by binary or text data),
+    `LZW' (compressed with either `gzip' or `compress'), and
+    `BZ2' (compressed with `bzip2`).
+
+  font format:
+    How the font  is to be accessed, possibly  after converting the file
+    type and  wrapper format  into a generic  form.  Bitmap  formats are
+    `BDF',  `PCF', and  one  form  of `WINFNT';  all  others are  vector
+    formats.
+
+  font type:
+    Sub-formats  of the font  format.  `SBIT'  and `MACSBIT'  are bitmap
+    formats, `MM' and `VAR' support optical axes.
+
+  glyph access:
+    If not specified, the glyph access is `standard' to the font format.
+    Values are  `CID' for CID-keyed  fonts, `SYNTHETIC' for  fonts which
+    are modified  versions of other  fonts by means of  a transformation
+    matrix, `COLLECTION' for collecting  multiple fonts (sharing most of
+    the data) into a single file, and `TYPE_0' for PS fonts which are to
+    be accessed in a tree-like structure.
+
+  FreeType driver:
+    The module in  the FreeType library which handles  the specific font
+    format.   A missing entry  means that  FreeType doesn't  support the
+    font format (yet).
+
+
+Please  send  additions  and/or  corrections  to [email protected]  or  to  the
+FreeType developer's list  at [email protected] (for subscribers
+only).   If you  can provide  a font  example for  a format  which isn't
+supported yet please send a mail too.
+
+
+file wrapper font   font    glyph      FreeType reference
+type format  format type    access     driver   documents
+----------------------------------------------------------------------------
+
+---  ---     BDF    ---     ---        bdf      5005.BDF_Spec.pdf, X11
+
+
+---  SFNT    PS     TYPE_1  ---        type1    Type 1 GX Font Format
+                                                (for the Mac) [3]
+MAC  SFNT    PS     TYPE_1  ---        type1    Type 1 GX Font Format
+                                                (for the Mac) [3]
+---  SFNT    PS     TYPE_1  CID        cid      5180.sfnt.pdf (for the Mac)
+                                                [3]
+MAC  SFNT    PS     TYPE_1  CID        cid      5180.sfnt.pdf (for the Mac)
+                                                [3]
+---  SFNT    PS     CFF     ---        cff      OT spec, 5176.CFF.pdf
+                                                (`OTTO' format)
+MAC  SFNT    PS     CFF     ---        cff      OT spec, 5176.CFF.pdf
+                                                (`OTTO' format)
+---  SFNT    PS     CFF     CID        cff      OT spec, 5176.CFF.pdf
+MAC  SFNT    PS     CFF     CID        cff      OT spec, 5176.CFF.pdf
+---  SFNT    PS     CFF     SYNTHETIC  ---      OT spec, 5176.CFF.pdf
+MAC  SFNT    PS     CFF     SYNTHETIC  ---      OT spec, 5176.CFF.pdf
+---  SFNT    TT     SBIT    ---        sfnt     XFree86 (bitmaps only;
+                                                with `head' table)
+---  SFNT    TT     MACSBIT ---        sfnt     OT spec (for the Mac;
+                                                bitmaps only; `bhed' table)
+MAC  SFNT    TT     MACSBIT ---        sfnt     OT spec (for the Mac;
+                                                bitmaps only; `bhed' table)
+---  SFNT    TT     ---     ---        truetype OT spec (`normal' TT font)
+MAC  SFNT    TT     ---     ---        truetype OT spec (`normal' TT font)
+MAC  SFNT    TT     VAR     ---        truetype GX spec (`?var' tables)
+---  SFNT    TT     ---     COLLECTION truetype OT spec (this can't be CFF)
+MAC  SFNT    TT     ---     COLLECTION truetype OT spec (this can't be CFF)
+
+
+---  ---     PS     TYPE_1  ---        type1    T1_SPEC.pdf
+                                                (`normal' Type 1 font)
+MAC  ---     PS     TYPE_1  ---        type1    T1_SPEC.pdf
+                                                (`normal' Type 1 font)
+---  ---     PS     TYPE_1  CID        cid      PLRM.pdf (CID Font Type 0;
+                                                Type 9 font)
+---  ---     PS     MM      ---        type1    5015.Type1_Supp.pdf
+                                                (Multiple Masters)
+---  ---     PS     CFF     ---        cff      5176.CFF.pdf (`pure' CFF)
+---  ---     PS     CFF     CID        cff      5176.CFF.pdf (`pure' CFF)
+---  ---     PS     CFF     SYNTHETIC  ---      5176.CFF.pdf (`pure' CFF)
+---  PS      PS     CFF     ---        ---      PLRM.pdf (Type 2) [1]
+---  PS      PS     CFF     CID        ---      PLRM.pdf (Type 2) [1]
+---  PS      PS     CFF     SYNTHETIC  ---      PLRM.pdf (Type 2) [1]
+---  ---     PS     ---     TYPE_0     ---      PLRM.pdf
+---  ---     PS     TYPE_3  ---        ---      PLRM.pdf (never supported)
+---  ---     PS     TYPE_3  CID        ---      PLRM.pdf (CID Font Type 1;
+                                                Type 10 font; never supported)
+---  PS      PS     TYPE_14 ---        ---      PLRM.pdf (Chameleon font;
+                                                Type 14 font; never supported?)
+---  ---     PS     TYPE_32 CID        ---      PLRM.pdf (CID Font Type 4;
+                                                Type 32 font; never supported?)
+---  PS      TT     ---     ---        type42   5012.Type42_Spec.pdf
+                                                (Type 42 font)
+---  PS      TT     ---     CID        ---      PLRM.pdf (CID Font Type 2;
+                                                Type 11 font)
+
+
+---  ?       ?      CEF     ?          cff      ?
+
+
+---  ---     PCF    ---     ---        pcf      X11 [4]
+---  LZW     PCF    ---     ---        pcf      X11 [4]
+---  BZ2     PCF    ---     ---        pcf      X11 [4]
+
+
+---  ---     PFR    PFR0    ---        pfr      [2]
+---  ---     PFR    PFR1    ---        ---      (undocumented, proprietary;
+                                                probably never supported)
+
+
+---  ---     WINFNT ---     ---        winfonts MS Windows 3 Developer's Notes
+---  ---     WINFNT VECTOR  ---        ---      MS Windows 3 Developer's Notes
+
+
+[1] Support should be rather simple since this is identical to `CFF' but
+    in a PS wrapper.
+
+[2] Official PFR specification:
+
+      http://www.bitstream.com/categories/developer/truedoc/pfrspec.html
+      http://www.bitstream.com/categories/developer/truedoc/pfrspec1.2.pdf
+
+    The  syntax of  the  auxiliary data  is  not defined  there, but  is
+    partially defined in  MHP 1.0.3 (also called ETSI  TS 101812 V1.3.1)
+    section 7.4.
+
+      http://www.etsi.org/
+      http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=18799
+
+    (free registration required).
+
+[3] Support is rudimentary currently; some tables are not loaded yet.
+
+[4] See
+
+      THE X WINDOW SYSTEM SERVER: X VERSION 11, RELEASE 5
+      Elias Israel, Erik Fortune, Digital Press, 1992
+      ISBN 1-55558-096-3
+
+    for a specification  given in Appendix D on pgs. 436-450.   However,
+    this information  might be out of  date; unfortunately,  there is no
+    PCF  specification available  online, and this book is out of print.
+    George  Williams deduced  the font  format from the X11  sources and
+    documented it for his FontForge font editor:
+
+      http://fontforge.sourceforge.net/pcf-format.html
+
+------------------------------------------------------------------------
+
+Copyright 2004, 2005, 2008, 2009, 2010 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part  of the  FreeType  project, and  may  only be  used,
+modified,  and  distributed under  the  terms  of  the FreeType  project
+license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
+file  you indicate that  you have  read the  license and  understand and
+accept it fully.
+
+
+--- end of formats.txt ---

+ 635 - 635
Source/ThirdParty/FreeType/docs/raster.txt

@@ -1,635 +1,635 @@
-
-                   How FreeType's rasterizer work
-
-                          by David Turner
-
-                        Revised 2007-Feb-01
-
-
-This file  is an  attempt to explain  the internals of  the FreeType
-rasterizer.  The  rasterizer is of  quite general purpose  and could
-easily be integrated into other programs.
-
-
-  I. Introduction
-
- II. Rendering Technology
-     1. Requirements
-     2. Profiles and Spans
-        a. Sweeping the Shape
-        b. Decomposing Outlines into Profiles
-        c. The Render Pool
-        d. Computing Profiles Extents
-        e. Computing Profiles Coordinates
-        f. Sweeping and Sorting the Spans
-
-
-I. Introduction
-===============
-
-  A  rasterizer is  a library  in charge  of converting  a vectorial
-  representation of a shape  into a bitmap.  The FreeType rasterizer
-  has  been  originally developed  to  render  the  glyphs found  in
-  TrueType  files, made  up  of segments  and second-order  Béziers.
-  Meanwhile it has been extended to render third-order Bézier curves
-  also.   This  document  is   an  explanation  of  its  design  and
-  implementation.
-
-  While  these explanations start  from the  basics, a  knowledge of
-  common rasterization techniques is assumed.
-
-
-II. Rendering Technology
-========================
-
-1. Requirements
----------------
-
-  We  assume that  all scaling,  rotating, hinting,  etc.,  has been
-  already done.  The glyph is thus  described by a list of points in
-  the device space.
-
-  - All point coordinates  are in the 26.6 fixed  float format.  The
-    used orientation is:
-
-
-       ^ y
-       |         reference orientation
-       |
-       *----> x
-      0
-
-
-    `26.6' means  that 26 bits  are used for  the integer part  of a
-    value   and  6   bits  are   used  for   the   fractional  part.
-    Consequently, the `distance'  between two neighbouring pixels is
-    64 `units' (1 unit = 1/64th of a pixel).
-
-    Note  that, for  the rasterizer,  pixel centers  are  located at
-    integer   coordinates.   The   TrueType   bytecode  interpreter,
-    however, assumes that  the lower left edge of  a pixel (which is
-    taken  to be  a square  with  a length  of 1  unit) has  integer
-    coordinates.
-
-
-        ^ y                                        ^ y
-        |                                          |
-        |            (1,1)                         |      (0.5,0.5)
-        +-----------+                        +-----+-----+
-        |           |                        |     |     |
-        |           |                        |     |     |
-        |           |                        |     o-----+-----> x
-        |           |                        |   (0,0)   |
-        |           |                        |           |
-        o-----------+-----> x                +-----------+
-      (0,0)                             (-0.5,-0.5)
-
-   TrueType bytecode interpreter          FreeType rasterizer
-
-
-    A pixel line in the target bitmap is called a `scanline'.
-
-  - A  glyph  is  usually  made  of several  contours,  also  called
-    `outlines'.  A contour is simply a closed curve that delimits an
-    outer or inner region of the glyph.  It is described by a series
-    of successive points of the points table.
-
-    Each point  of the glyph  has an associated flag  that indicates
-    whether  it is  `on' or  `off' the  curve.  Two  successive `on'
-    points indicate a line segment joining the two points.
-
-    One `off' point amidst two `on' points indicates a second-degree
-    (conic)  Bézier parametric  arc, defined  by these  three points
-    (the `off' point being the  control point, and the `on' ones the
-    start and end points).  Similarly, a third-degree (cubic) Bézier
-    curve  is described  by four  points (two  `off'  control points
-    between two `on' points).
-
-    Finally,  for  second-order curves  only,  two successive  `off'
-    points  forces the  rasterizer to  create, during  rendering, an
-    `on'  point amidst them,  at their  exact middle.   This greatly
-    facilitates the  definition of  successive Bézier arcs.
-
-  The parametric form of a second-order Bézier curve is:
-
-      P(t) = (1-t)^2*P1 + 2*t*(1-t)*P2 + t^2*P3
-
-      (P1 and P3 are the end points, P2 the control point.)
-
-  The parametric form of a third-order Bézier curve is:
-
-      P(t) = (1-t)^3*P1 + 3*t*(1-t)^2*P2 + 3*t^2*(1-t)*P3 + t^3*P4
-
-      (P1 and P4 are the end points, P2 and P3 the control points.)
-
-  For both formulae, t is a real number in the range [0..1].
-
-  Note  that the rasterizer  does not  use these  formulae directly.
-  They exhibit,  however, one very  useful property of  Bézier arcs:
-  Each  point of  the curve  is a  weighted average  of  the control
-  points.
-
-  As all weights  are positive and always sum up  to 1, whatever the
-  value  of t,  each arc  point lies  within the  triangle (polygon)
-  defined by the arc's three (four) control points.
-
-  In  the following,  only second-order  curves are  discussed since
-  rasterization of third-order curves is completely identical.
-
-  Here some samples for second-order curves.
-
-
-                                        *            # on curve
-                                                     * off curve
-                                     __---__
-        #-__                      _--       -_
-            --__                _-            -
-                --__           #               \
-                    --__                        #
-                        -#
-                                 Two `on' points
-         Two `on' points       and one `off' point
-                                  between them
-
-                      *
-        #            __      Two `on' points with two `off'
-         \          -  -     points between them. The point
-          \        /    \    marked `0' is the middle of the
-           -      0      \   `off' points, and is a `virtual
-            -_  _-       #   on' point where the curve passes.
-              --             It does not appear in the point
-              *              list.
-
-
-2. Profiles and Spans
----------------------
-
-  The following is a basic explanation of the _kind_ of computations
-  made  by  the   rasterizer  to  build  a  bitmap   from  a  vector
-  representation.  Note  that the actual  implementation is slightly
-  different, due to performance tuning and other factors.
-
-  However, the following ideas remain  in the same category, and are
-  more convenient to understand.
-
-
-  a. Sweeping the Shape
-
-    The best way to fill a shape is to decompose it into a number of
-    simple  horizontal segments,  then turn  them on  in  the target
-    bitmap.  These segments are called `spans'.
-
-                __---__
-             _--       -_
-           _-            -
-          -               \
-         /                 \
-        /                   \
-       |                     \
-
-                __---__         Example: filling a shape
-             _----------_                with spans.
-           _--------------
-          ----------------\
-         /-----------------\    This is typically done from the top
-        /                   \   to the bottom of the shape, in a
-       |           |         \  movement called a `sweep'.
-                   V
-
-                __---__
-             _----------_
-           _--------------
-          ----------------\
-         /-----------------\
-        /-------------------\
-       |---------------------\
-
-
-    In  order  to draw  a  span,  the  rasterizer must  compute  its
-    coordinates, which  are simply the x coordinates  of the shape's
-    contours, taken on the y scanlines.
-
-
-                   /---/    |---|   Note that there are usually
-                  /---/     |---|   several spans per scanline.
-        |        /---/      |---|
-        |       /---/_______|---|   When rendering this shape to the
-        V      /----------------|   current scanline y, we must
-              /-----------------|   compute the x values of the
-           a /----|         |---|   points a, b, c, and d.
-      - - - *     * - - - - *   * - - y -
-           /     / b       c|   |d
-
-
-                   /---/    |---|
-                  /---/     |---|  And then turn on the spans a-b
-                 /---/      |---|  and c-d.
-                /---/_______|---|
-               /----------------|
-              /-----------------|
-           a /----|         |---|
-      - - - ####### - - - - ##### - - y -
-           /     / b       c|   |d
-
-
-  b. Decomposing Outlines into Profiles
-
-    For  each  scanline during  the  sweep,  we  need the  following
-    information:
-
-    o The  number of  spans on  the current  scanline, given  by the
-      number of  shape points  intersecting the scanline  (these are
-      the points a, b, c, and d in the above example).
-
-    o The x coordinates of these points.
-
-    x coordinates are  computed before the sweep, in  a phase called
-    `decomposition' which converts the glyph into *profiles*.
-
-    Put it simply, a `profile'  is a contour's portion that can only
-    be either ascending or descending,  i.e., it is monotonic in the
-    vertical direction (we also say  y-monotonic).  There is no such
-    thing as a horizontal profile, as we shall see.
-
-    Here are a few examples:
-
-
-      this square
-                                          1         2
-         ---->----     is made of two
-        |         |                       |         |
-        |         |       profiles        |         |
-        ^         v                       ^    +    v
-        |         |                       |         |
-        |         |                       |         |
-         ----<----
-
-                                         up        down
-
-
-      this triangle
-
-             P2                             1          2
-
-             |\        is made of two       |         \
-          ^  | \  \                         |          \
-          | |   \  \      profiles         |            \      |
-         |  |    \  v                  ^   |             \     |
-           |      \                    |  |         +     \    v
-           |       \                   |  |                \
-        P1 ---___   \                     ---___            \
-                 ---_\                          ---_         \
-             <--__     P3                   up           down
-
-
-
-      A more general contour can be made of more than two profiles:
-
-              __     ^
-             /  |   /  ___          /    |
-            /   |     /   |        /     |       /     |
-           |    |    /   /    =>  |      v      /     /
-           |    |   |   |         |      |     ^     |
-        ^  |    |___|   |  |      ^   +  |  +  |  +  v
-        |  |           |   v      |                 |
-           |           |          |           up    |
-           |___________|          |    down         |
-
-                <--               up              down
-
-
-    Successive  profiles are  always joined  by  horizontal segments
-    that are not part of the profiles themselves.
-
-    For  the  rasterizer,  a  profile  is  simply  an  *array*  that
-    associates  one  horizontal *pixel*  coordinate  to each  bitmap
-    *scanline*  crossed  by  the  contour's section  containing  the
-    profile.  Note that profiles are *oriented* up or down along the
-    glyph's original flow orientation.
-
-    In other graphics libraries, profiles are also called `edges' or
-    `edgelists'.
-
-
-  c. The Render Pool
-
-    FreeType  has been designed  to be  able to  run well  on _very_
-    light systems, including embedded systems with very few memory.
-
-    A render pool  will be allocated once; the  rasterizer uses this
-    pool for all  its needs by managing this  memory directly in it.
-    The  algorithms that are  used for  profile computation  make it
-    possible to use  the pool as a simple  growing heap.  This means
-    that this  memory management is  actually quite easy  and faster
-    than any kind of malloc()/free() combination.
-
-    Moreover,  we'll see  later that  the rasterizer  is  able, when
-    dealing with profiles too large  and numerous to lie all at once
-    in  the render  pool, to  immediately decompose  recursively the
-    rendering process  into independent sub-tasks,  each taking less
-    memory to be performed (see `sub-banding' below).
-
-    The  render pool doesn't  need to  be large.   A 4KByte  pool is
-    enough for nearly all renditions, though nearly 100% slower than
-    a more comfortable 16KByte or 32KByte pool (that was tested with
-    complex glyphs at sizes over 500 pixels).
-
-
-  d. Computing Profiles Extents
-
-    Remember that a profile is an array, associating a _scanline_ to
-    the x pixel coordinate of its intersection with a contour.
-
-    Though it's not exactly how the FreeType rasterizer works, it is
-    convenient  to think  that  we need  a  profile's height  before
-    allocating it in the pool and computing its coordinates.
-
-    The profile's height  is the number of scanlines  crossed by the
-    y-monotonic section of a contour.  We thus need to compute these
-    sections from  the vectorial description.  In order  to do that,
-    we are  obliged to compute all  (local and global)  y extrema of
-    the glyph (minima and maxima).
-
-
-           P2             For instance, this triangle has only
-                          two y-extrema, which are simply
-           |\
-           | \               P2.y  as a vertical maximum
-          |   \              P3.y  as a vertical minimum
-          |    \
-         |      \            P1.y is not a vertical extremum (though
-         |       \           it is a horizontal minimum, which we
-      P1 ---___   \          don't need).
-               ---_\
-                     P3
-
-
-    Note  that the  extrema are  expressed  in pixel  units, not  in
-    scanlines.   The triangle's  height  is certainly  (P3.y-P2.y+1)
-    pixel  units,   but  its  profiles'  heights   are  computed  in
-    scanlines.  The exact conversion is simple:
-
-      - min scanline = FLOOR  ( min y )
-      - max scanline = CEILING( max y )
-
-    A problem  arises with Bézier  Arcs.  While a segment  is always
-    necessarily y-monotonic (i.e.,  flat, ascending, or descending),
-    which makes extrema computations easy,  the ascent of an arc can
-    vary between its control points.
-
-
-                          P2
-                         *
-                                       # on curve
-                                       * off curve
-                   __-x--_
-                _--       -_
-          P1  _-            -          A non y-monotonic Bézier arc.
-             #               \
-                              -        The arc goes from P1 to P3.
-                               \
-                                \  P3
-                                 #
-
-
-    We first  need to be  able to easily detect  non-monotonic arcs,
-    according to  their control points.  I will  state here, without
-    proof, that the monotony condition can be expressed as:
-
-      P1.y <= P2.y <= P3.y   for an ever-ascending arc
-
-      P1.y >= P2.y >= P3.y   for an ever-descending arc
-
-    with the special case of
-
-      P1.y = P2.y = P3.y     where the arc is said to be `flat'.
-
-    As  you can  see, these  conditions can  be very  easily tested.
-    They are, however, extremely important, as any arc that does not
-    satisfy them necessarily contains an extremum.
-
-    Note  also that  a monotonic  arc can  contain an  extremum too,
-    which is then one of its `on' points:
-
-
-        P1           P2
-          #---__   *         P1P2P3 is ever-descending, but P1
-                -_           is an y-extremum.
-                  -
-           ---_    \
-               ->   \
-                     \  P3
-                      #
-
-
-    Let's go back to our previous example:
-
-
-                          P2
-                         *
-                                       # on curve
-                                       * off curve
-                   __-x--_
-                _--       -_
-          P1  _-            -          A non-y-monotonic Bézier arc.
-             #               \
-                              -        Here we have
-                               \              P2.y >= P1.y &&
-                                \  P3         P2.y >= P3.y      (!)
-                                 #
-
-
-    We need to  compute the vertical maximum of this  arc to be able
-    to compute a profile's height (the point marked by an `x').  The
-    arc's equation indicates that  a direct computation is possible,
-    but  we rely  on a  different technique,  which use  will become
-    apparent soon.
-
-    Bézier  arcs have  the  special property  of  being very  easily
-    decomposed into two sub-arcs,  which are themselves Bézier arcs.
-    Moreover, it is easy to prove that there is at most one vertical
-    extremum on  each Bézier arc (for  second-degree curves; similar
-    conditions can be found for third-order arcs).
-
-    For instance,  the following arc  P1P2P3 can be  decomposed into
-    two sub-arcs Q1Q2Q3 and R1R2R3:
-
-
-                    P2
-                   *
-                                    # on  curve
-                                    * off curve
-
-
-                                    original Bézier arc P1P2P3.
-                __---__
-             _--       --_
-           _-             -_
-          -                 -
-         /                   \
-        /                     \
-       #                       #
-     P1                         P3
-
-
-
-                    P2
-                   *
-
-
-
-                   Q3                 Decomposed into two subarcs
-          Q2                R2        Q1Q2Q3 and R1R2R3
-            *   __-#-__   *
-             _--       --_
-           _-       R1    -_          Q1 = P1         R3 = P3
-          -                 -         Q2 = (P1+P2)/2  R2 = (P2+P3)/2
-         /                   \
-        /                     \            Q3 = R1 = (Q2+R2)/2
-       #                       #
-     Q1                         R3    Note that Q2, R2, and Q3=R1
-                                      are on a single line which is
-                                      tangent to the curve.
-
-
-    We have then decomposed  a non-y-monotonic Bézier curve into two
-    smaller sub-arcs.  Note that in the above drawing, both sub-arcs
-    are monotonic, and that the extremum is then Q3=R1.  However, in
-    a  more general  case,  only  one sub-arc  is  guaranteed to  be
-    monotonic.  Getting back to our former example:
-
-
-                    Q2
-                   *
-
-                   __-x--_ R1
-                _--       #_
-          Q1  _-        Q3  -   R2
-             #               \ *
-                              -
-                               \
-                                \  R3
-                                 #
-
-
-    Here, we see that,  though Q1Q2Q3 is still non-monotonic, R1R2R3
-    is ever  descending: We  thus know that  it doesn't  contain the
-    extremum.  We can then re-subdivide Q1Q2Q3 into two sub-arcs and
-    go  on recursively,  stopping  when we  encounter two  monotonic
-    subarcs, or when the subarcs become simply too small.
-
-    We  will finally  find  the vertical  extremum.   Note that  the
-    iterative process of finding an extremum is called `flattening'.
-
-
-  e. Computing Profiles Coordinates
-
-    Once we have the height of each profile, we are able to allocate
-    it in the render pool.   The next task is to compute coordinates
-    for each scanline.
-
-    In  the case  of segments,  the computation  is straightforward,
-    using  the  Euclidean   algorithm  (also  known  as  Bresenham).
-    However, for Bézier arcs, the job is a little more complicated.
-
-    We assume  that all Béziers that  are part of a  profile are the
-    result of  flattening the curve,  which means that they  are all
-    y-monotonic (ascending  or descending, and never  flat).  We now
-    have  to compute the  intersections of  arcs with  the profile's
-    scanlines.  One  way is  to use a  similar scheme  to flattening
-    called `stepping'.
-
-
-                                 Consider this arc, going from P1 to
-      ---------------------      P3.  Suppose that we need to
-                                 compute its intersections with the
-                                 drawn scanlines.  As already
-      ---------------------      mentioned this can be done
-                                 directly, but the involved
-          * P2         _---# P3  algorithm is far too slow.
-      ------------- _--  --
-                  _-
-                _/               Instead, it is still possible to
-      ---------/-----------      use the decomposition property in
-              /                  the same recursive way, i.e.,
-             |                   subdivide the arc into subarcs
-      ------|--------------      until these get too small to cross
-            |                    more than one scanline!
-           |
-      -----|---------------      This is very easily done using a
-          |                      rasterizer-managed stack of
-          |                      subarcs.
-          # P1
-
-
-  f. Sweeping and Sorting the Spans
-
-    Once all our profiles have  been computed, we begin the sweep to
-    build (and fill) the spans.
-
-    As both the  TrueType and Type 1 specifications  use the winding
-    fill  rule (but  with opposite  directions), we  place,  on each
-    scanline, the present profiles in two separate lists.
-
-    One  list,  called  the  `left'  one,  only  contains  ascending
-    profiles, while  the other `right' list  contains the descending
-    profiles.
-
-    As  each glyph  is made  of  closed curves,  a simple  geometric
-    property ensures that  the two lists contain the  same number of
-    elements.
-
-    Creating spans is thus straightforward:
-
-    1. We sort each list in increasing horizontal order.
-
-    2. We pair  each value of  the left list with  its corresponding
-       value in the right list.
-
-
-                   /     /  |   |          For example, we have here
-                  /     /   |   |          four profiles.  Two of
-                >/     /    |   |  |       them are ascending (1 &
-              1//     /   ^ |   |  | 2     3), while the two others
-              //     //  3| |   |  v       are descending (2 & 4).
-              /     //4   | |   |          On the given scanline,
-           a /     /<       |   |          the left list is (1,3),
-      - - - *-----* - - - - *---* - - y -  and the right one is
-           /     / b       c|   |d         (4,2) (sorted).
-
-                                   There are then two spans, joining
-                                   1 to 4 (i.e. a-b) and 3 to 2
-                                   (i.e. c-d)!
-
-
-    Sorting doesn't necessarily  take much time, as in  99 cases out
-    of 100, the lists' order is  kept from one scanline to the next.
-    We can  thus implement it  with two simple  singly-linked lists,
-    sorted by a classic bubble-sort, which takes a minimum amount of
-    time when the lists are already sorted.
-
-    A  previous  version  of  the  rasterizer  used  more  elaborate
-    structures, like arrays to  perform `faster' sorting.  It turned
-    out that  this old scheme is  not faster than  the one described
-    above.
-
-    Once the spans  have been `created', we can  simply draw them in
-    the target bitmap.
-
-------------------------------------------------------------------------
-
-Copyright 2003, 2007 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file  is  part  of the  FreeType  project, and may  only be  used,
-modified,  and  distributed  under  the  terms of  the FreeType  project
-license, LICENSE.TXT.   By continuing to use, modify, or distribute this
-file you  indicate that  you have  read the  license and understand  and
-accept it fully.
-
-
---- end of raster.txt ---
-
-Local Variables:
-coding: utf-8
-End:
+
+                   How FreeType's rasterizer work
+
+                          by David Turner
+
+                        Revised 2007-Feb-01
+
+
+This file  is an  attempt to explain  the internals of  the FreeType
+rasterizer.  The  rasterizer is of  quite general purpose  and could
+easily be integrated into other programs.
+
+
+  I. Introduction
+
+ II. Rendering Technology
+     1. Requirements
+     2. Profiles and Spans
+        a. Sweeping the Shape
+        b. Decomposing Outlines into Profiles
+        c. The Render Pool
+        d. Computing Profiles Extents
+        e. Computing Profiles Coordinates
+        f. Sweeping and Sorting the Spans
+
+
+I. Introduction
+===============
+
+  A  rasterizer is  a library  in charge  of converting  a vectorial
+  representation of a shape  into a bitmap.  The FreeType rasterizer
+  has  been  originally developed  to  render  the  glyphs found  in
+  TrueType  files, made  up  of segments  and second-order  Béziers.
+  Meanwhile it has been extended to render third-order Bézier curves
+  also.   This  document  is   an  explanation  of  its  design  and
+  implementation.
+
+  While  these explanations start  from the  basics, a  knowledge of
+  common rasterization techniques is assumed.
+
+
+II. Rendering Technology
+========================
+
+1. Requirements
+---------------
+
+  We  assume that  all scaling,  rotating, hinting,  etc.,  has been
+  already done.  The glyph is thus  described by a list of points in
+  the device space.
+
+  - All point coordinates  are in the 26.6 fixed  float format.  The
+    used orientation is:
+
+
+       ^ y
+       |         reference orientation
+       |
+       *----> x
+      0
+
+
+    `26.6' means  that 26 bits  are used for  the integer part  of a
+    value   and  6   bits  are   used  for   the   fractional  part.
+    Consequently, the `distance'  between two neighbouring pixels is
+    64 `units' (1 unit = 1/64th of a pixel).
+
+    Note  that, for  the rasterizer,  pixel centers  are  located at
+    integer   coordinates.   The   TrueType   bytecode  interpreter,
+    however, assumes that  the lower left edge of  a pixel (which is
+    taken  to be  a square  with  a length  of 1  unit) has  integer
+    coordinates.
+
+
+        ^ y                                        ^ y
+        |                                          |
+        |            (1,1)                         |      (0.5,0.5)
+        +-----------+                        +-----+-----+
+        |           |                        |     |     |
+        |           |                        |     |     |
+        |           |                        |     o-----+-----> x
+        |           |                        |   (0,0)   |
+        |           |                        |           |
+        o-----------+-----> x                +-----------+
+      (0,0)                             (-0.5,-0.5)
+
+   TrueType bytecode interpreter          FreeType rasterizer
+
+
+    A pixel line in the target bitmap is called a `scanline'.
+
+  - A  glyph  is  usually  made  of several  contours,  also  called
+    `outlines'.  A contour is simply a closed curve that delimits an
+    outer or inner region of the glyph.  It is described by a series
+    of successive points of the points table.
+
+    Each point  of the glyph  has an associated flag  that indicates
+    whether  it is  `on' or  `off' the  curve.  Two  successive `on'
+    points indicate a line segment joining the two points.
+
+    One `off' point amidst two `on' points indicates a second-degree
+    (conic)  Bézier parametric  arc, defined  by these  three points
+    (the `off' point being the  control point, and the `on' ones the
+    start and end points).  Similarly, a third-degree (cubic) Bézier
+    curve  is described  by four  points (two  `off'  control points
+    between two `on' points).
+
+    Finally,  for  second-order curves  only,  two successive  `off'
+    points  forces the  rasterizer to  create, during  rendering, an
+    `on'  point amidst them,  at their  exact middle.   This greatly
+    facilitates the  definition of  successive Bézier arcs.
+
+  The parametric form of a second-order Bézier curve is:
+
+      P(t) = (1-t)^2*P1 + 2*t*(1-t)*P2 + t^2*P3
+
+      (P1 and P3 are the end points, P2 the control point.)
+
+  The parametric form of a third-order Bézier curve is:
+
+      P(t) = (1-t)^3*P1 + 3*t*(1-t)^2*P2 + 3*t^2*(1-t)*P3 + t^3*P4
+
+      (P1 and P4 are the end points, P2 and P3 the control points.)
+
+  For both formulae, t is a real number in the range [0..1].
+
+  Note  that the rasterizer  does not  use these  formulae directly.
+  They exhibit,  however, one very  useful property of  Bézier arcs:
+  Each  point of  the curve  is a  weighted average  of  the control
+  points.
+
+  As all weights  are positive and always sum up  to 1, whatever the
+  value  of t,  each arc  point lies  within the  triangle (polygon)
+  defined by the arc's three (four) control points.
+
+  In  the following,  only second-order  curves are  discussed since
+  rasterization of third-order curves is completely identical.
+
+  Here some samples for second-order curves.
+
+
+                                        *            # on curve
+                                                     * off curve
+                                     __---__
+        #-__                      _--       -_
+            --__                _-            -
+                --__           #               \
+                    --__                        #
+                        -#
+                                 Two `on' points
+         Two `on' points       and one `off' point
+                                  between them
+
+                      *
+        #            __      Two `on' points with two `off'
+         \          -  -     points between them. The point
+          \        /    \    marked `0' is the middle of the
+           -      0      \   `off' points, and is a `virtual
+            -_  _-       #   on' point where the curve passes.
+              --             It does not appear in the point
+              *              list.
+
+
+2. Profiles and Spans
+---------------------
+
+  The following is a basic explanation of the _kind_ of computations
+  made  by  the   rasterizer  to  build  a  bitmap   from  a  vector
+  representation.  Note  that the actual  implementation is slightly
+  different, due to performance tuning and other factors.
+
+  However, the following ideas remain  in the same category, and are
+  more convenient to understand.
+
+
+  a. Sweeping the Shape
+
+    The best way to fill a shape is to decompose it into a number of
+    simple  horizontal segments,  then turn  them on  in  the target
+    bitmap.  These segments are called `spans'.
+
+                __---__
+             _--       -_
+           _-            -
+          -               \
+         /                 \
+        /                   \
+       |                     \
+
+                __---__         Example: filling a shape
+             _----------_                with spans.
+           _--------------
+          ----------------\
+         /-----------------\    This is typically done from the top
+        /                   \   to the bottom of the shape, in a
+       |           |         \  movement called a `sweep'.
+                   V
+
+                __---__
+             _----------_
+           _--------------
+          ----------------\
+         /-----------------\
+        /-------------------\
+       |---------------------\
+
+
+    In  order  to draw  a  span,  the  rasterizer must  compute  its
+    coordinates, which  are simply the x coordinates  of the shape's
+    contours, taken on the y scanlines.
+
+
+                   /---/    |---|   Note that there are usually
+                  /---/     |---|   several spans per scanline.
+        |        /---/      |---|
+        |       /---/_______|---|   When rendering this shape to the
+        V      /----------------|   current scanline y, we must
+              /-----------------|   compute the x values of the
+           a /----|         |---|   points a, b, c, and d.
+      - - - *     * - - - - *   * - - y -
+           /     / b       c|   |d
+
+
+                   /---/    |---|
+                  /---/     |---|  And then turn on the spans a-b
+                 /---/      |---|  and c-d.
+                /---/_______|---|
+               /----------------|
+              /-----------------|
+           a /----|         |---|
+      - - - ####### - - - - ##### - - y -
+           /     / b       c|   |d
+
+
+  b. Decomposing Outlines into Profiles
+
+    For  each  scanline during  the  sweep,  we  need the  following
+    information:
+
+    o The  number of  spans on  the current  scanline, given  by the
+      number of  shape points  intersecting the scanline  (these are
+      the points a, b, c, and d in the above example).
+
+    o The x coordinates of these points.
+
+    x coordinates are  computed before the sweep, in  a phase called
+    `decomposition' which converts the glyph into *profiles*.
+
+    Put it simply, a `profile'  is a contour's portion that can only
+    be either ascending or descending,  i.e., it is monotonic in the
+    vertical direction (we also say  y-monotonic).  There is no such
+    thing as a horizontal profile, as we shall see.
+
+    Here are a few examples:
+
+
+      this square
+                                          1         2
+         ---->----     is made of two
+        |         |                       |         |
+        |         |       profiles        |         |
+        ^         v                       ^    +    v
+        |         |                       |         |
+        |         |                       |         |
+         ----<----
+
+                                         up        down
+
+
+      this triangle
+
+             P2                             1          2
+
+             |\        is made of two       |         \
+          ^  | \  \                         |          \
+          | |   \  \      profiles         |            \      |
+         |  |    \  v                  ^   |             \     |
+           |      \                    |  |         +     \    v
+           |       \                   |  |                \
+        P1 ---___   \                     ---___            \
+                 ---_\                          ---_         \
+             <--__     P3                   up           down
+
+
+
+      A more general contour can be made of more than two profiles:
+
+              __     ^
+             /  |   /  ___          /    |
+            /   |     /   |        /     |       /     |
+           |    |    /   /    =>  |      v      /     /
+           |    |   |   |         |      |     ^     |
+        ^  |    |___|   |  |      ^   +  |  +  |  +  v
+        |  |           |   v      |                 |
+           |           |          |           up    |
+           |___________|          |    down         |
+
+                <--               up              down
+
+
+    Successive  profiles are  always joined  by  horizontal segments
+    that are not part of the profiles themselves.
+
+    For  the  rasterizer,  a  profile  is  simply  an  *array*  that
+    associates  one  horizontal *pixel*  coordinate  to each  bitmap
+    *scanline*  crossed  by  the  contour's section  containing  the
+    profile.  Note that profiles are *oriented* up or down along the
+    glyph's original flow orientation.
+
+    In other graphics libraries, profiles are also called `edges' or
+    `edgelists'.
+
+
+  c. The Render Pool
+
+    FreeType  has been designed  to be  able to  run well  on _very_
+    light systems, including embedded systems with very few memory.
+
+    A render pool  will be allocated once; the  rasterizer uses this
+    pool for all  its needs by managing this  memory directly in it.
+    The  algorithms that are  used for  profile computation  make it
+    possible to use  the pool as a simple  growing heap.  This means
+    that this  memory management is  actually quite easy  and faster
+    than any kind of malloc()/free() combination.
+
+    Moreover,  we'll see  later that  the rasterizer  is  able, when
+    dealing with profiles too large  and numerous to lie all at once
+    in  the render  pool, to  immediately decompose  recursively the
+    rendering process  into independent sub-tasks,  each taking less
+    memory to be performed (see `sub-banding' below).
+
+    The  render pool doesn't  need to  be large.   A 4KByte  pool is
+    enough for nearly all renditions, though nearly 100% slower than
+    a more comfortable 16KByte or 32KByte pool (that was tested with
+    complex glyphs at sizes over 500 pixels).
+
+
+  d. Computing Profiles Extents
+
+    Remember that a profile is an array, associating a _scanline_ to
+    the x pixel coordinate of its intersection with a contour.
+
+    Though it's not exactly how the FreeType rasterizer works, it is
+    convenient  to think  that  we need  a  profile's height  before
+    allocating it in the pool and computing its coordinates.
+
+    The profile's height  is the number of scanlines  crossed by the
+    y-monotonic section of a contour.  We thus need to compute these
+    sections from  the vectorial description.  In order  to do that,
+    we are  obliged to compute all  (local and global)  y extrema of
+    the glyph (minima and maxima).
+
+
+           P2             For instance, this triangle has only
+                          two y-extrema, which are simply
+           |\
+           | \               P2.y  as a vertical maximum
+          |   \              P3.y  as a vertical minimum
+          |    \
+         |      \            P1.y is not a vertical extremum (though
+         |       \           it is a horizontal minimum, which we
+      P1 ---___   \          don't need).
+               ---_\
+                     P3
+
+
+    Note  that the  extrema are  expressed  in pixel  units, not  in
+    scanlines.   The triangle's  height  is certainly  (P3.y-P2.y+1)
+    pixel  units,   but  its  profiles'  heights   are  computed  in
+    scanlines.  The exact conversion is simple:
+
+      - min scanline = FLOOR  ( min y )
+      - max scanline = CEILING( max y )
+
+    A problem  arises with Bézier  Arcs.  While a segment  is always
+    necessarily y-monotonic (i.e.,  flat, ascending, or descending),
+    which makes extrema computations easy,  the ascent of an arc can
+    vary between its control points.
+
+
+                          P2
+                         *
+                                       # on curve
+                                       * off curve
+                   __-x--_
+                _--       -_
+          P1  _-            -          A non y-monotonic Bézier arc.
+             #               \
+                              -        The arc goes from P1 to P3.
+                               \
+                                \  P3
+                                 #
+
+
+    We first  need to be  able to easily detect  non-monotonic arcs,
+    according to  their control points.  I will  state here, without
+    proof, that the monotony condition can be expressed as:
+
+      P1.y <= P2.y <= P3.y   for an ever-ascending arc
+
+      P1.y >= P2.y >= P3.y   for an ever-descending arc
+
+    with the special case of
+
+      P1.y = P2.y = P3.y     where the arc is said to be `flat'.
+
+    As  you can  see, these  conditions can  be very  easily tested.
+    They are, however, extremely important, as any arc that does not
+    satisfy them necessarily contains an extremum.
+
+    Note  also that  a monotonic  arc can  contain an  extremum too,
+    which is then one of its `on' points:
+
+
+        P1           P2
+          #---__   *         P1P2P3 is ever-descending, but P1
+                -_           is an y-extremum.
+                  -
+           ---_    \
+               ->   \
+                     \  P3
+                      #
+
+
+    Let's go back to our previous example:
+
+
+                          P2
+                         *
+                                       # on curve
+                                       * off curve
+                   __-x--_
+                _--       -_
+          P1  _-            -          A non-y-monotonic Bézier arc.
+             #               \
+                              -        Here we have
+                               \              P2.y >= P1.y &&
+                                \  P3         P2.y >= P3.y      (!)
+                                 #
+
+
+    We need to  compute the vertical maximum of this  arc to be able
+    to compute a profile's height (the point marked by an `x').  The
+    arc's equation indicates that  a direct computation is possible,
+    but  we rely  on a  different technique,  which use  will become
+    apparent soon.
+
+    Bézier  arcs have  the  special property  of  being very  easily
+    decomposed into two sub-arcs,  which are themselves Bézier arcs.
+    Moreover, it is easy to prove that there is at most one vertical
+    extremum on  each Bézier arc (for  second-degree curves; similar
+    conditions can be found for third-order arcs).
+
+    For instance,  the following arc  P1P2P3 can be  decomposed into
+    two sub-arcs Q1Q2Q3 and R1R2R3:
+
+
+                    P2
+                   *
+                                    # on  curve
+                                    * off curve
+
+
+                                    original Bézier arc P1P2P3.
+                __---__
+             _--       --_
+           _-             -_
+          -                 -
+         /                   \
+        /                     \
+       #                       #
+     P1                         P3
+
+
+
+                    P2
+                   *
+
+
+
+                   Q3                 Decomposed into two subarcs
+          Q2                R2        Q1Q2Q3 and R1R2R3
+            *   __-#-__   *
+             _--       --_
+           _-       R1    -_          Q1 = P1         R3 = P3
+          -                 -         Q2 = (P1+P2)/2  R2 = (P2+P3)/2
+         /                   \
+        /                     \            Q3 = R1 = (Q2+R2)/2
+       #                       #
+     Q1                         R3    Note that Q2, R2, and Q3=R1
+                                      are on a single line which is
+                                      tangent to the curve.
+
+
+    We have then decomposed  a non-y-monotonic Bézier curve into two
+    smaller sub-arcs.  Note that in the above drawing, both sub-arcs
+    are monotonic, and that the extremum is then Q3=R1.  However, in
+    a  more general  case,  only  one sub-arc  is  guaranteed to  be
+    monotonic.  Getting back to our former example:
+
+
+                    Q2
+                   *
+
+                   __-x--_ R1
+                _--       #_
+          Q1  _-        Q3  -   R2
+             #               \ *
+                              -
+                               \
+                                \  R3
+                                 #
+
+
+    Here, we see that,  though Q1Q2Q3 is still non-monotonic, R1R2R3
+    is ever  descending: We  thus know that  it doesn't  contain the
+    extremum.  We can then re-subdivide Q1Q2Q3 into two sub-arcs and
+    go  on recursively,  stopping  when we  encounter two  monotonic
+    subarcs, or when the subarcs become simply too small.
+
+    We  will finally  find  the vertical  extremum.   Note that  the
+    iterative process of finding an extremum is called `flattening'.
+
+
+  e. Computing Profiles Coordinates
+
+    Once we have the height of each profile, we are able to allocate
+    it in the render pool.   The next task is to compute coordinates
+    for each scanline.
+
+    In  the case  of segments,  the computation  is straightforward,
+    using  the  Euclidean   algorithm  (also  known  as  Bresenham).
+    However, for Bézier arcs, the job is a little more complicated.
+
+    We assume  that all Béziers that  are part of a  profile are the
+    result of  flattening the curve,  which means that they  are all
+    y-monotonic (ascending  or descending, and never  flat).  We now
+    have  to compute the  intersections of  arcs with  the profile's
+    scanlines.  One  way is  to use a  similar scheme  to flattening
+    called `stepping'.
+
+
+                                 Consider this arc, going from P1 to
+      ---------------------      P3.  Suppose that we need to
+                                 compute its intersections with the
+                                 drawn scanlines.  As already
+      ---------------------      mentioned this can be done
+                                 directly, but the involved
+          * P2         _---# P3  algorithm is far too slow.
+      ------------- _--  --
+                  _-
+                _/               Instead, it is still possible to
+      ---------/-----------      use the decomposition property in
+              /                  the same recursive way, i.e.,
+             |                   subdivide the arc into subarcs
+      ------|--------------      until these get too small to cross
+            |                    more than one scanline!
+           |
+      -----|---------------      This is very easily done using a
+          |                      rasterizer-managed stack of
+          |                      subarcs.
+          # P1
+
+
+  f. Sweeping and Sorting the Spans
+
+    Once all our profiles have  been computed, we begin the sweep to
+    build (and fill) the spans.
+
+    As both the  TrueType and Type 1 specifications  use the winding
+    fill  rule (but  with opposite  directions), we  place,  on each
+    scanline, the present profiles in two separate lists.
+
+    One  list,  called  the  `left'  one,  only  contains  ascending
+    profiles, while  the other `right' list  contains the descending
+    profiles.
+
+    As  each glyph  is made  of  closed curves,  a simple  geometric
+    property ensures that  the two lists contain the  same number of
+    elements.
+
+    Creating spans is thus straightforward:
+
+    1. We sort each list in increasing horizontal order.
+
+    2. We pair  each value of  the left list with  its corresponding
+       value in the right list.
+
+
+                   /     /  |   |          For example, we have here
+                  /     /   |   |          four profiles.  Two of
+                >/     /    |   |  |       them are ascending (1 &
+              1//     /   ^ |   |  | 2     3), while the two others
+              //     //  3| |   |  v       are descending (2 & 4).
+              /     //4   | |   |          On the given scanline,
+           a /     /<       |   |          the left list is (1,3),
+      - - - *-----* - - - - *---* - - y -  and the right one is
+           /     / b       c|   |d         (4,2) (sorted).
+
+                                   There are then two spans, joining
+                                   1 to 4 (i.e. a-b) and 3 to 2
+                                   (i.e. c-d)!
+
+
+    Sorting doesn't necessarily  take much time, as in  99 cases out
+    of 100, the lists' order is  kept from one scanline to the next.
+    We can  thus implement it  with two simple  singly-linked lists,
+    sorted by a classic bubble-sort, which takes a minimum amount of
+    time when the lists are already sorted.
+
+    A  previous  version  of  the  rasterizer  used  more  elaborate
+    structures, like arrays to  perform `faster' sorting.  It turned
+    out that  this old scheme is  not faster than  the one described
+    above.
+
+    Once the spans  have been `created', we can  simply draw them in
+    the target bitmap.
+
+------------------------------------------------------------------------
+
+Copyright 2003, 2007 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file  is  part  of the  FreeType  project, and may  only be  used,
+modified,  and  distributed  under  the  terms of  the FreeType  project
+license, LICENSE.TXT.   By continuing to use, modify, or distribute this
+file you  indicate that  you have  read the  license and understand  and
+accept it fully.
+
+
+--- end of raster.txt ---
+
+Local Variables:
+coding: utf-8
+End:

+ 216 - 195
Source/ThirdParty/FreeType/docs/release

@@ -1,195 +1,216 @@
-How to prepare a new release
-----------------------------
-
-. include/freetype/freetype.h:  Update FREETYPE_MAJOR, FREETYPE_MINOR,
-  and FREETYPE_PATCH.
-
-. Update version numbers in all files where necessary (for example, do
-  a grep for both `2.3.1' and `231' for release 2.3.1).
-
-. builds/unix/configure.raw: Update `version_info'.
-
-. docs/CHANGES: Document differences to last release.
-
-. README: Update.
-
-. docs/VERSION.DLL: Document changed `version_info'.
-
-. ChangeLog:   Announce  new  release   (both  in  the  freetype2  and
-  freetype2-demos modules).
-
-. Clone the git archive to another directory with
-
-    git clone -l -s . ../freetype2.test
-
-  or something like this and run
-
-    make distclean; make devel; make
-    make distclean; make devel; make multi
-    make distclean; make devel CC=g++; make CC=g++
-    make distclean; make devel CC=g++; make multi CC=g++
-
-    sh autogen.sh
-    make distclean; ./configure; make
-    make distclean; ./configure CC=g++; make
-
-  in the cloned repository to test compilation with both gcc and g++.
-
-. Test C++ compilation  for freetype2-demos too  (using `git clone' as
-  above).
-
-. Run  src/tools/chktrcmp.py  and check  that there  are no  undefined
-  trace_XXXX macros.
-
-. Tag the git repositories (freetype2, freetype2-demos) with
-
-    git tag VER-<version> -m "" -u <committer>
-
-  and push the tags with
-
-    git push --tags
-
-  TODO: Tag the home page CVS on savannah.nongnu.org.
-
-. Say `make  dist' in both the  freetype2 and freetype2-demos  modules
-  to generate the .tar.gz, .tar.bz2, and .zip files.
-
-. Create     the     doc    bundles    (freetype-doc-<version>.tar.gz,
-  freetype-doc-<version>.tar.bz2,    ftdoc<version>.zip).    This   is
-  everything below
-
-    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/freetype2/docs/
-
-  except the `reference' subdirectory.   Do *not* use option `-l' from
-  zip!
-
-. Run the following script (with updated `$VERSION', `$SAVANNAH_USER',
-  and $SOURCEFORGE_USER  variables) to sign and upload the  bundles to
-  both Savannah and SourceForge.  The signing code has been taken from
-  the `gnupload' script (part of the automake bundle).
-
-    #!/bin/sh
-
-    VERSION=2.3.11
-    SAVANNAH_USER=wl
-    SOURCEFORGE_USER=wlemb
-
-    #####################################################################
-
-    GPG='/usr/bin/gpg --batch --no-tty'
-
-    version=`echo $VERSION | sed "s/\\.//g"`
-
-    FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
-                       freetype-$VERSION.tar.bz2 \
-                       ft$version.zip"
-    FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
-                       ft2demos-$VERSION.tar.bz2 \
-                       ftdmo$version.zip"
-    FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
-                    freetype-doc-$VERSION.tar.bz2 \
-                    ftdoc$version.zip"
-
-    PACKAGE_LIST="$FREETYPE_PACKAGES \
-                  $FT2DEMOS_PACKAGES \
-                  $FTDOC_PACKAGES"
-
-    set -e
-    unset passphrase
-
-    PATH=/empty echo -n "Enter GPG passphrase: "
-    stty -echo
-    read -r passphrase
-    stty echo
-    echo
-
-    for f in $PACKAGE_LIST; do
-      if test ! -f $f; then
-        echo "$0: Cannot find \`$f'" 1>&2
-        exit 1
-      else
-        :
-      fi
-    done
-
-    for f in $PACKAGE_LIST; do
-      echo "Signing $f..."
-      rm -f $f.sig
-      echo $passphrase | $GPG --passphrase-fd 0 -ba -o $f.sig $f
-    done
-
-    FREETYPE_SIGNATURES=
-    for i in $FREETYPE_PACKAGES; do
-      FREETYPE_SIGNATURES="$FREETYPE_SIGNATURES $i.sig"
-    done
-
-    FT2DEMOS_SIGNATURES=
-    for i in $FT2DEMOS_PACKAGES; do
-      FT2DEMOS_SIGNATURES="$FT2DEMOS_SIGNATURES $i.sig"
-    done
-
-    FTDOC_SIGNATURES=
-    for i in $FTDOC_PACKAGES; do
-      FTDOC_SIGNATURES="$FTDOC_SIGNATURES $i.sig"
-    done
-
-    SIGNATURE_LIST="$FREETYPE_SIGNATURES \
-                    $FT2DEMOS_SIGNATURES \
-                    $FTDOC_SIGNATURES"
-
-    scp $PACKAGE_LIST $SIGNATURE_LIST \
-      [email protected]:/releases/freetype/
-
-    rsync -avP -e ssh $FREETYPE_PACKAGES $FREETYPE_SIGNATURES \
-      $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
-    rsync -avP -e ssh $FT2DEMOS_PACKAGES $FT2DEMOS_SIGNATURES \
-      $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype-demos/$VERSION/
-    rsync -avP -e ssh $FTDOC_PACKAGES $FTDOC_SIGNATURES \
-      $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype-docs/$VERSION/
-
-    # EOF
-
-. While files on savannah.gnu.org are automatically moved to the right
-  directory, it must be done manually on SourceForge.  Do that now.
-
-. Update the FreeType release notes on SourceForge.
-
-. Copy the reference files (generated by `make dist') to
-
-    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/freetype2/docs/reference
-
-  and
-
-    shell.sf.net:/home/groups/f/fr/freetype/htdocs/freetype2/docs/reference
-
-  TODO: Create  FreeType  home  page  CVS  on savannah.nongnu.org  and
-        update it accordingly.
-
-        Write script to automatically do this.
-
-        Mirror FreeType's savannah home page everywhere.
-
-. Update
-
-    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/index2.html
-
-  and copy it to
-
-    shell.sf.net:/home/groups/f/fr/freetype/htdocs/index2.html
-
-. Announce new release on [email protected] and to relevant
-  newsgroups.
-
-----------------------------------------------------------------------
-
-Copyright 2003, 2005, 2006, 2007, 2009 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of release ---
+How to prepare a new release
+----------------------------
+
+. include/freetype/freetype.h:  Update FREETYPE_MAJOR, FREETYPE_MINOR,
+  and FREETYPE_PATCH.
+
+. Update version numbers in all files where necessary (for example, do
+  a grep for both `2.3.1' and `231' for release 2.3.1).
+
+. builds/unix/configure.raw: Update `version_info'.
+
+. docs/CHANGES: Document differences to last release.
+
+. README: Update.
+
+. docs/VERSION.DLL: Document changed `version_info'.
+
+. ChangeLog:   Announce  new  release   (both  in  the  freetype2  and
+  freetype2-demos modules).
+
+. Clone the git archive to another directory with
+
+    git clone -l -s . ../freetype2.test
+
+  or something like this and run
+
+    make distclean; make devel; make
+    make distclean; make devel; make multi
+    make distclean; make devel CC=g++; make CC=g++
+    make distclean; make devel CC=g++; make multi CC=g++
+
+    sh autogen.sh
+    make distclean; ./configure; make
+    make distclean; ./configure CC=g++; make
+
+  in the cloned repository to test compilation with both gcc and g++.
+
+. Test C++ compilation  for freetype2-demos too  (using `git clone' as
+  above).
+
+. Run  src/tools/chktrcmp.py  and check  that there  are no  undefined
+  trace_XXXX macros.
+
+. Tag the git repositories (freetype2, freetype2-demos) with
+
+    git tag VER-<version> -m "" -u <committer>
+
+  and push the tags with
+
+    git push --tags
+
+  TODO: Tag the home page CVS on savannah.nongnu.org.
+
+. Check with
+
+    git clean -ndx
+
+  that the git directory is really clean  (and remove extraneous files
+  if necessary).
+
+. Say `make  dist' in both the  freetype2 and freetype2-demos  modules
+  to generate the .tar.gz, .tar.bz2, and .zip files.
+
+. Create     the     doc    bundles    (freetype-doc-<version>.tar.gz,
+  freetype-doc-<version>.tar.bz2,    ftdoc<version>.zip).    This   is
+  everything below
+
+    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/freetype2/docs/
+
+  except the `reference' subdirectory.   Do *not* use option `-l' from
+  zip!
+
+. Run the following script (with updated `$VERSION', `$SAVANNAH_USER',
+  and $SOURCEFORGE_USER  variables) to sign and upload the  bundles to
+  both Savannah and SourceForge.  The signing code has been taken from
+  the `gnupload' script (part of the automake bundle).
+
+    #!/bin/sh
+
+    VERSION=2.4.8
+    SAVANNAH_USER=wl
+    SOURCEFORGE_USER=wlemb
+
+    #####################################################################
+
+    GPG='/usr/bin/gpg --batch --no-tty'
+
+    version=`echo $VERSION | sed "s/\\.//g"`
+
+    FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
+                       freetype-$VERSION.tar.bz2 \
+                       ft$version.zip"
+    FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
+                       ft2demos-$VERSION.tar.bz2 \
+                       ftdmo$version.zip"
+    FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
+                    freetype-doc-$VERSION.tar.bz2 \
+                    ftdoc$version.zip"
+
+    PACKAGE_LIST="$FREETYPE_PACKAGES \
+                  $FT2DEMOS_PACKAGES \
+                  $FTDOC_PACKAGES"
+
+    set -e
+    unset passphrase
+
+    PATH=/empty echo -n "Enter GPG passphrase: "
+    stty -echo
+    read -r passphrase
+    stty echo
+    echo
+
+    for f in $PACKAGE_LIST; do
+      if test ! -f $f; then
+        echo "$0: Cannot find \`$f'" 1>&2
+        exit 1
+      else
+        :
+      fi
+    done
+
+    for f in $PACKAGE_LIST; do
+      echo "Signing $f..."
+      rm -f $f.sig
+      echo $passphrase | $GPG --passphrase-fd 0 -ba -o $f.sig $f
+    done
+
+    FREETYPE_SIGNATURES=
+    for i in $FREETYPE_PACKAGES; do
+      FREETYPE_SIGNATURES="$FREETYPE_SIGNATURES $i.sig"
+    done
+
+    FT2DEMOS_SIGNATURES=
+    for i in $FT2DEMOS_PACKAGES; do
+      FT2DEMOS_SIGNATURES="$FT2DEMOS_SIGNATURES $i.sig"
+    done
+
+    FTDOC_SIGNATURES=
+    for i in $FTDOC_PACKAGES; do
+      FTDOC_SIGNATURES="$FTDOC_SIGNATURES $i.sig"
+    done
+
+    SIGNATURE_LIST="$FREETYPE_SIGNATURES \
+                    $FT2DEMOS_SIGNATURES \
+                    $FTDOC_SIGNATURES"
+
+    scp $PACKAGE_LIST $SIGNATURE_LIST \
+      [email protected]:/releases/freetype/
+
+    rsync -avP -e ssh $FREETYPE_PACKAGES $FREETYPE_SIGNATURES \
+      $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
+    rsync -avP -e ssh $FT2DEMOS_PACKAGES $FT2DEMOS_SIGNATURES \
+      $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype-demos/$VERSION/
+    rsync -avP -e ssh $FTDOC_PACKAGES $FTDOC_SIGNATURES \
+      $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype-docs/$VERSION/
+
+    # EOF
+
+. Prepare a  README for SourceForge  and upload it  with the following
+  script (with updated `$VERSION' and $SOURCEFORGE_USER variables).
+
+    #!/bin/sh
+
+    VERSION=2.4.8
+    SOURCEFORGE_USER=wlemb
+
+    #####################################################################
+
+    rsync -avP -e ssh README \
+      $SOURCEFORGE_USER,[email protected]:/home/frs/project/f/fr/freetype/freetype2/$VERSION/
+
+    # EOF
+
+. On   SourceForge,   tag   the   just   uploaded   `ftXXXX.zip'   and
+  `freetype-XXX.tar.bz2'  files as the  default files to  download for
+  `Windows' and `Others', respectively.
+
+. Copy the reference files (generated by `make dist') to
+
+    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/freetype2/docs/reference
+
+  and
+
+    shell.sf.net:/home/groups/f/fr/freetype/htdocs/freetype2/docs/reference
+
+  TODO: Create  FreeType  home  page  CVS  on savannah.nongnu.org  and
+        update it accordingly.
+
+        Write script to automatically do this.
+
+        Mirror FreeType's savannah home page everywhere.
+
+. Update
+
+    freetype.freedesktop.org:/srv/freetype.freedesktop.org/www/index2.html
+
+  and copy it to
+
+    shell.sf.net:/home/groups/f/fr/freetype/htdocs/index2.html
+
+. Announce new release on [email protected] and to relevant
+  newsgroups.
+
+----------------------------------------------------------------------
+
+Copyright 2003, 2005-2007, 2009, 2011-2012 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+
+--- end of release ---

+ 1 - 1
Source/ThirdParty/FreeType/include/freetype/config/ftoption.h

@@ -591,7 +591,7 @@ FT_BEGIN_HEADER
   /*   This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be    */
   /*   defined.                                                            */
   /*                                                                       */
-/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */
+#define TT_CONFIG_OPTION_SUBPIXEL_HINTING
 
 
   /*************************************************************************/

+ 0 - 25
Source/ThirdParty/FreeType/src/Jamfile

@@ -1,25 +0,0 @@
-# FreeType 2 src Jamfile
-#
-# Copyright 2001, 2002 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) ;
-
-# The file <freetype/internal/internal.h> is used to define macros that are
-# later used in #include statements.  It needs to be parsed in order to
-# record these definitions.
-#
-HDRMACRO  [ FT2_SubDir $(FT2_INCLUDE_DIR) internal internal.h ] ;
-
-for xx in $(FT2_COMPONENTS)
-{
-  SubInclude FT2_TOP $(FT2_SRC_DIR) $(xx) ;
-}
-
-# end of src Jamfile

+ 0 - 39
Source/ThirdParty/FreeType/src/autofit/Jamfile

@@ -1,39 +0,0 @@
-# FreeType 2 src/autofit Jamfile
-#
-# Copyright 2003, 2004, 2005, 2006, 2007, 2009 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir FT2_TOP src autofit ;
-
-{
-  local  _sources ;
-
-  # define FT2_AUTOFIT2 to enable experimental latin hinter replacement
-  if $(FT2_AUTOFIT2)
-  {
-    DEFINES += FT_OPTION_AUTOFIT2 ;
-  }
-  if $(FT2_MULTI)
-  {
-    _sources = afangles afglobal afhints aflatin afcjk afindic afloader afmodule afdummy afwarp afpic ;
-
-    if $(FT2_AUTOFIT2)
-    {
-      _sources += aflatin2 ;
-    }
-  }
-  else
-  {
-    _sources = autofit ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/autofit Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/autofit/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 auto-fitter module definition
-#
-
-
-# Copyright 2003, 2004, 2005, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += AUTOFIT_MODULE
-
-define AUTOFIT_MODULE
-$(OPEN_DRIVER) FT_Module_Class, autofit_module_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)autofit   $(ECHO_DRIVER_DESC)automatic hinting module$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 82
Source/ThirdParty/FreeType/src/autofit/rules.mk

@@ -1,82 +0,0 @@
-#
-# FreeType 2 auto-fitter module configuration rules
-#
-
-
-# Copyright 2003-2007, 2011, 2013 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# AUTOF driver directory
-#
-AUTOF_DIR := $(SRC_DIR)/autofit
-
-
-# compilation flags for the driver
-#
-AUTOF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(AUTOF_DIR))
-
-
-# AUTOF driver sources (i.e., C files)
-#
-AUTOF_DRV_SRC := $(AUTOF_DIR)/afangles.c \
-                 $(AUTOF_DIR)/afblue.c   \
-                 $(AUTOF_DIR)/afcjk.c    \
-                 $(AUTOF_DIR)/afdummy.c  \
-                 $(AUTOF_DIR)/afglobal.c \
-                 $(AUTOF_DIR)/afhints.c  \
-                 $(AUTOF_DIR)/afindic.c  \
-                 $(AUTOF_DIR)/aflatin.c  \
-                 $(AUTOF_DIR)/afloader.c \
-                 $(AUTOF_DIR)/afmodule.c \
-                 $(AUTOF_DIR)/afpic.c    \
-                 $(AUTOF_DIR)/afwarp.c
-
-# AUTOF driver headers
-#
-AUTOF_DRV_H := $(AUTOF_DRV_SRC:%c=%h)  \
-               $(AUTOF_DIR)/aferrors.h \
-               $(AUTOF_DIR)/afscript.h \
-               $(AUTOF_DIR)/aftypes.h  \
-               $(AUTOF_DIR)/afwrtsys.h
-
-
-# AUTOF driver object(s)
-#
-#   AUTOF_DRV_OBJ_M is used during `multi' builds.
-#   AUTOF_DRV_OBJ_S is used during `single' builds.
-#
-AUTOF_DRV_OBJ_M := $(AUTOF_DRV_SRC:$(AUTOF_DIR)/%.c=$(OBJ_DIR)/%.$O)
-AUTOF_DRV_OBJ_S := $(OBJ_DIR)/autofit.$O
-
-# AUTOF driver source file for single build
-#
-AUTOF_DRV_SRC_S := $(AUTOF_DIR)/autofit.c
-
-
-# AUTOF driver - single object
-#
-$(AUTOF_DRV_OBJ_S): $(AUTOF_DRV_SRC_S) $(AUTOF_DRV_SRC) \
-                   $(FREETYPE_H) $(AUTOF_DRV_H)
-	$(AUTOF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(AUTOF_DRV_SRC_S))
-
-
-# AUTOF driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(AUTOF_DIR)/%.c $(FREETYPE_H) $(AUTOF_DRV_H)
-	$(AUTOF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(AUTOF_DRV_OBJ_S)
-DRV_OBJS_M += $(AUTOF_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 60
Source/ThirdParty/FreeType/src/base/Jamfile

@@ -1,60 +0,0 @@
-# FreeType 2 src/base Jamfile
-#
-# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) base ;
-
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = ftadvanc ftcalc   ftdbgmem ftgloadr
-               ftobjs   ftoutln  ftrfork  ftsnames
-               ftstream fttrigon ftutil
-               basepic  ftpic
-               ;
-  }
-  else
-  {
-    _sources = ftbase ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# Add the optional/replaceable files.
-#
-{
-  local  _sources = bbox   bdf    bitmap debug  gasp
-                    glyph  gxval  init   lcdfil mm
-                    otval  pfr    stroke synth  system
-                    type1  winfnt xf86   patent
-                    ;
-
-  Library  $(FT2_LIB) : ft$(_sources).c ;
-}
-
-# Add Macintosh-specific file to the library when necessary.
-#
-if $(MAC)
-{
-  Library  $(FT2_LIB) : ftmac.c ;
-}
-else if $(OS) = MACOSX
-{
-  if $(FT2_MULTI)
-  {
-    Library  $(FT2_LIB) : ftmac.c ;
-  }
-}
-
-# end of src/base Jamfile

+ 0 - 99
Source/ThirdParty/FreeType/src/base/rules.mk

@@ -1,99 +0,0 @@
-#
-# FreeType 2 base layer configuration rules
-#
-
-
-# Copyright 1996-2000, 2002-2009, 2013 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# It sets the following variables which are used by the master Makefile
-# after the call:
-#
-#   BASE_OBJ_S:   The single-object base layer.
-#   BASE_OBJ_M:   A list of all objects for a multiple-objects build.
-#   BASE_EXT_OBJ: A list of base layer extensions, i.e., components found
-#                 in `freetype/src/base' which are not compiled within the
-#                 base layer proper.
-
-
-BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base)
-
-
-# Base layer sources
-#
-#   ftsystem, ftinit, and ftdebug are handled by freetype.mk
-#
-# All files listed here should be included in `ftbase.c' (for a `single'
-# build).
-#
-BASE_SRC := $(BASE_DIR)/ftadvanc.c \
-            $(BASE_DIR)/ftcalc.c   \
-            $(BASE_DIR)/ftdbgmem.c \
-            $(BASE_DIR)/ftgloadr.c \
-            $(BASE_DIR)/ftobjs.c   \
-            $(BASE_DIR)/ftoutln.c  \
-            $(BASE_DIR)/ftrfork.c  \
-            $(BASE_DIR)/ftsnames.c \
-            $(BASE_DIR)/ftstream.c \
-            $(BASE_DIR)/fttrigon.c \
-            $(BASE_DIR)/ftutil.c
-
-
-ifneq ($(ftmac_c),)
-  BASE_SRC += $(BASE_DIR)/$(ftmac_c)
-endif
-
-# for simplicity, we also handle `md5.c' (which gets included by `ftobjs.h')
-BASE_H := $(BASE_DIR)/ftbase.h \
-          $(BASE_DIR)/md5.c    \
-          $(BASE_DIR)/md5.h
-
-# Base layer `extensions' sources
-#
-# An extension is added to the library file as a separate object.  It is
-# then linked to the final executable only if one of its symbols is used by
-# the application.
-#
-BASE_EXT_SRC := $(patsubst %,$(BASE_DIR)/%,$(BASE_EXTENSIONS))
-
-# Default extensions objects
-#
-BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_DIR)/%.c=$(OBJ_DIR)/%.$O)
-
-
-# Base layer object(s)
-#
-#   BASE_OBJ_M is used during `multi' builds (each base source file compiles
-#   to a single object file).
-#
-#   BASE_OBJ_S is used during `single' builds (the whole base layer is
-#   compiled as a single object file using ftbase.c).
-#
-BASE_OBJ_M := $(BASE_SRC:$(BASE_DIR)/%.c=$(OBJ_DIR)/%.$O)
-BASE_OBJ_S := $(OBJ_DIR)/ftbase.$O
-
-# Base layer root source file for single build
-#
-BASE_SRC_S := $(BASE_DIR)/ftbase.c
-
-
-# Base layer - single object build
-#
-$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H) $(BASE_H)
-	$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BASE_SRC_S))
-
-
-# Multiple objects build + extensions
-#
-$(OBJ_DIR)/%.$O: $(BASE_DIR)/%.c $(FREETYPE_H) $(BASE_H)
-	$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/bdf/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/bdf Jamfile
-#
-# Copyright 2002 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) bdf ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = bdfdrivr bdflib ;
-  }
-  else
-  {
-    _sources = bdf ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/bdf Jamfile

+ 0 - 34
Source/ThirdParty/FreeType/src/bdf/module.mk

@@ -1,34 +0,0 @@
-#
-# FreeType 2 BDF module definition
-#
-
-# Copyright 2001, 2002, 2006 by
-# Francesco Zappa Nardelli
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-
-FTMODULE_H_COMMANDS += BDF_DRIVER
-
-define BDF_DRIVER
-$(OPEN_DRIVER) FT_Driver_ClassRec, bdf_driver_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)bdf       $(ECHO_DRIVER_DESC)bdf bitmap fonts$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 81
Source/ThirdParty/FreeType/src/bdf/rules.mk

@@ -1,81 +0,0 @@
-#
-# FreeType 2 bdf driver configuration rules
-#
-
-
-# Copyright (C) 2001, 2002, 2003, 2008 by
-# Francesco Zappa Nardelli
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-
-
-
-# bdf driver directory
-#
-BDF_DIR := $(SRC_DIR)/bdf
-
-
-BDF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(BDF_DIR))
-
-
-# bdf driver sources (i.e., C files)
-#
-BDF_DRV_SRC := $(BDF_DIR)/bdflib.c \
-               $(BDF_DIR)/bdfdrivr.c
-
-
-# bdf driver headers
-#
-BDF_DRV_H := $(BDF_DIR)/bdf.h \
-             $(BDF_DIR)/bdfdrivr.h \
-             $(BDF_DIR)/bdferror.h
-
-# bdf driver object(s)
-#
-#   BDF_DRV_OBJ_M is used during `multi' builds
-#   BDF_DRV_OBJ_S is used during `single' builds
-#
-BDF_DRV_OBJ_M := $(BDF_DRV_SRC:$(BDF_DIR)/%.c=$(OBJ_DIR)/%.$O)
-BDF_DRV_OBJ_S := $(OBJ_DIR)/bdf.$O
-
-# bdf driver source file for single build
-#
-BDF_DRV_SRC_S := $(BDF_DIR)/bdf.c
-
-
-# bdf driver - single object
-#
-$(BDF_DRV_OBJ_S): $(BDF_DRV_SRC_S) $(BDF_DRV_SRC) $(FREETYPE_H) $(BDF_DRV_H)
-	$(BDF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BDF_DRV_SRC_S))
-
-
-# bdf driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(BDF_DIR)/%.c $(FREETYPE_H) $(BDF_DRV_H)
-	$(BDF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(BDF_DRV_OBJ_S)
-DRV_OBJS_M += $(BDF_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 19
Source/ThirdParty/FreeType/src/bzip2/Jamfile

@@ -1,19 +0,0 @@
-# FreeType 2 src/bzip2 Jamfile
-#
-# Copyright 2010 by
-# Joel Klinghed
-#
-# Based on src/lzw/Jamfile, Copyright 2004, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) bzip2 ;
-
-Library  $(FT2_LIB) : ftbzip2.c ;
-
-# end of src/bzip2 Jamfile

+ 0 - 63
Source/ThirdParty/FreeType/src/bzip2/rules.mk

@@ -1,63 +0,0 @@
-#
-# FreeType 2 BZIP2 support configuration rules
-#
-
-# Copyright 2010 by
-# Joel Klinghed.
-#
-# Based on src/lzw/rules.mk, Copyright 2004-2006 by
-# Albert Chin-A-Young.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# BZIP2 driver directory
-#
-BZIP2_DIR := $(SRC_DIR)/bzip2
-
-
-# compilation flags for the driver
-#
-BZIP2_COMPILE := $(FT_COMPILE)
-
-
-# BZIP2 support sources (i.e., C files)
-#
-BZIP2_DRV_SRC := $(BZIP2_DIR)/ftbzip2.c
-
-# BZIP2 driver object(s)
-#
-#   BZIP2_DRV_OBJ_M is used during `multi' builds
-#   BZIP2_DRV_OBJ_S is used during `single' builds
-#
-BZIP2_DRV_OBJ_M := $(OBJ_DIR)/ftbzip2.$O
-BZIP2_DRV_OBJ_S := $(OBJ_DIR)/ftbzip2.$O
-
-# BZIP2 support source file for single build
-#
-BZIP2_DRV_SRC_S := $(BZIP2_DIR)/ftbzip2.c
-
-
-# BZIP2 support - single object
-#
-$(BZIP2_DRV_OBJ_S): $(BZIP2_DRV_SRC_S) $(BZIP2_DRV_SRC) $(FREETYPE_H) $(BZIP2_DRV_H)
-	$(BZIP2_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BZIP2_DRV_SRC_S))
-
-
-# BZIP2 support - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(BZIP2_DIR)/%.c $(FREETYPE_H) $(BZIP2_DRV_H)
-	$(BZIP2_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(BZIP2_DRV_OBJ_S)
-DRV_OBJS_M += $(BZIP2_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 43
Source/ThirdParty/FreeType/src/cache/Jamfile

@@ -1,43 +0,0 @@
-# FreeType 2 src/cache Jamfile
-#
-# Copyright 2001, 2003, 2004 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) cache ;
-
-# The file <freetype/ftcache.h> contains some macro definitions that are
-# later used in #include statements related to the cache sub-system.  It
-# needs to be parsed through a HDRMACRO rule for macro definitions.
-#
-HDRMACRO  [ FT2_SubDir  include ftcache.h ] ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = ftcmru
-               ftcmanag
-               ftccache
-               ftcglyph
-               ftcsbits
-               ftcimage
-               ftcbasic
-               ftccmap
-               ;
-  }
-  else
-  {
-    _sources = ftcache ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/cache Jamfile

+ 0 - 80
Source/ThirdParty/FreeType/src/cache/rules.mk

@@ -1,80 +0,0 @@
-#
-# FreeType 2 Cache configuration rules
-#
-
-
-# Copyright 2000, 2001, 2003, 2004, 2006, 2008 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# Cache driver directory
-#
-CACHE_DIR   := $(SRC_DIR)/cache
-
-# compilation flags for the driver
-#
-CACHE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CACHE_DIR))
-
-
-# Cache driver sources (i.e., C files)
-#
-CACHE_DRV_SRC := $(CACHE_DIR)/ftcbasic.c \
-                 $(CACHE_DIR)/ftccache.c \
-                 $(CACHE_DIR)/ftccmap.c  \
-                 $(CACHE_DIR)/ftcglyph.c \
-                 $(CACHE_DIR)/ftcimage.c \
-                 $(CACHE_DIR)/ftcmanag.c \
-                 $(CACHE_DIR)/ftcmru.c   \
-                 $(CACHE_DIR)/ftcsbits.c
-
-# Cache driver headers
-#
-CACHE_DRV_H := $(CACHE_DIR)/ftccache.h \
-               $(CACHE_DIR)/ftccback.h \
-               $(CACHE_DIR)/ftcerror.h \
-               $(CACHE_DIR)/ftcglyph.h \
-               $(CACHE_DIR)/ftcimage.h \
-               $(CACHE_DIR)/ftcmanag.h \
-               $(CACHE_DIR)/ftcmru.h   \
-               $(CACHE_DIR)/ftcsbits.h
-
-
-# Cache driver object(s)
-#
-#   CACHE_DRV_OBJ_M is used during `multi' builds.
-#   CACHE_DRV_OBJ_S is used during `single' builds.
-#
-CACHE_DRV_OBJ_M := $(CACHE_DRV_SRC:$(CACHE_DIR)/%.c=$(OBJ_DIR)/%.$O)
-CACHE_DRV_OBJ_S := $(OBJ_DIR)/ftcache.$O
-
-# Cache driver source file for single build
-#
-CACHE_DRV_SRC_S := $(CACHE_DIR)/ftcache.c
-
-
-# Cache driver - single object
-#
-$(CACHE_DRV_OBJ_S): $(CACHE_DRV_SRC_S) $(CACHE_DRV_SRC) \
-                   $(FREETYPE_H) $(CACHE_DRV_H)
-	$(CACHE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CACHE_DRV_SRC_S))
-
-
-# Cache driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(CACHE_DIR)/%.c $(FREETYPE_H) $(CACHE_DRV_H)
-	$(CACHE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(CACHE_DRV_OBJ_S)
-DRV_OBJS_M += $(CACHE_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/cff/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/cff Jamfile
-#
-# Copyright 2001, 2002 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) cff ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = cffdrivr cffgload cffload cffobjs cffparse cffcmap cffpic ;
-  }
-  else
-  {
-    _sources = cff ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/cff Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/cff/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 CFF module definition
-#
-
-
-# Copyright 1996-2000, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += CFF_DRIVER
-
-define CFF_DRIVER
-$(OPEN_DRIVER) FT_Driver_ClassRec, cff_driver_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)cff       $(ECHO_DRIVER_DESC)OpenType fonts with extension *.otf$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 86
Source/ThirdParty/FreeType/src/cff/rules.mk

@@ -1,86 +0,0 @@
-#
-# FreeType 2 OpenType/CFF driver configuration rules
-#
-
-
-# Copyright 1996-2001, 2003, 2011, 2013 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# OpenType driver directory
-#
-CFF_DIR := $(SRC_DIR)/cff
-
-
-CFF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CFF_DIR))
-
-
-# CFF driver sources (i.e., C files)
-#
-CFF_DRV_SRC := $(CFF_DIR)/cffcmap.c  \
-               $(CFF_DIR)/cffdrivr.c \
-               $(CFF_DIR)/cffgload.c \
-               $(CFF_DIR)/cffload.c  \
-               $(CFF_DIR)/cffobjs.c  \
-               $(CFF_DIR)/cffparse.c \
-               $(CFF_DIR)/cffpic.c   \
-               $(CFF_DIR)/cf2arrst.c \
-               $(CFF_DIR)/cf2blues.c \
-               $(CFF_DIR)/cf2error.c \
-               $(CFF_DIR)/cf2font.c  \
-               $(CFF_DIR)/cf2ft.c    \
-               $(CFF_DIR)/cf2hints.c \
-               $(CFF_DIR)/cf2intrp.c \
-               $(CFF_DIR)/cf2read.c  \
-               $(CFF_DIR)/cf2stack.c
-
-
-# CFF driver headers
-#
-CFF_DRV_H := $(CFF_DRV_SRC:%.c=%.h) \
-             $(CFF_DIR)/cfferrs.h   \
-             $(CFF_DIR)/cfftoken.h  \
-             $(CFF_DIR)/cfftypes.h  \
-             $(CFF_DIR)/cf2fixed.h  \
-             $(CFF_DIR)/cf2glue.h   \
-             $(CFF_DIR)/cf2types.h
-
-
-# CFF driver object(s)
-#
-#   CFF_DRV_OBJ_M is used during `multi' builds
-#   CFF_DRV_OBJ_S is used during `single' builds
-#
-CFF_DRV_OBJ_M := $(CFF_DRV_SRC:$(CFF_DIR)/%.c=$(OBJ_DIR)/%.$O)
-CFF_DRV_OBJ_S := $(OBJ_DIR)/cff.$O
-
-# CFF driver source file for single build
-#
-CFF_DRV_SRC_S := $(CFF_DIR)/cff.c
-
-
-# CFF driver - single object
-#
-$(CFF_DRV_OBJ_S): $(CFF_DRV_SRC_S) $(CFF_DRV_SRC) $(FREETYPE_H) $(CFF_DRV_H)
-	$(CFF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CFF_DRV_SRC_S))
-
-
-# CFF driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(CFF_DIR)/%.c $(FREETYPE_H) $(CFF_DRV_H)
-	$(CFF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(CFF_DRV_OBJ_S)
-DRV_OBJS_M += $(CFF_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/cid/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/cid Jamfile
-#
-# Copyright 2001 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) cid ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = cidobjs cidload cidgload cidriver cidparse ;
-  }
-  else
-  {
-    _sources = type1cid ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/cid Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/cid/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 CID module definition
-#
-
-
-# Copyright 1996-2000, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += TYPE1CID_DRIVER
-
-define TYPE1CID_DRIVER
-$(OPEN_DRIVER) FT_Driver_ClassRec, t1cid_driver_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)cid       $(ECHO_DRIVER_DESC)Postscript CID-keyed fonts, no known extension$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 70
Source/ThirdParty/FreeType/src/cid/rules.mk

@@ -1,70 +0,0 @@
-#
-# FreeType 2 CID driver configuration rules
-#
-
-
-# Copyright 1996-2000, 2001, 2003 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# CID driver directory
-#
-CID_DIR := $(SRC_DIR)/cid
-
-
-CID_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CID_DIR))
-
-
-# CID driver sources (i.e., C files)
-#
-CID_DRV_SRC := $(CID_DIR)/cidparse.c \
-               $(CID_DIR)/cidload.c  \
-               $(CID_DIR)/cidriver.c \
-               $(CID_DIR)/cidgload.c \
-               $(CID_DIR)/cidobjs.c
-
-# CID driver headers
-#
-CID_DRV_H := $(CID_DRV_SRC:%.c=%.h) \
-             $(CID_DIR)/cidtoken.h  \
-             $(CID_DIR)/ciderrs.h
-
-
-# CID driver object(s)
-#
-#   CID_DRV_OBJ_M is used during `multi' builds
-#   CID_DRV_OBJ_S is used during `single' builds
-#
-CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR)/%.c=$(OBJ_DIR)/%.$O)
-CID_DRV_OBJ_S := $(OBJ_DIR)/type1cid.$O
-
-# CID driver source file for single build
-#
-CID_DRV_SRC_S := $(CID_DIR)/type1cid.c
-
-
-# CID driver - single object
-#
-$(CID_DRV_OBJ_S): $(CID_DRV_SRC_S) $(CID_DRV_SRC) $(FREETYPE_H) $(CID_DRV_H)
-	$(CID_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CID_DRV_SRC_S))
-
-
-# CID driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(CID_DIR)/%.c $(FREETYPE_H) $(CID_DRV_H)
-	$(CID_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(CID_DRV_OBJ_S)
-DRV_OBJS_M += $(CID_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 33
Source/ThirdParty/FreeType/src/gxvalid/Jamfile

@@ -1,33 +0,0 @@
-# FreeType 2 src/gxvalid Jamfile
-#
-# Copyright 2005 by
-# suzuki toshiya, Masatake YAMATO and Red Hat K.K.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) gxvalid ;
-
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = gxvcommn gxvfeat  gxvbsln  gxvtrak  gxvopbd  gxvprop
-               gxvmort  gxvmort0 gxvmort1 gxvmort2 gxvmort4 gxvmort5
-               gxvmorx  gxvmorx0 gxvmorx1 gxvmorx2 gxvmorx4 gxvmorx5
-               gxvlcar  gxvkern  gxvmod   gxvjust  ;
-  }
-  else
-  {
-    _sources = gxvalid ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/gxvalid Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/gxvalid/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 gxvalid module definition
-#
-
-# Copyright 2004, 2005, 2006
-#   by suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
-#   David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += GXVALID_MODULE
-
-define GXVALID_MODULE
-$(OPEN_DRIVER) FT_Module_Class, gxv_module_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)gxvalid   $(ECHO_DRIVER_DESC)TrueTypeGX/AAT validation module$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 94
Source/ThirdParty/FreeType/src/gxvalid/rules.mk

@@ -1,94 +0,0 @@
-#
-# FreeType 2 TrueTypeGX/AAT validation driver configuration rules
-#
-
-
-# Copyright 2004, 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# GXV driver directory
-#
-GXV_DIR := $(SRC_DIR)/gxvalid
-
-
-# compilation flags for the driver
-#
-GXV_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(GXV_DIR))
-
-
-# GXV driver sources (i.e., C files)
-#
-GXV_DRV_SRC := $(GXV_DIR)/gxvcommn.c \
-               $(GXV_DIR)/gxvfeat.c  \
-               $(GXV_DIR)/gxvbsln.c  \
-               $(GXV_DIR)/gxvtrak.c  \
-               $(GXV_DIR)/gxvopbd.c  \
-               $(GXV_DIR)/gxvprop.c  \
-               $(GXV_DIR)/gxvjust.c  \
-               $(GXV_DIR)/gxvmort.c  \
-               $(GXV_DIR)/gxvmort0.c \
-               $(GXV_DIR)/gxvmort1.c \
-               $(GXV_DIR)/gxvmort2.c \
-               $(GXV_DIR)/gxvmort4.c \
-               $(GXV_DIR)/gxvmort5.c \
-               $(GXV_DIR)/gxvmorx.c  \
-               $(GXV_DIR)/gxvmorx0.c \
-               $(GXV_DIR)/gxvmorx1.c \
-               $(GXV_DIR)/gxvmorx2.c \
-               $(GXV_DIR)/gxvmorx4.c \
-               $(GXV_DIR)/gxvmorx5.c \
-               $(GXV_DIR)/gxvlcar.c  \
-               $(GXV_DIR)/gxvkern.c  \
-               $(GXV_DIR)/gxvmod.c
-
-# GXV driver headers
-#
-GXV_DRV_H := $(GXV_DIR)/gxvalid.h  \
-             $(GXV_DIR)/gxverror.h \
-             $(GXV_DIR)/gxvcommn.h \
-             $(GXV_DIR)/gxvfeat.h  \
-             $(GXV_DIR)/gxvmod.h   \
-             $(GXV_DIR)/gxvmort.h  \
-             $(GXV_DIR)/gxvmorx.h
-
-
-# GXV driver object(s)
-#
-#   GXV_DRV_OBJ_M is used during `multi' builds.
-#   GXV_DRV_OBJ_S is used during `single' builds.
-#
-GXV_DRV_OBJ_M := $(GXV_DRV_SRC:$(GXV_DIR)/%.c=$(OBJ_DIR)/%.$O)
-GXV_DRV_OBJ_S := $(OBJ_DIR)/gxvalid.$O
-
-# GXV driver source file for single build
-#
-GXV_DRV_SRC_S := $(GXV_DIR)/gxvalid.c
-
-
-# GXV driver - single object
-#
-$(GXV_DRV_OBJ_S): $(GXV_DRV_SRC_S) $(GXV_DRV_SRC) \
-                   $(FREETYPE_H) $(GXV_DRV_H)
-	$(GXV_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(GXV_DRV_SRC_S))
-
-
-# GXV driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(GXV_DIR)/%.c $(FREETYPE_H) $(GXV_DRV_H)
-	$(GXV_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(GXV_DRV_OBJ_S)
-DRV_OBJS_M += $(GXV_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 16
Source/ThirdParty/FreeType/src/gzip/Jamfile

@@ -1,16 +0,0 @@
-# FreeType 2 src/gzip Jamfile
-#
-# Copyright 2001 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) gzip ;
-
-Library  $(FT2_LIB) : ftgzip.c ;
-
-# end of src/pcf Jamfile

+ 0 - 78
Source/ThirdParty/FreeType/src/gzip/rules.mk

@@ -1,78 +0,0 @@
-#
-# FreeType 2 GZip support configuration rules
-#
-
-
-# Copyright 2002, 2003, 2013 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# gzip driver directory
-#
-GZIP_DIR := $(SRC_DIR)/gzip
-
-
-# compilation flags for the driver
-#
-ifeq ($(SYSTEM_ZLIB),)
-  GZIP_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(GZIP_DIR))
-else
-  GZIP_COMPILE := $(FT_COMPILE)
-endif
-
-
-# gzip support sources
-#
-# All source and header files get loaded by `ftgzip.c' only if SYTEM_ZLIB is
-# not defined (regardless whether we have a `single' or a `multi' build).
-# However, it doesn't harm if we add everything as a dependency
-# unconditionally.
-#
-GZIP_DRV_SRCS := $(GZIP_DIR)/adler32.c  \
-                 $(GZIP_DIR)/infblock.c \
-                 $(GZIP_DIR)/infblock.h \
-                 $(GZIP_DIR)/infcodes.c \
-                 $(GZIP_DIR)/infcodes.h \
-                 $(GZIP_DIR)/inffixed.h \
-                 $(GZIP_DIR)/inflate.c  \
-                 $(GZIP_DIR)/inftrees.c \
-                 $(GZIP_DIR)/inftrees.h \
-                 $(GZIP_DIR)/infutil.c  \
-                 $(GZIP_DIR)/infutil.h  \
-                 $(GZIP_DIR)/zconf.h    \
-                 $(GZIP_DIR)/zlib.h     \
-                 $(GZIP_DIR)/zutil.c    \
-                 $(GZIP_DIR)/zutil.h
-
-
-# gzip driver object(s)
-#
-#   GZIP_DRV_OBJ is used during both `single' and `multi' builds
-#
-GZIP_DRV_OBJ := $(OBJ_DIR)/ftgzip.$O
-
-
-# gzip main source file
-#
-GZIP_DRV_SRC := $(GZIP_DIR)/ftgzip.c
-
-
-# gzip support - object
-#
-$(GZIP_DRV_OBJ): $(GZIP_DRV_SRC) $(GZIP_DRV_SRCS) $(FREETYPE_H)
-	$(GZIP_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(GZIP_DRV_SRC))
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(GZIP_DRV_OBJ)
-DRV_OBJS_M += $(GZIP_DRV_OBJ)
-
-
-# EOF

+ 0 - 16
Source/ThirdParty/FreeType/src/lzw/Jamfile

@@ -1,16 +0,0 @@
-# FreeType 2 src/lzw Jamfile
-#
-# Copyright 2004, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) lzw ;
-
-Library  $(FT2_LIB) : ftlzw.c ;
-
-# end of src/lzw Jamfile

+ 0 - 70
Source/ThirdParty/FreeType/src/lzw/rules.mk

@@ -1,70 +0,0 @@
-#
-# FreeType 2 LZW support configuration rules
-#
-
-
-# Copyright 2004, 2005, 2006 by
-# Albert Chin-A-Young.
-#
-# Based on src/lzw/rules.mk, Copyright 2002 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# LZW driver directory
-#
-LZW_DIR := $(SRC_DIR)/lzw
-
-
-# compilation flags for the driver
-#
-LZW_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(LZW_DIR))
-
-
-# LZW support sources (i.e., C files)
-#
-LZW_DRV_SRC := $(LZW_DIR)/ftlzw.c
-
-# LZW support headers
-#
-LZW_DRV_H := $(LZW_DIR)/ftzopen.h \
-             $(LZW_DIR)/ftzopen.c
-
-
-# LZW driver object(s)
-#
-#   LZW_DRV_OBJ_M is used during `multi' builds
-#   LZW_DRV_OBJ_S is used during `single' builds
-#
-LZW_DRV_OBJ_M := $(OBJ_DIR)/ftlzw.$O
-LZW_DRV_OBJ_S := $(OBJ_DIR)/ftlzw.$O
-
-# LZW support source file for single build
-#
-LZW_DRV_SRC_S := $(LZW_DIR)/ftlzw.c
-
-
-# LZW support - single object
-#
-$(LZW_DRV_OBJ_S): $(LZW_DRV_SRC_S) $(LZW_DRV_SRC) $(FREETYPE_H) $(LZW_DRV_H)
-	$(LZW_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(LZW_DRV_SRC_S))
-
-
-# LZW support - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(LZW_DIR)/%.c $(FREETYPE_H) $(LZW_DRV_H)
-	$(LZW_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(LZW_DRV_OBJ_S)
-DRV_OBJS_M += $(LZW_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/otvalid/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/otvalid Jamfile
-#
-# Copyright 2004 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) otvalid ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = otvbase otvcommn otvgdef otvgpos otvgsub otvjstf otvmod otvmath ;
-  }
-  else
-  {
-    _sources = otvalid ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/otvalid Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/otvalid/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 otvalid module definition
-#
-
-
-# Copyright 2004, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += OTVALID_MODULE
-
-define OTVALID_MODULE
-$(OPEN_DRIVER) FT_Module_Class, otv_module_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)otvalid   $(ECHO_DRIVER_DESC)OpenType validation module$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 78
Source/ThirdParty/FreeType/src/otvalid/rules.mk

@@ -1,78 +0,0 @@
-#
-# FreeType 2 OpenType validation driver configuration rules
-#
-
-
-# Copyright 2004, 2007 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# OTV driver directory
-#
-OTV_DIR := $(SRC_DIR)/otvalid
-
-
-# compilation flags for the driver
-#
-OTV_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(OTV_DIR))
-
-
-# OTV driver sources (i.e., C files)
-#
-OTV_DRV_SRC := $(OTV_DIR)/otvbase.c  \
-               $(OTV_DIR)/otvcommn.c \
-               $(OTV_DIR)/otvgdef.c  \
-               $(OTV_DIR)/otvgpos.c  \
-               $(OTV_DIR)/otvgsub.c  \
-               $(OTV_DIR)/otvjstf.c  \
-               $(OTV_DIR)/otvmath.c  \
-               $(OTV_DIR)/otvmod.c
-
-# OTV driver headers
-#
-OTV_DRV_H := $(OTV_DIR)/otvalid.h  \
-             $(OTV_DIR)/otvcommn.h \
-             $(OTV_DIR)/otverror.h \
-             $(OTV_DIR)/otvgpos.h  \
-             $(OTV_DIR)/otvmod.h
-
-
-# OTV driver object(s)
-#
-#   OTV_DRV_OBJ_M is used during `multi' builds.
-#   OTV_DRV_OBJ_S is used during `single' builds.
-#
-OTV_DRV_OBJ_M := $(OTV_DRV_SRC:$(OTV_DIR)/%.c=$(OBJ_DIR)/%.$O)
-OTV_DRV_OBJ_S := $(OBJ_DIR)/otvalid.$O
-
-# OTV driver source file for single build
-#
-OTV_DRV_SRC_S := $(OTV_DIR)/otvalid.c
-
-
-# OTV driver - single object
-#
-$(OTV_DRV_OBJ_S): $(OTV_DRV_SRC_S) $(OTV_DRV_SRC) \
-                   $(FREETYPE_H) $(OTV_DRV_H)
-	$(OTV_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(OTV_DRV_SRC_S))
-
-
-# OTV driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(OTV_DIR)/%.c $(FREETYPE_H) $(OTV_DRV_H)
-	$(OTV_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(OTV_DRV_OBJ_S)
-DRV_OBJS_M += $(OTV_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/pcf/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/pcf Jamfile
-#
-# Copyright 2001, 2003 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) pcf ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = pcfdrivr pcfread pcfutil ;
-  }
-  else
-  {
-    _sources = pcf ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/pcf Jamfile

+ 0 - 34
Source/ThirdParty/FreeType/src/pcf/module.mk

@@ -1,34 +0,0 @@
-#
-# FreeType 2 PCF module definition
-#
-
-# Copyright 2000, 2006 by
-# Francesco Zappa Nardelli
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-
-FTMODULE_H_COMMANDS += PCF_DRIVER
-
-define PCF_DRIVER
-$(OPEN_DRIVER) FT_Driver_ClassRec, pcf_driver_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)pcf       $(ECHO_DRIVER_DESC)pcf bitmap fonts$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 79
Source/ThirdParty/FreeType/src/pcf/rules.mk

@@ -1,79 +0,0 @@
-#
-# FreeType 2 pcf driver configuration rules
-#
-
-
-# Copyright (C) 2000, 2001, 2003, 2008 by
-# Francesco Zappa Nardelli
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-
-# pcf driver directory
-#
-PCF_DIR := $(SRC_DIR)/pcf
-
-
-PCF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PCF_DIR))
-
-
-# pcf driver sources (i.e., C files)
-#
-PCF_DRV_SRC := $(PCF_DIR)/pcfdrivr.c \
-               $(PCF_DIR)/pcfread.c  \
-               $(PCF_DIR)/pcfutil.c
-
-# pcf driver headers
-#
-PCF_DRV_H := $(PCF_DRV_SRC:%.c=%.h) \
-             $(PCF_DIR)/pcf.h       \
-             $(PCF_DIR)/pcferror.h
-
-# pcf driver object(s)
-#
-#   PCF_DRV_OBJ_M is used during `multi' builds
-#   PCF_DRV_OBJ_S is used during `single' builds
-#
-PCF_DRV_OBJ_M := $(PCF_DRV_SRC:$(PCF_DIR)/%.c=$(OBJ_DIR)/%.$O)
-PCF_DRV_OBJ_S := $(OBJ_DIR)/pcf.$O
-
-# pcf driver source file for single build
-#
-PCF_DRV_SRC_S := $(PCF_DIR)/pcf.c
-
-
-# pcf driver - single object
-#
-$(PCF_DRV_OBJ_S): $(PCF_DRV_SRC_S) $(PCF_DRV_SRC) $(FREETYPE_H) $(PCF_DRV_H)
-	$(PCF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PCF_DRV_SRC_S))
-
-
-# pcf driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(PCF_DIR)/%.c $(FREETYPE_H) $(PCF_DRV_H)
-	$(PCF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(PCF_DRV_OBJ_S)
-DRV_OBJS_M += $(PCF_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/pfr/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/pfr Jamfile
-#
-# Copyright 2002 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) pfr ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = pfrdrivr pfrgload pfrload pfrobjs pfrcmap pfrsbit ;
-  }
-  else
-  {
-    _sources = pfr ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/pfr Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/pfr/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 PFR module definition
-#
-
-
-# Copyright 2002, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += PFR_DRIVER
-
-define PFR_DRIVER
-$(OPEN_DRIVER) FT_Driver_ClassRec, pfr_driver_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)pfr       $(ECHO_DRIVER_DESC)PFR/TrueDoc font files with extension *.pfr$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 73
Source/ThirdParty/FreeType/src/pfr/rules.mk

@@ -1,73 +0,0 @@
-#
-# FreeType 2 PFR driver configuration rules
-#
-
-
-# Copyright 2002, 2003 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# pfr driver directory
-#
-PFR_DIR := $(SRC_DIR)/pfr
-
-
-# compilation flags for the driver
-#
-PFR_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PFR_DIR))
-
-
-# pfr driver sources (i.e., C files)
-#
-PFR_DRV_SRC := $(PFR_DIR)/pfrload.c  \
-               $(PFR_DIR)/pfrgload.c \
-               $(PFR_DIR)/pfrcmap.c  \
-               $(PFR_DIR)/pfrdrivr.c \
-               $(PFR_DIR)/pfrsbit.c  \
-               $(PFR_DIR)/pfrobjs.c
-
-# pfr driver headers
-#
-PFR_DRV_H := $(PFR_DRV_SRC:%.c=%.h) \
-             $(PFR_DIR)/pfrerror.h  \
-             $(PFR_DIR)/pfrtypes.h
-
-
-# Pfr driver object(s)
-#
-#   PFR_DRV_OBJ_M is used during `multi' builds
-#   PFR_DRV_OBJ_S is used during `single' builds
-#
-PFR_DRV_OBJ_M := $(PFR_DRV_SRC:$(PFR_DIR)/%.c=$(OBJ_DIR)/%.$O)
-PFR_DRV_OBJ_S := $(OBJ_DIR)/pfr.$O
-
-# pfr driver source file for single build
-#
-PFR_DRV_SRC_S := $(PFR_DIR)/pfr.c
-
-
-# pfr driver - single object
-#
-$(PFR_DRV_OBJ_S): $(PFR_DRV_SRC_S) $(PFR_DRV_SRC) $(FREETYPE_H) $(PFR_DRV_H)
-	$(PFR_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PFR_DRV_SRC_S))
-
-
-# pfr driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(PFR_DIR)/%.c $(FREETYPE_H) $(PFR_DRV_H)
-	$(PFR_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(PFR_DRV_OBJ_S)
-DRV_OBJS_M += $(PFR_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 31
Source/ThirdParty/FreeType/src/psaux/Jamfile

@@ -1,31 +0,0 @@
-# FreeType 2 src/psaux Jamfile
-#
-# Copyright 2001, 2002 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) psaux ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = psauxmod psobjs   t1decode t1cmap
-               psconv   afmparse
-               ;
-  }
-  else
-  {
-    _sources = psaux ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/psaux Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/psaux/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 PSaux module definition
-#
-
-
-# Copyright 1996-2000, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += PSAUX_MODULE
-
-define PSAUX_MODULE
-$(OPEN_DRIVER) FT_Module_Class, psaux_module_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)psaux     $(ECHO_DRIVER_DESC)Postscript Type 1 & Type 2 helper module$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 73
Source/ThirdParty/FreeType/src/psaux/rules.mk

@@ -1,73 +0,0 @@
-#
-# FreeType 2 PSaux driver configuration rules
-#
-
-
-# Copyright 1996-2000, 2002, 2003, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# PSAUX driver directory
-#
-PSAUX_DIR := $(SRC_DIR)/psaux
-
-
-# compilation flags for the driver
-#
-PSAUX_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSAUX_DIR))
-
-
-# PSAUX driver sources (i.e., C files)
-#
-PSAUX_DRV_SRC := $(PSAUX_DIR)/psobjs.c   \
-                 $(PSAUX_DIR)/t1decode.c \
-                 $(PSAUX_DIR)/t1cmap.c   \
-                 $(PSAUX_DIR)/afmparse.c \
-                 $(PSAUX_DIR)/psconv.c   \
-                 $(PSAUX_DIR)/psauxmod.c
-
-# PSAUX driver headers
-#
-PSAUX_DRV_H := $(PSAUX_DRV_SRC:%c=%h)  \
-               $(PSAUX_DIR)/psauxerr.h
-
-
-# PSAUX driver object(s)
-#
-#   PSAUX_DRV_OBJ_M is used during `multi' builds.
-#   PSAUX_DRV_OBJ_S is used during `single' builds.
-#
-PSAUX_DRV_OBJ_M := $(PSAUX_DRV_SRC:$(PSAUX_DIR)/%.c=$(OBJ_DIR)/%.$O)
-PSAUX_DRV_OBJ_S := $(OBJ_DIR)/psaux.$O
-
-# PSAUX driver source file for single build
-#
-PSAUX_DRV_SRC_S := $(PSAUX_DIR)/psaux.c
-
-
-# PSAUX driver - single object
-#
-$(PSAUX_DRV_OBJ_S): $(PSAUX_DRV_SRC_S) $(PSAUX_DRV_SRC) \
-                   $(FREETYPE_H) $(PSAUX_DRV_H)
-	$(PSAUX_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSAUX_DRV_SRC_S))
-
-
-# PSAUX driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(PSAUX_DIR)/%.c $(FREETYPE_H) $(PSAUX_DRV_H)
-	$(PSAUX_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(PSAUX_DRV_OBJ_S)
-DRV_OBJS_M += $(PSAUX_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/pshinter/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/pshinter Jamfile
-#
-# Copyright 2001, 2003 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) pshinter ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = pshrec pshglob pshalgo pshmod pshpic ;
-  }
-  else
-  {
-    _sources = pshinter ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/pshinter Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/pshinter/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 PSHinter module definition
-#
-
-
-# Copyright 1996-2001, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += PSHINTER_MODULE
-
-define PSHINTER_MODULE
-$(OPEN_DRIVER) FT_Module_Class, pshinter_module_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)pshinter  $(ECHO_DRIVER_DESC)Postscript hinter module$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 73
Source/ThirdParty/FreeType/src/pshinter/rules.mk

@@ -1,73 +0,0 @@
-#
-# FreeType 2 PSHinter driver configuration rules
-#
-
-
-# Copyright 2001, 2003, 2011 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# PSHINTER driver directory
-#
-PSHINTER_DIR := $(SRC_DIR)/pshinter
-
-
-# compilation flags for the driver
-#
-PSHINTER_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSHINTER_DIR))
-
-
-# PSHINTER driver sources (i.e., C files)
-#
-PSHINTER_DRV_SRC := $(PSHINTER_DIR)/pshalgo.c \
-                    $(PSHINTER_DIR)/pshglob.c \
-                    $(PSHINTER_DIR)/pshmod.c  \
-                    $(PSHINTER_DIR)/pshpic.c  \
-                    $(PSHINTER_DIR)/pshrec.c
-
-
-# PSHINTER driver headers
-#
-PSHINTER_DRV_H := $(PSHINTER_DRV_SRC:%c=%h) \
-                  $(PSHINTER_DIR)/pshnterr.h
-
-
-# PSHINTER driver object(s)
-#
-#   PSHINTER_DRV_OBJ_M is used during `multi' builds.
-#   PSHINTER_DRV_OBJ_S is used during `single' builds.
-#
-PSHINTER_DRV_OBJ_M := $(PSHINTER_DRV_SRC:$(PSHINTER_DIR)/%.c=$(OBJ_DIR)/%.$O)
-PSHINTER_DRV_OBJ_S := $(OBJ_DIR)/pshinter.$O
-
-# PSHINTER driver source file for single build
-#
-PSHINTER_DRV_SRC_S := $(PSHINTER_DIR)/pshinter.c
-
-
-# PSHINTER driver - single object
-#
-$(PSHINTER_DRV_OBJ_S): $(PSHINTER_DRV_SRC_S) $(PSHINTER_DRV_SRC) \
-                       $(FREETYPE_H) $(PSHINTER_DRV_H)
-	$(PSHINTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSHINTER_DRV_SRC_S))
-
-
-# PSHINTER driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(PSHINTER_DIR)/%.c $(FREETYPE_H) $(PSHINTER_DRV_H)
-	$(PSHINTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(PSHINTER_DRV_OBJ_S)
-DRV_OBJS_M += $(PSHINTER_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/psnames/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/psnames Jamfile
-#
-# Copyright 2001 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) psnames ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = psmodule pspic ;
-  }
-  else
-  {
-    _sources = psnames ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/psnames Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/psnames/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 PSnames module definition
-#
-
-
-# Copyright 1996-2000, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += PSNAMES_MODULE
-
-define PSNAMES_MODULE
-$(OPEN_DRIVER) FT_Module_Class, psnames_module_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)psnames   $(ECHO_DRIVER_DESC)Postscript & Unicode Glyph name handling$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 71
Source/ThirdParty/FreeType/src/psnames/rules.mk

@@ -1,71 +0,0 @@
-#
-# FreeType 2 PSNames driver configuration rules
-#
-
-
-# Copyright 1996-2000, 2001, 2003, 2011 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# PSNames driver directory
-#
-PSNAMES_DIR := $(SRC_DIR)/psnames
-
-
-# compilation flags for the driver
-#
-PSNAMES_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSNAMES_DIR))
-
-
-# PSNames driver sources (i.e., C files)
-#
-PSNAMES_DRV_SRC := $(PSNAMES_DIR)/psmodule.c \
-                   $(PSNAMES_DIR)/pspic.c
-
-
-# PSNames driver headers
-#
-PSNAMES_DRV_H := $(PSNAMES_DRV_SRC:%.c=%.h) \
-                 $(PSNAMES_DIR)/psnamerr.h  \
-                 $(PSNAMES_DIR)/pstables.h
-
-
-# PSNames driver object(s)
-#
-#   PSNAMES_DRV_OBJ_M is used during `multi' builds
-#   PSNAMES_DRV_OBJ_S is used during `single' builds
-#
-PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR)/%.c=$(OBJ_DIR)/%.$O)
-PSNAMES_DRV_OBJ_S := $(OBJ_DIR)/psnames.$O
-
-# PSNames driver source file for single build
-#
-PSNAMES_DRV_SRC_S := $(PSNAMES_DIR)/psmodule.c
-
-
-# PSNames driver - single object
-#
-$(PSNAMES_DRV_OBJ_S): $(PSNAMES_DRV_SRC_S) $(PSNAMES_DRV_SRC) \
-                      $(FREETYPE_H) $(PSNAMES_DRV_H)
-	$(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSNAMES_DRV_SRC_S))
-
-
-# PSNames driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(PSNAMES_DIR)/%.c $(FREETYPE_H) $(PSNAMES_DRV_H)
-	$(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(PSNAMES_DRV_OBJ_S)
-DRV_OBJS_M += $(PSNAMES_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/raster/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/raster Jamfile
-#
-# Copyright 2001 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) raster ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = ftraster ftrend1 rastpic ;
-  }
-  else
-  {
-    _sources = raster ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/raster Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/raster/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 renderer module definition
-#
-
-
-# Copyright 1996-2000, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += RASTER_MODULE
-
-define RASTER_MODULE
-$(OPEN_DRIVER) FT_Renderer_Class, ft_raster1_renderer_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)raster    $(ECHO_DRIVER_DESC)monochrome bitmap renderer$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 70
Source/ThirdParty/FreeType/src/raster/rules.mk

@@ -1,70 +0,0 @@
-#
-# FreeType 2 renderer module build rules
-#
-
-
-# Copyright 1996-2000, 2001, 2003, 2008, 2009, 2011 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# raster driver directory
-#
-RASTER_DIR := $(SRC_DIR)/raster
-
-# compilation flags for the driver
-#
-RASTER_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(RASTER_DIR))
-
-
-# raster driver sources (i.e., C files)
-#
-RASTER_DRV_SRC := $(RASTER_DIR)/ftraster.c \
-                  $(RASTER_DIR)/ftrend1.c  \
-                  $(RASTER_DIR)/rastpic.c
-
-
-# raster driver headers
-#
-RASTER_DRV_H := $(RASTER_DRV_SRC:%.c=%.h) \
-                $(RASTER_DIR)/rasterrs.h
-
-
-# raster driver object(s)
-#
-#   RASTER_DRV_OBJ_M is used during `multi' builds.
-#   RASTER_DRV_OBJ_S is used during `single' builds.
-#
-RASTER_DRV_OBJ_M := $(RASTER_DRV_SRC:$(RASTER_DIR)/%.c=$(OBJ_DIR)/%.$O)
-RASTER_DRV_OBJ_S := $(OBJ_DIR)/raster.$O
-
-# raster driver source file for single build
-#
-RASTER_DRV_SRC_S := $(RASTER_DIR)/raster.c
-
-
-# raster driver - single object
-#
-$(RASTER_DRV_OBJ_S): $(RASTER_DRV_SRC_S) $(RASTER_DRV_SRC) \
-                     $(FREETYPE_H) $(RASTER_DRV_H)
-	$(RASTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(RASTER_DRV_SRC_S))
-
-
-# raster driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(RASTER_DIR)/%.c $(FREETYPE_H) $(RASTER_DRV_H)
-	$(RASTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(RASTER_DRV_OBJ_S)
-DRV_OBJS_M += $(RASTER_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/sfnt/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/sfnt Jamfile
-#
-# Copyright 2001, 2002, 2004, 2005 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) sfnt ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = sfobjs sfdriver ttcmap ttmtx ttpost ttload ttsbit ttkern ttbdf sfntpic ;
-  }
-  else
-  {
-    _sources = sfnt ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/sfnt Jamfile

+ 0 - 23
Source/ThirdParty/FreeType/src/sfnt/module.mk

@@ -1,23 +0,0 @@
-#
-# FreeType 2 SFNT module definition
-#
-
-
-# Copyright 1996-2000, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += SFNT_MODULE
-
-define SFNT_MODULE
-$(OPEN_DRIVER) FT_Module_Class, sfnt_module_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)sfnt      $(ECHO_DRIVER_DESC)helper module for TrueType & OpenType formats$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 78
Source/ThirdParty/FreeType/src/sfnt/rules.mk

@@ -1,78 +0,0 @@
-#
-# FreeType 2 SFNT driver configuration rules
-#
-
-
-# Copyright 1996-2000, 2002-2007, 2009, 2011, 2013 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# SFNT driver directory
-#
-SFNT_DIR := $(SRC_DIR)/sfnt
-
-
-# compilation flags for the driver
-#
-SFNT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SFNT_DIR))
-
-
-# SFNT driver sources (i.e., C files)
-#
-SFNT_DRV_SRC := $(SFNT_DIR)/ttload.c   \
-                $(SFNT_DIR)/ttmtx.c    \
-                $(SFNT_DIR)/ttcmap.c   \
-                $(SFNT_DIR)/ttsbit.c   \
-                $(SFNT_DIR)/ttpost.c   \
-                $(SFNT_DIR)/ttkern.c   \
-                $(SFNT_DIR)/ttbdf.c    \
-                $(SFNT_DIR)/sfobjs.c   \
-                $(SFNT_DIR)/sfdriver.c \
-                $(SFNT_DIR)/sfntpic.c  \
-                $(SFNT_DIR)/pngshim.c
-
-# SFNT driver headers
-#
-SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h)  \
-              $(SFNT_DIR)/sferrors.h
-
-
-# SFNT driver object(s)
-#
-#   SFNT_DRV_OBJ_M is used during `multi' builds.
-#   SFNT_DRV_OBJ_S is used during `single' builds.
-#
-SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR)/%.c=$(OBJ_DIR)/%.$O)
-SFNT_DRV_OBJ_S := $(OBJ_DIR)/sfnt.$O
-
-# SFNT driver source file for single build
-#
-SFNT_DRV_SRC_S := $(SFNT_DIR)/sfnt.c
-
-
-# SFNT driver - single object
-#
-$(SFNT_DRV_OBJ_S): $(SFNT_DRV_SRC_S) $(SFNT_DRV_SRC) \
-                   $(FREETYPE_H) $(SFNT_DRV_H)
-	$(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(SFNT_DRV_SRC_S))
-
-
-# SFNT driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(SFNT_DIR)/%.c $(FREETYPE_H) $(SFNT_DRV_H)
-	$(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(SFNT_DRV_OBJ_S)
-DRV_OBJS_M += $(SFNT_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 29
Source/ThirdParty/FreeType/src/smooth/Jamfile

@@ -1,29 +0,0 @@
-# FreeType 2 src/smooth Jamfile
-#
-# Copyright 2001 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-SubDir  FT2_TOP $(FT2_SRC_DIR) smooth ;
-
-{
-  local  _sources ;
-
-  if $(FT2_MULTI)
-  {
-    _sources = ftgrays ftsmooth ftspic ;
-  }
-  else
-  {
-    _sources = smooth ;
-  }
-
-  Library  $(FT2_LIB) : $(_sources).c ;
-}
-
-# end of src/smooth Jamfile

+ 0 - 27
Source/ThirdParty/FreeType/src/smooth/module.mk

@@ -1,27 +0,0 @@
-#
-# FreeType 2 smooth renderer module definition
-#
-
-
-# Copyright 1996-2000, 2006 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-FTMODULE_H_COMMANDS += SMOOTH_RENDERER
-
-define SMOOTH_RENDERER
-$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_renderer_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)smooth    $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer$(ECHO_DRIVER_DONE)
-$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_lcd_renderer_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)smooth    $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer for LCDs$(ECHO_DRIVER_DONE)
-$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_lcdv_renderer_class $(CLOSE_DRIVER)
-$(ECHO_DRIVER)smooth    $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer for vertical LCDs$(ECHO_DRIVER_DONE)
-endef
-
-# EOF

+ 0 - 70
Source/ThirdParty/FreeType/src/smooth/rules.mk

@@ -1,70 +0,0 @@
-#
-# FreeType 2 smooth renderer module build rules
-#
-
-
-# Copyright 1996-2000, 2001, 2003, 2011 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-# smooth driver directory
-#
-SMOOTH_DIR := $(SRC_DIR)/smooth
-
-# compilation flags for the driver
-#
-SMOOTH_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SMOOTH_DIR))
-
-
-# smooth driver sources (i.e., C files)
-#
-SMOOTH_DRV_SRC := $(SMOOTH_DIR)/ftgrays.c  \
-                  $(SMOOTH_DIR)/ftsmooth.c \
-                  $(SMOOTH_DIR)/ftspic.c
-
-
-# smooth driver headers
-#
-SMOOTH_DRV_H := $(SMOOTH_DRV_SRC:%c=%h)  \
-                $(SMOOTH_DIR)/ftsmerrs.h
-
-
-# smooth driver object(s)
-#
-#   SMOOTH_DRV_OBJ_M is used during `multi' builds.
-#   SMOOTH_DRV_OBJ_S is used during `single' builds.
-#
-SMOOTH_DRV_OBJ_M := $(SMOOTH_DRV_SRC:$(SMOOTH_DIR)/%.c=$(OBJ_DIR)/%.$O)
-SMOOTH_DRV_OBJ_S := $(OBJ_DIR)/smooth.$O
-
-# smooth driver source file for single build
-#
-SMOOTH_DRV_SRC_S := $(SMOOTH_DIR)/smooth.c
-
-
-# smooth driver - single object
-#
-$(SMOOTH_DRV_OBJ_S): $(SMOOTH_DRV_SRC_S) $(SMOOTH_DRV_SRC) \
-                     $(FREETYPE_H) $(SMOOTH_DRV_H)
-	$(SMOOTH_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(SMOOTH_DRV_SRC_S))
-
-
-# smooth driver - multiple objects
-#
-$(OBJ_DIR)/%.$O: $(SMOOTH_DIR)/%.c $(FREETYPE_H) $(SMOOTH_DRV_H)
-	$(SMOOTH_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
-
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(SMOOTH_DRV_OBJ_S)
-DRV_OBJS_M += $(SMOOTH_DRV_OBJ_M)
-
-
-# EOF

+ 0 - 5
Source/ThirdParty/FreeType/src/tools/Jamfile

@@ -1,5 +0,0 @@
-# Jamfile for src/tools
-#
-SubDir FT2_TOP src tools ;
-
-Main  apinames : apinames.c ;

+ 0 - 542
Source/ThirdParty/FreeType/src/tools/afblue.pl

@@ -1,542 +0,0 @@
-#! /usr/bin/perl -w
-# -*- Perl -*-
-#
-# afblue.pl
-#
-# Process a blue zone character data file.
-#
-# Copyright 2013 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# license, LICENSE.TXT.  By continuing to use, modify, or distribute
-# this file you indicate that you have read the license and
-# understand and accept it fully.
-
-use strict;
-use warnings;
-use English '-no_match_vars';
-use open ':std', ':locale';
-
-
-my $prog = $PROGRAM_NAME;
-$prog =~ s| .* / ||x;      # Remove path.
-
-die "usage: $prog datafile < infile > outfile\n" if $#ARGV != 0;
-
-
-my $datafile = $ARGV[0];
-
-my %diversions;        # The extracted and massaged data from `datafile'.
-my @else_stack;        # Booleans to track else-clauses.
-my @name_stack;        # Stack of integers used for names of aux. variables.
-
-my $curr_enum;         # Name of the current enumeration.
-my $curr_array;        # Name of the current array.
-my $curr_max;          # Name of the current maximum value.
-
-my $curr_enum_element; # Name of the current enumeration element.
-my $curr_offset;       # The offset relative to current aux. variable.
-my $curr_elem_size;    # The size of the current string or block.
-
-my $have_sections = 0; # Boolean; set if start of a section has been seen.
-my $have_strings;      # Boolean; set if current section contains strings.
-my $have_blocks;       # Boolean; set if current section contains blocks.
-
-my $have_enum_element; # Boolean; set if we have an enumeration element.
-my $in_string;         # Boolean; set if a string has been parsed.
-
-my $num_sections = 0;  # Number of sections seen so far.
-
-my $last_aux;          # Name of last auxiliary variable.
-
-
-# Regular expressions.
-
-# [<ws>] <enum_name> <ws> <array_name> <ws> <max_name> [<ws>] ':' [<ws>] '\n'
-my $section_re = qr/ ^ \s* (\S+) \s+ (\S+) \s+ (\S+) \s* : \s* $ /x;
-
-# [<ws>] <enum_element_name> [<ws>] '\n'
-my $enum_element_re = qr/ ^ \s* ( [A-Za-z0-9_]+ ) \s* $ /x;
-
-# '#' <preprocessor directive> '\n'
-my $preprocessor_re = qr/ ^ \# /x;
-
-# '/' '/' <comment> '\n'
-my $comment_re = qr| ^ // |x;
-
-# empty line
-my $whitespace_only_re = qr/ ^ \s* $ /x;
-
-# [<ws>] '"' <string> '"' [<ws>] '\n'  (<string> doesn't contain newlines)
-my $string_re = qr/ ^ \s*
-                       " ( (?: [^"\\]++ | \\. )*+ ) "
-                       \s* $ /x;
-
-# [<ws>] '{' <block> '}' [<ws>] '\n'  (<block> can contain newlines)
-my $block_start_re = qr/ ^ \s* \{ /x;
-
-# We need the capturing group for `split' to make it return the separator
-# tokens (i.e., the opening and closing brace) also.
-my $brace_re = qr/ ( [{}] ) /x;
-
-
-sub Warn
-{
-  my $message = shift;
-  warn "$datafile:$INPUT_LINE_NUMBER: warning: $message\n";
-}
-
-
-sub Die
-{
-  my $message = shift;
-  die "$datafile:$INPUT_LINE_NUMBER: error: $message\n";
-}
-
-
-my $warned_before = 0;
-
-sub warn_before
-{
-  Warn("data before first section gets ignored") unless $warned_before;
-  $warned_before = 1;
-}
-
-
-sub strip_newline
-{
-  chomp;
-  s/ \x0D $ //x;
-}
-
-
-sub end_curr_string
-{
-  # Append final null byte to string.
-  if ($have_strings)
-  {
-    push @{$diversions{$curr_array}}, "    '\\0',\n" if $in_string;
-
-    $curr_offset++;
-    $in_string = 0;
-  }
-}
-
-
-sub update_max_elem_size
-{
-  if ($curr_elem_size)
-  {
-    my $max = pop @{$diversions{$curr_max}};
-    $max = $curr_elem_size if $curr_elem_size > $max;
-    push @{$diversions{$curr_max}}, $max;
-  }
-}
-
-
-sub convert_non_ascii_char
-{
-  # A UTF-8 character outside of the printable ASCII range, with possibly a
-  # leading backslash character.
-  my $s = shift;
-
-  # Here we count characters, not bytes.
-  $curr_elem_size += length $s;
-
-  utf8::encode($s);
-  $s = uc unpack 'H*', $s;
-
-  $curr_offset += $s =~ s/\G(..)/'\\x$1', /sg;
-
-  return $s;
-}
-
-
-sub convert_ascii_chars
-{
-  # A series of ASCII characters in the printable range.
-  my $s = shift;
-
-  my $count = $s =~ s/\G(.)/'$1', /g;
-  $curr_offset += $count;
-  $curr_elem_size += $count;
-
-  return $s;
-}
-
-
-sub convert_literal
-{
-  my $s = shift;
-  my $orig = $s;
-
-  # ASCII printables and space
-  my $safe_re = '\x20-\x7E';
-  # ASCII printables and space, no backslash
-  my $safe_no_backslash_re = '\x20-\x5B\x5D-\x7E';
-
-  $s =~ s{
-           (?: \\? ( [^$safe_re] )
-               | ( (?: [$safe_no_backslash_re]
-                       | \\ [$safe_re] )+ ) )
-         }
-         {
-           defined($1) ? convert_non_ascii_char($1)
-                       : convert_ascii_chars($2)
-         }egx;
-
-   # We assume that `$orig' doesn't contain `*/'
-   return $s . " /* $orig */";
-}
-
-
-sub aux_name
-{
-  return "af_blue_" . $num_sections. "_" . join('_', reverse @name_stack);
-}
-
-
-sub aux_name_next
-{
-  $name_stack[$#name_stack]++;
-  my $name = aux_name();
-  $name_stack[$#name_stack]--;
-
-  return $name;
-}
-
-
-sub enum_val_string
-{
-  # Build string which holds code to save the current offset in an
-  # enumeration element.
-  my $aux = shift;
-
-  my $add = ($last_aux eq "af_blue_" . $num_sections . "_0" )
-              ? ""
-              : "$last_aux + ";
-
-  return "    $aux = $add$curr_offset,\n";
-}
-
-
-
-# Process data file.
-
-open(DATA, $datafile) || die "$prog: can't open \`$datafile': $OS_ERROR\n";
-
-while (<DATA>)
-{
-  strip_newline();
-
-  next if /$comment_re/;
-  next if /$whitespace_only_re/;
-
-  if (/$section_re/)
-  {
-    Warn("previous section is empty") if ($have_sections
-                                          && !$have_strings
-                                          && !$have_blocks);
-
-    end_curr_string();
-    update_max_elem_size();
-
-    # Save captured groups from `section_re'.
-    $curr_enum = $1;
-    $curr_array = $2;
-    $curr_max = $3;
-
-    $curr_enum_element = "";
-    $curr_offset = 0;
-
-    Warn("overwriting already defined enumeration \`$curr_enum'")
-      if exists($diversions{$curr_enum});
-    Warn("overwriting already defined array \`$curr_array'")
-      if exists($diversions{$curr_array});
-    Warn("overwriting already defined maximum value \`$curr_max'")
-      if exists($diversions{$curr_max});
-
-    $diversions{$curr_enum} = [];
-    $diversions{$curr_array} = [];
-    $diversions{$curr_max} = [];
-
-    push @{$diversions{$curr_max}}, 0;
-
-    @name_stack = ();
-    push @name_stack, 0;
-
-    $have_sections = 1;
-    $have_strings = 0;
-    $have_blocks = 0;
-
-    $have_enum_element = 0;
-    $in_string = 0;
-
-    $num_sections++;
-    $curr_elem_size = 0;
-
-    $last_aux = aux_name();
-
-    next;
-  }
-
-  if (/$preprocessor_re/)
-  {
-    if ($have_sections)
-    {
-      # Having preprocessor conditionals complicates the computation of
-      # correct offset values.  We have to introduce auxiliary enumeration
-      # elements with the name `af_blue_<s>_<n1>_<n2>_...' which store
-      # offsets to be used in conditional clauses.  `<s>' is the number of
-      # sections seen so far, `<n1>' is the number of `#if' and `#endif'
-      # conditionals seen so far in the topmost level, `<n2>' the number of
-      # `#if' and `#endif' conditionals seen so far one level deeper, etc.
-      # As a consequence, uneven values are used within a clause, and even
-      # values after a clause, since the C standard doesn't allow the
-      # redefinition of an enumeration value.  For example, the name
-      # `af_blue_5_1_6' is used to construct enumeration values in the fifth
-      # section after the third (second-level) if-clause within the first
-      # (top-level) if-clause.  After the first top-level clause has
-      # finished, `af_blue_5_2' is used.  The current offset is then
-      # relative to the value stored in the current auxiliary element.
-
-      if (/ ^ \# \s* if /x)
-      {
-        push @else_stack, 0;
-
-        $name_stack[$#name_stack]++;
-
-        push @{$diversions{$curr_enum}}, enum_val_string(aux_name());
-        $last_aux = aux_name();
-
-        push @name_stack, 0;
-
-        $curr_offset = 0;
-      }
-      elsif (/ ^ \# \s* elif /x)
-      {
-        Die("unbalanced #elif") unless @else_stack;
-
-        pop @name_stack;
-
-        push @{$diversions{$curr_enum}}, enum_val_string(aux_name_next());
-        $last_aux = aux_name();
-
-        push @name_stack, 0;
-
-        $curr_offset = 0;
-      }
-      elsif (/ ^ \# \s* else /x)
-      {
-        my $prev_else = pop @else_stack;
-        Die("unbalanced #else") unless defined($prev_else);
-        Die("#else already seen") if $prev_else;
-        push @else_stack, 1;
-
-        pop @name_stack;
-
-        push @{$diversions{$curr_enum}}, enum_val_string(aux_name_next());
-        $last_aux = aux_name();
-
-        push @name_stack, 0;
-
-        $curr_offset = 0;
-      }
-      elsif (/ ^ \# \s* endif /x)
-      {
-        my $prev_else = pop @else_stack;
-        Die("unbalanced #endif") unless defined($prev_else);
-
-        pop @name_stack;
-        $name_stack[$#name_stack]++;
-
-        # If there is no else-clause for an if-clause, we add one.  This is
-        # necessary to have correct offsets.
-        if (!$prev_else)
-        {
-          push @{$diversions{$curr_enum}}, enum_val_string(aux_name())
-                                           . "#else\n";
-
-          $curr_offset = 0;
-        }
-
-        push @{$diversions{$curr_enum}}, enum_val_string(aux_name());
-        $last_aux = aux_name();
-
-        $curr_offset = 0;
-      }
-
-      # Handle (probably continued) preprocessor lines.
-    CONTINUED_LOOP:
-      {
-        do
-        {
-          strip_newline();
-
-          push @{$diversions{$curr_enum}}, $ARG . "\n";
-          push @{$diversions{$curr_array}}, $ARG . "\n";
-
-          last CONTINUED_LOOP unless / \\ $ /x;
-
-        } while (<DATA>);
-      }
-    }
-    else
-    {
-      warn_before();
-    }
-
-    next;
-  }
-
-  if (/$enum_element_re/)
-  {
-    end_curr_string();
-    update_max_elem_size();
-
-    $curr_enum_element = $1;
-    $have_enum_element = 1;
-    $curr_elem_size = 0;
-
-    next;
-  }
-
-  if (/$string_re/)
-  {
-    if ($have_sections)
-    {
-      Die("strings and blocks can't be mixed in a section") if $have_blocks;
-
-      # Save captured group from `string_re'.
-      my $string = $1;
-
-      if ($have_enum_element)
-      {
-        push @{$diversions{$curr_enum}}, enum_val_string($curr_enum_element);
-        $have_enum_element = 0;
-      }
-
-      $string = convert_literal($string);
-
-      push @{$diversions{$curr_array}}, "    $string\n";
-
-      $have_strings = 1;
-      $in_string = 1;
-    }
-    else
-    {
-      warn_before();
-    }
-
-    next;
-  }
-
-  if (/$block_start_re/)
-  {
-    if ($have_sections)
-    {
-      Die("strings and blocks can't be mixed in a section") if $have_strings;
-
-      my $depth = 0;
-      my $block = "";
-      my $block_end = 0;
-
-      # Count braces while getting the block.
-    BRACE_LOOP:
-      {
-        do
-        {
-          strip_newline();
-
-          foreach my $substring (split(/$brace_re/))
-          {
-            if ($block_end)
-            {
-              Die("invalid data after last matching closing brace")
-                if $substring !~ /$whitespace_only_re/;
-            }
-
-            $block .= $substring;
-
-            if ($substring eq '{')
-            {
-              $depth++;
-            }
-            elsif ($substring eq '}')
-            {
-              $depth--;
-
-              $block_end = 1 if $depth == 0;
-            }
-          }
-
-          # If we are here, we have run out of substrings, so get next line
-          # or exit.
-          last BRACE_LOOP if $block_end;
-
-          $block .= "\n";
-
-        } while (<DATA>);
-      }
-
-      if ($have_enum_element)
-      {
-        push @{$diversions{$curr_enum}}, enum_val_string($curr_enum_element);
-        $have_enum_element = 0;
-      }
-
-      push @{$diversions{$curr_array}}, $block . ",\n";
-
-      $curr_offset++;
-      $curr_elem_size++;
-
-      $have_blocks = 1;
-    }
-    else
-    {
-      warn_before();
-    }
-
-    next;
-  }
-
-  # Garbage.  We weren't able to parse the data.
-  Die("syntax error");
-}
-
-# Finalize data.
-end_curr_string();
-update_max_elem_size();
-
-
-# Filter stdin to stdout, replacing `@...@' templates.
-
-sub emit_diversion
-{
-  my $diversion_name = shift;
-  return (exists($diversions{$1})) ? "@{$diversions{$1}}"
-                                   : "@" . $diversion_name . "@";
-}
-
-
-$LIST_SEPARATOR = '';
-
-my $s1 = "This file has been generated by the Perl script \`$prog',";
-my $s1len = length $s1;
-my $s2 = "using data from file \`$datafile'.";
-my $s2len = length $s2;
-my $slen = ($s1len > $s2len) ? $s1len : $s2len;
-
-print "/* " . $s1 . " " x ($slen - $s1len) . " */\n"
-      . "/* " . $s2 . " " x ($slen - $s2len) . " */\n"
-      . "\n";
-
-while (<STDIN>)
-{
-  s/ @ ( [A-Za-z0-9_]+? ) @ / emit_diversion($1) /egx;
-  print;
-}
-
-# EOF

+ 0 - 466
Source/ThirdParty/FreeType/src/tools/apinames.c

@@ -1,466 +0,0 @@
-/*
- * This little program is used to parse the FreeType headers and
- * find the declaration of all public APIs.  This is easy, because
- * they all look like the following:
- *
- *   FT_EXPORT( return_type )
- *   function_name( function arguments );
- *
- * You must pass the list of header files as arguments.  Wildcards are
- * accepted if you are using GCC for compilation (and probably by
- * other compilers too).
- *
- * Author: David Turner, 2005, 2006, 2008-2013
- *
- * This code is explicitly placed into the public domain.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#define  PROGRAM_NAME     "apinames"
-#define  PROGRAM_VERSION  "0.2"
-
-#define  LINEBUFF_SIZE  1024
-
-typedef enum  OutputFormat_
-{
-  OUTPUT_LIST = 0,      /* output the list of names, one per line             */
-  OUTPUT_WINDOWS_DEF,   /* output a Windows .DEF file for Visual C++ or Mingw */
-  OUTPUT_BORLAND_DEF,   /* output a Windows .DEF file for Borland C++         */
-  OUTPUT_WATCOM_LBC,    /* output a Watcom Linker Command File                */
-  OUTPUT_NETWARE_IMP    /* output a NetWare ImportFile                        */
-
-} OutputFormat;
-
-
-static void
-panic( const char*  message )
-{
-  fprintf( stderr, "PANIC: %s\n", message );
-  exit(2);
-}
-
-
-typedef struct  NameRec_
-{
-  char*         name;
-  unsigned int  hash;
-
-} NameRec, *Name;
-
-static Name  the_names;
-static int   num_names;
-static int   max_names;
-
-static void
-names_add( const char*  name,
-           const char*  end )
-{
-  unsigned int  h;
-  int           nn, len;
-  Name          nm;
-
-  if ( end <= name )
-    return;
-
-  /* compute hash value */
-  len = (int)(end - name);
-  h   = 0;
-  for ( nn = 0; nn < len; nn++ )
-    h = h*33 + name[nn];
-
-  /* check for an pre-existing name */
-  for ( nn = 0; nn < num_names; nn++ )
-  {
-    nm = the_names + nn;
-
-    if ( (int)nm->hash                 == h &&
-         memcmp( name, nm->name, len ) == 0 &&
-         nm->name[len]                 == 0 )
-      return;
-  }
-
-  /* add new name */
-  if ( num_names >= max_names )
-  {
-    max_names += (max_names >> 1) + 4;
-    the_names  = (NameRec*)realloc( the_names,
-                                    sizeof ( the_names[0] ) * max_names );
-    if ( the_names == NULL )
-      panic( "not enough memory" );
-  }
-  nm = &the_names[num_names++];
-
-  nm->hash = h;
-  nm->name = (char*)malloc( len+1 );
-  if ( nm->name == NULL )
-    panic( "not enough memory" );
-
-  memcpy( nm->name, name, len );
-  nm->name[len] = 0;
-}
-
-
-static int
-name_compare( const void*  name1,
-              const void*  name2 )
-{
-  Name  n1 = (Name)name1;
-  Name  n2 = (Name)name2;
-
-  return strcmp( n1->name, n2->name );
-}
-
-static void
-names_sort( void )
-{
-  qsort( the_names, (size_t)num_names,
-         sizeof ( the_names[0] ), name_compare );
-}
-
-
-static void
-names_dump( FILE*         out,
-            OutputFormat  format,
-            const char*   dll_name )
-{
-  int  nn;
-
-
-  switch ( format )
-  {
-    case OUTPUT_WINDOWS_DEF:
-      if ( dll_name )
-        fprintf( out, "LIBRARY %s\n", dll_name );
-
-      fprintf( out, "DESCRIPTION  FreeType 2 DLL\n" );
-      fprintf( out, "EXPORTS\n" );
-      for ( nn = 0; nn < num_names; nn++ )
-        fprintf( out, "  %s\n", the_names[nn].name );
-      break;
-
-    case OUTPUT_BORLAND_DEF:
-      if ( dll_name )
-        fprintf( out, "LIBRARY %s\n", dll_name );
-
-      fprintf( out, "DESCRIPTION  FreeType 2 DLL\n" );
-      fprintf( out, "EXPORTS\n" );
-      for ( nn = 0; nn < num_names; nn++ )
-        fprintf( out, "  _%s\n", the_names[nn].name );
-      break;
-
-    case OUTPUT_WATCOM_LBC:
-      {
-        const char*  dot;
-
-
-        if ( dll_name == NULL )
-        {
-          fprintf( stderr,
-                   "you must provide a DLL name with the -d option!\n" );
-          exit( 4 );
-        }
-
-        /* we must omit the .dll suffix from the library name */
-        dot = strchr( dll_name, '.' );
-        if ( dot != NULL )
-        {
-          char  temp[512];
-          int   len = dot - dll_name;
-
-
-          if ( len > (int)( sizeof ( temp ) - 1 ) )
-            len = sizeof ( temp ) - 1;
-
-          memcpy( temp, dll_name, len );
-          temp[len] = 0;
-
-          dll_name = (const char*)temp;
-        }
-
-        for ( nn = 0; nn < num_names; nn++ )
-          fprintf( out, "++_%s.%s.%s\n", the_names[nn].name, dll_name,
-                        the_names[nn].name );
-      }
-      break;
-
-    case OUTPUT_NETWARE_IMP:
-      {
-        if ( dll_name != NULL )
-          fprintf( out, "  (%s)\n", dll_name );
-        for ( nn = 0; nn < num_names - 1; nn++ )
-          fprintf( out, "  %s,\n", the_names[nn].name );
-        fprintf( out, "  %s\n", the_names[num_names - 1].name );
-      }
-      break;
-
-    default:  /* LIST */
-      for ( nn = 0; nn < num_names; nn++ )
-        fprintf( out, "%s\n", the_names[nn].name );
-  }
-}
-
-
-
-
-/* states of the line parser */
-
-typedef enum  State_
-{
-  STATE_START = 0,  /* waiting for FT_EXPORT keyword and return type */
-  STATE_TYPE        /* type was read, waiting for function name      */
-
-} State;
-
-static int
-read_header_file( FILE*  file, int  verbose )
-{
-  static char  buff[LINEBUFF_SIZE + 1];
-  State        state = STATE_START;
-
-  while ( !feof( file ) )
-  {
-    char*  p;
-
-    if ( !fgets( buff, LINEBUFF_SIZE, file ) )
-      break;
-
-    p = buff;
-
-    while ( *p && (*p == ' ' || *p == '\\') )  /* skip leading whitespace */
-      p++;
-
-    if ( *p == '\n' || *p == '\r' )  /* skip empty lines */
-      continue;
-
-    switch ( state )
-    {
-      case STATE_START:
-        {
-          if ( memcmp( p, "FT_EXPORT(", 10 ) != 0 )
-            break;
-
-          p += 10;
-          for (;;)
-          {
-            if ( *p == 0 || *p == '\n' || *p == '\r' )
-              goto NextLine;
-
-            if ( *p == ')' )
-            {
-              p++;
-              break;
-            }
-
-            p++;
-          }
-
-          state = STATE_TYPE;
-
-         /* sometimes, the name is just after the FT_EXPORT(...), so
-          * skip whitespace, and fall-through if we find an alphanumeric
-          * character
-          */
-          while ( *p == ' ' || *p == '\t' )
-            p++;
-
-          if ( !isalpha(*p) )
-            break;
-        }
-        /* fall-through */
-
-      case STATE_TYPE:
-        {
-          char*   name = p;
-
-          while ( isalnum(*p) || *p == '_' )
-            p++;
-
-          if ( p > name )
-          {
-            if ( verbose )
-              fprintf( stderr, ">>> %.*s\n", (int)(p - name), name );
-
-            names_add( name, p );
-          }
-
-          state = STATE_START;
-        }
-        break;
-
-      default:
-        ;
-    }
-
-  NextLine:
-    ;
-  }
-
-  return 0;
-}
-
-
-static void
-usage( void )
-{
-  static const char* const  format =
-   "%s %s: extract FreeType API names from header files\n\n"
-   "this program is used to extract the list of public FreeType API\n"
-   "functions. It receives the list of header files as argument and\n"
-   "generates a sorted list of unique identifiers\n\n"
-
-   "usage: %s header1 [options] [header2 ...]\n\n"
-
-   "options:   -      : parse the content of stdin, ignore arguments\n"
-   "           -v     : verbose mode, output sent to standard error\n"
-   "           -oFILE : write output to FILE instead of standard output\n"
-   "           -dNAME : indicate DLL file name, 'freetype.dll' by default\n"
-   "           -w     : output .DEF file for Visual C++ and Mingw\n"
-   "           -wB    : output .DEF file for Borland C++\n"
-   "           -wW    : output Watcom Linker Response File\n"
-   "           -wN    : output NetWare Import File\n"
-   "\n";
-
-  fprintf( stderr,
-           format,
-           PROGRAM_NAME,
-           PROGRAM_VERSION,
-           PROGRAM_NAME
-           );
-  exit(1);
-}
-
-
-int  main( int argc, const char* const*  argv )
-{
-  int           from_stdin = 0;
-  int           verbose = 0;
-  OutputFormat  format = OUTPUT_LIST;  /* the default */
-  FILE*         out    = stdout;
-  const char*   library_name = NULL;
-
-  if ( argc < 2 )
-    usage();
-
-  /* '-' used as a single argument means read source file from stdin */
-  while ( argc > 1 && argv[1][0] == '-' )
-  {
-    const char*  arg = argv[1];
-
-    switch ( arg[1] )
-    {
-      case 'v':
-        verbose = 1;
-        break;
-
-      case 'o':
-        if ( arg[2] == 0 )
-        {
-          if ( argc < 2 )
-            usage();
-
-          arg = argv[2];
-          argv++;
-          argc--;
-        }
-        else
-          arg += 2;
-
-        out = fopen( arg, "wt" );
-        if ( out == NULL )
-        {
-          fprintf( stderr, "could not open '%s' for writing\n", argv[2] );
-          exit(3);
-        }
-        break;
-
-      case 'd':
-        if ( arg[2] == 0 )
-        {
-          if ( argc < 2 )
-            usage();
-
-          arg = argv[2];
-          argv++;
-          argc--;
-        }
-        else
-          arg += 2;
-
-        library_name = arg;
-        break;
-
-      case 'w':
-        format = OUTPUT_WINDOWS_DEF;
-        switch ( arg[2] )
-        {
-          case 'B':
-            format = OUTPUT_BORLAND_DEF;
-            break;
-
-          case 'W':
-            format = OUTPUT_WATCOM_LBC;
-            break;
-
-          case 'N':
-            format = OUTPUT_NETWARE_IMP;
-            break;
-
-          case 0:
-            break;
-
-          default:
-            usage();
-        }
-        break;
-
-      case 0:
-        from_stdin = 1;
-        break;
-
-      default:
-        usage();
-    }
-
-    argc--;
-    argv++;
-  }
-
-  if ( from_stdin )
-  {
-    read_header_file( stdin, verbose );
-  }
-  else
-  {
-    for ( --argc, argv++; argc > 0; argc--, argv++ )
-    {
-      FILE*  file = fopen( argv[0], "rb" );
-
-      if ( file == NULL )
-        fprintf( stderr, "unable to open '%s'\n", argv[0] );
-      else
-      {
-        if ( verbose )
-          fprintf( stderr, "opening '%s'\n", argv[0] );
-
-        read_header_file( file, verbose );
-        fclose( file );
-      }
-    }
-  }
-
-  if ( num_names == 0 )
-    panic( "could not find exported functions !!\n" );
-
-  names_sort();
-  names_dump( out, format, library_name );
-
-  if ( out != stdout )
-    fclose( out );
-
-  return 0;
-}

+ 0 - 114
Source/ThirdParty/FreeType/src/tools/chktrcmp.py

@@ -1,114 +0,0 @@
-#!/usr/bin/env python
-#
-# Check trace components in FreeType 2 source.
-# Author: suzuki toshiya, 2009
-#
-# This code is explicitly into the public domain.
-
-
-import sys
-import os
-import re
-
-SRC_FILE_LIST   = []
-USED_COMPONENT  = {}
-KNOWN_COMPONENT = {}
-
-SRC_FILE_DIRS   = [ "src" ]
-TRACE_DEF_FILES = [ "include/freetype/internal/fttrace.h" ]
-
-
-# --------------------------------------------------------------
-# Parse command line options
-#
-
-for i in range( 1, len( sys.argv ) ):
-  if sys.argv[i].startswith( "--help" ):
-    print "Usage: %s [option]" % sys.argv[0]
-    print "Search used-but-defined and defined-but-not-used trace_XXX macros"
-    print ""
-    print "  --help:"
-    print "        Show this help"
-    print ""
-    print "  --src-dirs=dir1:dir2:..."
-    print "        Specify the directories of C source files to be checked"
-    print "        Default is %s" % ":".join( SRC_FILE_DIRS )
-    print ""
-    print "  --def-files=file1:file2:..."
-    print "        Specify the header files including FT_TRACE_DEF()"
-    print "        Default is %s" % ":".join( TRACE_DEF_FILES )
-    print ""
-    exit(0)
-  if sys.argv[i].startswith( "--src-dirs=" ):
-    SRC_FILE_DIRS = sys.argv[i].replace( "--src-dirs=", "", 1 ).split( ":" )
-  elif sys.argv[i].startswith( "--def-files=" ):
-    TRACE_DEF_FILES = sys.argv[i].replace( "--def-files=", "", 1 ).split( ":" )
-
-
-# --------------------------------------------------------------
-# Scan C source and header files using trace macros.
-#
-
-c_pathname_pat = re.compile( '^.*\.[ch]$', re.IGNORECASE )
-trace_use_pat  = re.compile( '^[ \t]*#define[ \t]+FT_COMPONENT[ \t]+trace_' )
-
-for d in SRC_FILE_DIRS:
-  for ( p, dlst, flst ) in os.walk( d ):
-    for f in flst:
-      if c_pathname_pat.match( f ) != None:
-        src_pathname = os.path.join( p, f )
-
-        line_num = 0
-        for src_line in open( src_pathname, 'r' ):
-          line_num = line_num + 1
-          src_line = src_line.strip()
-          if trace_use_pat.match( src_line ) != None:
-            component_name = trace_use_pat.sub( '', src_line )
-            if component_name in USED_COMPONENT:
-              USED_COMPONENT[component_name].append( "%s:%d" % ( src_pathname, line_num ) )
-            else:
-              USED_COMPONENT[component_name] = [ "%s:%d" % ( src_pathname, line_num ) ]
-
-
-# --------------------------------------------------------------
-# Scan header file(s) defining trace macros.
-#
-
-trace_def_pat_opn = re.compile( '^.*FT_TRACE_DEF[ \t]*\([ \t]*' )
-trace_def_pat_cls = re.compile( '[ \t\)].*$' )
-
-for f in TRACE_DEF_FILES:
-  line_num = 0
-  for hdr_line in open( f, 'r' ):
-    line_num = line_num + 1
-    hdr_line = hdr_line.strip()
-    if trace_def_pat_opn.match( hdr_line ) != None:
-      component_name = trace_def_pat_opn.sub( '', hdr_line )
-      component_name = trace_def_pat_cls.sub( '', component_name )
-      if component_name in KNOWN_COMPONENT:
-        print "trace component %s is defined twice, see %s and fttrace.h:%d" % \
-          ( component_name, KNOWN_COMPONENT[component_name], line_num )
-      else:
-        KNOWN_COMPONENT[component_name] = "%s:%d" % \
-          ( os.path.basename( f ), line_num )
-
-
-# --------------------------------------------------------------
-# Compare the used and defined trace macros.
-#
-
-print "# Trace component used in the implementations but not defined in fttrace.h."
-cmpnt = USED_COMPONENT.keys()
-cmpnt.sort()
-for c in cmpnt:
-  if c not in KNOWN_COMPONENT:
-    print "Trace component %s (used in %s) is not defined." % ( c, ", ".join( USED_COMPONENT[c] ) )
-
-print "# Trace component is defined but not used in the implementations."
-cmpnt = KNOWN_COMPONENT.keys()
-cmpnt.sort()
-for c in cmpnt:
-  if c not in USED_COMPONENT:
-    if c != "any":
-      print "Trace component %s (defined in %s) is not used." % ( c, KNOWN_COMPONENT[c] )
-

+ 0 - 33
Source/ThirdParty/FreeType/src/tools/cordic.py

@@ -1,33 +0,0 @@
-# compute arctangent table for CORDIC computations in fttrigon.c
-import sys, math
-
-#units  = 64*65536.0   # don't change !!
-units  = 180 * 2**16
-scale  = units/math.pi
-shrink = 1.0
-comma  = ""
-
-print ""
-print "table of arctan( 1/2^n ) for PI = " + repr(units/65536.0) + " units"
-
-for n in range(1,32):
-
-    x = 0.5**n                      # tangent value
-
-    angle  = math.atan(x)           # arctangent
-    angle2 = round(angle*scale)     # arctangent in FT_Angle units
-
-    if angle2 <= 0:
-        break
-
-    sys.stdout.write( comma + repr( int(angle2) ) )
-    comma = ", "
-
-    shrink /= math.sqrt( 1 + x*x )
-
-print
-print "shrink factor    = " + repr( shrink )
-print "shrink factor 2  = " + repr( int( shrink * (2**32) ) )
-print "expansion factor = " + repr( 1/shrink )
-print ""
-

+ 0 - 1
Source/ThirdParty/FreeType/src/tools/docmaker/.gitignore

@@ -1 +0,0 @@
-*.pyc

+ 0 - 567
Source/ThirdParty/FreeType/src/tools/docmaker/content.py

@@ -1,567 +0,0 @@
-#  Content (c) 2002, 2004, 2006-2009, 2012, 2013
-#    David Turner <[email protected]>
-#
-#  This file contains routines used to parse the content of documentation
-#  comment blocks and build more structured objects out of them.
-#
-
-from sources import *
-from utils import *
-import string, re
-
-
-# this regular expression is used to detect code sequences. these
-# are simply code fragments embedded in '{' and '}' like in:
-#
-#  {
-#    x = y + z;
-#    if ( zookoo == 2 )
-#    {
-#      foobar();
-#    }
-#  }
-#
-# note that indentation of the starting and ending accolades must be
-# exactly the same. the code sequence can contain accolades at greater
-# indentation
-#
-re_code_start = re.compile( r"(\s*){\s*$" )
-re_code_end   = re.compile( r"(\s*)}\s*$" )
-
-
-# this regular expression is used to isolate identifiers from
-# other text
-#
-re_identifier = re.compile( r'((?:\w|-)*)' )
-
-
-# we collect macros ending in `_H'; while outputting the object data, we use
-# this info together with the object's file location to emit the appropriate
-# header file macro and name before the object itself
-#
-re_header_macro = re.compile( r'^#define\s{1,}(\w{1,}_H)\s{1,}<(.*)>' )
-
-
-#############################################################################
-#
-# The DocCode class is used to store source code lines.
-#
-#   'self.lines' contains a set of source code lines that will be dumped as
-#   HTML in a <PRE> tag.
-#
-#   The object is filled line by line by the parser; it strips the leading
-#   "margin" space from each input line before storing it in 'self.lines'.
-#
-class  DocCode:
-
-    def  __init__( self, margin, lines ):
-        self.lines = []
-        self.words = None
-
-        # remove margin spaces
-        for l in lines:
-            if string.strip( l[:margin] ) == "":
-                l = l[margin:]
-            self.lines.append( l )
-
-    def  dump( self, prefix = "", width = 60 ):
-        lines = self.dump_lines( 0, width )
-        for l in lines:
-            print prefix + l
-
-    def  dump_lines( self, margin = 0, width = 60 ):
-        result = []
-        for l in self.lines:
-            result.append( " " * margin + l )
-        return result
-
-
-
-#############################################################################
-#
-# The DocPara class is used to store "normal" text paragraph.
-#
-#   'self.words' contains the list of words that make up the paragraph
-#
-class  DocPara:
-
-    def  __init__( self, lines ):
-        self.lines = None
-        self.words = []
-        for l in lines:
-            l = string.strip( l )
-            self.words.extend( string.split( l ) )
-
-    def  dump( self, prefix = "", width = 60 ):
-        lines = self.dump_lines( 0, width )
-        for l in lines:
-            print prefix + l
-
-    def  dump_lines( self, margin = 0, width = 60 ):
-        cur    = ""  # current line
-        col    = 0   # current width
-        result = []
-
-        for word in self.words:
-            ln = len( word )
-            if col > 0:
-                ln = ln + 1
-
-            if col + ln > width:
-                result.append( " " * margin + cur )
-                cur = word
-                col = len( word )
-            else:
-                if col > 0:
-                    cur = cur + " "
-                cur = cur + word
-                col = col + ln
-
-        if col > 0:
-            result.append( " " * margin + cur )
-
-        return result
-
-
-
-#############################################################################
-#
-#  The DocField class is used to store a list containing either DocPara or
-#  DocCode objects. Each DocField also has an optional "name" which is used
-#  when the object corresponds to a field or value definition
-#
-class  DocField:
-
-    def  __init__( self, name, lines ):
-        self.name  = name  # can be None for normal paragraphs/sources
-        self.items = []    # list of items
-
-        mode_none  = 0     # start parsing mode
-        mode_code  = 1     # parsing code sequences
-        mode_para  = 3     # parsing normal paragraph
-
-        margin     = -1    # current code sequence indentation
-        cur_lines  = []
-
-        # now analyze the markup lines to see if they contain paragraphs,
-        # code sequences or fields definitions
-        #
-        start = 0
-        mode  = mode_none
-
-        for l in lines:
-            # are we parsing a code sequence ?
-            if mode == mode_code:
-                m = re_code_end.match( l )
-                if m and len( m.group( 1 ) ) <= margin:
-                    # that's it, we finished the code sequence
-                    code = DocCode( 0, cur_lines )
-                    self.items.append( code )
-                    margin    = -1
-                    cur_lines = []
-                    mode      = mode_none
-                else:
-                    # nope, continue the code sequence
-                    cur_lines.append( l[margin:] )
-            else:
-                # start of code sequence ?
-                m = re_code_start.match( l )
-                if m:
-                    # save current lines
-                    if cur_lines:
-                        para = DocPara( cur_lines )
-                        self.items.append( para )
-                        cur_lines = []
-
-                    # switch to code extraction mode
-                    margin = len( m.group( 1 ) )
-                    mode   = mode_code
-                else:
-                    if not string.split( l ) and cur_lines:
-                        # if the line is empty, we end the current paragraph,
-                        # if any
-                        para = DocPara( cur_lines )
-                        self.items.append( para )
-                        cur_lines = []
-                    else:
-                        # otherwise, simply add the line to the current
-                        # paragraph
-                        cur_lines.append( l )
-
-        if mode == mode_code:
-            # unexpected end of code sequence
-            code = DocCode( margin, cur_lines )
-            self.items.append( code )
-        elif cur_lines:
-            para = DocPara( cur_lines )
-            self.items.append( para )
-
-    def  dump( self, prefix = "" ):
-        if self.field:
-            print prefix + self.field + " ::"
-            prefix = prefix + "----"
-
-        first = 1
-        for p in self.items:
-            if not first:
-                print ""
-            p.dump( prefix )
-            first = 0
-
-    def  dump_lines( self, margin = 0, width = 60 ):
-        result = []
-        nl     = None
-
-        for p in self.items:
-            if nl:
-                result.append( "" )
-
-            result.extend( p.dump_lines( margin, width ) )
-            nl = 1
-
-        return result
-
-
-
-# this regular expression is used to detect field definitions
-#
-re_field = re.compile( r"\s*(\w*|\w(\w|\.)*\w)\s*::" )
-
-
-
-class  DocMarkup:
-
-    def  __init__( self, tag, lines ):
-        self.tag    = string.lower( tag )
-        self.fields = []
-
-        cur_lines = []
-        field     = None
-        mode      = 0
-
-        for l in lines:
-            m = re_field.match( l )
-            if m:
-                # we detected the start of a new field definition
-
-                # first, save the current one
-                if cur_lines:
-                    f = DocField( field, cur_lines )
-                    self.fields.append( f )
-                    cur_lines = []
-                    field     = None
-
-                field     = m.group( 1 )   # record field name
-                ln        = len( m.group( 0 ) )
-                l         = " " * ln + l[ln:]
-                cur_lines = [l]
-            else:
-                cur_lines.append( l )
-
-        if field or cur_lines:
-            f = DocField( field, cur_lines )
-            self.fields.append( f )
-
-    def  get_name( self ):
-        try:
-            return self.fields[0].items[0].words[0]
-        except:
-            return None
-
-    def  dump( self, margin ):
-        print " " * margin + "<" + self.tag + ">"
-        for f in self.fields:
-            f.dump( "  " )
-        print " " * margin + "</" + self.tag + ">"
-
-
-
-class  DocChapter:
-
-    def  __init__( self, block ):
-        self.block    = block
-        self.sections = []
-        if block:
-            self.name  = block.name
-            self.title = block.get_markup_words( "title" )
-            self.order = block.get_markup_words( "sections" )
-        else:
-            self.name  = "Other"
-            self.title = string.split( "Miscellaneous" )
-            self.order = []
-
-
-
-class  DocSection:
-
-    def  __init__( self, name = "Other" ):
-        self.name        = name
-        self.blocks      = {}
-        self.block_names = []  # ordered block names in section
-        self.defs        = []
-        self.abstract    = ""
-        self.description = ""
-        self.order       = []
-        self.title       = "ERROR"
-        self.chapter     = None
-
-    def  add_def( self, block ):
-        self.defs.append( block )
-
-    def  add_block( self, block ):
-        self.block_names.append( block.name )
-        self.blocks[block.name] = block
-
-    def  process( self ):
-        # look up one block that contains a valid section description
-        for block in self.defs:
-            title = block.get_markup_text( "title" )
-            if title:
-                self.title       = title
-                self.abstract    = block.get_markup_words( "abstract" )
-                self.description = block.get_markup_items( "description" )
-                self.order       = block.get_markup_words( "order" )
-                return
-
-    def  reorder( self ):
-        self.block_names = sort_order_list( self.block_names, self.order )
-
-
-
-class  ContentProcessor:
-
-    def  __init__( self ):
-        """initialize a block content processor"""
-        self.reset()
-
-        self.sections = {}    # dictionary of documentation sections
-        self.section  = None  # current documentation section
-
-        self.chapters = []    # list of chapters
-
-        self.headers  = {}    # dictionary of header macros
-
-    def  set_section( self, section_name ):
-        """set current section during parsing"""
-        if not self.sections.has_key( section_name ):
-            section = DocSection( section_name )
-            self.sections[section_name] = section
-            self.section                = section
-        else:
-            self.section = self.sections[section_name]
-
-    def  add_chapter( self, block ):
-        chapter = DocChapter( block )
-        self.chapters.append( chapter )
-
-
-    def  reset( self ):
-        """reset the content processor for a new block"""
-        self.markups      = []
-        self.markup       = None
-        self.markup_lines = []
-
-    def  add_markup( self ):
-        """add a new markup section"""
-        if self.markup and self.markup_lines:
-
-            # get rid of last line of markup if it's empty
-            marks = self.markup_lines
-            if len( marks ) > 0 and not string.strip( marks[-1] ):
-                self.markup_lines = marks[:-1]
-
-            m = DocMarkup( self.markup, self.markup_lines )
-
-            self.markups.append( m )
-
-            self.markup       = None
-            self.markup_lines = []
-
-    def  process_content( self, content ):
-        """process a block content and return a list of DocMarkup objects
-           corresponding to it"""
-        markup       = None
-        markup_lines = []
-        first        = 1
-
-        for line in content:
-            found = None
-            for t in re_markup_tags:
-                m = t.match( line )
-                if m:
-                    found  = string.lower( m.group( 1 ) )
-                    prefix = len( m.group( 0 ) )
-                    line   = " " * prefix + line[prefix:]   # remove markup from line
-                    break
-
-            # is it the start of a new markup section ?
-            if found:
-                first = 0
-                self.add_markup()  # add current markup content
-                self.markup = found
-                if len( string.strip( line ) ) > 0:
-                    self.markup_lines.append( line )
-            elif first == 0:
-                self.markup_lines.append( line )
-
-        self.add_markup()
-
-        return self.markups
-
-    def  parse_sources( self, source_processor ):
-        blocks = source_processor.blocks
-        count  = len( blocks )
-
-        for n in range( count ):
-            source = blocks[n]
-            if source.content:
-                # this is a documentation comment, we need to catch
-                # all following normal blocks in the "follow" list
-                #
-                follow = []
-                m = n + 1
-                while m < count and not blocks[m].content:
-                    follow.append( blocks[m] )
-                    m = m + 1
-
-                doc_block = DocBlock( source, follow, self )
-
-    def  finish( self ):
-        # process all sections to extract their abstract, description
-        # and ordered list of items
-        #
-        for sec in self.sections.values():
-            sec.process()
-
-        # process chapters to check that all sections are correctly
-        # listed there
-        for chap in self.chapters:
-            for sec in chap.order:
-                if self.sections.has_key( sec ):
-                    section = self.sections[sec]
-                    section.chapter = chap
-                    section.reorder()
-                    chap.sections.append( section )
-                else:
-                    sys.stderr.write( "WARNING: chapter '" +          \
-                        chap.name + "' in " + chap.block.location() + \
-                        " lists unknown section '" + sec + "'\n" )
-
-        # check that all sections are in a chapter
-        #
-        others = []
-        for sec in self.sections.values():
-            if not sec.chapter:
-                others.append( sec )
-
-        # create a new special chapter for all remaining sections
-        # when necessary
-        #
-        if others:
-            chap = DocChapter( None )
-            chap.sections = others
-            self.chapters.append( chap )
-
-
-
-class  DocBlock:
-
-    def  __init__( self, source, follow, processor ):
-        processor.reset()
-
-        self.source  = source
-        self.code    = []
-        self.type    = "ERRTYPE"
-        self.name    = "ERRNAME"
-        self.section = processor.section
-        self.markups = processor.process_content( source.content )
-
-        # compute block type from first markup tag
-        try:
-            self.type = self.markups[0].tag
-        except:
-            pass
-
-        # compute block name from first markup paragraph
-        try:
-            markup = self.markups[0]
-            para   = markup.fields[0].items[0]
-            name   = para.words[0]
-            m = re_identifier.match( name )
-            if m:
-                name = m.group( 1 )
-            self.name = name
-        except:
-            pass
-
-        if self.type == "section":
-            # detect new section starts
-            processor.set_section( self.name )
-            processor.section.add_def( self )
-        elif self.type == "chapter":
-            # detect new chapter
-            processor.add_chapter( self )
-        else:
-            processor.section.add_block( self )
-
-        # now, compute the source lines relevant to this documentation
-        # block. We keep normal comments in for obvious reasons (??)
-        source = []
-        for b in follow:
-            if b.format:
-                break
-            for l in b.lines:
-                # collect header macro definitions
-                m = re_header_macro.match( l )
-                if m:
-                    processor.headers[m.group( 2 )] = m.group( 1 );
-
-                # we use "/* */" as a separator
-                if re_source_sep.match( l ):
-                    break
-                source.append( l )
-
-        # now strip the leading and trailing empty lines from the sources
-        start = 0
-        end   = len( source ) - 1
-
-        while start < end and not string.strip( source[start] ):
-            start = start + 1
-
-        while start < end and not string.strip( source[end] ):
-            end = end - 1
-
-        if start == end and not string.strip( source[start] ):
-            self.code = []
-        else:
-            self.code = source[start:end + 1]
-
-    def  location( self ):
-        return self.source.location()
-
-    def  get_markup( self, tag_name ):
-        """return the DocMarkup corresponding to a given tag in a block"""
-        for m in self.markups:
-            if m.tag == string.lower( tag_name ):
-                return m
-        return None
-
-    def  get_markup_words( self, tag_name ):
-        try:
-            m = self.get_markup( tag_name )
-            return m.fields[0].items[0].words
-        except:
-            return []
-
-    def  get_markup_text( self, tag_name ):
-        result = self.get_markup_words( tag_name )
-        return string.join( result )
-
-    def  get_markup_items( self, tag_name ):
-        try:
-            m = self.get_markup( tag_name )
-            return m.fields[0].items
-        except:
-            return None
-
-# eof

+ 0 - 113
Source/ThirdParty/FreeType/src/tools/docmaker/docbeauty.py

@@ -1,113 +0,0 @@
-#!/usr/bin/env python
-#
-#  DocBeauty (c) 2003, 2004, 2008 David Turner <[email protected]>
-#
-# This program is used to beautify the documentation comments used
-# in the FreeType 2 public headers.
-#
-
-from sources import *
-from content import *
-from utils   import *
-
-import utils
-
-import sys, os, time, string, getopt
-
-
-content_processor = ContentProcessor()
-
-
-def  beautify_block( block ):
-    if block.content:
-        content_processor.reset()
-
-        markups = content_processor.process_content( block.content )
-        text    = []
-        first   = 1
-
-        for markup in markups:
-            text.extend( markup.beautify( first ) )
-            first = 0
-
-        # now beautify the documentation "borders" themselves
-        lines = [" /*************************************************************************"]
-        for l in text:
-            lines.append( "  *" + l )
-        lines.append( "  */" )
-
-        block.lines = lines
-
-
-def  usage():
-    print "\nDocBeauty 0.1 Usage information\n"
-    print "  docbeauty [options] file1 [file2 ...]\n"
-    print "using the following options:\n"
-    print "  -h : print this page"
-    print "  -b : backup original files with the 'orig' extension"
-    print ""
-    print "  --backup : same as -b"
-
-
-def  main( argv ):
-    """main program loop"""
-
-    global output_dir
-
-    try:
-        opts, args = getopt.getopt( sys.argv[1:], \
-                                    "hb",         \
-                                    ["help", "backup"] )
-    except getopt.GetoptError:
-        usage()
-        sys.exit( 2 )
-
-    if args == []:
-        usage()
-        sys.exit( 1 )
-
-    # process options
-    #
-    output_dir = None
-    do_backup  = None
-
-    for opt in opts:
-        if opt[0] in ( "-h", "--help" ):
-            usage()
-            sys.exit( 0 )
-
-        if opt[0] in ( "-b", "--backup" ):
-            do_backup = 1
-
-    # create context and processor
-    source_processor = SourceProcessor()
-
-    # retrieve the list of files to process
-    file_list = make_file_list( args )
-    for filename in file_list:
-        source_processor.parse_file( filename )
-
-        for block in source_processor.blocks:
-            beautify_block( block )
-
-        new_name = filename + ".new"
-        ok       = None
-
-        try:
-            file = open( new_name, "wt" )
-            for block in source_processor.blocks:
-                for line in block.lines:
-                    file.write( line )
-                    file.write( "\n" )
-            file.close()
-        except:
-            ok = 0
-
-
-# if called from the command line
-#
-if __name__ == '__main__':
-    main( sys.argv )
-
-
-# eof

+ 0 - 106
Source/ThirdParty/FreeType/src/tools/docmaker/docmaker.py

@@ -1,106 +0,0 @@
-#!/usr/bin/env python
-#
-#  DocMaker (c) 2002, 2004, 2008, 2013 David Turner <[email protected]>
-#
-# This program is a re-write of the original DocMaker tool used
-# to generate the API Reference of the FreeType font engine
-# by converting in-source comments into structured HTML.
-#
-# This new version is capable of outputting XML data, as well
-# as accepts more liberal formatting options.
-#
-# It also uses regular expression matching and substitution
-# to speed things significantly.
-#
-
-from sources   import *
-from content   import *
-from utils     import *
-from formatter import *
-from tohtml    import *
-
-import utils
-
-import sys, os, time, string, glob, getopt
-
-
-def  usage():
-    print "\nDocMaker Usage information\n"
-    print "  docmaker [options] file1 [file2 ...]\n"
-    print "using the following options:\n"
-    print "  -h : print this page"
-    print "  -t : set project title, as in '-t \"My Project\"'"
-    print "  -o : set output directory, as in '-o mydir'"
-    print "  -p : set documentation prefix, as in '-p ft2'"
-    print ""
-    print "  --title  : same as -t, as in '--title=\"My Project\"'"
-    print "  --output : same as -o, as in '--output=mydir'"
-    print "  --prefix : same as -p, as in '--prefix=ft2'"
-
-
-def  main( argv ):
-    """main program loop"""
-
-    global output_dir
-
-    try:
-        opts, args = getopt.getopt( sys.argv[1:], \
-                                    "ht:o:p:",    \
-                                    ["help", "title=", "output=", "prefix="] )
-    except getopt.GetoptError:
-        usage()
-        sys.exit( 2 )
-
-    if args == []:
-        usage()
-        sys.exit( 1 )
-
-    # process options
-    #
-    project_title  = "Project"
-    project_prefix = None
-    output_dir     = None
-
-    for opt in opts:
-        if opt[0] in ( "-h", "--help" ):
-            usage()
-            sys.exit( 0 )
-
-        if opt[0] in ( "-t", "--title" ):
-            project_title = opt[1]
-
-        if opt[0] in ( "-o", "--output" ):
-            utils.output_dir = opt[1]
-
-        if opt[0] in ( "-p", "--prefix" ):
-            project_prefix = opt[1]
-
-    check_output()
-
-    # create context and processor
-    source_processor  = SourceProcessor()
-    content_processor = ContentProcessor()
-
-    # retrieve the list of files to process
-    file_list = make_file_list( args )
-    for filename in file_list:
-        source_processor.parse_file( filename )
-        content_processor.parse_sources( source_processor )
-
-    # process sections
-    content_processor.finish()
-
-    formatter = HtmlFormatter( content_processor, project_title, project_prefix )
-
-    formatter.toc_dump()
-    formatter.index_dump()
-    formatter.section_dump_all()
-
-
-# if called from the command line
-#
-if __name__ == '__main__':
-    main( sys.argv )
-
-
-# eof

+ 0 - 188
Source/ThirdParty/FreeType/src/tools/docmaker/formatter.py

@@ -1,188 +0,0 @@
-#  Formatter (c) 2002, 2004, 2007, 2008 David Turner <[email protected]>
-#
-
-from sources import *
-from content import *
-from utils   import *
-
-# This is the base Formatter class.  Its purpose is to convert
-# a content processor's data into specific documents (i.e., table of
-# contents, global index, and individual API reference indices).
-#
-# You need to sub-class it to output anything sensible.  For example,
-# the file tohtml.py contains the definition of the HtmlFormatter sub-class
-# used to output -- you guessed it -- HTML.
-#
-
-class  Formatter:
-
-    def  __init__( self, processor ):
-        self.processor   = processor
-        self.identifiers = {}
-        self.chapters    = processor.chapters
-        self.sections    = processor.sections.values()
-        self.block_index = []
-
-        # store all blocks in a dictionary
-        self.blocks = []
-        for section in self.sections:
-            for block in section.blocks.values():
-                self.add_identifier( block.name, block )
-
-                # add enumeration values to the index, since this is useful
-                for markup in block.markups:
-                    if markup.tag == 'values':
-                        for field in markup.fields:
-                            self.add_identifier( field.name, block )
-
-        self.block_index = self.identifiers.keys()
-        self.block_index.sort( index_sort )
-
-    def  add_identifier( self, name, block ):
-        if self.identifiers.has_key( name ):
-            # duplicate name!
-            sys.stderr.write(                                           \
-               "WARNING: duplicate definition for '" + name + "' in " + \
-               block.location() + ", previous definition in " +         \
-               self.identifiers[name].location() + "\n" )
-        else:
-            self.identifiers[name] = block
-
-    #
-    #  Formatting the table of contents
-    #
-    def  toc_enter( self ):
-        pass
-
-    def  toc_chapter_enter( self, chapter ):
-        pass
-
-    def  toc_section_enter( self, section ):
-        pass
-
-    def  toc_section_exit( self, section ):
-        pass
-
-    def  toc_chapter_exit( self, chapter ):
-        pass
-
-    def  toc_index( self, index_filename ):
-        pass
-
-    def  toc_exit( self ):
-        pass
-
-    def  toc_dump( self, toc_filename = None, index_filename = None ):
-        output = None
-        if toc_filename:
-            output = open_output( toc_filename )
-
-        self.toc_enter()
-
-        for chap in self.processor.chapters:
-
-            self.toc_chapter_enter( chap )
-
-            for section in chap.sections:
-                self.toc_section_enter( section )
-                self.toc_section_exit( section )
-
-            self.toc_chapter_exit( chap )
-
-        self.toc_index( index_filename )
-
-        self.toc_exit()
-
-        if output:
-            close_output( output )
-
-    #
-    #  Formatting the index
-    #
-    def  index_enter( self ):
-        pass
-
-    def  index_name_enter( self, name ):
-        pass
-
-    def  index_name_exit( self, name ):
-        pass
-
-    def  index_exit( self ):
-        pass
-
-    def  index_dump( self, index_filename = None ):
-        output = None
-        if index_filename:
-            output = open_output( index_filename )
-
-        self.index_enter()
-
-        for name in self.block_index:
-            self.index_name_enter( name )
-            self.index_name_exit( name )
-
-        self.index_exit()
-
-        if output:
-            close_output( output )
-
-    #
-    #  Formatting a section
-    #
-    def  section_enter( self, section ):
-        pass
-
-    def  block_enter( self, block ):
-        pass
-
-    def  markup_enter( self, markup, block = None ):
-        pass
-
-    def  field_enter( self, field, markup = None, block = None ):
-        pass
-
-    def  field_exit( self, field, markup = None, block = None ):
-        pass
-
-    def  markup_exit( self, markup, block = None ):
-        pass
-
-    def  block_exit( self, block ):
-        pass
-
-    def  section_exit( self, section ):
-        pass
-
-    def  section_dump( self, section, section_filename = None ):
-        output = None
-        if section_filename:
-            output = open_output( section_filename )
-
-        self.section_enter( section )
-
-        for name in section.block_names:
-            block = self.identifiers[name]
-            self.block_enter( block )
-
-            for markup in block.markups[1:]:   # always ignore first markup!
-                self.markup_enter( markup, block )
-
-                for field in markup.fields:
-                    self.field_enter( field, markup, block )
-                    self.field_exit( field, markup, block )
-
-                self.markup_exit( markup, block )
-
-            self.block_exit( block )
-
-        self.section_exit( section )
-
-        if output:
-            close_output( output )
-
-    def  section_dump_all( self ):
-        for section in self.sections:
-            self.section_dump( section )
-
-# eof

+ 0 - 383
Source/ThirdParty/FreeType/src/tools/docmaker/sources.py

@@ -1,383 +0,0 @@
-#  Sources (c) 2002-2004, 2006-2009, 2012, 2013
-#    David Turner <[email protected]>
-#
-#
-# this file contains definitions of classes needed to decompose
-# C sources files into a series of multi-line "blocks". There are
-# two kinds of blocks:
-#
-#   - normal blocks, which contain source code or ordinary comments
-#
-#   - documentation blocks, which have restricted formatting, and
-#     whose text always start with a documentation markup tag like
-#     "<Function>", "<Type>", etc..
-#
-# the routines used to process the content of documentation blocks
-# are not contained here, but in "content.py"
-#
-# the classes and methods found here only deal with text parsing
-# and basic documentation block extraction
-#
-
-import fileinput, re, sys, os, string
-
-
-
-################################################################
-##
-##  BLOCK FORMAT PATTERN
-##
-##   A simple class containing compiled regular expressions used
-##   to detect potential documentation format block comments within
-##   C source code
-##
-##   note that the 'column' pattern must contain a group that will
-##   be used to "unbox" the content of documentation comment blocks
-##
-class  SourceBlockFormat:
-
-    def  __init__( self, id, start, column, end ):
-        """create a block pattern, used to recognize special documentation blocks"""
-        self.id     = id
-        self.start  = re.compile( start, re.VERBOSE )
-        self.column = re.compile( column, re.VERBOSE )
-        self.end    = re.compile( end, re.VERBOSE )
-
-
-
-#
-# format 1 documentation comment blocks look like the following:
-#
-#    /************************************/
-#    /*                                  */
-#    /*                                  */
-#    /*                                  */
-#    /************************************/
-#
-# we define a few regular expressions here to detect them
-#
-
-start = r'''
-  \s*      # any number of whitespace
-  /\*{2,}/ # followed by '/' and at least two asterisks then '/'
-  \s*$     # probably followed by whitespace
-'''
-
-column = r'''
-  \s*      # any number of whitespace
-  /\*{1}   # followed by '/' and precisely one asterisk
-  ([^*].*) # followed by anything (group 1)
-  \*{1}/   # followed by one asterisk and a '/'
-  \s*$     # probably followed by whitespace
-'''
-
-re_source_block_format1 = SourceBlockFormat( 1, start, column, start )
-
-
-#
-# format 2 documentation comment blocks look like the following:
-#
-#    /************************************ (at least 2 asterisks)
-#     *
-#     *
-#     *
-#     *
-#     **/       (1 or more asterisks at the end)
-#
-# we define a few regular expressions here to detect them
-#
-start = r'''
-  \s*     # any number of whitespace
-  /\*{2,} # followed by '/' and at least two asterisks
-  \s*$    # probably followed by whitespace
-'''
-
-column = r'''
-  \s*        # any number of whitespace
-  \*{1}(?!/) # followed by precisely one asterisk not followed by `/'
-  (.*)       # then anything (group1)
-'''
-
-end = r'''
-  \s*  # any number of whitespace
-  \*+/ # followed by at least one asterisk, then '/'
-'''
-
-re_source_block_format2 = SourceBlockFormat( 2, start, column, end )
-
-
-#
-# the list of supported documentation block formats, we could add new ones
-# relatively easily
-#
-re_source_block_formats = [re_source_block_format1, re_source_block_format2]
-
-
-#
-# the following regular expressions corresponds to markup tags
-# within the documentation comment blocks. they're equivalent
-# despite their different syntax
-#
-# notice how each markup tag _must_ begin a new line
-#
-re_markup_tag1 = re.compile( r'''\s*<((?:\w|-)*)>''' )  # <xxxx> format
-re_markup_tag2 = re.compile( r'''\s*@((?:\w|-)*):''' )  # @xxxx: format
-
-#
-# the list of supported markup tags, we could add new ones relatively
-# easily
-#
-re_markup_tags = [re_markup_tag1, re_markup_tag2]
-
-#
-# used to detect a cross-reference, after markup tags have been stripped
-#
-re_crossref = re.compile( r'@((?:\w|-)*)(.*)' )    #  @foo
-
-#
-# used to detect italic and bold styles in paragraph text
-#
-re_italic = re.compile( r"_(\w(\w|')*)_(.*)" )     #  _italic_
-re_bold   = re.compile( r"\*(\w(\w|')*)\*(.*)" )   #  *bold*
-
-#
-# this regular expression code to identify an URL has been taken from
-#
-#   http://mail.python.org/pipermail/tutor/2002-September/017228.html
-#
-# (with slight modifications)
-#
-
-urls = r'(?:https?|telnet|gopher|file|wais|ftp)'
-ltrs = r'\w'
-gunk = r'/#~:.?+=&%@!\-'
-punc = r'.:?\-'
-any  = "%(ltrs)s%(gunk)s%(punc)s" % { 'ltrs' : ltrs,
-                                      'gunk' : gunk,
-                                      'punc' : punc }
-url  = r"""
-         (
-           \b                    # start at word boundary
-           %(urls)s :            # need resource and a colon
-           [%(any)s] +?          # followed by one or more of any valid
-                                 # character, but be conservative and
-                                 # take only what you need to...
-           (?=                   # [look-ahead non-consumptive assertion]
-             [%(punc)s]*         # either 0 or more punctuation
-             (?:                 # [non-grouping parentheses]
-               [^%(any)s] | $    # followed by a non-url char
-                                 # or end of the string
-             )
-           )
-         )
-        """ % {'urls' : urls,
-               'any'  : any,
-               'punc' : punc }
-
-re_url = re.compile( url, re.VERBOSE | re.MULTILINE )
-
-#
-# used to detect the end of commented source lines
-#
-re_source_sep = re.compile( r'\s*/\*\s*\*/' )
-
-#
-# used to perform cross-reference within source output
-#
-re_source_crossref = re.compile( r'(\W*)(\w*)' )
-
-#
-# a list of reserved source keywords
-#
-re_source_keywords = re.compile( '''\\b ( typedef   |
-                                          struct    |
-                                          enum      |
-                                          union     |
-                                          const     |
-                                          char      |
-                                          int       |
-                                          short     |
-                                          long      |
-                                          void      |
-                                          signed    |
-                                          unsigned  |
-                                          \#include |
-                                          \#define  |
-                                          \#undef   |
-                                          \#if      |
-                                          \#ifdef   |
-                                          \#ifndef  |
-                                          \#else    |
-                                          \#endif   ) \\b''', re.VERBOSE )
-
-
-################################################################
-##
-##  SOURCE BLOCK CLASS
-##
-##   A SourceProcessor is in charge of reading a C source file
-##   and decomposing it into a series of different "SourceBlocks".
-##   each one of these blocks can be made of the following data:
-##
-##   - A documentation comment block that starts with "/**" and
-##     whose exact format will be discussed later
-##
-##   - normal sources lines, including comments
-##
-##   the important fields in a text block are the following ones:
-##
-##     self.lines   : a list of text lines for the corresponding block
-##
-##     self.content : for documentation comment blocks only, this is the
-##                    block content that has been "unboxed" from its
-##                    decoration. This is None for all other blocks
-##                    (i.e. sources or ordinary comments with no starting
-##                     markup tag)
-##
-class  SourceBlock:
-
-    def  __init__( self, processor, filename, lineno, lines ):
-        self.processor = processor
-        self.filename  = filename
-        self.lineno    = lineno
-        self.lines     = lines[:]
-        self.format    = processor.format
-        self.content   = []
-
-        if self.format == None:
-            return
-
-        words = []
-
-        # extract comment lines
-        lines = []
-
-        for line0 in self.lines:
-            m = self.format.column.match( line0 )
-            if m:
-                lines.append( m.group( 1 ) )
-
-        # now, look for a markup tag
-        for l in lines:
-            l = string.strip( l )
-            if len( l ) > 0:
-                for tag in re_markup_tags:
-                    if tag.match( l ):
-                        self.content = lines
-                        return
-
-    def  location( self ):
-        return "(" + self.filename + ":" + repr( self.lineno ) + ")"
-
-    # debugging only - not used in normal operations
-    def  dump( self ):
-        if self.content:
-            print "{{{content start---"
-            for l in self.content:
-                print l
-            print "---content end}}}"
-            return
-
-        fmt = ""
-        if self.format:
-            fmt = repr( self.format.id ) + " "
-
-        for line in self.lines:
-            print line
-
-
-
-################################################################
-##
-##  SOURCE PROCESSOR CLASS
-##
-##   The SourceProcessor is in charge of reading a C source file
-##   and decomposing it into a series of different "SourceBlock"
-##   objects.
-##
-##   each one of these blocks can be made of the following data:
-##
-##   - A documentation comment block that starts with "/**" and
-##     whose exact format will be discussed later
-##
-##   - normal sources lines, include comments
-##
-##
-class  SourceProcessor:
-
-    def  __init__( self ):
-        """initialize a source processor"""
-        self.blocks   = []
-        self.filename = None
-        self.format   = None
-        self.lines    = []
-
-    def  reset( self ):
-        """reset a block processor, clean all its blocks"""
-        self.blocks = []
-        self.format = None
-
-    def  parse_file( self, filename ):
-        """parse a C source file, and add its blocks to the processor's list"""
-        self.reset()
-
-        self.filename = filename
-
-        fileinput.close()
-        self.format = None
-        self.lineno = 0
-        self.lines  = []
-
-        for line in fileinput.input( filename ):
-            # strip trailing newlines, important on Windows machines!
-            if line[-1] == '\012':
-                line = line[0:-1]
-
-            if self.format == None:
-                self.process_normal_line( line )
-            else:
-                if self.format.end.match( line ):
-                    # that's a normal block end, add it to 'lines' and
-                    # create a new block
-                    self.lines.append( line )
-                    self.add_block_lines()
-                elif self.format.column.match( line ):
-                    # that's a normal column line, add it to 'lines'
-                    self.lines.append( line )
-                else:
-                    # humm.. this is an unexpected block end,
-                    # create a new block, but don't process the line
-                    self.add_block_lines()
-
-                    # we need to process the line again
-                    self.process_normal_line( line )
-
-        # record the last lines
-        self.add_block_lines()
-
-    def  process_normal_line( self, line ):
-        """process a normal line and check whether it is the start of a new block"""
-        for f in re_source_block_formats:
-            if f.start.match( line ):
-                self.add_block_lines()
-                self.format = f
-                self.lineno = fileinput.filelineno()
-
-        self.lines.append( line )
-
-    def  add_block_lines( self ):
-        """add the current accumulated lines and create a new block"""
-        if self.lines != []:
-            block = SourceBlock( self, self.filename, self.lineno, self.lines )
-
-            self.blocks.append( block )
-            self.format = None
-            self.lines  = []
-
-    # debugging only, not used in normal operations
-    def  dump( self ):
-        """print all blocks in a processor"""
-        for b in self.blocks:
-            b.dump()
-
-# eof

+ 0 - 566
Source/ThirdParty/FreeType/src/tools/docmaker/tohtml.py

@@ -1,566 +0,0 @@
-#  ToHTML (c) 2002, 2003, 2005-2008, 2013
-#    David Turner <[email protected]>
-
-from sources import *
-from content import *
-from formatter import *
-
-import time
-
-
-# The following defines the HTML header used by all generated pages.
-html_header_1 = """\
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>\
-"""
-
-html_header_2 = """\
- API Reference</title>
-<style type="text/css">
-  body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
-         color: #000000;
-         background: #FFFFFF; }
-
-  p { text-align: justify; }
-  h1 { text-align: center; }
-  li { text-align: justify; }
-  td { padding: 0 0.5em 0 0.5em; }
-  td.left { padding: 0 0.5em 0 0.5em;
-            text-align: left; }
-
-  a:link { color: #0000EF; }
-  a:visited { color: #51188E; }
-  a:hover { color: #FF0000; }
-
-  span.keyword { font-family: monospace;
-                 text-align: left;
-                 white-space: pre;
-                 color: darkblue; }
-
-  pre.colored { color: blue; }
-
-  ul.empty { list-style-type: none; }
-</style>
-</head>
-<body>
-"""
-
-html_header_3 = """
-<table align=center><tr><td><font size=-1>[<a href="\
-"""
-
-html_header_3i = """
-<table align=center><tr><td width="100%"></td>
-<td><font size=-1>[<a href="\
-"""
-
-html_header_4 = """\
-">Index</a>]</font></td>
-<td width="100%"></td>
-<td><font size=-1>[<a href="\
-"""
-
-html_header_5 = """\
-">TOC</a>]</font></td></tr></table>
-<center><h1>\
-"""
-
-html_header_5t = """\
-">Index</a>]</font></td>
-<td width="100%"></td></tr></table>
-<center><h1>\
-"""
-
-html_header_6 = """\
- API Reference</h1></center>
-"""
-
-
-# The HTML footer used by all generated pages.
-html_footer = """\
-</body>
-</html>\
-"""
-
-# The header and footer used for each section.
-section_title_header = "<center><h1>"
-section_title_footer = "</h1></center>"
-
-# The header and footer used for code segments.
-code_header = '<pre class="colored">'
-code_footer = '</pre>'
-
-# Paragraph header and footer.
-para_header = "<p>"
-para_footer = "</p>"
-
-# Block header and footer.
-block_header        = '<table align=center width="75%"><tr><td>'
-block_footer_start  = """\
-</td></tr></table>
-<hr width="75%">
-<table align=center width="75%"><tr><td><font size=-2>[<a href="\
-"""
-block_footer_middle = """\
-">Index</a>]</font></td>
-<td width="100%"></td>
-<td><font size=-2>[<a href="\
-"""
-block_footer_end    = """\
-">TOC</a>]</font></td></tr></table>
-"""
-
-# Description header/footer.
-description_header = '<table align=center width="87%"><tr><td>'
-description_footer = "</td></tr></table><br>"
-
-# Marker header/inter/footer combination.
-marker_header = '<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>'
-marker_inter  = "</b></em></td></tr><tr><td>"
-marker_footer = "</td></tr></table>"
-
-# Header location header/footer.
-header_location_header = '<table align=center width="87%"><tr><td>'
-header_location_footer = "</td></tr></table><br>"
-
-# Source code extracts header/footer.
-source_header = '<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>\n'
-source_footer = "\n</pre></table><br>"
-
-# Chapter header/inter/footer.
-chapter_header = '<br><table align=center width="75%"><tr><td><h2>'
-chapter_inter  = '</h2><ul class="empty"><li>'
-chapter_footer = '</li></ul></td></tr></table>'
-
-# Index footer.
-index_footer_start = """\
-<hr>
-<table><tr><td width="100%"></td>
-<td><font size=-2>[<a href="\
-"""
-index_footer_end = """\
-">TOC</a>]</font></td></tr></table>
-"""
-
-# TOC footer.
-toc_footer_start = """\
-<hr>
-<table><tr><td><font size=-2>[<a href="\
-"""
-toc_footer_end = """\
-">Index</a>]</font></td>
-<td width="100%"></td>
-</tr></table>
-"""
-
-
-# source language keyword coloration/styling
-keyword_prefix = '<span class="keyword">'
-keyword_suffix = '</span>'
-
-section_synopsis_header = '<h2>Synopsis</h2>'
-section_synopsis_footer = ''
-
-
-# Translate a single line of source to HTML.  This will convert
-# a "<" into "&lt.", ">" into "&gt.", etc.
-def  html_quote( line ):
-    result = string.replace( line, "&", "&amp;" )
-    result = string.replace( result, "<", "&lt;" )
-    result = string.replace( result, ">", "&gt;" )
-    return result
-
-
-
-class  HtmlFormatter( Formatter ):
-
-    def  __init__( self, processor, project_title, file_prefix ):
-        Formatter.__init__( self, processor )
-
-        global html_header_1, html_header_2, html_header_3
-        global html_header_4, html_header_5, html_footer
-
-        if file_prefix:
-            file_prefix = file_prefix + "-"
-        else:
-            file_prefix = ""
-
-        self.headers           = processor.headers
-        self.project_title     = project_title
-        self.file_prefix       = file_prefix
-        self.html_header       = html_header_1 + project_title +              \
-                                 html_header_2 +                              \
-                                 html_header_3 + file_prefix + "index.html" + \
-                                 html_header_4 + file_prefix + "toc.html" +   \
-                                 html_header_5 + project_title +              \
-                                 html_header_6
-
-        self.html_index_header = html_header_1 + project_title +             \
-                                 html_header_2 +                             \
-                                 html_header_3i + file_prefix + "toc.html" + \
-                                 html_header_5 + project_title +             \
-                                 html_header_6
-
-        self.html_toc_header   = html_header_1 + project_title +              \
-                                 html_header_2 +                              \
-                                 html_header_3 + file_prefix + "index.html" + \
-                                 html_header_5t + project_title +             \
-                                 html_header_6
-
-        self.html_footer       = "<center><font size=""-2"">generated on " +     \
-                                 time.asctime( time.localtime( time.time() ) ) + \
-                                 "</font></center>" + html_footer
-
-        self.columns = 3
-
-    def  make_section_url( self, section ):
-        return self.file_prefix + section.name + ".html"
-
-    def  make_block_url( self, block ):
-        return self.make_section_url( block.section ) + "#" + block.name
-
-    def  make_html_word( self, word ):
-        """analyze a simple word to detect cross-references and styling"""
-        # look for cross-references
-        m = re_crossref.match( word )
-        if m:
-            try:
-                name = m.group( 1 )
-                rest = m.group( 2 )
-                block = self.identifiers[name]
-                url   = self.make_block_url( block )
-                return '<a href="' + url + '">' + name + '</a>' + rest
-            except:
-                # we detected a cross-reference to an unknown item
-                sys.stderr.write( \
-                   "WARNING: undefined cross reference '" + name + "'.\n" )
-                return '?' + name + '?' + rest
-
-        # look for italics and bolds
-        m = re_italic.match( word )
-        if m:
-            name = m.group( 1 )
-            rest = m.group( 3 )
-            return '<i>' + name + '</i>' + rest
-
-        m = re_bold.match( word )
-        if m:
-            name = m.group( 1 )
-            rest = m.group( 3 )
-            return '<b>' + name + '</b>' + rest
-
-        return html_quote( word )
-
-    def  make_html_para( self, words ):
-        """ convert words of a paragraph into tagged HTML text, handle xrefs """
-        line = ""
-        if words:
-            line = self.make_html_word( words[0] )
-            for word in words[1:]:
-                line = line + " " + self.make_html_word( word )
-            # handle hyperlinks
-            line = re_url.sub( r'<a href="\1">\1</a>', line )
-            # convert `...' quotations into real left and right single quotes
-            line = re.sub( r"(^|\W)`(.*?)'(\W|$)",  \
-                           r'\1&lsquo;\2&rsquo;\3', \
-                           line )
-            # convert tilde into non-breakable space
-            line = string.replace( line, "~", "&nbsp;" )
-
-        return para_header + line + para_footer
-
-    def  make_html_code( self, lines ):
-        """ convert a code sequence to HTML """
-        line = code_header + '\n'
-        for l in lines:
-            line = line + html_quote( l ) + '\n'
-
-        return line + code_footer
-
-    def  make_html_items( self, items ):
-        """ convert a field's content into some valid HTML """
-        lines = []
-        for item in items:
-            if item.lines:
-                lines.append( self.make_html_code( item.lines ) )
-            else:
-                lines.append( self.make_html_para( item.words ) )
-
-        return string.join( lines, '\n' )
-
-    def  print_html_items( self, items ):
-        print self.make_html_items( items )
-
-    def  print_html_field( self, field ):
-        if field.name:
-            print "<table><tr valign=top><td><b>" + field.name + "</b></td><td>"
-
-        print self.make_html_items( field.items )
-
-        if field.name:
-            print "</td></tr></table>"
-
-    def  html_source_quote( self, line, block_name = None ):
-        result = ""
-        while line:
-            m = re_source_crossref.match( line )
-            if m:
-                name   = m.group( 2 )
-                prefix = html_quote( m.group( 1 ) )
-                length = len( m.group( 0 ) )
-
-                if name == block_name:
-                    # this is the current block name, if any
-                    result = result + prefix + '<b>' + name + '</b>'
-                elif re_source_keywords.match( name ):
-                    # this is a C keyword
-                    result = result + prefix + keyword_prefix + name + keyword_suffix
-                elif self.identifiers.has_key( name ):
-                    # this is a known identifier
-                    block = self.identifiers[name]
-                    result = result + prefix + '<a href="' + \
-                             self.make_block_url( block ) + '">' + name + '</a>'
-                else:
-                    result = result + html_quote( line[:length] )
-
-                line = line[length:]
-            else:
-                result = result + html_quote( line )
-                line   = []
-
-        return result
-
-    def  print_html_field_list( self, fields ):
-        print "<p></p>"
-        print "<table cellpadding=3 border=0>"
-        for field in fields:
-            if len( field.name ) > 22:
-              print "<tr valign=top><td colspan=0><b>" + field.name + "</b></td></tr>"
-              print "<tr valign=top><td></td><td>"
-            else:
-              print "<tr valign=top><td><b>" + field.name + "</b></td><td>"
-
-            self.print_html_items( field.items )
-            print "</td></tr>"
-        print "</table>"
-
-    def  print_html_markup( self, markup ):
-        table_fields = []
-        for field in markup.fields:
-            if field.name:
-                # we begin a new series of field or value definitions, we
-                # will record them in the 'table_fields' list before outputting
-                # all of them as a single table
-                #
-                table_fields.append( field )
-            else:
-                if table_fields:
-                    self.print_html_field_list( table_fields )
-                    table_fields = []
-
-                self.print_html_items( field.items )
-
-        if table_fields:
-            self.print_html_field_list( table_fields )
-
-    #
-    #  Formatting the index
-    #
-    def  index_enter( self ):
-        print self.html_index_header
-        self.index_items = {}
-
-    def  index_name_enter( self, name ):
-        block = self.identifiers[name]
-        url   = self.make_block_url( block )
-        self.index_items[name] = url
-
-    def  index_exit( self ):
-        # block_index already contains the sorted list of index names
-        count = len( self.block_index )
-        rows  = ( count + self.columns - 1 ) / self.columns
-
-        print "<table align=center border=0 cellpadding=0 cellspacing=0>"
-        for r in range( rows ):
-            line = "<tr>"
-            for c in range( self.columns ):
-                i = r + c * rows
-                if i < count:
-                    bname = self.block_index[r + c * rows]
-                    url   = self.index_items[bname]
-                    line = line + '<td><a href="' + url + '">' + bname + '</a></td>'
-                else:
-                    line = line + '<td></td>'
-            line = line + "</tr>"
-            print line
-
-        print "</table>"
-
-        print index_footer_start +            \
-              self.file_prefix + "toc.html" + \
-              index_footer_end
-
-        print self.html_footer
-
-        self.index_items = {}
-
-    def  index_dump( self, index_filename = None ):
-        if index_filename == None:
-            index_filename = self.file_prefix + "index.html"
-
-        Formatter.index_dump( self, index_filename )
-
-    #
-    #  Formatting the table of content
-    #
-    def  toc_enter( self ):
-        print self.html_toc_header
-        print "<center><h1>Table of Contents</h1></center>"
-
-    def  toc_chapter_enter( self, chapter ):
-        print  chapter_header + string.join( chapter.title ) + chapter_inter
-        print "<table cellpadding=5>"
-
-    def  toc_section_enter( self, section ):
-        print '<tr valign=top><td class="left">'
-        print '<a href="' + self.make_section_url( section ) + '">' + \
-               section.title + '</a></td><td>'
-
-        print self.make_html_para( section.abstract )
-
-    def  toc_section_exit( self, section ):
-        print "</td></tr>"
-
-    def  toc_chapter_exit( self, chapter ):
-        print "</table>"
-        print chapter_footer
-
-    def  toc_index( self, index_filename ):
-        print chapter_header +                                      \
-              '<a href="' + index_filename + '">Global Index</a>' + \
-              chapter_inter + chapter_footer
-
-    def  toc_exit( self ):
-        print toc_footer_start +                \
-              self.file_prefix + "index.html" + \
-              toc_footer_end
-
-        print self.html_footer
-
-    def  toc_dump( self, toc_filename = None, index_filename = None ):
-        if toc_filename == None:
-            toc_filename = self.file_prefix + "toc.html"
-
-        if index_filename == None:
-            index_filename = self.file_prefix + "index.html"
-
-        Formatter.toc_dump( self, toc_filename, index_filename )
-
-    #
-    #  Formatting sections
-    #
-    def  section_enter( self, section ):
-        print self.html_header
-
-        print section_title_header
-        print section.title
-        print section_title_footer
-
-        maxwidth = 0
-        for b in section.blocks.values():
-            if len( b.name ) > maxwidth:
-                maxwidth = len( b.name )
-
-        width = 70  # XXX magic number
-        if maxwidth <> 0:
-            # print section synopsis
-            print section_synopsis_header
-            print "<table align=center cellspacing=5 cellpadding=0 border=0>"
-
-            columns = width / maxwidth
-            if columns < 1:
-                columns = 1
-
-            count = len( section.block_names )
-            rows  = ( count + columns - 1 ) / columns
-
-            for r in range( rows ):
-                line = "<tr>"
-                for c in range( columns ):
-                    i = r + c * rows
-                    line = line + '<td></td><td>'
-                    if i < count:
-                        name = section.block_names[i]
-                        line = line + '<a href="#' + name + '">' + name + '</a>'
-
-                    line = line + '</td>'
-                line = line + "</tr>"
-                print line
-
-            print "</table><br><br>"
-            print section_synopsis_footer
-
-        print description_header
-        print self.make_html_items( section.description )
-        print description_footer
-
-    def  block_enter( self, block ):
-        print block_header
-
-        # place html anchor if needed
-        if block.name:
-            print '<h4><a name="' + block.name + '">' + block.name + '</a></h4>'
-
-        # dump the block C source lines now
-        if block.code:
-            header = ''
-            for f in self.headers.keys():
-                if block.source.filename.find( f ) >= 0:
-                    header = self.headers[f] + ' (' + f + ')'
-                    break;
-
-#           if not header:
-#               sys.stderr.write( \
-#                 'WARNING: No header macro for ' + block.source.filename + '.\n' )
-
-            if header:
-                print header_location_header
-                print 'Defined in ' + header + '.'
-                print header_location_footer
-
-            print source_header
-            for l in block.code:
-                print self.html_source_quote( l, block.name )
-            print source_footer
-
-    def  markup_enter( self, markup, block ):
-        if markup.tag == "description":
-            print description_header
-        else:
-            print marker_header + markup.tag + marker_inter
-
-        self.print_html_markup( markup )
-
-    def  markup_exit( self, markup, block ):
-        if markup.tag == "description":
-            print description_footer
-        else:
-            print marker_footer
-
-    def  block_exit( self, block ):
-        print block_footer_start + self.file_prefix + "index.html" + \
-              block_footer_middle + self.file_prefix + "toc.html" +  \
-              block_footer_end
-
-    def  section_exit( self, section ):
-        print html_footer
-
-    def  section_dump_all( self ):
-        for section in self.sections:
-            self.section_dump( section, self.file_prefix + section.name + '.html' )
-
-# eof

+ 0 - 132
Source/ThirdParty/FreeType/src/tools/docmaker/utils.py

@@ -1,132 +0,0 @@
-#  Utils (c) 2002, 2004, 2007, 2008  David Turner <[email protected]>
-#
-
-import string, sys, os, glob
-
-# current output directory
-#
-output_dir = None
-
-
-# This function is used to sort the index.  It is a simple lexicographical
-# sort, except that it places capital letters before lowercase ones.
-#
-def  index_sort( s1, s2 ):
-    if not s1:
-        return -1
-
-    if not s2:
-        return 1
-
-    l1 = len( s1 )
-    l2 = len( s2 )
-    m1 = string.lower( s1 )
-    m2 = string.lower( s2 )
-
-    for i in range( l1 ):
-        if i >= l2 or m1[i] > m2[i]:
-            return 1
-
-        if m1[i] < m2[i]:
-            return -1
-
-        if s1[i] < s2[i]:
-            return -1
-
-        if s1[i] > s2[i]:
-            return 1
-
-    if l2 > l1:
-        return -1
-
-    return 0
-
-
-# Sort input_list, placing the elements of order_list in front.
-#
-def  sort_order_list( input_list, order_list ):
-    new_list = order_list[:]
-    for id in input_list:
-        if not id in order_list:
-            new_list.append( id )
-    return new_list
-
-
-# Open the standard output to a given project documentation file.  Use
-# "output_dir" to determine the filename location if necessary and save the
-# old stdout in a tuple that is returned by this function.
-#
-def  open_output( filename ):
-    global output_dir
-
-    if output_dir and output_dir != "":
-        filename = output_dir + os.sep + filename
-
-    old_stdout = sys.stdout
-    new_file   = open( filename, "w" )
-    sys.stdout = new_file
-
-    return ( new_file, old_stdout )
-
-
-# Close the output that was returned by "close_output".
-#
-def  close_output( output ):
-    output[0].close()
-    sys.stdout = output[1]
-
-
-# Check output directory.
-#
-def  check_output():
-    global output_dir
-    if output_dir:
-        if output_dir != "":
-            if not os.path.isdir( output_dir ):
-                sys.stderr.write( "argument" + " '" + output_dir + "' " + \
-                                  "is not a valid directory" )
-                sys.exit( 2 )
-        else:
-            output_dir = None
-
-
-def  file_exists( pathname ):
-    """checks that a given file exists"""
-    result = 1
-    try:
-        file = open( pathname, "r" )
-        file.close()
-    except:
-        result = None
-        sys.stderr.write( pathname + " couldn't be accessed\n" )
-
-    return result
-
-
-def  make_file_list( args = None ):
-    """builds a list of input files from command-line arguments"""
-    file_list = []
-    # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' )
-
-    if not args:
-        args = sys.argv[1 :]
-
-    for pathname in args:
-        if string.find( pathname, '*' ) >= 0:
-            newpath = glob.glob( pathname )
-            newpath.sort()  # sort files -- this is important because
-                            # of the order of files
-        else:
-            newpath = [pathname]
-
-        file_list.extend( newpath )
-
-    if len( file_list ) == 0:
-        file_list = None
-    else:
-        # now filter the file list to remove non-existing ones
-        file_list = filter( file_exists, file_list )
-
-    return file_list
-
-# eof

+ 0 - 48
Source/ThirdParty/FreeType/src/tools/ftrandom/README

@@ -1,48 +0,0 @@
-ftrandom
---------
-
-This program expects a set of directories containing good fonts, and a set
-of extensions of fonts to be tested.  It will randomly pick a font, copy it,
-introduce and error and then test it.
-
-The FreeType tests are quite basic:
-
-  For each erroneous font it
-    forks off a new tester;
-    initializes the library;
-    opens each font in the file;
-    loads each glyph;
-      (optionally reviewing the contours of the glyph)
-      (optionally rasterizing)
-    closes the face.
-
-If the tester exits with a signal, or takes longer than 20 seconds then
-ftrandom saves the erroneous font and continues.  If the tester exits
-normally or with an error, then the superstructure removes the test font and
-continues.
-
-Arguments are:
-
-  --all                    Test every font in the directory(ies) no matter
-                           what its extension (some CID-keyed fonts have no
-                           extension).
-  --check-outlines         Call FT_Outline_Decompose on each glyph.
-  --dir <dir>              Append <dir> to the list of directories to search
-                           for good fonts.
-  --error-count <cnt>      Introduce <cnt> single-byte errors into the
-                           erroneous fonts.
-  --error-fraction <frac>  Multiply the file size of the font by <frac> and
-                           introduce that many errors into the erroneous
-                           font file.
-  --ext <ext>              Add <ext> to the set of font types tested.  Known
-                           extensions are `ttf', `otf', `ttc', `cid', `pfb',
-                           `pfa', `bdf', `pcf', `pfr', `fon', `otb', and
-                           `cff'.
-  --help                   Print out this list of options.
-  --nohints                Specify FT_LOAD_NO_HINTING when loading glyphs.
-  --rasterize              Call FT_Render_Glyph as well as loading it.
-  --result <dir>           This is the directory in which test files are
-                           placed.
-  --test <file>            Run a single test on a pre-generated testcase.
-                           Done in the current process so it can be debugged
-                           more easily.

+ 0 - 673
Source/ThirdParty/FreeType/src/tools/ftrandom/ftrandom.c

@@ -1,673 +0,0 @@
-/* Copyright (C) 2005, 2007, 2008, 2013 by George Williams */
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
-
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* modified by Werner Lemberg <[email protected]>       */
-/* This file is now part of the FreeType library */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <dirent.h>
-#include <math.h>
-#include <signal.h>
-#include <time.h>
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_OUTLINE_H
-
-#define true     1
-#define false    0
-#define forever  for (;;)
-
-
-  static int    check_outlines = false;
-  static int    nohints        = false;
-  static int    rasterize      = false;
-  static char*  results_dir    = "results";
-
-#define GOOD_FONTS_DIR  "/home/wl/freetype-testfonts"
-
-  static char*  default_dir_list[] =
-  {
-    GOOD_FONTS_DIR,
-    NULL
-  };
-
-  static char*  default_ext_list[] =
-  {
-    "ttf",
-    "otf",
-    "ttc",
-    "cid",
-    "pfb",
-    "pfa",
-    "bdf",
-    "pcf",
-    "pfr",
-    "fon",
-    "otb",
-    "cff",
-    NULL
-  };
-
-  static int  error_count    = 1;
-  static int  error_fraction = 0;
-
-  static FT_F26Dot6  font_size = 12 * 64;
-
-  static struct fontlist
-  {
-    char*         name;
-    int           len;
-    unsigned int  isbinary: 1;
-    unsigned int  isascii: 1;
-    unsigned int  ishex: 1;
-
-  } *fontlist;
-
-  static int  fcnt;
-
-
-  static int
-  FT_MoveTo( const FT_Vector  *to,
-             void             *user )
-  {
-    return 0;
-  }
-
-
-  static int
-  FT_LineTo( const FT_Vector  *to,
-             void             *user )
-  {
-    return 0;
-  }
-
-
-  static int
-  FT_ConicTo( const FT_Vector  *_cp,
-              const FT_Vector  *to,
-              void             *user )
-  {
-    return 0;
-  }
-
-
-  static int
-  FT_CubicTo( const FT_Vector  *cp1,
-              const FT_Vector  *cp2,
-              const FT_Vector  *to,
-              void             *user )
-  {
-    return 0;
-  }
-
-
-  static FT_Outline_Funcs outlinefuncs =
-  {
-    FT_MoveTo,
-    FT_LineTo,
-    FT_ConicTo,
-    FT_CubicTo,
-    0, 0          /* No shift, no delta */
-  };
-
-
-  static void
-  TestFace( FT_Face  face )
-  {
-    int  gid;
-    int  load_flags = FT_LOAD_DEFAULT;
-
-
-    if ( check_outlines         &&
-         FT_IS_SCALABLE( face ) )
-      load_flags = FT_LOAD_NO_BITMAP;
-
-    if ( nohints )
-      load_flags |= FT_LOAD_NO_HINTING;
-
-    FT_Set_Char_Size( face, 0, font_size, 72, 72 );
-
-    for ( gid = 0; gid < face->num_glyphs; ++gid )
-    {
-      if ( check_outlines         &&
-           FT_IS_SCALABLE( face ) )
-      {
-        if ( !FT_Load_Glyph( face, gid, load_flags ) )
-          FT_Outline_Decompose( &face->glyph->outline, &outlinefuncs, NULL );
-      }
-      else
-        FT_Load_Glyph( face, gid, load_flags );
-
-      if ( rasterize )
-        FT_Render_Glyph( face->glyph, ft_render_mode_normal );
-    }
-
-    FT_Done_Face( face );
-  }
-
-
-  static void
-  ExecuteTest( char*  testfont )
-  {
-    FT_Library  context;
-    FT_Face     face;
-
-
-    if ( FT_Init_FreeType( &context ) )
-    {
-      fprintf( stderr, "Can't initialize FreeType.\n" );
-      exit( 1 );
-    }
-
-    if ( FT_New_Face( context, testfont, 0, &face ) )
-    {
-      /* The font is erroneous, so if this fails that's ok. */
-      exit( 0 );
-    }
-
-    if ( face->num_faces == 1 )
-      TestFace( face );
-    else
-    {
-      int  i, num;
-
-
-      num = face->num_faces;
-      FT_Done_Face( face );
-
-      for ( i = 0; i < num; ++i )
-      {
-        if ( !FT_New_Face( context, testfont, i, &face ) )
-          TestFace( face );
-      }
-    }
-
-    exit( 0 );
-  }
-
-
-  static int
-  extmatch( char*   filename,
-            char**  extensions )
-  {
-    int    i;
-    char*  pt;
-
-
-    if ( extensions == NULL )
-      return true;
-
-    pt = strrchr( filename, '.' );
-    if ( pt == NULL )
-      return false;
-    if ( pt < strrchr( filename, '/' ) )
-      return false;
-
-    for ( i = 0; extensions[i] != NULL; ++i )
-      if ( strcasecmp( pt + 1, extensions[i] ) == 0 ||
-           strcasecmp( pt,     extensions[i] ) == 0 )
-        return true;
-
-    return false;
-  }
-
-
-  static void
-  figurefiletype( struct fontlist*  item )
-  {
-    FILE*  foo;
-
-
-    item->isbinary = item->isascii = item->ishex = false;
-
-    foo = fopen( item->name, "rb" );
-    if ( foo != NULL )
-    {
-      /* Try to guess the file type from the first few characters... */
-      int  ch1 = getc( foo );
-      int  ch2 = getc( foo );
-      int  ch3 = getc( foo );
-      int  ch4 = getc( foo );
-
-
-      fclose( foo );
-
-      if ( ( ch1 == 0   && ch2 == 1   && ch3 == 0   && ch4 == 0   ) ||
-           ( ch1 == 'O' && ch2 == 'T' && ch3 == 'T' && ch4 == 'O' ) ||
-           ( ch1 == 't' && ch2 == 'r' && ch3 == 'u' && ch4 == 'e' ) ||
-           ( ch1 == 't' && ch2 == 't' && ch3 == 'c' && ch4 == 'f' ) )
-      {
-        /* ttf, otf, ttc files */
-        item->isbinary = true;
-      }
-      else if ( ch1 == 0x80 && ch2 == '\01' )
-      {
-        /* PFB header */
-        item->isbinary = true;
-      }
-      else if ( ch1 == '%' && ch2 == '!' )
-      {
-        /* Random PostScript */
-        if ( strstr( item->name, ".pfa" ) != NULL ||
-             strstr( item->name, ".PFA" ) != NULL )
-          item->ishex = true;
-        else
-          item->isascii = true;
-      }
-      else if ( ch1 == 1 && ch2 == 0 && ch3 == 4 )
-      {
-        /* Bare CFF */
-        item->isbinary = true;
-      }
-      else if ( ch1 == 'S' && ch2 == 'T' && ch3 == 'A' && ch4 == 'R' )
-      {
-        /* BDF */
-        item->ishex = true;
-      }
-      else if ( ch1 == 'P' && ch2 == 'F' && ch3 == 'R' && ch4 == '0' )
-      {
-        /* PFR */
-        item->isbinary = true;
-      }
-      else if ( ( ch1 == '\1' && ch2 == 'f' && ch3 == 'c' && ch4 == 'p' ) ||
-                ( ch1 == 'M'  && ch2 == 'Z' )                             )
-      {
-        /* Windows FON */
-        item->isbinary = true;
-      }
-      else
-      {
-        fprintf( stderr,
-                 "Can't recognize file type of `%s', assuming binary\n",
-                 item->name );
-        item->isbinary = true;
-      }
-    }
-    else
-    {
-      fprintf( stderr, "Can't open `%s' for typing the file.\n",
-               item->name );
-      item->isbinary = true;
-    }
-  }
-
-
-  static void
-  FindFonts( char**  fontdirs,
-             char**  extensions )
-  {
-    int          i, max;
-    char         buffer[1025];
-    struct stat  statb;
-
-
-    max  = 0;
-    fcnt = 0;
-
-    for ( i = 0; fontdirs[i] != NULL; ++i )
-    {
-      DIR*            examples;
-      struct dirent*  ent;
-
-
-      examples = opendir( fontdirs[i] );
-      if ( examples == NULL )
-      {
-        fprintf( stderr,
-                 "Can't open example font directory `%s'\n",
-                 fontdirs[i] );
-        exit( 1 );
-      }
-
-      while ( ( ent = readdir( examples ) ) != NULL )
-      {
-        snprintf( buffer, sizeof ( buffer ),
-                  "%s/%s", fontdirs[i], ent->d_name );
-        if ( stat( buffer, &statb ) == -1 || S_ISDIR( statb.st_mode ) )
-          continue;
-        if ( extensions == NULL || extmatch( buffer, extensions ) )
-        {
-          if ( fcnt >= max )
-          {
-            max += 100;
-            fontlist = realloc( fontlist, max * sizeof ( struct fontlist ) );
-            if ( fontlist == NULL )
-            {
-              fprintf( stderr, "Can't allocate memory\n" );
-              exit( 1 );
-            }
-          }
-
-          fontlist[fcnt].name = strdup( buffer );
-          fontlist[fcnt].len  = statb.st_size;
-
-          figurefiletype( &fontlist[fcnt] );
-          ++fcnt;
-        }
-      }
-
-      closedir( examples );
-    }
-
-    if ( fcnt == 0 )
-    {
-      fprintf( stderr, "Can't find matching font files.\n" );
-      exit( 1 );
-    }
-
-    fontlist[fcnt].name = NULL;
-  }
-
-
-  static int
-  getErrorCnt( struct fontlist*  item )
-  {
-    if ( error_count == 0 && error_fraction == 0 )
-      return 0;
-
-    return error_count + ceil( error_fraction * item->len );
-  }
-
-
-  static int
-  getRandom( int  low,
-             int  high )
-  {
-    if ( low - high < 0x10000L )
-      return low + ( ( random() >> 8 ) % ( high + 1 - low ) );
-
-    return low + ( random() % ( high + 1 - low ) );
-  }
-
-
-  static int
-  copyfont( struct fontlist*  item,
-            char*             newfont )
-  {
-    static char  buffer[8096];
-    FILE         *good, *new;
-    int          len;
-    int          i, err_cnt;
-
-
-    good = fopen( item->name, "r" );
-    if ( good == NULL )
-    {
-      fprintf( stderr, "Can't open `%s'\n", item->name );
-      return false;
-    }
-
-    new = fopen( newfont, "w+" );
-    if ( new == NULL )
-    {
-      fprintf( stderr, "Can't create temporary output file `%s'\n",
-               newfont );
-      exit( 1 );
-    }
-
-    while ( ( len = fread( buffer, 1, sizeof ( buffer ), good ) ) > 0 )
-      fwrite( buffer, 1, len, new );
-
-    fclose( good );
-
-    err_cnt = getErrorCnt( item );
-    for ( i = 0; i < err_cnt; ++i )
-    {
-      fseek( new, getRandom( 0, item->len - 1 ), SEEK_SET );
-
-      if ( item->isbinary )
-        putc( getRandom( 0, 0xff ), new );
-      else if ( item->isascii )
-        putc( getRandom( 0x20, 0x7e ), new );
-      else
-      {
-        int  hex = getRandom( 0, 15 );
-
-
-        if ( hex < 10 )
-          hex += '0';
-        else
-          hex += 'A' - 10;
-
-        putc( hex, new );
-      }
-    }
-
-    if ( ferror( new ) )
-    {
-      fclose( new );
-      unlink( newfont );
-      return false;
-    }
-
-    fclose( new );
-
-    return true;
-  }
-
-
-  static int  child_pid;
-
-  static void
-  abort_test( int  sig )
-  {
-    /* If a time-out happens, then kill the child */
-    kill( child_pid, SIGFPE );
-    write( 2, "Timeout... ", 11 );
-  }
-
-
-  static void
-  do_test( void )
-  {
-    int         i        = getRandom( 0, fcnt - 1 );
-    static int  test_num = 0;
-    char        buffer[1024];
-
-
-    sprintf( buffer, "%s/test%d", results_dir, test_num++ );
-
-    if ( copyfont ( &fontlist[i], buffer ) )
-    {
-      signal( SIGALRM, abort_test );
-      /* Anything that takes more than 20 seconds */
-      /* to parse and/or rasterize is an error.   */
-      alarm( 20 );
-      if ( ( child_pid = fork() ) == 0 )
-        ExecuteTest( buffer );
-      else if ( child_pid != -1 )
-      {
-        int  status;
-
-
-        waitpid( child_pid, &status, 0 );
-        alarm( 0 );
-        if ( WIFSIGNALED ( status ) )
-          printf( "Error found in file `%s'\n", buffer );
-        else
-          unlink( buffer );
-      }
-      else
-      {
-        fprintf( stderr, "Can't fork test case.\n" );
-        exit( 1 );
-      }
-      alarm( 0 );
-    }
-  }
-
-
-  static void
-  usage( FILE*  out,
-         char*  name )
-  {
-    fprintf( out, "%s [options] -- Generate random erroneous fonts\n"
-                  "  and attempt to parse them with FreeType.\n\n", name );
-
-    fprintf( out, "  --all                    All non-directory files are assumed to be fonts.\n" );
-    fprintf( out, "  --check-outlines         Make sure we can parse the outlines of each glyph.\n" );
-    fprintf( out, "  --dir <path>             Append <path> to list of font search directories.\n" );
-    fprintf( out, "  --error-count <cnt>      Introduce <cnt> single byte errors into each font.\n" );
-    fprintf( out, "  --error-fraction <frac>  Introduce <frac>*filesize single byte errors\n"
-                  "                           into each font.\n" );
-    fprintf( out, "  --ext <ext>              Add <ext> to list of extensions indicating fonts.\n" );
-    fprintf( out, "  --help                   Print this.\n" );
-    fprintf( out, "  --nohints                Turn off hinting.\n" );
-    fprintf( out, "  --rasterize              Attempt to rasterize each glyph.\n" );
-    fprintf( out, "  --results <dir>          Directory in which to place the test fonts.\n" );
-    fprintf( out, "  --size <float>           Use the given font size for the tests.\n" );
-    fprintf( out, "  --test <file>            Run a single test on an already existing file.\n" );
-  }
-
-
-  int
-  main( int     argc,
-        char**  argv )
-  {
-    char    **dirs, **exts;
-    int     dcnt = 0, ecnt = 0, rset = false, allexts = false;
-    int     i;
-    time_t  now;
-    char*   testfile = NULL;
-
-
-    dirs = calloc( argc + 1, sizeof ( char ** ) );
-    exts = calloc( argc + 1, sizeof ( char ** ) );
-
-    for ( i = 1; i < argc; ++i )
-    {
-      char*  pt = argv[i];
-      char*  end;
-
-
-      if ( pt[0] == '-' && pt[1] == '-' )
-        ++pt;
-
-      if ( strcmp( pt, "-all" ) == 0 )
-        allexts = true;
-      else if ( strcmp( pt, "-check-outlines" ) == 0 )
-        check_outlines = true;
-      else if ( strcmp( pt, "-dir" ) == 0 )
-        dirs[dcnt++] = argv[++i];
-      else if ( strcmp( pt, "-error-count" ) == 0 )
-      {
-        if ( !rset )
-          error_fraction = 0;
-        rset = true;
-        error_count = strtol( argv[++i], &end, 10 );
-        if ( *end != '\0' )
-        {
-          fprintf( stderr, "Bad value for error-count: %s\n", argv[i] );
-          exit( 1 );
-        }
-      }
-      else if ( strcmp( pt, "-error-fraction" ) == 0 )
-      {
-        if ( !rset )
-          error_count = 0;
-        rset = true;
-        error_fraction = strtod( argv[++i], &end );
-        if ( *end != '\0' )
-        {
-          fprintf( stderr, "Bad value for error-fraction: %s\n", argv[i] );
-          exit( 1 );
-        }
-      }
-      else if ( strcmp( pt, "-ext" ) == 0 )
-        exts[ecnt++] = argv[++i];
-      else if ( strcmp( pt, "-help" ) == 0 )
-      {
-        usage( stdout, argv[0] );
-        exit( 0 );
-      }
-      else if ( strcmp( pt, "-nohints" ) == 0 )
-        nohints = true;
-      else if ( strcmp( pt, "-rasterize" ) == 0 )
-        rasterize = true;
-      else if ( strcmp( pt, "-results" ) == 0 )
-        results_dir = argv[++i];
-      else if ( strcmp( pt, "-size" ) == 0 )
-      {
-        font_size = (FT_F26Dot6)( strtod( argv[++i], &end ) * 64 );
-        if ( *end != '\0' || font_size < 64 )
-        {
-          fprintf( stderr, "Bad value for size: %s\n", argv[i] );
-          exit( 1 );
-        }
-      }
-      else if ( strcmp( pt, "-test" ) == 0 )
-        testfile = argv[++i];
-      else
-      {
-        usage( stderr, argv[0] );
-        exit( 1 );
-      }
-    }
-
-    if ( allexts )
-    {
-      free( exts );
-      exts = NULL;
-    }
-    else if ( ecnt == 0 )
-    {
-      free( exts );
-      exts = default_ext_list;
-    }
-
-    if ( dcnt == 0 )
-    {
-      free( dirs );
-      dirs = default_dir_list;
-    }
-
-    if ( testfile != NULL )
-      ExecuteTest( testfile );         /* This should never return */
-
-    time( &now );
-    srandom( now );
-
-    FindFonts( dirs, exts );
-    mkdir( results_dir, 0755 );
-
-    forever
-      do_test();
-
-    return 0;
-  }
-
-
-/* EOF */

+ 0 - 5487
Source/ThirdParty/FreeType/src/tools/glnames.py

@@ -1,5487 +0,0 @@
-#!/usr/bin/env python
-#
-
-#
-# FreeType 2 glyph name builder
-#
-
-
-# Copyright 1996-2000, 2003, 2005, 2007, 2008, 2011 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-"""\
-
-usage: %s <output-file>
-
-  This python script generates the glyph names tables defined in the
-  `psnames' module.
-
-  Its single argument is the name of the header file to be created.
-"""
-
-
-import sys, string, struct, re, os.path
-
-
-# This table lists the glyphs according to the Macintosh specification.
-# It is used by the TrueType Postscript names table.
-#
-# See
-#
-#   http://fonts.apple.com/TTRefMan/RM06/Chap6post.html
-#
-# for the official list.
-#
-mac_standard_names = \
-[
-  # 0
-  ".notdef", ".null", "nonmarkingreturn", "space", "exclam",
-  "quotedbl", "numbersign", "dollar", "percent", "ampersand",
-
-  # 10
-  "quotesingle", "parenleft", "parenright", "asterisk", "plus",
-  "comma", "hyphen", "period", "slash", "zero",
-
-  # 20
-  "one", "two", "three", "four", "five",
-  "six", "seven", "eight", "nine", "colon",
-
-  # 30
-  "semicolon", "less", "equal", "greater", "question",
-  "at", "A", "B", "C", "D",
-
-  # 40
-  "E", "F", "G", "H", "I",
-  "J", "K", "L", "M", "N",
-
-  # 50
-  "O", "P", "Q", "R", "S",
-  "T", "U", "V", "W", "X",
-
-  # 60
-  "Y", "Z", "bracketleft", "backslash", "bracketright",
-  "asciicircum", "underscore", "grave", "a", "b",
-
-  # 70
-  "c", "d", "e", "f", "g",
-  "h", "i", "j", "k", "l",
-
-  # 80
-  "m", "n", "o", "p", "q",
-  "r", "s", "t", "u", "v",
-
-  # 90
-  "w", "x", "y", "z", "braceleft",
-  "bar", "braceright", "asciitilde", "Adieresis", "Aring",
-
-  # 100
-  "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis",
-  "aacute", "agrave", "acircumflex", "adieresis", "atilde",
-
-  # 110
-  "aring", "ccedilla", "eacute", "egrave", "ecircumflex",
-  "edieresis", "iacute", "igrave", "icircumflex", "idieresis",
-
-  # 120
-  "ntilde", "oacute", "ograve", "ocircumflex", "odieresis",
-  "otilde", "uacute", "ugrave", "ucircumflex", "udieresis",
-
-  # 130
-  "dagger", "degree", "cent", "sterling", "section",
-  "bullet", "paragraph", "germandbls", "registered", "copyright",
-
-  # 140
-  "trademark", "acute", "dieresis", "notequal", "AE",
-  "Oslash", "infinity", "plusminus", "lessequal", "greaterequal",
-
-  # 150
-  "yen", "mu", "partialdiff", "summation", "product",
-  "pi", "integral", "ordfeminine", "ordmasculine", "Omega",
-
-  # 160
-  "ae", "oslash", "questiondown", "exclamdown", "logicalnot",
-  "radical", "florin", "approxequal", "Delta", "guillemotleft",
-
-  # 170
-  "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde",
-  "Otilde", "OE", "oe", "endash", "emdash",
-
-  # 180
-  "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide",
-  "lozenge", "ydieresis", "Ydieresis", "fraction", "currency",
-
-  # 190
-  "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl",
-  "periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
-    "Acircumflex",
-
-  # 200
-  "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute",
-  "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex",
-
-  # 210
-  "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave",
-  "dotlessi", "circumflex", "tilde", "macron", "breve",
-
-  # 220
-  "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek",
-  "caron", "Lslash", "lslash", "Scaron", "scaron",
-
-  # 230
-  "Zcaron", "zcaron", "brokenbar", "Eth", "eth",
-  "Yacute", "yacute", "Thorn", "thorn", "minus",
-
-  # 240
-  "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf",
-  "onequarter", "threequarters", "franc", "Gbreve", "gbreve",
-
-  # 250
-  "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute",
-  "Ccaron", "ccaron", "dcroat"
-]
-
-
-# The list of standard `SID' glyph names.  For the official list,
-# see Annex A of document at
-#
-#   http://partners.adobe.com/public/developer/en/font/5176.CFF.pdf  .
-#
-sid_standard_names = \
-[
-  # 0
-  ".notdef", "space", "exclam", "quotedbl", "numbersign",
-  "dollar", "percent", "ampersand", "quoteright", "parenleft",
-
-  # 10
-  "parenright", "asterisk", "plus", "comma", "hyphen",
-  "period", "slash", "zero", "one", "two",
-
-  # 20
-  "three", "four", "five", "six", "seven",
-  "eight", "nine", "colon", "semicolon", "less",
-
-  # 30
-  "equal", "greater", "question", "at", "A",
-  "B", "C", "D", "E", "F",
-
-  # 40
-  "G", "H", "I", "J", "K",
-  "L", "M", "N", "O", "P",
-
-  # 50
-  "Q", "R", "S", "T", "U",
-  "V", "W", "X", "Y", "Z",
-
-  # 60
-  "bracketleft", "backslash", "bracketright", "asciicircum", "underscore",
-  "quoteleft", "a", "b", "c", "d",
-
-  # 70
-  "e", "f", "g", "h", "i",
-  "j", "k", "l", "m", "n",
-
-  # 80
-  "o", "p", "q", "r", "s",
-  "t", "u", "v", "w", "x",
-
-  # 90
-  "y", "z", "braceleft", "bar", "braceright",
-  "asciitilde", "exclamdown", "cent", "sterling", "fraction",
-
-  # 100
-  "yen", "florin", "section", "currency", "quotesingle",
-  "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi",
-
-  # 110
-  "fl", "endash", "dagger", "daggerdbl", "periodcentered",
-  "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright",
-
-  # 120
-  "guillemotright", "ellipsis", "perthousand", "questiondown", "grave",
-  "acute", "circumflex", "tilde", "macron", "breve",
-
-  # 130
-  "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut",
-  "ogonek", "caron", "emdash", "AE", "ordfeminine",
-
-  # 140
-  "Lslash", "Oslash", "OE", "ordmasculine", "ae",
-  "dotlessi", "lslash", "oslash", "oe", "germandbls",
-
-  # 150
-  "onesuperior", "logicalnot", "mu", "trademark", "Eth",
-  "onehalf", "plusminus", "Thorn", "onequarter", "divide",
-
-  # 160
-  "brokenbar", "degree", "thorn", "threequarters", "twosuperior",
-  "registered", "minus", "eth", "multiply", "threesuperior",
-
-  # 170
-  "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave",
-  "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex",
-
-  # 180
-  "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis",
-  "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis",
-
-  # 190
-  "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex",
-  "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron",
-
-  # 200
-  "aacute", "acircumflex", "adieresis", "agrave", "aring",
-  "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis",
-
-  # 210
-  "egrave", "iacute", "icircumflex", "idieresis", "igrave",
-  "ntilde", "oacute", "ocircumflex", "odieresis", "ograve",
-
-  # 220
-  "otilde", "scaron", "uacute", "ucircumflex", "udieresis",
-  "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall",
-
-  # 230
-  "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall",
-    "Acutesmall",
-  "parenleftsuperior", "parenrightsuperior", "twodotenleader",
-    "onedotenleader", "zerooldstyle",
-
-  # 240
-  "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle",
-    "fiveoldstyle",
-  "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle",
-    "commasuperior",
-
-  # 250
-  "threequartersemdash", "periodsuperior", "questionsmall", "asuperior",
-    "bsuperior",
-  "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior",
-
-  # 260
-  "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior",
-  "tsuperior", "ff", "ffi", "ffl", "parenleftinferior",
-
-  # 270
-  "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall",
-    "Asmall",
-  "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall",
-
-  # 280
-  "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall",
-  "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall",
-
-  # 290
-  "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall",
-  "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall",
-
-  # 300
-  "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall",
-  "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall",
-    "Dieresissmall",
-
-  # 310
-  "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash",
-  "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall",
-    "questiondownsmall",
-
-  # 320
-  "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird",
-  "twothirds", "zerosuperior", "foursuperior", "fivesuperior",
-    "sixsuperior",
-
-  # 330
-  "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior",
-    "oneinferior",
-  "twoinferior", "threeinferior", "fourinferior", "fiveinferior",
-    "sixinferior",
-
-  # 340
-  "seveninferior", "eightinferior", "nineinferior", "centinferior",
-    "dollarinferior",
-  "periodinferior", "commainferior", "Agravesmall", "Aacutesmall",
-    "Acircumflexsmall",
-
-  # 350
-  "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall",
-  "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall",
-    "Igravesmall",
-
-  # 360
-  "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall",
-    "Ntildesmall",
-  "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall",
-    "Odieresissmall",
-
-  # 370
-  "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall",
-    "Ucircumflexsmall",
-  "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall",
-    "001.000",
-
-  # 380
-  "001.001", "001.002", "001.003", "Black", "Bold",
-  "Book", "Light", "Medium", "Regular", "Roman",
-
-  # 390
-  "Semibold"
-]
-
-
-# This table maps character codes of the Adobe Standard Type 1
-# encoding to glyph indices in the sid_standard_names table.
-#
-t1_standard_encoding = \
-[
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   1,   2,   3,   4,   5,   6,   7,   8,
-    9,  10,  11,  12,  13,  14,  15,  16,  17,  18,
-
-   19,  20,  21,  22,  23,  24,  25,  26,  27,  28,
-   29,  30,  31,  32,  33,  34,  35,  36,  37,  38,
-   39,  40,  41,  42,  43,  44,  45,  46,  47,  48,
-   49,  50,  51,  52,  53,  54,  55,  56,  57,  58,
-   59,  60,  61,  62,  63,  64,  65,  66,  67,  68,
-
-   69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
-   79,  80,  81,  82,  83,  84,  85,  86,  87,  88,
-   89,  90,  91,  92,  93,  94,  95,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,  96,  97,  98,  99, 100, 101, 102, 103, 104,
-  105, 106, 107, 108, 109, 110,   0, 111, 112, 113,
-  114,   0, 115, 116, 117, 118, 119, 120, 121, 122,
-    0, 123,   0, 124, 125, 126, 127, 128, 129, 130,
-
-  131,   0, 132, 133,   0, 134, 135, 136, 137,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   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
-]
-
-
-# This table maps character codes of the Adobe Expert Type 1
-# encoding to glyph indices in the sid_standard_names table.
-#
-t1_expert_encoding = \
-[
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   1, 229, 230,   0, 231, 232, 233, 234,
-  235, 236, 237, 238,  13,  14,  15,  99, 239, 240,
-
-  241, 242, 243, 244, 245, 246, 247, 248,  27,  28,
-  249, 250, 251, 252,   0, 253, 254, 255, 256, 257,
-    0,   0,   0, 258,   0,   0, 259, 260, 261, 262,
-    0,   0, 263, 264, 265,   0, 266, 109, 110, 267,
-  268, 269,   0, 270, 271, 272, 273, 274, 275, 276,
-
-  277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
-  287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
-  297, 298, 299, 300, 301, 302, 303,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0, 304, 305, 306,   0,   0, 307, 308, 309, 310,
-  311,   0, 312,   0,   0, 313,   0,   0, 314, 315,
-    0,   0, 316, 317, 318,   0,   0,   0, 158, 155,
-  163, 319, 320, 321, 322, 323, 324, 325,   0,   0,
-
-  326, 150, 164, 169, 327, 328, 329, 330, 331, 332,
-  333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
-  343, 344, 345, 346, 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
-]
-
-
-# This data has been taken literally from the files `glyphlist.txt'
-# and `zapfdingbats.txt' version 2.0, Sept 2002.  It is available from
-#
-#   http://sourceforge.net/adobe/aglfn/
-#
-adobe_glyph_list = """\
-A;0041
-AE;00C6
-AEacute;01FC
-AEmacron;01E2
-AEsmall;F7E6
-Aacute;00C1
-Aacutesmall;F7E1
-Abreve;0102
-Abreveacute;1EAE
-Abrevecyrillic;04D0
-Abrevedotbelow;1EB6
-Abrevegrave;1EB0
-Abrevehookabove;1EB2
-Abrevetilde;1EB4
-Acaron;01CD
-Acircle;24B6
-Acircumflex;00C2
-Acircumflexacute;1EA4
-Acircumflexdotbelow;1EAC
-Acircumflexgrave;1EA6
-Acircumflexhookabove;1EA8
-Acircumflexsmall;F7E2
-Acircumflextilde;1EAA
-Acute;F6C9
-Acutesmall;F7B4
-Acyrillic;0410
-Adblgrave;0200
-Adieresis;00C4
-Adieresiscyrillic;04D2
-Adieresismacron;01DE
-Adieresissmall;F7E4
-Adotbelow;1EA0
-Adotmacron;01E0
-Agrave;00C0
-Agravesmall;F7E0
-Ahookabove;1EA2
-Aiecyrillic;04D4
-Ainvertedbreve;0202
-Alpha;0391
-Alphatonos;0386
-Amacron;0100
-Amonospace;FF21
-Aogonek;0104
-Aring;00C5
-Aringacute;01FA
-Aringbelow;1E00
-Aringsmall;F7E5
-Asmall;F761
-Atilde;00C3
-Atildesmall;F7E3
-Aybarmenian;0531
-B;0042
-Bcircle;24B7
-Bdotaccent;1E02
-Bdotbelow;1E04
-Becyrillic;0411
-Benarmenian;0532
-Beta;0392
-Bhook;0181
-Blinebelow;1E06
-Bmonospace;FF22
-Brevesmall;F6F4
-Bsmall;F762
-Btopbar;0182
-C;0043
-Caarmenian;053E
-Cacute;0106
-Caron;F6CA
-Caronsmall;F6F5
-Ccaron;010C
-Ccedilla;00C7
-Ccedillaacute;1E08
-Ccedillasmall;F7E7
-Ccircle;24B8
-Ccircumflex;0108
-Cdot;010A
-Cdotaccent;010A
-Cedillasmall;F7B8
-Chaarmenian;0549
-Cheabkhasiancyrillic;04BC
-Checyrillic;0427
-Chedescenderabkhasiancyrillic;04BE
-Chedescendercyrillic;04B6
-Chedieresiscyrillic;04F4
-Cheharmenian;0543
-Chekhakassiancyrillic;04CB
-Cheverticalstrokecyrillic;04B8
-Chi;03A7
-Chook;0187
-Circumflexsmall;F6F6
-Cmonospace;FF23
-Coarmenian;0551
-Csmall;F763
-D;0044
-DZ;01F1
-DZcaron;01C4
-Daarmenian;0534
-Dafrican;0189
-Dcaron;010E
-Dcedilla;1E10
-Dcircle;24B9
-Dcircumflexbelow;1E12
-Dcroat;0110
-Ddotaccent;1E0A
-Ddotbelow;1E0C
-Decyrillic;0414
-Deicoptic;03EE
-Delta;2206
-Deltagreek;0394
-Dhook;018A
-Dieresis;F6CB
-DieresisAcute;F6CC
-DieresisGrave;F6CD
-Dieresissmall;F7A8
-Digammagreek;03DC
-Djecyrillic;0402
-Dlinebelow;1E0E
-Dmonospace;FF24
-Dotaccentsmall;F6F7
-Dslash;0110
-Dsmall;F764
-Dtopbar;018B
-Dz;01F2
-Dzcaron;01C5
-Dzeabkhasiancyrillic;04E0
-Dzecyrillic;0405
-Dzhecyrillic;040F
-E;0045
-Eacute;00C9
-Eacutesmall;F7E9
-Ebreve;0114
-Ecaron;011A
-Ecedillabreve;1E1C
-Echarmenian;0535
-Ecircle;24BA
-Ecircumflex;00CA
-Ecircumflexacute;1EBE
-Ecircumflexbelow;1E18
-Ecircumflexdotbelow;1EC6
-Ecircumflexgrave;1EC0
-Ecircumflexhookabove;1EC2
-Ecircumflexsmall;F7EA
-Ecircumflextilde;1EC4
-Ecyrillic;0404
-Edblgrave;0204
-Edieresis;00CB
-Edieresissmall;F7EB
-Edot;0116
-Edotaccent;0116
-Edotbelow;1EB8
-Efcyrillic;0424
-Egrave;00C8
-Egravesmall;F7E8
-Eharmenian;0537
-Ehookabove;1EBA
-Eightroman;2167
-Einvertedbreve;0206
-Eiotifiedcyrillic;0464
-Elcyrillic;041B
-Elevenroman;216A
-Emacron;0112
-Emacronacute;1E16
-Emacrongrave;1E14
-Emcyrillic;041C
-Emonospace;FF25
-Encyrillic;041D
-Endescendercyrillic;04A2
-Eng;014A
-Enghecyrillic;04A4
-Enhookcyrillic;04C7
-Eogonek;0118
-Eopen;0190
-Epsilon;0395
-Epsilontonos;0388
-Ercyrillic;0420
-Ereversed;018E
-Ereversedcyrillic;042D
-Escyrillic;0421
-Esdescendercyrillic;04AA
-Esh;01A9
-Esmall;F765
-Eta;0397
-Etarmenian;0538
-Etatonos;0389
-Eth;00D0
-Ethsmall;F7F0
-Etilde;1EBC
-Etildebelow;1E1A
-Euro;20AC
-Ezh;01B7
-Ezhcaron;01EE
-Ezhreversed;01B8
-F;0046
-Fcircle;24BB
-Fdotaccent;1E1E
-Feharmenian;0556
-Feicoptic;03E4
-Fhook;0191
-Fitacyrillic;0472
-Fiveroman;2164
-Fmonospace;FF26
-Fourroman;2163
-Fsmall;F766
-G;0047
-GBsquare;3387
-Gacute;01F4
-Gamma;0393
-Gammaafrican;0194
-Gangiacoptic;03EA
-Gbreve;011E
-Gcaron;01E6
-Gcedilla;0122
-Gcircle;24BC
-Gcircumflex;011C
-Gcommaaccent;0122
-Gdot;0120
-Gdotaccent;0120
-Gecyrillic;0413
-Ghadarmenian;0542
-Ghemiddlehookcyrillic;0494
-Ghestrokecyrillic;0492
-Gheupturncyrillic;0490
-Ghook;0193
-Gimarmenian;0533
-Gjecyrillic;0403
-Gmacron;1E20
-Gmonospace;FF27
-Grave;F6CE
-Gravesmall;F760
-Gsmall;F767
-Gsmallhook;029B
-Gstroke;01E4
-H;0048
-H18533;25CF
-H18543;25AA
-H18551;25AB
-H22073;25A1
-HPsquare;33CB
-Haabkhasiancyrillic;04A8
-Hadescendercyrillic;04B2
-Hardsigncyrillic;042A
-Hbar;0126
-Hbrevebelow;1E2A
-Hcedilla;1E28
-Hcircle;24BD
-Hcircumflex;0124
-Hdieresis;1E26
-Hdotaccent;1E22
-Hdotbelow;1E24
-Hmonospace;FF28
-Hoarmenian;0540
-Horicoptic;03E8
-Hsmall;F768
-Hungarumlaut;F6CF
-Hungarumlautsmall;F6F8
-Hzsquare;3390
-I;0049
-IAcyrillic;042F
-IJ;0132
-IUcyrillic;042E
-Iacute;00CD
-Iacutesmall;F7ED
-Ibreve;012C
-Icaron;01CF
-Icircle;24BE
-Icircumflex;00CE
-Icircumflexsmall;F7EE
-Icyrillic;0406
-Idblgrave;0208
-Idieresis;00CF
-Idieresisacute;1E2E
-Idieresiscyrillic;04E4
-Idieresissmall;F7EF
-Idot;0130
-Idotaccent;0130
-Idotbelow;1ECA
-Iebrevecyrillic;04D6
-Iecyrillic;0415
-Ifraktur;2111
-Igrave;00CC
-Igravesmall;F7EC
-Ihookabove;1EC8
-Iicyrillic;0418
-Iinvertedbreve;020A
-Iishortcyrillic;0419
-Imacron;012A
-Imacroncyrillic;04E2
-Imonospace;FF29
-Iniarmenian;053B
-Iocyrillic;0401
-Iogonek;012E
-Iota;0399
-Iotaafrican;0196
-Iotadieresis;03AA
-Iotatonos;038A
-Ismall;F769
-Istroke;0197
-Itilde;0128
-Itildebelow;1E2C
-Izhitsacyrillic;0474
-Izhitsadblgravecyrillic;0476
-J;004A
-Jaarmenian;0541
-Jcircle;24BF
-Jcircumflex;0134
-Jecyrillic;0408
-Jheharmenian;054B
-Jmonospace;FF2A
-Jsmall;F76A
-K;004B
-KBsquare;3385
-KKsquare;33CD
-Kabashkircyrillic;04A0
-Kacute;1E30
-Kacyrillic;041A
-Kadescendercyrillic;049A
-Kahookcyrillic;04C3
-Kappa;039A
-Kastrokecyrillic;049E
-Kaverticalstrokecyrillic;049C
-Kcaron;01E8
-Kcedilla;0136
-Kcircle;24C0
-Kcommaaccent;0136
-Kdotbelow;1E32
-Keharmenian;0554
-Kenarmenian;053F
-Khacyrillic;0425
-Kheicoptic;03E6
-Khook;0198
-Kjecyrillic;040C
-Klinebelow;1E34
-Kmonospace;FF2B
-Koppacyrillic;0480
-Koppagreek;03DE
-Ksicyrillic;046E
-Ksmall;F76B
-L;004C
-LJ;01C7
-LL;F6BF
-Lacute;0139
-Lambda;039B
-Lcaron;013D
-Lcedilla;013B
-Lcircle;24C1
-Lcircumflexbelow;1E3C
-Lcommaaccent;013B
-Ldot;013F
-Ldotaccent;013F
-Ldotbelow;1E36
-Ldotbelowmacron;1E38
-Liwnarmenian;053C
-Lj;01C8
-Ljecyrillic;0409
-Llinebelow;1E3A
-Lmonospace;FF2C
-Lslash;0141
-Lslashsmall;F6F9
-Lsmall;F76C
-M;004D
-MBsquare;3386
-Macron;F6D0
-Macronsmall;F7AF
-Macute;1E3E
-Mcircle;24C2
-Mdotaccent;1E40
-Mdotbelow;1E42
-Menarmenian;0544
-Mmonospace;FF2D
-Msmall;F76D
-Mturned;019C
-Mu;039C
-N;004E
-NJ;01CA
-Nacute;0143
-Ncaron;0147
-Ncedilla;0145
-Ncircle;24C3
-Ncircumflexbelow;1E4A
-Ncommaaccent;0145
-Ndotaccent;1E44
-Ndotbelow;1E46
-Nhookleft;019D
-Nineroman;2168
-Nj;01CB
-Njecyrillic;040A
-Nlinebelow;1E48
-Nmonospace;FF2E
-Nowarmenian;0546
-Nsmall;F76E
-Ntilde;00D1
-Ntildesmall;F7F1
-Nu;039D
-O;004F
-OE;0152
-OEsmall;F6FA
-Oacute;00D3
-Oacutesmall;F7F3
-Obarredcyrillic;04E8
-Obarreddieresiscyrillic;04EA
-Obreve;014E
-Ocaron;01D1
-Ocenteredtilde;019F
-Ocircle;24C4
-Ocircumflex;00D4
-Ocircumflexacute;1ED0
-Ocircumflexdotbelow;1ED8
-Ocircumflexgrave;1ED2
-Ocircumflexhookabove;1ED4
-Ocircumflexsmall;F7F4
-Ocircumflextilde;1ED6
-Ocyrillic;041E
-Odblacute;0150
-Odblgrave;020C
-Odieresis;00D6
-Odieresiscyrillic;04E6
-Odieresissmall;F7F6
-Odotbelow;1ECC
-Ogoneksmall;F6FB
-Ograve;00D2
-Ogravesmall;F7F2
-Oharmenian;0555
-Ohm;2126
-Ohookabove;1ECE
-Ohorn;01A0
-Ohornacute;1EDA
-Ohorndotbelow;1EE2
-Ohorngrave;1EDC
-Ohornhookabove;1EDE
-Ohorntilde;1EE0
-Ohungarumlaut;0150
-Oi;01A2
-Oinvertedbreve;020E
-Omacron;014C
-Omacronacute;1E52
-Omacrongrave;1E50
-Omega;2126
-Omegacyrillic;0460
-Omegagreek;03A9
-Omegaroundcyrillic;047A
-Omegatitlocyrillic;047C
-Omegatonos;038F
-Omicron;039F
-Omicrontonos;038C
-Omonospace;FF2F
-Oneroman;2160
-Oogonek;01EA
-Oogonekmacron;01EC
-Oopen;0186
-Oslash;00D8
-Oslashacute;01FE
-Oslashsmall;F7F8
-Osmall;F76F
-Ostrokeacute;01FE
-Otcyrillic;047E
-Otilde;00D5
-Otildeacute;1E4C
-Otildedieresis;1E4E
-Otildesmall;F7F5
-P;0050
-Pacute;1E54
-Pcircle;24C5
-Pdotaccent;1E56
-Pecyrillic;041F
-Peharmenian;054A
-Pemiddlehookcyrillic;04A6
-Phi;03A6
-Phook;01A4
-Pi;03A0
-Piwrarmenian;0553
-Pmonospace;FF30
-Psi;03A8
-Psicyrillic;0470
-Psmall;F770
-Q;0051
-Qcircle;24C6
-Qmonospace;FF31
-Qsmall;F771
-R;0052
-Raarmenian;054C
-Racute;0154
-Rcaron;0158
-Rcedilla;0156
-Rcircle;24C7
-Rcommaaccent;0156
-Rdblgrave;0210
-Rdotaccent;1E58
-Rdotbelow;1E5A
-Rdotbelowmacron;1E5C
-Reharmenian;0550
-Rfraktur;211C
-Rho;03A1
-Ringsmall;F6FC
-Rinvertedbreve;0212
-Rlinebelow;1E5E
-Rmonospace;FF32
-Rsmall;F772
-Rsmallinverted;0281
-Rsmallinvertedsuperior;02B6
-S;0053
-SF010000;250C
-SF020000;2514
-SF030000;2510
-SF040000;2518
-SF050000;253C
-SF060000;252C
-SF070000;2534
-SF080000;251C
-SF090000;2524
-SF100000;2500
-SF110000;2502
-SF190000;2561
-SF200000;2562
-SF210000;2556
-SF220000;2555
-SF230000;2563
-SF240000;2551
-SF250000;2557
-SF260000;255D
-SF270000;255C
-SF280000;255B
-SF360000;255E
-SF370000;255F
-SF380000;255A
-SF390000;2554
-SF400000;2569
-SF410000;2566
-SF420000;2560
-SF430000;2550
-SF440000;256C
-SF450000;2567
-SF460000;2568
-SF470000;2564
-SF480000;2565
-SF490000;2559
-SF500000;2558
-SF510000;2552
-SF520000;2553
-SF530000;256B
-SF540000;256A
-Sacute;015A
-Sacutedotaccent;1E64
-Sampigreek;03E0
-Scaron;0160
-Scarondotaccent;1E66
-Scaronsmall;F6FD
-Scedilla;015E
-Schwa;018F
-Schwacyrillic;04D8
-Schwadieresiscyrillic;04DA
-Scircle;24C8
-Scircumflex;015C
-Scommaaccent;0218
-Sdotaccent;1E60
-Sdotbelow;1E62
-Sdotbelowdotaccent;1E68
-Seharmenian;054D
-Sevenroman;2166
-Shaarmenian;0547
-Shacyrillic;0428
-Shchacyrillic;0429
-Sheicoptic;03E2
-Shhacyrillic;04BA
-Shimacoptic;03EC
-Sigma;03A3
-Sixroman;2165
-Smonospace;FF33
-Softsigncyrillic;042C
-Ssmall;F773
-Stigmagreek;03DA
-T;0054
-Tau;03A4
-Tbar;0166
-Tcaron;0164
-Tcedilla;0162
-Tcircle;24C9
-Tcircumflexbelow;1E70
-Tcommaaccent;0162
-Tdotaccent;1E6A
-Tdotbelow;1E6C
-Tecyrillic;0422
-Tedescendercyrillic;04AC
-Tenroman;2169
-Tetsecyrillic;04B4
-Theta;0398
-Thook;01AC
-Thorn;00DE
-Thornsmall;F7FE
-Threeroman;2162
-Tildesmall;F6FE
-Tiwnarmenian;054F
-Tlinebelow;1E6E
-Tmonospace;FF34
-Toarmenian;0539
-Tonefive;01BC
-Tonesix;0184
-Tonetwo;01A7
-Tretroflexhook;01AE
-Tsecyrillic;0426
-Tshecyrillic;040B
-Tsmall;F774
-Twelveroman;216B
-Tworoman;2161
-U;0055
-Uacute;00DA
-Uacutesmall;F7FA
-Ubreve;016C
-Ucaron;01D3
-Ucircle;24CA
-Ucircumflex;00DB
-Ucircumflexbelow;1E76
-Ucircumflexsmall;F7FB
-Ucyrillic;0423
-Udblacute;0170
-Udblgrave;0214
-Udieresis;00DC
-Udieresisacute;01D7
-Udieresisbelow;1E72
-Udieresiscaron;01D9
-Udieresiscyrillic;04F0
-Udieresisgrave;01DB
-Udieresismacron;01D5
-Udieresissmall;F7FC
-Udotbelow;1EE4
-Ugrave;00D9
-Ugravesmall;F7F9
-Uhookabove;1EE6
-Uhorn;01AF
-Uhornacute;1EE8
-Uhorndotbelow;1EF0
-Uhorngrave;1EEA
-Uhornhookabove;1EEC
-Uhorntilde;1EEE
-Uhungarumlaut;0170
-Uhungarumlautcyrillic;04F2
-Uinvertedbreve;0216
-Ukcyrillic;0478
-Umacron;016A
-Umacroncyrillic;04EE
-Umacrondieresis;1E7A
-Umonospace;FF35
-Uogonek;0172
-Upsilon;03A5
-Upsilon1;03D2
-Upsilonacutehooksymbolgreek;03D3
-Upsilonafrican;01B1
-Upsilondieresis;03AB
-Upsilondieresishooksymbolgreek;03D4
-Upsilonhooksymbol;03D2
-Upsilontonos;038E
-Uring;016E
-Ushortcyrillic;040E
-Usmall;F775
-Ustraightcyrillic;04AE
-Ustraightstrokecyrillic;04B0
-Utilde;0168
-Utildeacute;1E78
-Utildebelow;1E74
-V;0056
-Vcircle;24CB
-Vdotbelow;1E7E
-Vecyrillic;0412
-Vewarmenian;054E
-Vhook;01B2
-Vmonospace;FF36
-Voarmenian;0548
-Vsmall;F776
-Vtilde;1E7C
-W;0057
-Wacute;1E82
-Wcircle;24CC
-Wcircumflex;0174
-Wdieresis;1E84
-Wdotaccent;1E86
-Wdotbelow;1E88
-Wgrave;1E80
-Wmonospace;FF37
-Wsmall;F777
-X;0058
-Xcircle;24CD
-Xdieresis;1E8C
-Xdotaccent;1E8A
-Xeharmenian;053D
-Xi;039E
-Xmonospace;FF38
-Xsmall;F778
-Y;0059
-Yacute;00DD
-Yacutesmall;F7FD
-Yatcyrillic;0462
-Ycircle;24CE
-Ycircumflex;0176
-Ydieresis;0178
-Ydieresissmall;F7FF
-Ydotaccent;1E8E
-Ydotbelow;1EF4
-Yericyrillic;042B
-Yerudieresiscyrillic;04F8
-Ygrave;1EF2
-Yhook;01B3
-Yhookabove;1EF6
-Yiarmenian;0545
-Yicyrillic;0407
-Yiwnarmenian;0552
-Ymonospace;FF39
-Ysmall;F779
-Ytilde;1EF8
-Yusbigcyrillic;046A
-Yusbigiotifiedcyrillic;046C
-Yuslittlecyrillic;0466
-Yuslittleiotifiedcyrillic;0468
-Z;005A
-Zaarmenian;0536
-Zacute;0179
-Zcaron;017D
-Zcaronsmall;F6FF
-Zcircle;24CF
-Zcircumflex;1E90
-Zdot;017B
-Zdotaccent;017B
-Zdotbelow;1E92
-Zecyrillic;0417
-Zedescendercyrillic;0498
-Zedieresiscyrillic;04DE
-Zeta;0396
-Zhearmenian;053A
-Zhebrevecyrillic;04C1
-Zhecyrillic;0416
-Zhedescendercyrillic;0496
-Zhedieresiscyrillic;04DC
-Zlinebelow;1E94
-Zmonospace;FF3A
-Zsmall;F77A
-Zstroke;01B5
-a;0061
-aabengali;0986
-aacute;00E1
-aadeva;0906
-aagujarati;0A86
-aagurmukhi;0A06
-aamatragurmukhi;0A3E
-aarusquare;3303
-aavowelsignbengali;09BE
-aavowelsigndeva;093E
-aavowelsigngujarati;0ABE
-abbreviationmarkarmenian;055F
-abbreviationsigndeva;0970
-abengali;0985
-abopomofo;311A
-abreve;0103
-abreveacute;1EAF
-abrevecyrillic;04D1
-abrevedotbelow;1EB7
-abrevegrave;1EB1
-abrevehookabove;1EB3
-abrevetilde;1EB5
-acaron;01CE
-acircle;24D0
-acircumflex;00E2
-acircumflexacute;1EA5
-acircumflexdotbelow;1EAD
-acircumflexgrave;1EA7
-acircumflexhookabove;1EA9
-acircumflextilde;1EAB
-acute;00B4
-acutebelowcmb;0317
-acutecmb;0301
-acutecomb;0301
-acutedeva;0954
-acutelowmod;02CF
-acutetonecmb;0341
-acyrillic;0430
-adblgrave;0201
-addakgurmukhi;0A71
-adeva;0905
-adieresis;00E4
-adieresiscyrillic;04D3
-adieresismacron;01DF
-adotbelow;1EA1
-adotmacron;01E1
-ae;00E6
-aeacute;01FD
-aekorean;3150
-aemacron;01E3
-afii00208;2015
-afii08941;20A4
-afii10017;0410
-afii10018;0411
-afii10019;0412
-afii10020;0413
-afii10021;0414
-afii10022;0415
-afii10023;0401
-afii10024;0416
-afii10025;0417
-afii10026;0418
-afii10027;0419
-afii10028;041A
-afii10029;041B
-afii10030;041C
-afii10031;041D
-afii10032;041E
-afii10033;041F
-afii10034;0420
-afii10035;0421
-afii10036;0422
-afii10037;0423
-afii10038;0424
-afii10039;0425
-afii10040;0426
-afii10041;0427
-afii10042;0428
-afii10043;0429
-afii10044;042A
-afii10045;042B
-afii10046;042C
-afii10047;042D
-afii10048;042E
-afii10049;042F
-afii10050;0490
-afii10051;0402
-afii10052;0403
-afii10053;0404
-afii10054;0405
-afii10055;0406
-afii10056;0407
-afii10057;0408
-afii10058;0409
-afii10059;040A
-afii10060;040B
-afii10061;040C
-afii10062;040E
-afii10063;F6C4
-afii10064;F6C5
-afii10065;0430
-afii10066;0431
-afii10067;0432
-afii10068;0433
-afii10069;0434
-afii10070;0435
-afii10071;0451
-afii10072;0436
-afii10073;0437
-afii10074;0438
-afii10075;0439
-afii10076;043A
-afii10077;043B
-afii10078;043C
-afii10079;043D
-afii10080;043E
-afii10081;043F
-afii10082;0440
-afii10083;0441
-afii10084;0442
-afii10085;0443
-afii10086;0444
-afii10087;0445
-afii10088;0446
-afii10089;0447
-afii10090;0448
-afii10091;0449
-afii10092;044A
-afii10093;044B
-afii10094;044C
-afii10095;044D
-afii10096;044E
-afii10097;044F
-afii10098;0491
-afii10099;0452
-afii10100;0453
-afii10101;0454
-afii10102;0455
-afii10103;0456
-afii10104;0457
-afii10105;0458
-afii10106;0459
-afii10107;045A
-afii10108;045B
-afii10109;045C
-afii10110;045E
-afii10145;040F
-afii10146;0462
-afii10147;0472
-afii10148;0474
-afii10192;F6C6
-afii10193;045F
-afii10194;0463
-afii10195;0473
-afii10196;0475
-afii10831;F6C7
-afii10832;F6C8
-afii10846;04D9
-afii299;200E
-afii300;200F
-afii301;200D
-afii57381;066A
-afii57388;060C
-afii57392;0660
-afii57393;0661
-afii57394;0662
-afii57395;0663
-afii57396;0664
-afii57397;0665
-afii57398;0666
-afii57399;0667
-afii57400;0668
-afii57401;0669
-afii57403;061B
-afii57407;061F
-afii57409;0621
-afii57410;0622
-afii57411;0623
-afii57412;0624
-afii57413;0625
-afii57414;0626
-afii57415;0627
-afii57416;0628
-afii57417;0629
-afii57418;062A
-afii57419;062B
-afii57420;062C
-afii57421;062D
-afii57422;062E
-afii57423;062F
-afii57424;0630
-afii57425;0631
-afii57426;0632
-afii57427;0633
-afii57428;0634
-afii57429;0635
-afii57430;0636
-afii57431;0637
-afii57432;0638
-afii57433;0639
-afii57434;063A
-afii57440;0640
-afii57441;0641
-afii57442;0642
-afii57443;0643
-afii57444;0644
-afii57445;0645
-afii57446;0646
-afii57448;0648
-afii57449;0649
-afii57450;064A
-afii57451;064B
-afii57452;064C
-afii57453;064D
-afii57454;064E
-afii57455;064F
-afii57456;0650
-afii57457;0651
-afii57458;0652
-afii57470;0647
-afii57505;06A4
-afii57506;067E
-afii57507;0686
-afii57508;0698
-afii57509;06AF
-afii57511;0679
-afii57512;0688
-afii57513;0691
-afii57514;06BA
-afii57519;06D2
-afii57534;06D5
-afii57636;20AA
-afii57645;05BE
-afii57658;05C3
-afii57664;05D0
-afii57665;05D1
-afii57666;05D2
-afii57667;05D3
-afii57668;05D4
-afii57669;05D5
-afii57670;05D6
-afii57671;05D7
-afii57672;05D8
-afii57673;05D9
-afii57674;05DA
-afii57675;05DB
-afii57676;05DC
-afii57677;05DD
-afii57678;05DE
-afii57679;05DF
-afii57680;05E0
-afii57681;05E1
-afii57682;05E2
-afii57683;05E3
-afii57684;05E4
-afii57685;05E5
-afii57686;05E6
-afii57687;05E7
-afii57688;05E8
-afii57689;05E9
-afii57690;05EA
-afii57694;FB2A
-afii57695;FB2B
-afii57700;FB4B
-afii57705;FB1F
-afii57716;05F0
-afii57717;05F1
-afii57718;05F2
-afii57723;FB35
-afii57793;05B4
-afii57794;05B5
-afii57795;05B6
-afii57796;05BB
-afii57797;05B8
-afii57798;05B7
-afii57799;05B0
-afii57800;05B2
-afii57801;05B1
-afii57802;05B3
-afii57803;05C2
-afii57804;05C1
-afii57806;05B9
-afii57807;05BC
-afii57839;05BD
-afii57841;05BF
-afii57842;05C0
-afii57929;02BC
-afii61248;2105
-afii61289;2113
-afii61352;2116
-afii61573;202C
-afii61574;202D
-afii61575;202E
-afii61664;200C
-afii63167;066D
-afii64937;02BD
-agrave;00E0
-agujarati;0A85
-agurmukhi;0A05
-ahiragana;3042
-ahookabove;1EA3
-aibengali;0990
-aibopomofo;311E
-aideva;0910
-aiecyrillic;04D5
-aigujarati;0A90
-aigurmukhi;0A10
-aimatragurmukhi;0A48
-ainarabic;0639
-ainfinalarabic;FECA
-aininitialarabic;FECB
-ainmedialarabic;FECC
-ainvertedbreve;0203
-aivowelsignbengali;09C8
-aivowelsigndeva;0948
-aivowelsigngujarati;0AC8
-akatakana;30A2
-akatakanahalfwidth;FF71
-akorean;314F
-alef;05D0
-alefarabic;0627
-alefdageshhebrew;FB30
-aleffinalarabic;FE8E
-alefhamzaabovearabic;0623
-alefhamzaabovefinalarabic;FE84
-alefhamzabelowarabic;0625
-alefhamzabelowfinalarabic;FE88
-alefhebrew;05D0
-aleflamedhebrew;FB4F
-alefmaddaabovearabic;0622
-alefmaddaabovefinalarabic;FE82
-alefmaksuraarabic;0649
-alefmaksurafinalarabic;FEF0
-alefmaksurainitialarabic;FEF3
-alefmaksuramedialarabic;FEF4
-alefpatahhebrew;FB2E
-alefqamatshebrew;FB2F
-aleph;2135
-allequal;224C
-alpha;03B1
-alphatonos;03AC
-amacron;0101
-amonospace;FF41
-ampersand;0026
-ampersandmonospace;FF06
-ampersandsmall;F726
-amsquare;33C2
-anbopomofo;3122
-angbopomofo;3124
-angkhankhuthai;0E5A
-angle;2220
-anglebracketleft;3008
-anglebracketleftvertical;FE3F
-anglebracketright;3009
-anglebracketrightvertical;FE40
-angleleft;2329
-angleright;232A
-angstrom;212B
-anoteleia;0387
-anudattadeva;0952
-anusvarabengali;0982
-anusvaradeva;0902
-anusvaragujarati;0A82
-aogonek;0105
-apaatosquare;3300
-aparen;249C
-apostrophearmenian;055A
-apostrophemod;02BC
-apple;F8FF
-approaches;2250
-approxequal;2248
-approxequalorimage;2252
-approximatelyequal;2245
-araeaekorean;318E
-araeakorean;318D
-arc;2312
-arighthalfring;1E9A
-aring;00E5
-aringacute;01FB
-aringbelow;1E01
-arrowboth;2194
-arrowdashdown;21E3
-arrowdashleft;21E0
-arrowdashright;21E2
-arrowdashup;21E1
-arrowdblboth;21D4
-arrowdbldown;21D3
-arrowdblleft;21D0
-arrowdblright;21D2
-arrowdblup;21D1
-arrowdown;2193
-arrowdownleft;2199
-arrowdownright;2198
-arrowdownwhite;21E9
-arrowheaddownmod;02C5
-arrowheadleftmod;02C2
-arrowheadrightmod;02C3
-arrowheadupmod;02C4
-arrowhorizex;F8E7
-arrowleft;2190
-arrowleftdbl;21D0
-arrowleftdblstroke;21CD
-arrowleftoverright;21C6
-arrowleftwhite;21E6
-arrowright;2192
-arrowrightdblstroke;21CF
-arrowrightheavy;279E
-arrowrightoverleft;21C4
-arrowrightwhite;21E8
-arrowtableft;21E4
-arrowtabright;21E5
-arrowup;2191
-arrowupdn;2195
-arrowupdnbse;21A8
-arrowupdownbase;21A8
-arrowupleft;2196
-arrowupleftofdown;21C5
-arrowupright;2197
-arrowupwhite;21E7
-arrowvertex;F8E6
-asciicircum;005E
-asciicircummonospace;FF3E
-asciitilde;007E
-asciitildemonospace;FF5E
-ascript;0251
-ascriptturned;0252
-asmallhiragana;3041
-asmallkatakana;30A1
-asmallkatakanahalfwidth;FF67
-asterisk;002A
-asteriskaltonearabic;066D
-asteriskarabic;066D
-asteriskmath;2217
-asteriskmonospace;FF0A
-asterisksmall;FE61
-asterism;2042
-asuperior;F6E9
-asymptoticallyequal;2243
-at;0040
-atilde;00E3
-atmonospace;FF20
-atsmall;FE6B
-aturned;0250
-aubengali;0994
-aubopomofo;3120
-audeva;0914
-augujarati;0A94
-augurmukhi;0A14
-aulengthmarkbengali;09D7
-aumatragurmukhi;0A4C
-auvowelsignbengali;09CC
-auvowelsigndeva;094C
-auvowelsigngujarati;0ACC
-avagrahadeva;093D
-aybarmenian;0561
-ayin;05E2
-ayinaltonehebrew;FB20
-ayinhebrew;05E2
-b;0062
-babengali;09AC
-backslash;005C
-backslashmonospace;FF3C
-badeva;092C
-bagujarati;0AAC
-bagurmukhi;0A2C
-bahiragana;3070
-bahtthai;0E3F
-bakatakana;30D0
-bar;007C
-barmonospace;FF5C
-bbopomofo;3105
-bcircle;24D1
-bdotaccent;1E03
-bdotbelow;1E05
-beamedsixteenthnotes;266C
-because;2235
-becyrillic;0431
-beharabic;0628
-behfinalarabic;FE90
-behinitialarabic;FE91
-behiragana;3079
-behmedialarabic;FE92
-behmeeminitialarabic;FC9F
-behmeemisolatedarabic;FC08
-behnoonfinalarabic;FC6D
-bekatakana;30D9
-benarmenian;0562
-bet;05D1
-beta;03B2
-betasymbolgreek;03D0
-betdagesh;FB31
-betdageshhebrew;FB31
-bethebrew;05D1
-betrafehebrew;FB4C
-bhabengali;09AD
-bhadeva;092D
-bhagujarati;0AAD
-bhagurmukhi;0A2D
-bhook;0253
-bihiragana;3073
-bikatakana;30D3
-bilabialclick;0298
-bindigurmukhi;0A02
-birusquare;3331
-blackcircle;25CF
-blackdiamond;25C6
-blackdownpointingtriangle;25BC
-blackleftpointingpointer;25C4
-blackleftpointingtriangle;25C0
-blacklenticularbracketleft;3010
-blacklenticularbracketleftvertical;FE3B
-blacklenticularbracketright;3011
-blacklenticularbracketrightvertical;FE3C
-blacklowerlefttriangle;25E3
-blacklowerrighttriangle;25E2
-blackrectangle;25AC
-blackrightpointingpointer;25BA
-blackrightpointingtriangle;25B6
-blacksmallsquare;25AA
-blacksmilingface;263B
-blacksquare;25A0
-blackstar;2605
-blackupperlefttriangle;25E4
-blackupperrighttriangle;25E5
-blackuppointingsmalltriangle;25B4
-blackuppointingtriangle;25B2
-blank;2423
-blinebelow;1E07
-block;2588
-bmonospace;FF42
-bobaimaithai;0E1A
-bohiragana;307C
-bokatakana;30DC
-bparen;249D
-bqsquare;33C3
-braceex;F8F4
-braceleft;007B
-braceleftbt;F8F3
-braceleftmid;F8F2
-braceleftmonospace;FF5B
-braceleftsmall;FE5B
-bracelefttp;F8F1
-braceleftvertical;FE37
-braceright;007D
-bracerightbt;F8FE
-bracerightmid;F8FD
-bracerightmonospace;FF5D
-bracerightsmall;FE5C
-bracerighttp;F8FC
-bracerightvertical;FE38
-bracketleft;005B
-bracketleftbt;F8F0
-bracketleftex;F8EF
-bracketleftmonospace;FF3B
-bracketlefttp;F8EE
-bracketright;005D
-bracketrightbt;F8FB
-bracketrightex;F8FA
-bracketrightmonospace;FF3D
-bracketrighttp;F8F9
-breve;02D8
-brevebelowcmb;032E
-brevecmb;0306
-breveinvertedbelowcmb;032F
-breveinvertedcmb;0311
-breveinverteddoublecmb;0361
-bridgebelowcmb;032A
-bridgeinvertedbelowcmb;033A
-brokenbar;00A6
-bstroke;0180
-bsuperior;F6EA
-btopbar;0183
-buhiragana;3076
-bukatakana;30D6
-bullet;2022
-bulletinverse;25D8
-bulletoperator;2219
-bullseye;25CE
-c;0063
-caarmenian;056E
-cabengali;099A
-cacute;0107
-cadeva;091A
-cagujarati;0A9A
-cagurmukhi;0A1A
-calsquare;3388
-candrabindubengali;0981
-candrabinducmb;0310
-candrabindudeva;0901
-candrabindugujarati;0A81
-capslock;21EA
-careof;2105
-caron;02C7
-caronbelowcmb;032C
-caroncmb;030C
-carriagereturn;21B5
-cbopomofo;3118
-ccaron;010D
-ccedilla;00E7
-ccedillaacute;1E09
-ccircle;24D2
-ccircumflex;0109
-ccurl;0255
-cdot;010B
-cdotaccent;010B
-cdsquare;33C5
-cedilla;00B8
-cedillacmb;0327
-cent;00A2
-centigrade;2103
-centinferior;F6DF
-centmonospace;FFE0
-centoldstyle;F7A2
-centsuperior;F6E0
-chaarmenian;0579
-chabengali;099B
-chadeva;091B
-chagujarati;0A9B
-chagurmukhi;0A1B
-chbopomofo;3114
-cheabkhasiancyrillic;04BD
-checkmark;2713
-checyrillic;0447
-chedescenderabkhasiancyrillic;04BF
-chedescendercyrillic;04B7
-chedieresiscyrillic;04F5
-cheharmenian;0573
-chekhakassiancyrillic;04CC
-cheverticalstrokecyrillic;04B9
-chi;03C7
-chieuchacirclekorean;3277
-chieuchaparenkorean;3217
-chieuchcirclekorean;3269
-chieuchkorean;314A
-chieuchparenkorean;3209
-chochangthai;0E0A
-chochanthai;0E08
-chochingthai;0E09
-chochoethai;0E0C
-chook;0188
-cieucacirclekorean;3276
-cieucaparenkorean;3216
-cieuccirclekorean;3268
-cieuckorean;3148
-cieucparenkorean;3208
-cieucuparenkorean;321C
-circle;25CB
-circlemultiply;2297
-circleot;2299
-circleplus;2295
-circlepostalmark;3036
-circlewithlefthalfblack;25D0
-circlewithrighthalfblack;25D1
-circumflex;02C6
-circumflexbelowcmb;032D
-circumflexcmb;0302
-clear;2327
-clickalveolar;01C2
-clickdental;01C0
-clicklateral;01C1
-clickretroflex;01C3
-club;2663
-clubsuitblack;2663
-clubsuitwhite;2667
-cmcubedsquare;33A4
-cmonospace;FF43
-cmsquaredsquare;33A0
-coarmenian;0581
-colon;003A
-colonmonetary;20A1
-colonmonospace;FF1A
-colonsign;20A1
-colonsmall;FE55
-colontriangularhalfmod;02D1
-colontriangularmod;02D0
-comma;002C
-commaabovecmb;0313
-commaaboverightcmb;0315
-commaaccent;F6C3
-commaarabic;060C
-commaarmenian;055D
-commainferior;F6E1
-commamonospace;FF0C
-commareversedabovecmb;0314
-commareversedmod;02BD
-commasmall;FE50
-commasuperior;F6E2
-commaturnedabovecmb;0312
-commaturnedmod;02BB
-compass;263C
-congruent;2245
-contourintegral;222E
-control;2303
-controlACK;0006
-controlBEL;0007
-controlBS;0008
-controlCAN;0018
-controlCR;000D
-controlDC1;0011
-controlDC2;0012
-controlDC3;0013
-controlDC4;0014
-controlDEL;007F
-controlDLE;0010
-controlEM;0019
-controlENQ;0005
-controlEOT;0004
-controlESC;001B
-controlETB;0017
-controlETX;0003
-controlFF;000C
-controlFS;001C
-controlGS;001D
-controlHT;0009
-controlLF;000A
-controlNAK;0015
-controlRS;001E
-controlSI;000F
-controlSO;000E
-controlSOT;0002
-controlSTX;0001
-controlSUB;001A
-controlSYN;0016
-controlUS;001F
-controlVT;000B
-copyright;00A9
-copyrightsans;F8E9
-copyrightserif;F6D9
-cornerbracketleft;300C
-cornerbracketlefthalfwidth;FF62
-cornerbracketleftvertical;FE41
-cornerbracketright;300D
-cornerbracketrighthalfwidth;FF63
-cornerbracketrightvertical;FE42
-corporationsquare;337F
-cosquare;33C7
-coverkgsquare;33C6
-cparen;249E
-cruzeiro;20A2
-cstretched;0297
-curlyand;22CF
-curlyor;22CE
-currency;00A4
-cyrBreve;F6D1
-cyrFlex;F6D2
-cyrbreve;F6D4
-cyrflex;F6D5
-d;0064
-daarmenian;0564
-dabengali;09A6
-dadarabic;0636
-dadeva;0926
-dadfinalarabic;FEBE
-dadinitialarabic;FEBF
-dadmedialarabic;FEC0
-dagesh;05BC
-dageshhebrew;05BC
-dagger;2020
-daggerdbl;2021
-dagujarati;0AA6
-dagurmukhi;0A26
-dahiragana;3060
-dakatakana;30C0
-dalarabic;062F
-dalet;05D3
-daletdagesh;FB33
-daletdageshhebrew;FB33
-dalethatafpatah;05D3 05B2
-dalethatafpatahhebrew;05D3 05B2
-dalethatafsegol;05D3 05B1
-dalethatafsegolhebrew;05D3 05B1
-dalethebrew;05D3
-dalethiriq;05D3 05B4
-dalethiriqhebrew;05D3 05B4
-daletholam;05D3 05B9
-daletholamhebrew;05D3 05B9
-daletpatah;05D3 05B7
-daletpatahhebrew;05D3 05B7
-daletqamats;05D3 05B8
-daletqamatshebrew;05D3 05B8
-daletqubuts;05D3 05BB
-daletqubutshebrew;05D3 05BB
-daletsegol;05D3 05B6
-daletsegolhebrew;05D3 05B6
-daletsheva;05D3 05B0
-daletshevahebrew;05D3 05B0
-dalettsere;05D3 05B5
-dalettserehebrew;05D3 05B5
-dalfinalarabic;FEAA
-dammaarabic;064F
-dammalowarabic;064F
-dammatanaltonearabic;064C
-dammatanarabic;064C
-danda;0964
-dargahebrew;05A7
-dargalefthebrew;05A7
-dasiapneumatacyrilliccmb;0485
-dblGrave;F6D3
-dblanglebracketleft;300A
-dblanglebracketleftvertical;FE3D
-dblanglebracketright;300B
-dblanglebracketrightvertical;FE3E
-dblarchinvertedbelowcmb;032B
-dblarrowleft;21D4
-dblarrowright;21D2
-dbldanda;0965
-dblgrave;F6D6
-dblgravecmb;030F
-dblintegral;222C
-dbllowline;2017
-dbllowlinecmb;0333
-dbloverlinecmb;033F
-dblprimemod;02BA
-dblverticalbar;2016
-dblverticallineabovecmb;030E
-dbopomofo;3109
-dbsquare;33C8
-dcaron;010F
-dcedilla;1E11
-dcircle;24D3
-dcircumflexbelow;1E13
-dcroat;0111
-ddabengali;09A1
-ddadeva;0921
-ddagujarati;0AA1
-ddagurmukhi;0A21
-ddalarabic;0688
-ddalfinalarabic;FB89
-dddhadeva;095C
-ddhabengali;09A2
-ddhadeva;0922
-ddhagujarati;0AA2
-ddhagurmukhi;0A22
-ddotaccent;1E0B
-ddotbelow;1E0D
-decimalseparatorarabic;066B
-decimalseparatorpersian;066B
-decyrillic;0434
-degree;00B0
-dehihebrew;05AD
-dehiragana;3067
-deicoptic;03EF
-dekatakana;30C7
-deleteleft;232B
-deleteright;2326
-delta;03B4
-deltaturned;018D
-denominatorminusonenumeratorbengali;09F8
-dezh;02A4
-dhabengali;09A7
-dhadeva;0927
-dhagujarati;0AA7
-dhagurmukhi;0A27
-dhook;0257
-dialytikatonos;0385
-dialytikatonoscmb;0344
-diamond;2666
-diamondsuitwhite;2662
-dieresis;00A8
-dieresisacute;F6D7
-dieresisbelowcmb;0324
-dieresiscmb;0308
-dieresisgrave;F6D8
-dieresistonos;0385
-dihiragana;3062
-dikatakana;30C2
-dittomark;3003
-divide;00F7
-divides;2223
-divisionslash;2215
-djecyrillic;0452
-dkshade;2593
-dlinebelow;1E0F
-dlsquare;3397
-dmacron;0111
-dmonospace;FF44
-dnblock;2584
-dochadathai;0E0E
-dodekthai;0E14
-dohiragana;3069
-dokatakana;30C9
-dollar;0024
-dollarinferior;F6E3
-dollarmonospace;FF04
-dollaroldstyle;F724
-dollarsmall;FE69
-dollarsuperior;F6E4
-dong;20AB
-dorusquare;3326
-dotaccent;02D9
-dotaccentcmb;0307
-dotbelowcmb;0323
-dotbelowcomb;0323
-dotkatakana;30FB
-dotlessi;0131
-dotlessj;F6BE
-dotlessjstrokehook;0284
-dotmath;22C5
-dottedcircle;25CC
-doubleyodpatah;FB1F
-doubleyodpatahhebrew;FB1F
-downtackbelowcmb;031E
-downtackmod;02D5
-dparen;249F
-dsuperior;F6EB
-dtail;0256
-dtopbar;018C
-duhiragana;3065
-dukatakana;30C5
-dz;01F3
-dzaltone;02A3
-dzcaron;01C6
-dzcurl;02A5
-dzeabkhasiancyrillic;04E1
-dzecyrillic;0455
-dzhecyrillic;045F
-e;0065
-eacute;00E9
-earth;2641
-ebengali;098F
-ebopomofo;311C
-ebreve;0115
-ecandradeva;090D
-ecandragujarati;0A8D
-ecandravowelsigndeva;0945
-ecandravowelsigngujarati;0AC5
-ecaron;011B
-ecedillabreve;1E1D
-echarmenian;0565
-echyiwnarmenian;0587
-ecircle;24D4
-ecircumflex;00EA
-ecircumflexacute;1EBF
-ecircumflexbelow;1E19
-ecircumflexdotbelow;1EC7
-ecircumflexgrave;1EC1
-ecircumflexhookabove;1EC3
-ecircumflextilde;1EC5
-ecyrillic;0454
-edblgrave;0205
-edeva;090F
-edieresis;00EB
-edot;0117
-edotaccent;0117
-edotbelow;1EB9
-eegurmukhi;0A0F
-eematragurmukhi;0A47
-efcyrillic;0444
-egrave;00E8
-egujarati;0A8F
-eharmenian;0567
-ehbopomofo;311D
-ehiragana;3048
-ehookabove;1EBB
-eibopomofo;311F
-eight;0038
-eightarabic;0668
-eightbengali;09EE
-eightcircle;2467
-eightcircleinversesansserif;2791
-eightdeva;096E
-eighteencircle;2471
-eighteenparen;2485
-eighteenperiod;2499
-eightgujarati;0AEE
-eightgurmukhi;0A6E
-eighthackarabic;0668
-eighthangzhou;3028
-eighthnotebeamed;266B
-eightideographicparen;3227
-eightinferior;2088
-eightmonospace;FF18
-eightoldstyle;F738
-eightparen;247B
-eightperiod;248F
-eightpersian;06F8
-eightroman;2177
-eightsuperior;2078
-eightthai;0E58
-einvertedbreve;0207
-eiotifiedcyrillic;0465
-ekatakana;30A8
-ekatakanahalfwidth;FF74
-ekonkargurmukhi;0A74
-ekorean;3154
-elcyrillic;043B
-element;2208
-elevencircle;246A
-elevenparen;247E
-elevenperiod;2492
-elevenroman;217A
-ellipsis;2026
-ellipsisvertical;22EE
-emacron;0113
-emacronacute;1E17
-emacrongrave;1E15
-emcyrillic;043C
-emdash;2014
-emdashvertical;FE31
-emonospace;FF45
-emphasismarkarmenian;055B
-emptyset;2205
-enbopomofo;3123
-encyrillic;043D
-endash;2013
-endashvertical;FE32
-endescendercyrillic;04A3
-eng;014B
-engbopomofo;3125
-enghecyrillic;04A5
-enhookcyrillic;04C8
-enspace;2002
-eogonek;0119
-eokorean;3153
-eopen;025B
-eopenclosed;029A
-eopenreversed;025C
-eopenreversedclosed;025E
-eopenreversedhook;025D
-eparen;24A0
-epsilon;03B5
-epsilontonos;03AD
-equal;003D
-equalmonospace;FF1D
-equalsmall;FE66
-equalsuperior;207C
-equivalence;2261
-erbopomofo;3126
-ercyrillic;0440
-ereversed;0258
-ereversedcyrillic;044D
-escyrillic;0441
-esdescendercyrillic;04AB
-esh;0283
-eshcurl;0286
-eshortdeva;090E
-eshortvowelsigndeva;0946
-eshreversedloop;01AA
-eshsquatreversed;0285
-esmallhiragana;3047
-esmallkatakana;30A7
-esmallkatakanahalfwidth;FF6A
-estimated;212E
-esuperior;F6EC
-eta;03B7
-etarmenian;0568
-etatonos;03AE
-eth;00F0
-etilde;1EBD
-etildebelow;1E1B
-etnahtafoukhhebrew;0591
-etnahtafoukhlefthebrew;0591
-etnahtahebrew;0591
-etnahtalefthebrew;0591
-eturned;01DD
-eukorean;3161
-euro;20AC
-evowelsignbengali;09C7
-evowelsigndeva;0947
-evowelsigngujarati;0AC7
-exclam;0021
-exclamarmenian;055C
-exclamdbl;203C
-exclamdown;00A1
-exclamdownsmall;F7A1
-exclammonospace;FF01
-exclamsmall;F721
-existential;2203
-ezh;0292
-ezhcaron;01EF
-ezhcurl;0293
-ezhreversed;01B9
-ezhtail;01BA
-f;0066
-fadeva;095E
-fagurmukhi;0A5E
-fahrenheit;2109
-fathaarabic;064E
-fathalowarabic;064E
-fathatanarabic;064B
-fbopomofo;3108
-fcircle;24D5
-fdotaccent;1E1F
-feharabic;0641
-feharmenian;0586
-fehfinalarabic;FED2
-fehinitialarabic;FED3
-fehmedialarabic;FED4
-feicoptic;03E5
-female;2640
-ff;FB00
-ffi;FB03
-ffl;FB04
-fi;FB01
-fifteencircle;246E
-fifteenparen;2482
-fifteenperiod;2496
-figuredash;2012
-filledbox;25A0
-filledrect;25AC
-finalkaf;05DA
-finalkafdagesh;FB3A
-finalkafdageshhebrew;FB3A
-finalkafhebrew;05DA
-finalkafqamats;05DA 05B8
-finalkafqamatshebrew;05DA 05B8
-finalkafsheva;05DA 05B0
-finalkafshevahebrew;05DA 05B0
-finalmem;05DD
-finalmemhebrew;05DD
-finalnun;05DF
-finalnunhebrew;05DF
-finalpe;05E3
-finalpehebrew;05E3
-finaltsadi;05E5
-finaltsadihebrew;05E5
-firsttonechinese;02C9
-fisheye;25C9
-fitacyrillic;0473
-five;0035
-fivearabic;0665
-fivebengali;09EB
-fivecircle;2464
-fivecircleinversesansserif;278E
-fivedeva;096B
-fiveeighths;215D
-fivegujarati;0AEB
-fivegurmukhi;0A6B
-fivehackarabic;0665
-fivehangzhou;3025
-fiveideographicparen;3224
-fiveinferior;2085
-fivemonospace;FF15
-fiveoldstyle;F735
-fiveparen;2478
-fiveperiod;248C
-fivepersian;06F5
-fiveroman;2174
-fivesuperior;2075
-fivethai;0E55
-fl;FB02
-florin;0192
-fmonospace;FF46
-fmsquare;3399
-fofanthai;0E1F
-fofathai;0E1D
-fongmanthai;0E4F
-forall;2200
-four;0034
-fourarabic;0664
-fourbengali;09EA
-fourcircle;2463
-fourcircleinversesansserif;278D
-fourdeva;096A
-fourgujarati;0AEA
-fourgurmukhi;0A6A
-fourhackarabic;0664
-fourhangzhou;3024
-fourideographicparen;3223
-fourinferior;2084
-fourmonospace;FF14
-fournumeratorbengali;09F7
-fouroldstyle;F734
-fourparen;2477
-fourperiod;248B
-fourpersian;06F4
-fourroman;2173
-foursuperior;2074
-fourteencircle;246D
-fourteenparen;2481
-fourteenperiod;2495
-fourthai;0E54
-fourthtonechinese;02CB
-fparen;24A1
-fraction;2044
-franc;20A3
-g;0067
-gabengali;0997
-gacute;01F5
-gadeva;0917
-gafarabic;06AF
-gaffinalarabic;FB93
-gafinitialarabic;FB94
-gafmedialarabic;FB95
-gagujarati;0A97
-gagurmukhi;0A17
-gahiragana;304C
-gakatakana;30AC
-gamma;03B3
-gammalatinsmall;0263
-gammasuperior;02E0
-gangiacoptic;03EB
-gbopomofo;310D
-gbreve;011F
-gcaron;01E7
-gcedilla;0123
-gcircle;24D6
-gcircumflex;011D
-gcommaaccent;0123
-gdot;0121
-gdotaccent;0121
-gecyrillic;0433
-gehiragana;3052
-gekatakana;30B2
-geometricallyequal;2251
-gereshaccenthebrew;059C
-gereshhebrew;05F3
-gereshmuqdamhebrew;059D
-germandbls;00DF
-gershayimaccenthebrew;059E
-gershayimhebrew;05F4
-getamark;3013
-ghabengali;0998
-ghadarmenian;0572
-ghadeva;0918
-ghagujarati;0A98
-ghagurmukhi;0A18
-ghainarabic;063A
-ghainfinalarabic;FECE
-ghaininitialarabic;FECF
-ghainmedialarabic;FED0
-ghemiddlehookcyrillic;0495
-ghestrokecyrillic;0493
-gheupturncyrillic;0491
-ghhadeva;095A
-ghhagurmukhi;0A5A
-ghook;0260
-ghzsquare;3393
-gihiragana;304E
-gikatakana;30AE
-gimarmenian;0563
-gimel;05D2
-gimeldagesh;FB32
-gimeldageshhebrew;FB32
-gimelhebrew;05D2
-gjecyrillic;0453
-glottalinvertedstroke;01BE
-glottalstop;0294
-glottalstopinverted;0296
-glottalstopmod;02C0
-glottalstopreversed;0295
-glottalstopreversedmod;02C1
-glottalstopreversedsuperior;02E4
-glottalstopstroke;02A1
-glottalstopstrokereversed;02A2
-gmacron;1E21
-gmonospace;FF47
-gohiragana;3054
-gokatakana;30B4
-gparen;24A2
-gpasquare;33AC
-gradient;2207
-grave;0060
-gravebelowcmb;0316
-gravecmb;0300
-gravecomb;0300
-gravedeva;0953
-gravelowmod;02CE
-gravemonospace;FF40
-gravetonecmb;0340
-greater;003E
-greaterequal;2265
-greaterequalorless;22DB
-greatermonospace;FF1E
-greaterorequivalent;2273
-greaterorless;2277
-greateroverequal;2267
-greatersmall;FE65
-gscript;0261
-gstroke;01E5
-guhiragana;3050
-guillemotleft;00AB
-guillemotright;00BB
-guilsinglleft;2039
-guilsinglright;203A
-gukatakana;30B0
-guramusquare;3318
-gysquare;33C9
-h;0068
-haabkhasiancyrillic;04A9
-haaltonearabic;06C1
-habengali;09B9
-hadescendercyrillic;04B3
-hadeva;0939
-hagujarati;0AB9
-hagurmukhi;0A39
-haharabic;062D
-hahfinalarabic;FEA2
-hahinitialarabic;FEA3
-hahiragana;306F
-hahmedialarabic;FEA4
-haitusquare;332A
-hakatakana;30CF
-hakatakanahalfwidth;FF8A
-halantgurmukhi;0A4D
-hamzaarabic;0621
-hamzadammaarabic;0621 064F
-hamzadammatanarabic;0621 064C
-hamzafathaarabic;0621 064E
-hamzafathatanarabic;0621 064B
-hamzalowarabic;0621
-hamzalowkasraarabic;0621 0650
-hamzalowkasratanarabic;0621 064D
-hamzasukunarabic;0621 0652
-hangulfiller;3164
-hardsigncyrillic;044A
-harpoonleftbarbup;21BC
-harpoonrightbarbup;21C0
-hasquare;33CA
-hatafpatah;05B2
-hatafpatah16;05B2
-hatafpatah23;05B2
-hatafpatah2f;05B2
-hatafpatahhebrew;05B2
-hatafpatahnarrowhebrew;05B2
-hatafpatahquarterhebrew;05B2
-hatafpatahwidehebrew;05B2
-hatafqamats;05B3
-hatafqamats1b;05B3
-hatafqamats28;05B3
-hatafqamats34;05B3
-hatafqamatshebrew;05B3
-hatafqamatsnarrowhebrew;05B3
-hatafqamatsquarterhebrew;05B3
-hatafqamatswidehebrew;05B3
-hatafsegol;05B1
-hatafsegol17;05B1
-hatafsegol24;05B1
-hatafsegol30;05B1
-hatafsegolhebrew;05B1
-hatafsegolnarrowhebrew;05B1
-hatafsegolquarterhebrew;05B1
-hatafsegolwidehebrew;05B1
-hbar;0127
-hbopomofo;310F
-hbrevebelow;1E2B
-hcedilla;1E29
-hcircle;24D7
-hcircumflex;0125
-hdieresis;1E27
-hdotaccent;1E23
-hdotbelow;1E25
-he;05D4
-heart;2665
-heartsuitblack;2665
-heartsuitwhite;2661
-hedagesh;FB34
-hedageshhebrew;FB34
-hehaltonearabic;06C1
-heharabic;0647
-hehebrew;05D4
-hehfinalaltonearabic;FBA7
-hehfinalalttwoarabic;FEEA
-hehfinalarabic;FEEA
-hehhamzaabovefinalarabic;FBA5
-hehhamzaaboveisolatedarabic;FBA4
-hehinitialaltonearabic;FBA8
-hehinitialarabic;FEEB
-hehiragana;3078
-hehmedialaltonearabic;FBA9
-hehmedialarabic;FEEC
-heiseierasquare;337B
-hekatakana;30D8
-hekatakanahalfwidth;FF8D
-hekutaarusquare;3336
-henghook;0267
-herutusquare;3339
-het;05D7
-hethebrew;05D7
-hhook;0266
-hhooksuperior;02B1
-hieuhacirclekorean;327B
-hieuhaparenkorean;321B
-hieuhcirclekorean;326D
-hieuhkorean;314E
-hieuhparenkorean;320D
-hihiragana;3072
-hikatakana;30D2
-hikatakanahalfwidth;FF8B
-hiriq;05B4
-hiriq14;05B4
-hiriq21;05B4
-hiriq2d;05B4
-hiriqhebrew;05B4
-hiriqnarrowhebrew;05B4
-hiriqquarterhebrew;05B4
-hiriqwidehebrew;05B4
-hlinebelow;1E96
-hmonospace;FF48
-hoarmenian;0570
-hohipthai;0E2B
-hohiragana;307B
-hokatakana;30DB
-hokatakanahalfwidth;FF8E
-holam;05B9
-holam19;05B9
-holam26;05B9
-holam32;05B9
-holamhebrew;05B9
-holamnarrowhebrew;05B9
-holamquarterhebrew;05B9
-holamwidehebrew;05B9
-honokhukthai;0E2E
-hookabovecomb;0309
-hookcmb;0309
-hookpalatalizedbelowcmb;0321
-hookretroflexbelowcmb;0322
-hoonsquare;3342
-horicoptic;03E9
-horizontalbar;2015
-horncmb;031B
-hotsprings;2668
-house;2302
-hparen;24A3
-hsuperior;02B0
-hturned;0265
-huhiragana;3075
-huiitosquare;3333
-hukatakana;30D5
-hukatakanahalfwidth;FF8C
-hungarumlaut;02DD
-hungarumlautcmb;030B
-hv;0195
-hyphen;002D
-hypheninferior;F6E5
-hyphenmonospace;FF0D
-hyphensmall;FE63
-hyphensuperior;F6E6
-hyphentwo;2010
-i;0069
-iacute;00ED
-iacyrillic;044F
-ibengali;0987
-ibopomofo;3127
-ibreve;012D
-icaron;01D0
-icircle;24D8
-icircumflex;00EE
-icyrillic;0456
-idblgrave;0209
-ideographearthcircle;328F
-ideographfirecircle;328B
-ideographicallianceparen;323F
-ideographiccallparen;323A
-ideographiccentrecircle;32A5
-ideographicclose;3006
-ideographiccomma;3001
-ideographiccommaleft;FF64
-ideographiccongratulationparen;3237
-ideographiccorrectcircle;32A3
-ideographicearthparen;322F
-ideographicenterpriseparen;323D
-ideographicexcellentcircle;329D
-ideographicfestivalparen;3240
-ideographicfinancialcircle;3296
-ideographicfinancialparen;3236
-ideographicfireparen;322B
-ideographichaveparen;3232
-ideographichighcircle;32A4
-ideographiciterationmark;3005
-ideographiclaborcircle;3298
-ideographiclaborparen;3238
-ideographicleftcircle;32A7
-ideographiclowcircle;32A6
-ideographicmedicinecircle;32A9
-ideographicmetalparen;322E
-ideographicmoonparen;322A
-ideographicnameparen;3234
-ideographicperiod;3002
-ideographicprintcircle;329E
-ideographicreachparen;3243
-ideographicrepresentparen;3239
-ideographicresourceparen;323E
-ideographicrightcircle;32A8
-ideographicsecretcircle;3299
-ideographicselfparen;3242
-ideographicsocietyparen;3233
-ideographicspace;3000
-ideographicspecialparen;3235
-ideographicstockparen;3231
-ideographicstudyparen;323B
-ideographicsunparen;3230
-ideographicsuperviseparen;323C
-ideographicwaterparen;322C
-ideographicwoodparen;322D
-ideographiczero;3007
-ideographmetalcircle;328E
-ideographmooncircle;328A
-ideographnamecircle;3294
-ideographsuncircle;3290
-ideographwatercircle;328C
-ideographwoodcircle;328D
-ideva;0907
-idieresis;00EF
-idieresisacute;1E2F
-idieresiscyrillic;04E5
-idotbelow;1ECB
-iebrevecyrillic;04D7
-iecyrillic;0435
-ieungacirclekorean;3275
-ieungaparenkorean;3215
-ieungcirclekorean;3267
-ieungkorean;3147
-ieungparenkorean;3207
-igrave;00EC
-igujarati;0A87
-igurmukhi;0A07
-ihiragana;3044
-ihookabove;1EC9
-iibengali;0988
-iicyrillic;0438
-iideva;0908
-iigujarati;0A88
-iigurmukhi;0A08
-iimatragurmukhi;0A40
-iinvertedbreve;020B
-iishortcyrillic;0439
-iivowelsignbengali;09C0
-iivowelsigndeva;0940
-iivowelsigngujarati;0AC0
-ij;0133
-ikatakana;30A4
-ikatakanahalfwidth;FF72
-ikorean;3163
-ilde;02DC
-iluyhebrew;05AC
-imacron;012B
-imacroncyrillic;04E3
-imageorapproximatelyequal;2253
-imatragurmukhi;0A3F
-imonospace;FF49
-increment;2206
-infinity;221E
-iniarmenian;056B
-integral;222B
-integralbottom;2321
-integralbt;2321
-integralex;F8F5
-integraltop;2320
-integraltp;2320
-intersection;2229
-intisquare;3305
-invbullet;25D8
-invcircle;25D9
-invsmileface;263B
-iocyrillic;0451
-iogonek;012F
-iota;03B9
-iotadieresis;03CA
-iotadieresistonos;0390
-iotalatin;0269
-iotatonos;03AF
-iparen;24A4
-irigurmukhi;0A72
-ismallhiragana;3043
-ismallkatakana;30A3
-ismallkatakanahalfwidth;FF68
-issharbengali;09FA
-istroke;0268
-isuperior;F6ED
-iterationhiragana;309D
-iterationkatakana;30FD
-itilde;0129
-itildebelow;1E2D
-iubopomofo;3129
-iucyrillic;044E
-ivowelsignbengali;09BF
-ivowelsigndeva;093F
-ivowelsigngujarati;0ABF
-izhitsacyrillic;0475
-izhitsadblgravecyrillic;0477
-j;006A
-jaarmenian;0571
-jabengali;099C
-jadeva;091C
-jagujarati;0A9C
-jagurmukhi;0A1C
-jbopomofo;3110
-jcaron;01F0
-jcircle;24D9
-jcircumflex;0135
-jcrossedtail;029D
-jdotlessstroke;025F
-jecyrillic;0458
-jeemarabic;062C
-jeemfinalarabic;FE9E
-jeeminitialarabic;FE9F
-jeemmedialarabic;FEA0
-jeharabic;0698
-jehfinalarabic;FB8B
-jhabengali;099D
-jhadeva;091D
-jhagujarati;0A9D
-jhagurmukhi;0A1D
-jheharmenian;057B
-jis;3004
-jmonospace;FF4A
-jparen;24A5
-jsuperior;02B2
-k;006B
-kabashkircyrillic;04A1
-kabengali;0995
-kacute;1E31
-kacyrillic;043A
-kadescendercyrillic;049B
-kadeva;0915
-kaf;05DB
-kafarabic;0643
-kafdagesh;FB3B
-kafdageshhebrew;FB3B
-kaffinalarabic;FEDA
-kafhebrew;05DB
-kafinitialarabic;FEDB
-kafmedialarabic;FEDC
-kafrafehebrew;FB4D
-kagujarati;0A95
-kagurmukhi;0A15
-kahiragana;304B
-kahookcyrillic;04C4
-kakatakana;30AB
-kakatakanahalfwidth;FF76
-kappa;03BA
-kappasymbolgreek;03F0
-kapyeounmieumkorean;3171
-kapyeounphieuphkorean;3184
-kapyeounpieupkorean;3178
-kapyeounssangpieupkorean;3179
-karoriisquare;330D
-kashidaautoarabic;0640
-kashidaautonosidebearingarabic;0640
-kasmallkatakana;30F5
-kasquare;3384
-kasraarabic;0650
-kasratanarabic;064D
-kastrokecyrillic;049F
-katahiraprolongmarkhalfwidth;FF70
-kaverticalstrokecyrillic;049D
-kbopomofo;310E
-kcalsquare;3389
-kcaron;01E9
-kcedilla;0137
-kcircle;24DA
-kcommaaccent;0137
-kdotbelow;1E33
-keharmenian;0584
-kehiragana;3051
-kekatakana;30B1
-kekatakanahalfwidth;FF79
-kenarmenian;056F
-kesmallkatakana;30F6
-kgreenlandic;0138
-khabengali;0996
-khacyrillic;0445
-khadeva;0916
-khagujarati;0A96
-khagurmukhi;0A16
-khaharabic;062E
-khahfinalarabic;FEA6
-khahinitialarabic;FEA7
-khahmedialarabic;FEA8
-kheicoptic;03E7
-khhadeva;0959
-khhagurmukhi;0A59
-khieukhacirclekorean;3278
-khieukhaparenkorean;3218
-khieukhcirclekorean;326A
-khieukhkorean;314B
-khieukhparenkorean;320A
-khokhaithai;0E02
-khokhonthai;0E05
-khokhuatthai;0E03
-khokhwaithai;0E04
-khomutthai;0E5B
-khook;0199
-khorakhangthai;0E06
-khzsquare;3391
-kihiragana;304D
-kikatakana;30AD
-kikatakanahalfwidth;FF77
-kiroguramusquare;3315
-kiromeetorusquare;3316
-kirosquare;3314
-kiyeokacirclekorean;326E
-kiyeokaparenkorean;320E
-kiyeokcirclekorean;3260
-kiyeokkorean;3131
-kiyeokparenkorean;3200
-kiyeoksioskorean;3133
-kjecyrillic;045C
-klinebelow;1E35
-klsquare;3398
-kmcubedsquare;33A6
-kmonospace;FF4B
-kmsquaredsquare;33A2
-kohiragana;3053
-kohmsquare;33C0
-kokaithai;0E01
-kokatakana;30B3
-kokatakanahalfwidth;FF7A
-kooposquare;331E
-koppacyrillic;0481
-koreanstandardsymbol;327F
-koroniscmb;0343
-kparen;24A6
-kpasquare;33AA
-ksicyrillic;046F
-ktsquare;33CF
-kturned;029E
-kuhiragana;304F
-kukatakana;30AF
-kukatakanahalfwidth;FF78
-kvsquare;33B8
-kwsquare;33BE
-l;006C
-labengali;09B2
-lacute;013A
-ladeva;0932
-lagujarati;0AB2
-lagurmukhi;0A32
-lakkhangyaothai;0E45
-lamaleffinalarabic;FEFC
-lamalefhamzaabovefinalarabic;FEF8
-lamalefhamzaaboveisolatedarabic;FEF7
-lamalefhamzabelowfinalarabic;FEFA
-lamalefhamzabelowisolatedarabic;FEF9
-lamalefisolatedarabic;FEFB
-lamalefmaddaabovefinalarabic;FEF6
-lamalefmaddaaboveisolatedarabic;FEF5
-lamarabic;0644
-lambda;03BB
-lambdastroke;019B
-lamed;05DC
-lameddagesh;FB3C
-lameddageshhebrew;FB3C
-lamedhebrew;05DC
-lamedholam;05DC 05B9
-lamedholamdagesh;05DC 05B9 05BC
-lamedholamdageshhebrew;05DC 05B9 05BC
-lamedholamhebrew;05DC 05B9
-lamfinalarabic;FEDE
-lamhahinitialarabic;FCCA
-laminitialarabic;FEDF
-lamjeeminitialarabic;FCC9
-lamkhahinitialarabic;FCCB
-lamlamhehisolatedarabic;FDF2
-lammedialarabic;FEE0
-lammeemhahinitialarabic;FD88
-lammeeminitialarabic;FCCC
-lammeemjeeminitialarabic;FEDF FEE4 FEA0
-lammeemkhahinitialarabic;FEDF FEE4 FEA8
-largecircle;25EF
-lbar;019A
-lbelt;026C
-lbopomofo;310C
-lcaron;013E
-lcedilla;013C
-lcircle;24DB
-lcircumflexbelow;1E3D
-lcommaaccent;013C
-ldot;0140
-ldotaccent;0140
-ldotbelow;1E37
-ldotbelowmacron;1E39
-leftangleabovecmb;031A
-lefttackbelowcmb;0318
-less;003C
-lessequal;2264
-lessequalorgreater;22DA
-lessmonospace;FF1C
-lessorequivalent;2272
-lessorgreater;2276
-lessoverequal;2266
-lesssmall;FE64
-lezh;026E
-lfblock;258C
-lhookretroflex;026D
-lira;20A4
-liwnarmenian;056C
-lj;01C9
-ljecyrillic;0459
-ll;F6C0
-lladeva;0933
-llagujarati;0AB3
-llinebelow;1E3B
-llladeva;0934
-llvocalicbengali;09E1
-llvocalicdeva;0961
-llvocalicvowelsignbengali;09E3
-llvocalicvowelsigndeva;0963
-lmiddletilde;026B
-lmonospace;FF4C
-lmsquare;33D0
-lochulathai;0E2C
-logicaland;2227
-logicalnot;00AC
-logicalnotreversed;2310
-logicalor;2228
-lolingthai;0E25
-longs;017F
-lowlinecenterline;FE4E
-lowlinecmb;0332
-lowlinedashed;FE4D
-lozenge;25CA
-lparen;24A7
-lslash;0142
-lsquare;2113
-lsuperior;F6EE
-ltshade;2591
-luthai;0E26
-lvocalicbengali;098C
-lvocalicdeva;090C
-lvocalicvowelsignbengali;09E2
-lvocalicvowelsigndeva;0962
-lxsquare;33D3
-m;006D
-mabengali;09AE
-macron;00AF
-macronbelowcmb;0331
-macroncmb;0304
-macronlowmod;02CD
-macronmonospace;FFE3
-macute;1E3F
-madeva;092E
-magujarati;0AAE
-magurmukhi;0A2E
-mahapakhhebrew;05A4
-mahapakhlefthebrew;05A4
-mahiragana;307E
-maichattawalowleftthai;F895
-maichattawalowrightthai;F894
-maichattawathai;0E4B
-maichattawaupperleftthai;F893
-maieklowleftthai;F88C
-maieklowrightthai;F88B
-maiekthai;0E48
-maiekupperleftthai;F88A
-maihanakatleftthai;F884
-maihanakatthai;0E31
-maitaikhuleftthai;F889
-maitaikhuthai;0E47
-maitholowleftthai;F88F
-maitholowrightthai;F88E
-maithothai;0E49
-maithoupperleftthai;F88D
-maitrilowleftthai;F892
-maitrilowrightthai;F891
-maitrithai;0E4A
-maitriupperleftthai;F890
-maiyamokthai;0E46
-makatakana;30DE
-makatakanahalfwidth;FF8F
-male;2642
-mansyonsquare;3347
-maqafhebrew;05BE
-mars;2642
-masoracirclehebrew;05AF
-masquare;3383
-mbopomofo;3107
-mbsquare;33D4
-mcircle;24DC
-mcubedsquare;33A5
-mdotaccent;1E41
-mdotbelow;1E43
-meemarabic;0645
-meemfinalarabic;FEE2
-meeminitialarabic;FEE3
-meemmedialarabic;FEE4
-meemmeeminitialarabic;FCD1
-meemmeemisolatedarabic;FC48
-meetorusquare;334D
-mehiragana;3081
-meizierasquare;337E
-mekatakana;30E1
-mekatakanahalfwidth;FF92
-mem;05DE
-memdagesh;FB3E
-memdageshhebrew;FB3E
-memhebrew;05DE
-menarmenian;0574
-merkhahebrew;05A5
-merkhakefulahebrew;05A6
-merkhakefulalefthebrew;05A6
-merkhalefthebrew;05A5
-mhook;0271
-mhzsquare;3392
-middledotkatakanahalfwidth;FF65
-middot;00B7
-mieumacirclekorean;3272
-mieumaparenkorean;3212
-mieumcirclekorean;3264
-mieumkorean;3141
-mieumpansioskorean;3170
-mieumparenkorean;3204
-mieumpieupkorean;316E
-mieumsioskorean;316F
-mihiragana;307F
-mikatakana;30DF
-mikatakanahalfwidth;FF90
-minus;2212
-minusbelowcmb;0320
-minuscircle;2296
-minusmod;02D7
-minusplus;2213
-minute;2032
-miribaarusquare;334A
-mirisquare;3349
-mlonglegturned;0270
-mlsquare;3396
-mmcubedsquare;33A3
-mmonospace;FF4D
-mmsquaredsquare;339F
-mohiragana;3082
-mohmsquare;33C1
-mokatakana;30E2
-mokatakanahalfwidth;FF93
-molsquare;33D6
-momathai;0E21
-moverssquare;33A7
-moverssquaredsquare;33A8
-mparen;24A8
-mpasquare;33AB
-mssquare;33B3
-msuperior;F6EF
-mturned;026F
-mu;00B5
-mu1;00B5
-muasquare;3382
-muchgreater;226B
-muchless;226A
-mufsquare;338C
-mugreek;03BC
-mugsquare;338D
-muhiragana;3080
-mukatakana;30E0
-mukatakanahalfwidth;FF91
-mulsquare;3395
-multiply;00D7
-mumsquare;339B
-munahhebrew;05A3
-munahlefthebrew;05A3
-musicalnote;266A
-musicalnotedbl;266B
-musicflatsign;266D
-musicsharpsign;266F
-mussquare;33B2
-muvsquare;33B6
-muwsquare;33BC
-mvmegasquare;33B9
-mvsquare;33B7
-mwmegasquare;33BF
-mwsquare;33BD
-n;006E
-nabengali;09A8
-nabla;2207
-nacute;0144
-nadeva;0928
-nagujarati;0AA8
-nagurmukhi;0A28
-nahiragana;306A
-nakatakana;30CA
-nakatakanahalfwidth;FF85
-napostrophe;0149
-nasquare;3381
-nbopomofo;310B
-nbspace;00A0
-ncaron;0148
-ncedilla;0146
-ncircle;24DD
-ncircumflexbelow;1E4B
-ncommaaccent;0146
-ndotaccent;1E45
-ndotbelow;1E47
-nehiragana;306D
-nekatakana;30CD
-nekatakanahalfwidth;FF88
-newsheqelsign;20AA
-nfsquare;338B
-ngabengali;0999
-ngadeva;0919
-ngagujarati;0A99
-ngagurmukhi;0A19
-ngonguthai;0E07
-nhiragana;3093
-nhookleft;0272
-nhookretroflex;0273
-nieunacirclekorean;326F
-nieunaparenkorean;320F
-nieuncieuckorean;3135
-nieuncirclekorean;3261
-nieunhieuhkorean;3136
-nieunkorean;3134
-nieunpansioskorean;3168
-nieunparenkorean;3201
-nieunsioskorean;3167
-nieuntikeutkorean;3166
-nihiragana;306B
-nikatakana;30CB
-nikatakanahalfwidth;FF86
-nikhahitleftthai;F899
-nikhahitthai;0E4D
-nine;0039
-ninearabic;0669
-ninebengali;09EF
-ninecircle;2468
-ninecircleinversesansserif;2792
-ninedeva;096F
-ninegujarati;0AEF
-ninegurmukhi;0A6F
-ninehackarabic;0669
-ninehangzhou;3029
-nineideographicparen;3228
-nineinferior;2089
-ninemonospace;FF19
-nineoldstyle;F739
-nineparen;247C
-nineperiod;2490
-ninepersian;06F9
-nineroman;2178
-ninesuperior;2079
-nineteencircle;2472
-nineteenparen;2486
-nineteenperiod;249A
-ninethai;0E59
-nj;01CC
-njecyrillic;045A
-nkatakana;30F3
-nkatakanahalfwidth;FF9D
-nlegrightlong;019E
-nlinebelow;1E49
-nmonospace;FF4E
-nmsquare;339A
-nnabengali;09A3
-nnadeva;0923
-nnagujarati;0AA3
-nnagurmukhi;0A23
-nnnadeva;0929
-nohiragana;306E
-nokatakana;30CE
-nokatakanahalfwidth;FF89
-nonbreakingspace;00A0
-nonenthai;0E13
-nonuthai;0E19
-noonarabic;0646
-noonfinalarabic;FEE6
-noonghunnaarabic;06BA
-noonghunnafinalarabic;FB9F
-noonhehinitialarabic;FEE7 FEEC
-nooninitialarabic;FEE7
-noonjeeminitialarabic;FCD2
-noonjeemisolatedarabic;FC4B
-noonmedialarabic;FEE8
-noonmeeminitialarabic;FCD5
-noonmeemisolatedarabic;FC4E
-noonnoonfinalarabic;FC8D
-notcontains;220C
-notelement;2209
-notelementof;2209
-notequal;2260
-notgreater;226F
-notgreaternorequal;2271
-notgreaternorless;2279
-notidentical;2262
-notless;226E
-notlessnorequal;2270
-notparallel;2226
-notprecedes;2280
-notsubset;2284
-notsucceeds;2281
-notsuperset;2285
-nowarmenian;0576
-nparen;24A9
-nssquare;33B1
-nsuperior;207F
-ntilde;00F1
-nu;03BD
-nuhiragana;306C
-nukatakana;30CC
-nukatakanahalfwidth;FF87
-nuktabengali;09BC
-nuktadeva;093C
-nuktagujarati;0ABC
-nuktagurmukhi;0A3C
-numbersign;0023
-numbersignmonospace;FF03
-numbersignsmall;FE5F
-numeralsigngreek;0374
-numeralsignlowergreek;0375
-numero;2116
-nun;05E0
-nundagesh;FB40
-nundageshhebrew;FB40
-nunhebrew;05E0
-nvsquare;33B5
-nwsquare;33BB
-nyabengali;099E
-nyadeva;091E
-nyagujarati;0A9E
-nyagurmukhi;0A1E
-o;006F
-oacute;00F3
-oangthai;0E2D
-obarred;0275
-obarredcyrillic;04E9
-obarreddieresiscyrillic;04EB
-obengali;0993
-obopomofo;311B
-obreve;014F
-ocandradeva;0911
-ocandragujarati;0A91
-ocandravowelsigndeva;0949
-ocandravowelsigngujarati;0AC9
-ocaron;01D2
-ocircle;24DE
-ocircumflex;00F4
-ocircumflexacute;1ED1
-ocircumflexdotbelow;1ED9
-ocircumflexgrave;1ED3
-ocircumflexhookabove;1ED5
-ocircumflextilde;1ED7
-ocyrillic;043E
-odblacute;0151
-odblgrave;020D
-odeva;0913
-odieresis;00F6
-odieresiscyrillic;04E7
-odotbelow;1ECD
-oe;0153
-oekorean;315A
-ogonek;02DB
-ogonekcmb;0328
-ograve;00F2
-ogujarati;0A93
-oharmenian;0585
-ohiragana;304A
-ohookabove;1ECF
-ohorn;01A1
-ohornacute;1EDB
-ohorndotbelow;1EE3
-ohorngrave;1EDD
-ohornhookabove;1EDF
-ohorntilde;1EE1
-ohungarumlaut;0151
-oi;01A3
-oinvertedbreve;020F
-okatakana;30AA
-okatakanahalfwidth;FF75
-okorean;3157
-olehebrew;05AB
-omacron;014D
-omacronacute;1E53
-omacrongrave;1E51
-omdeva;0950
-omega;03C9
-omega1;03D6
-omegacyrillic;0461
-omegalatinclosed;0277
-omegaroundcyrillic;047B
-omegatitlocyrillic;047D
-omegatonos;03CE
-omgujarati;0AD0
-omicron;03BF
-omicrontonos;03CC
-omonospace;FF4F
-one;0031
-onearabic;0661
-onebengali;09E7
-onecircle;2460
-onecircleinversesansserif;278A
-onedeva;0967
-onedotenleader;2024
-oneeighth;215B
-onefitted;F6DC
-onegujarati;0AE7
-onegurmukhi;0A67
-onehackarabic;0661
-onehalf;00BD
-onehangzhou;3021
-oneideographicparen;3220
-oneinferior;2081
-onemonospace;FF11
-onenumeratorbengali;09F4
-oneoldstyle;F731
-oneparen;2474
-oneperiod;2488
-onepersian;06F1
-onequarter;00BC
-oneroman;2170
-onesuperior;00B9
-onethai;0E51
-onethird;2153
-oogonek;01EB
-oogonekmacron;01ED
-oogurmukhi;0A13
-oomatragurmukhi;0A4B
-oopen;0254
-oparen;24AA
-openbullet;25E6
-option;2325
-ordfeminine;00AA
-ordmasculine;00BA
-orthogonal;221F
-oshortdeva;0912
-oshortvowelsigndeva;094A
-oslash;00F8
-oslashacute;01FF
-osmallhiragana;3049
-osmallkatakana;30A9
-osmallkatakanahalfwidth;FF6B
-ostrokeacute;01FF
-osuperior;F6F0
-otcyrillic;047F
-otilde;00F5
-otildeacute;1E4D
-otildedieresis;1E4F
-oubopomofo;3121
-overline;203E
-overlinecenterline;FE4A
-overlinecmb;0305
-overlinedashed;FE49
-overlinedblwavy;FE4C
-overlinewavy;FE4B
-overscore;00AF
-ovowelsignbengali;09CB
-ovowelsigndeva;094B
-ovowelsigngujarati;0ACB
-p;0070
-paampssquare;3380
-paasentosquare;332B
-pabengali;09AA
-pacute;1E55
-padeva;092A
-pagedown;21DF
-pageup;21DE
-pagujarati;0AAA
-pagurmukhi;0A2A
-pahiragana;3071
-paiyannoithai;0E2F
-pakatakana;30D1
-palatalizationcyrilliccmb;0484
-palochkacyrillic;04C0
-pansioskorean;317F
-paragraph;00B6
-parallel;2225
-parenleft;0028
-parenleftaltonearabic;FD3E
-parenleftbt;F8ED
-parenleftex;F8EC
-parenleftinferior;208D
-parenleftmonospace;FF08
-parenleftsmall;FE59
-parenleftsuperior;207D
-parenlefttp;F8EB
-parenleftvertical;FE35
-parenright;0029
-parenrightaltonearabic;FD3F
-parenrightbt;F8F8
-parenrightex;F8F7
-parenrightinferior;208E
-parenrightmonospace;FF09
-parenrightsmall;FE5A
-parenrightsuperior;207E
-parenrighttp;F8F6
-parenrightvertical;FE36
-partialdiff;2202
-paseqhebrew;05C0
-pashtahebrew;0599
-pasquare;33A9
-patah;05B7
-patah11;05B7
-patah1d;05B7
-patah2a;05B7
-patahhebrew;05B7
-patahnarrowhebrew;05B7
-patahquarterhebrew;05B7
-patahwidehebrew;05B7
-pazerhebrew;05A1
-pbopomofo;3106
-pcircle;24DF
-pdotaccent;1E57
-pe;05E4
-pecyrillic;043F
-pedagesh;FB44
-pedageshhebrew;FB44
-peezisquare;333B
-pefinaldageshhebrew;FB43
-peharabic;067E
-peharmenian;057A
-pehebrew;05E4
-pehfinalarabic;FB57
-pehinitialarabic;FB58
-pehiragana;307A
-pehmedialarabic;FB59
-pekatakana;30DA
-pemiddlehookcyrillic;04A7
-perafehebrew;FB4E
-percent;0025
-percentarabic;066A
-percentmonospace;FF05
-percentsmall;FE6A
-period;002E
-periodarmenian;0589
-periodcentered;00B7
-periodhalfwidth;FF61
-periodinferior;F6E7
-periodmonospace;FF0E
-periodsmall;FE52
-periodsuperior;F6E8
-perispomenigreekcmb;0342
-perpendicular;22A5
-perthousand;2030
-peseta;20A7
-pfsquare;338A
-phabengali;09AB
-phadeva;092B
-phagujarati;0AAB
-phagurmukhi;0A2B
-phi;03C6
-phi1;03D5
-phieuphacirclekorean;327A
-phieuphaparenkorean;321A
-phieuphcirclekorean;326C
-phieuphkorean;314D
-phieuphparenkorean;320C
-philatin;0278
-phinthuthai;0E3A
-phisymbolgreek;03D5
-phook;01A5
-phophanthai;0E1E
-phophungthai;0E1C
-phosamphaothai;0E20
-pi;03C0
-pieupacirclekorean;3273
-pieupaparenkorean;3213
-pieupcieuckorean;3176
-pieupcirclekorean;3265
-pieupkiyeokkorean;3172
-pieupkorean;3142
-pieupparenkorean;3205
-pieupsioskiyeokkorean;3174
-pieupsioskorean;3144
-pieupsiostikeutkorean;3175
-pieupthieuthkorean;3177
-pieuptikeutkorean;3173
-pihiragana;3074
-pikatakana;30D4
-pisymbolgreek;03D6
-piwrarmenian;0583
-plus;002B
-plusbelowcmb;031F
-pluscircle;2295
-plusminus;00B1
-plusmod;02D6
-plusmonospace;FF0B
-plussmall;FE62
-plussuperior;207A
-pmonospace;FF50
-pmsquare;33D8
-pohiragana;307D
-pointingindexdownwhite;261F
-pointingindexleftwhite;261C
-pointingindexrightwhite;261E
-pointingindexupwhite;261D
-pokatakana;30DD
-poplathai;0E1B
-postalmark;3012
-postalmarkface;3020
-pparen;24AB
-precedes;227A
-prescription;211E
-primemod;02B9
-primereversed;2035
-product;220F
-projective;2305
-prolongedkana;30FC
-propellor;2318
-propersubset;2282
-propersuperset;2283
-proportion;2237
-proportional;221D
-psi;03C8
-psicyrillic;0471
-psilipneumatacyrilliccmb;0486
-pssquare;33B0
-puhiragana;3077
-pukatakana;30D7
-pvsquare;33B4
-pwsquare;33BA
-q;0071
-qadeva;0958
-qadmahebrew;05A8
-qafarabic;0642
-qaffinalarabic;FED6
-qafinitialarabic;FED7
-qafmedialarabic;FED8
-qamats;05B8
-qamats10;05B8
-qamats1a;05B8
-qamats1c;05B8
-qamats27;05B8
-qamats29;05B8
-qamats33;05B8
-qamatsde;05B8
-qamatshebrew;05B8
-qamatsnarrowhebrew;05B8
-qamatsqatanhebrew;05B8
-qamatsqatannarrowhebrew;05B8
-qamatsqatanquarterhebrew;05B8
-qamatsqatanwidehebrew;05B8
-qamatsquarterhebrew;05B8
-qamatswidehebrew;05B8
-qarneyparahebrew;059F
-qbopomofo;3111
-qcircle;24E0
-qhook;02A0
-qmonospace;FF51
-qof;05E7
-qofdagesh;FB47
-qofdageshhebrew;FB47
-qofhatafpatah;05E7 05B2
-qofhatafpatahhebrew;05E7 05B2
-qofhatafsegol;05E7 05B1
-qofhatafsegolhebrew;05E7 05B1
-qofhebrew;05E7
-qofhiriq;05E7 05B4
-qofhiriqhebrew;05E7 05B4
-qofholam;05E7 05B9
-qofholamhebrew;05E7 05B9
-qofpatah;05E7 05B7
-qofpatahhebrew;05E7 05B7
-qofqamats;05E7 05B8
-qofqamatshebrew;05E7 05B8
-qofqubuts;05E7 05BB
-qofqubutshebrew;05E7 05BB
-qofsegol;05E7 05B6
-qofsegolhebrew;05E7 05B6
-qofsheva;05E7 05B0
-qofshevahebrew;05E7 05B0
-qoftsere;05E7 05B5
-qoftserehebrew;05E7 05B5
-qparen;24AC
-quarternote;2669
-qubuts;05BB
-qubuts18;05BB
-qubuts25;05BB
-qubuts31;05BB
-qubutshebrew;05BB
-qubutsnarrowhebrew;05BB
-qubutsquarterhebrew;05BB
-qubutswidehebrew;05BB
-question;003F
-questionarabic;061F
-questionarmenian;055E
-questiondown;00BF
-questiondownsmall;F7BF
-questiongreek;037E
-questionmonospace;FF1F
-questionsmall;F73F
-quotedbl;0022
-quotedblbase;201E
-quotedblleft;201C
-quotedblmonospace;FF02
-quotedblprime;301E
-quotedblprimereversed;301D
-quotedblright;201D
-quoteleft;2018
-quoteleftreversed;201B
-quotereversed;201B
-quoteright;2019
-quoterightn;0149
-quotesinglbase;201A
-quotesingle;0027
-quotesinglemonospace;FF07
-r;0072
-raarmenian;057C
-rabengali;09B0
-racute;0155
-radeva;0930
-radical;221A
-radicalex;F8E5
-radoverssquare;33AE
-radoverssquaredsquare;33AF
-radsquare;33AD
-rafe;05BF
-rafehebrew;05BF
-ragujarati;0AB0
-ragurmukhi;0A30
-rahiragana;3089
-rakatakana;30E9
-rakatakanahalfwidth;FF97
-ralowerdiagonalbengali;09F1
-ramiddlediagonalbengali;09F0
-ramshorn;0264
-ratio;2236
-rbopomofo;3116
-rcaron;0159
-rcedilla;0157
-rcircle;24E1
-rcommaaccent;0157
-rdblgrave;0211
-rdotaccent;1E59
-rdotbelow;1E5B
-rdotbelowmacron;1E5D
-referencemark;203B
-reflexsubset;2286
-reflexsuperset;2287
-registered;00AE
-registersans;F8E8
-registerserif;F6DA
-reharabic;0631
-reharmenian;0580
-rehfinalarabic;FEAE
-rehiragana;308C
-rehyehaleflamarabic;0631 FEF3 FE8E 0644
-rekatakana;30EC
-rekatakanahalfwidth;FF9A
-resh;05E8
-reshdageshhebrew;FB48
-reshhatafpatah;05E8 05B2
-reshhatafpatahhebrew;05E8 05B2
-reshhatafsegol;05E8 05B1
-reshhatafsegolhebrew;05E8 05B1
-reshhebrew;05E8
-reshhiriq;05E8 05B4
-reshhiriqhebrew;05E8 05B4
-reshholam;05E8 05B9
-reshholamhebrew;05E8 05B9
-reshpatah;05E8 05B7
-reshpatahhebrew;05E8 05B7
-reshqamats;05E8 05B8
-reshqamatshebrew;05E8 05B8
-reshqubuts;05E8 05BB
-reshqubutshebrew;05E8 05BB
-reshsegol;05E8 05B6
-reshsegolhebrew;05E8 05B6
-reshsheva;05E8 05B0
-reshshevahebrew;05E8 05B0
-reshtsere;05E8 05B5
-reshtserehebrew;05E8 05B5
-reversedtilde;223D
-reviahebrew;0597
-reviamugrashhebrew;0597
-revlogicalnot;2310
-rfishhook;027E
-rfishhookreversed;027F
-rhabengali;09DD
-rhadeva;095D
-rho;03C1
-rhook;027D
-rhookturned;027B
-rhookturnedsuperior;02B5
-rhosymbolgreek;03F1
-rhotichookmod;02DE
-rieulacirclekorean;3271
-rieulaparenkorean;3211
-rieulcirclekorean;3263
-rieulhieuhkorean;3140
-rieulkiyeokkorean;313A
-rieulkiyeoksioskorean;3169
-rieulkorean;3139
-rieulmieumkorean;313B
-rieulpansioskorean;316C
-rieulparenkorean;3203
-rieulphieuphkorean;313F
-rieulpieupkorean;313C
-rieulpieupsioskorean;316B
-rieulsioskorean;313D
-rieulthieuthkorean;313E
-rieultikeutkorean;316A
-rieulyeorinhieuhkorean;316D
-rightangle;221F
-righttackbelowcmb;0319
-righttriangle;22BF
-rihiragana;308A
-rikatakana;30EA
-rikatakanahalfwidth;FF98
-ring;02DA
-ringbelowcmb;0325
-ringcmb;030A
-ringhalfleft;02BF
-ringhalfleftarmenian;0559
-ringhalfleftbelowcmb;031C
-ringhalfleftcentered;02D3
-ringhalfright;02BE
-ringhalfrightbelowcmb;0339
-ringhalfrightcentered;02D2
-rinvertedbreve;0213
-rittorusquare;3351
-rlinebelow;1E5F
-rlongleg;027C
-rlonglegturned;027A
-rmonospace;FF52
-rohiragana;308D
-rokatakana;30ED
-rokatakanahalfwidth;FF9B
-roruathai;0E23
-rparen;24AD
-rrabengali;09DC
-rradeva;0931
-rragurmukhi;0A5C
-rreharabic;0691
-rrehfinalarabic;FB8D
-rrvocalicbengali;09E0
-rrvocalicdeva;0960
-rrvocalicgujarati;0AE0
-rrvocalicvowelsignbengali;09C4
-rrvocalicvowelsigndeva;0944
-rrvocalicvowelsigngujarati;0AC4
-rsuperior;F6F1
-rtblock;2590
-rturned;0279
-rturnedsuperior;02B4
-ruhiragana;308B
-rukatakana;30EB
-rukatakanahalfwidth;FF99
-rupeemarkbengali;09F2
-rupeesignbengali;09F3
-rupiah;F6DD
-ruthai;0E24
-rvocalicbengali;098B
-rvocalicdeva;090B
-rvocalicgujarati;0A8B
-rvocalicvowelsignbengali;09C3
-rvocalicvowelsigndeva;0943
-rvocalicvowelsigngujarati;0AC3
-s;0073
-sabengali;09B8
-sacute;015B
-sacutedotaccent;1E65
-sadarabic;0635
-sadeva;0938
-sadfinalarabic;FEBA
-sadinitialarabic;FEBB
-sadmedialarabic;FEBC
-sagujarati;0AB8
-sagurmukhi;0A38
-sahiragana;3055
-sakatakana;30B5
-sakatakanahalfwidth;FF7B
-sallallahoualayhewasallamarabic;FDFA
-samekh;05E1
-samekhdagesh;FB41
-samekhdageshhebrew;FB41
-samekhhebrew;05E1
-saraaathai;0E32
-saraaethai;0E41
-saraaimaimalaithai;0E44
-saraaimaimuanthai;0E43
-saraamthai;0E33
-saraathai;0E30
-saraethai;0E40
-saraiileftthai;F886
-saraiithai;0E35
-saraileftthai;F885
-saraithai;0E34
-saraothai;0E42
-saraueeleftthai;F888
-saraueethai;0E37
-saraueleftthai;F887
-sarauethai;0E36
-sarauthai;0E38
-sarauuthai;0E39
-sbopomofo;3119
-scaron;0161
-scarondotaccent;1E67
-scedilla;015F
-schwa;0259
-schwacyrillic;04D9
-schwadieresiscyrillic;04DB
-schwahook;025A
-scircle;24E2
-scircumflex;015D
-scommaaccent;0219
-sdotaccent;1E61
-sdotbelow;1E63
-sdotbelowdotaccent;1E69
-seagullbelowcmb;033C
-second;2033
-secondtonechinese;02CA
-section;00A7
-seenarabic;0633
-seenfinalarabic;FEB2
-seeninitialarabic;FEB3
-seenmedialarabic;FEB4
-segol;05B6
-segol13;05B6
-segol1f;05B6
-segol2c;05B6
-segolhebrew;05B6
-segolnarrowhebrew;05B6
-segolquarterhebrew;05B6
-segoltahebrew;0592
-segolwidehebrew;05B6
-seharmenian;057D
-sehiragana;305B
-sekatakana;30BB
-sekatakanahalfwidth;FF7E
-semicolon;003B
-semicolonarabic;061B
-semicolonmonospace;FF1B
-semicolonsmall;FE54
-semivoicedmarkkana;309C
-semivoicedmarkkanahalfwidth;FF9F
-sentisquare;3322
-sentosquare;3323
-seven;0037
-sevenarabic;0667
-sevenbengali;09ED
-sevencircle;2466
-sevencircleinversesansserif;2790
-sevendeva;096D
-seveneighths;215E
-sevengujarati;0AED
-sevengurmukhi;0A6D
-sevenhackarabic;0667
-sevenhangzhou;3027
-sevenideographicparen;3226
-seveninferior;2087
-sevenmonospace;FF17
-sevenoldstyle;F737
-sevenparen;247A
-sevenperiod;248E
-sevenpersian;06F7
-sevenroman;2176
-sevensuperior;2077
-seventeencircle;2470
-seventeenparen;2484
-seventeenperiod;2498
-seventhai;0E57
-sfthyphen;00AD
-shaarmenian;0577
-shabengali;09B6
-shacyrillic;0448
-shaddaarabic;0651
-shaddadammaarabic;FC61
-shaddadammatanarabic;FC5E
-shaddafathaarabic;FC60
-shaddafathatanarabic;0651 064B
-shaddakasraarabic;FC62
-shaddakasratanarabic;FC5F
-shade;2592
-shadedark;2593
-shadelight;2591
-shademedium;2592
-shadeva;0936
-shagujarati;0AB6
-shagurmukhi;0A36
-shalshelethebrew;0593
-shbopomofo;3115
-shchacyrillic;0449
-sheenarabic;0634
-sheenfinalarabic;FEB6
-sheeninitialarabic;FEB7
-sheenmedialarabic;FEB8
-sheicoptic;03E3
-sheqel;20AA
-sheqelhebrew;20AA
-sheva;05B0
-sheva115;05B0
-sheva15;05B0
-sheva22;05B0
-sheva2e;05B0
-shevahebrew;05B0
-shevanarrowhebrew;05B0
-shevaquarterhebrew;05B0
-shevawidehebrew;05B0
-shhacyrillic;04BB
-shimacoptic;03ED
-shin;05E9
-shindagesh;FB49
-shindageshhebrew;FB49
-shindageshshindot;FB2C
-shindageshshindothebrew;FB2C
-shindageshsindot;FB2D
-shindageshsindothebrew;FB2D
-shindothebrew;05C1
-shinhebrew;05E9
-shinshindot;FB2A
-shinshindothebrew;FB2A
-shinsindot;FB2B
-shinsindothebrew;FB2B
-shook;0282
-sigma;03C3
-sigma1;03C2
-sigmafinal;03C2
-sigmalunatesymbolgreek;03F2
-sihiragana;3057
-sikatakana;30B7
-sikatakanahalfwidth;FF7C
-siluqhebrew;05BD
-siluqlefthebrew;05BD
-similar;223C
-sindothebrew;05C2
-siosacirclekorean;3274
-siosaparenkorean;3214
-sioscieuckorean;317E
-sioscirclekorean;3266
-sioskiyeokkorean;317A
-sioskorean;3145
-siosnieunkorean;317B
-siosparenkorean;3206
-siospieupkorean;317D
-siostikeutkorean;317C
-six;0036
-sixarabic;0666
-sixbengali;09EC
-sixcircle;2465
-sixcircleinversesansserif;278F
-sixdeva;096C
-sixgujarati;0AEC
-sixgurmukhi;0A6C
-sixhackarabic;0666
-sixhangzhou;3026
-sixideographicparen;3225
-sixinferior;2086
-sixmonospace;FF16
-sixoldstyle;F736
-sixparen;2479
-sixperiod;248D
-sixpersian;06F6
-sixroman;2175
-sixsuperior;2076
-sixteencircle;246F
-sixteencurrencydenominatorbengali;09F9
-sixteenparen;2483
-sixteenperiod;2497
-sixthai;0E56
-slash;002F
-slashmonospace;FF0F
-slong;017F
-slongdotaccent;1E9B
-smileface;263A
-smonospace;FF53
-sofpasuqhebrew;05C3
-softhyphen;00AD
-softsigncyrillic;044C
-sohiragana;305D
-sokatakana;30BD
-sokatakanahalfwidth;FF7F
-soliduslongoverlaycmb;0338
-solidusshortoverlaycmb;0337
-sorusithai;0E29
-sosalathai;0E28
-sosothai;0E0B
-sosuathai;0E2A
-space;0020
-spacehackarabic;0020
-spade;2660
-spadesuitblack;2660
-spadesuitwhite;2664
-sparen;24AE
-squarebelowcmb;033B
-squarecc;33C4
-squarecm;339D
-squarediagonalcrosshatchfill;25A9
-squarehorizontalfill;25A4
-squarekg;338F
-squarekm;339E
-squarekmcapital;33CE
-squareln;33D1
-squarelog;33D2
-squaremg;338E
-squaremil;33D5
-squaremm;339C
-squaremsquared;33A1
-squareorthogonalcrosshatchfill;25A6
-squareupperlefttolowerrightfill;25A7
-squareupperrighttolowerleftfill;25A8
-squareverticalfill;25A5
-squarewhitewithsmallblack;25A3
-srsquare;33DB
-ssabengali;09B7
-ssadeva;0937
-ssagujarati;0AB7
-ssangcieuckorean;3149
-ssanghieuhkorean;3185
-ssangieungkorean;3180
-ssangkiyeokkorean;3132
-ssangnieunkorean;3165
-ssangpieupkorean;3143
-ssangsioskorean;3146
-ssangtikeutkorean;3138
-ssuperior;F6F2
-sterling;00A3
-sterlingmonospace;FFE1
-strokelongoverlaycmb;0336
-strokeshortoverlaycmb;0335
-subset;2282
-subsetnotequal;228A
-subsetorequal;2286
-succeeds;227B
-suchthat;220B
-suhiragana;3059
-sukatakana;30B9
-sukatakanahalfwidth;FF7D
-sukunarabic;0652
-summation;2211
-sun;263C
-superset;2283
-supersetnotequal;228B
-supersetorequal;2287
-svsquare;33DC
-syouwaerasquare;337C
-t;0074
-tabengali;09A4
-tackdown;22A4
-tackleft;22A3
-tadeva;0924
-tagujarati;0AA4
-tagurmukhi;0A24
-taharabic;0637
-tahfinalarabic;FEC2
-tahinitialarabic;FEC3
-tahiragana;305F
-tahmedialarabic;FEC4
-taisyouerasquare;337D
-takatakana;30BF
-takatakanahalfwidth;FF80
-tatweelarabic;0640
-tau;03C4
-tav;05EA
-tavdages;FB4A
-tavdagesh;FB4A
-tavdageshhebrew;FB4A
-tavhebrew;05EA
-tbar;0167
-tbopomofo;310A
-tcaron;0165
-tccurl;02A8
-tcedilla;0163
-tcheharabic;0686
-tchehfinalarabic;FB7B
-tchehinitialarabic;FB7C
-tchehmedialarabic;FB7D
-tchehmeeminitialarabic;FB7C FEE4
-tcircle;24E3
-tcircumflexbelow;1E71
-tcommaaccent;0163
-tdieresis;1E97
-tdotaccent;1E6B
-tdotbelow;1E6D
-tecyrillic;0442
-tedescendercyrillic;04AD
-teharabic;062A
-tehfinalarabic;FE96
-tehhahinitialarabic;FCA2
-tehhahisolatedarabic;FC0C
-tehinitialarabic;FE97
-tehiragana;3066
-tehjeeminitialarabic;FCA1
-tehjeemisolatedarabic;FC0B
-tehmarbutaarabic;0629
-tehmarbutafinalarabic;FE94
-tehmedialarabic;FE98
-tehmeeminitialarabic;FCA4
-tehmeemisolatedarabic;FC0E
-tehnoonfinalarabic;FC73
-tekatakana;30C6
-tekatakanahalfwidth;FF83
-telephone;2121
-telephoneblack;260E
-telishagedolahebrew;05A0
-telishaqetanahebrew;05A9
-tencircle;2469
-tenideographicparen;3229
-tenparen;247D
-tenperiod;2491
-tenroman;2179
-tesh;02A7
-tet;05D8
-tetdagesh;FB38
-tetdageshhebrew;FB38
-tethebrew;05D8
-tetsecyrillic;04B5
-tevirhebrew;059B
-tevirlefthebrew;059B
-thabengali;09A5
-thadeva;0925
-thagujarati;0AA5
-thagurmukhi;0A25
-thalarabic;0630
-thalfinalarabic;FEAC
-thanthakhatlowleftthai;F898
-thanthakhatlowrightthai;F897
-thanthakhatthai;0E4C
-thanthakhatupperleftthai;F896
-theharabic;062B
-thehfinalarabic;FE9A
-thehinitialarabic;FE9B
-thehmedialarabic;FE9C
-thereexists;2203
-therefore;2234
-theta;03B8
-theta1;03D1
-thetasymbolgreek;03D1
-thieuthacirclekorean;3279
-thieuthaparenkorean;3219
-thieuthcirclekorean;326B
-thieuthkorean;314C
-thieuthparenkorean;320B
-thirteencircle;246C
-thirteenparen;2480
-thirteenperiod;2494
-thonangmonthothai;0E11
-thook;01AD
-thophuthaothai;0E12
-thorn;00FE
-thothahanthai;0E17
-thothanthai;0E10
-thothongthai;0E18
-thothungthai;0E16
-thousandcyrillic;0482
-thousandsseparatorarabic;066C
-thousandsseparatorpersian;066C
-three;0033
-threearabic;0663
-threebengali;09E9
-threecircle;2462
-threecircleinversesansserif;278C
-threedeva;0969
-threeeighths;215C
-threegujarati;0AE9
-threegurmukhi;0A69
-threehackarabic;0663
-threehangzhou;3023
-threeideographicparen;3222
-threeinferior;2083
-threemonospace;FF13
-threenumeratorbengali;09F6
-threeoldstyle;F733
-threeparen;2476
-threeperiod;248A
-threepersian;06F3
-threequarters;00BE
-threequartersemdash;F6DE
-threeroman;2172
-threesuperior;00B3
-threethai;0E53
-thzsquare;3394
-tihiragana;3061
-tikatakana;30C1
-tikatakanahalfwidth;FF81
-tikeutacirclekorean;3270
-tikeutaparenkorean;3210
-tikeutcirclekorean;3262
-tikeutkorean;3137
-tikeutparenkorean;3202
-tilde;02DC
-tildebelowcmb;0330
-tildecmb;0303
-tildecomb;0303
-tildedoublecmb;0360
-tildeoperator;223C
-tildeoverlaycmb;0334
-tildeverticalcmb;033E
-timescircle;2297
-tipehahebrew;0596
-tipehalefthebrew;0596
-tippigurmukhi;0A70
-titlocyrilliccmb;0483
-tiwnarmenian;057F
-tlinebelow;1E6F
-tmonospace;FF54
-toarmenian;0569
-tohiragana;3068
-tokatakana;30C8
-tokatakanahalfwidth;FF84
-tonebarextrahighmod;02E5
-tonebarextralowmod;02E9
-tonebarhighmod;02E6
-tonebarlowmod;02E8
-tonebarmidmod;02E7
-tonefive;01BD
-tonesix;0185
-tonetwo;01A8
-tonos;0384
-tonsquare;3327
-topatakthai;0E0F
-tortoiseshellbracketleft;3014
-tortoiseshellbracketleftsmall;FE5D
-tortoiseshellbracketleftvertical;FE39
-tortoiseshellbracketright;3015
-tortoiseshellbracketrightsmall;FE5E
-tortoiseshellbracketrightvertical;FE3A
-totaothai;0E15
-tpalatalhook;01AB
-tparen;24AF
-trademark;2122
-trademarksans;F8EA
-trademarkserif;F6DB
-tretroflexhook;0288
-triagdn;25BC
-triaglf;25C4
-triagrt;25BA
-triagup;25B2
-ts;02A6
-tsadi;05E6
-tsadidagesh;FB46
-tsadidageshhebrew;FB46
-tsadihebrew;05E6
-tsecyrillic;0446
-tsere;05B5
-tsere12;05B5
-tsere1e;05B5
-tsere2b;05B5
-tserehebrew;05B5
-tserenarrowhebrew;05B5
-tserequarterhebrew;05B5
-tserewidehebrew;05B5
-tshecyrillic;045B
-tsuperior;F6F3
-ttabengali;099F
-ttadeva;091F
-ttagujarati;0A9F
-ttagurmukhi;0A1F
-tteharabic;0679
-ttehfinalarabic;FB67
-ttehinitialarabic;FB68
-ttehmedialarabic;FB69
-tthabengali;09A0
-tthadeva;0920
-tthagujarati;0AA0
-tthagurmukhi;0A20
-tturned;0287
-tuhiragana;3064
-tukatakana;30C4
-tukatakanahalfwidth;FF82
-tusmallhiragana;3063
-tusmallkatakana;30C3
-tusmallkatakanahalfwidth;FF6F
-twelvecircle;246B
-twelveparen;247F
-twelveperiod;2493
-twelveroman;217B
-twentycircle;2473
-twentyhangzhou;5344
-twentyparen;2487
-twentyperiod;249B
-two;0032
-twoarabic;0662
-twobengali;09E8
-twocircle;2461
-twocircleinversesansserif;278B
-twodeva;0968
-twodotenleader;2025
-twodotleader;2025
-twodotleadervertical;FE30
-twogujarati;0AE8
-twogurmukhi;0A68
-twohackarabic;0662
-twohangzhou;3022
-twoideographicparen;3221
-twoinferior;2082
-twomonospace;FF12
-twonumeratorbengali;09F5
-twooldstyle;F732
-twoparen;2475
-twoperiod;2489
-twopersian;06F2
-tworoman;2171
-twostroke;01BB
-twosuperior;00B2
-twothai;0E52
-twothirds;2154
-u;0075
-uacute;00FA
-ubar;0289
-ubengali;0989
-ubopomofo;3128
-ubreve;016D
-ucaron;01D4
-ucircle;24E4
-ucircumflex;00FB
-ucircumflexbelow;1E77
-ucyrillic;0443
-udattadeva;0951
-udblacute;0171
-udblgrave;0215
-udeva;0909
-udieresis;00FC
-udieresisacute;01D8
-udieresisbelow;1E73
-udieresiscaron;01DA
-udieresiscyrillic;04F1
-udieresisgrave;01DC
-udieresismacron;01D6
-udotbelow;1EE5
-ugrave;00F9
-ugujarati;0A89
-ugurmukhi;0A09
-uhiragana;3046
-uhookabove;1EE7
-uhorn;01B0
-uhornacute;1EE9
-uhorndotbelow;1EF1
-uhorngrave;1EEB
-uhornhookabove;1EED
-uhorntilde;1EEF
-uhungarumlaut;0171
-uhungarumlautcyrillic;04F3
-uinvertedbreve;0217
-ukatakana;30A6
-ukatakanahalfwidth;FF73
-ukcyrillic;0479
-ukorean;315C
-umacron;016B
-umacroncyrillic;04EF
-umacrondieresis;1E7B
-umatragurmukhi;0A41
-umonospace;FF55
-underscore;005F
-underscoredbl;2017
-underscoremonospace;FF3F
-underscorevertical;FE33
-underscorewavy;FE4F
-union;222A
-universal;2200
-uogonek;0173
-uparen;24B0
-upblock;2580
-upperdothebrew;05C4
-upsilon;03C5
-upsilondieresis;03CB
-upsilondieresistonos;03B0
-upsilonlatin;028A
-upsilontonos;03CD
-uptackbelowcmb;031D
-uptackmod;02D4
-uragurmukhi;0A73
-uring;016F
-ushortcyrillic;045E
-usmallhiragana;3045
-usmallkatakana;30A5
-usmallkatakanahalfwidth;FF69
-ustraightcyrillic;04AF
-ustraightstrokecyrillic;04B1
-utilde;0169
-utildeacute;1E79
-utildebelow;1E75
-uubengali;098A
-uudeva;090A
-uugujarati;0A8A
-uugurmukhi;0A0A
-uumatragurmukhi;0A42
-uuvowelsignbengali;09C2
-uuvowelsigndeva;0942
-uuvowelsigngujarati;0AC2
-uvowelsignbengali;09C1
-uvowelsigndeva;0941
-uvowelsigngujarati;0AC1
-v;0076
-vadeva;0935
-vagujarati;0AB5
-vagurmukhi;0A35
-vakatakana;30F7
-vav;05D5
-vavdagesh;FB35
-vavdagesh65;FB35
-vavdageshhebrew;FB35
-vavhebrew;05D5
-vavholam;FB4B
-vavholamhebrew;FB4B
-vavvavhebrew;05F0
-vavyodhebrew;05F1
-vcircle;24E5
-vdotbelow;1E7F
-vecyrillic;0432
-veharabic;06A4
-vehfinalarabic;FB6B
-vehinitialarabic;FB6C
-vehmedialarabic;FB6D
-vekatakana;30F9
-venus;2640
-verticalbar;007C
-verticallineabovecmb;030D
-verticallinebelowcmb;0329
-verticallinelowmod;02CC
-verticallinemod;02C8
-vewarmenian;057E
-vhook;028B
-vikatakana;30F8
-viramabengali;09CD
-viramadeva;094D
-viramagujarati;0ACD
-visargabengali;0983
-visargadeva;0903
-visargagujarati;0A83
-vmonospace;FF56
-voarmenian;0578
-voicediterationhiragana;309E
-voicediterationkatakana;30FE
-voicedmarkkana;309B
-voicedmarkkanahalfwidth;FF9E
-vokatakana;30FA
-vparen;24B1
-vtilde;1E7D
-vturned;028C
-vuhiragana;3094
-vukatakana;30F4
-w;0077
-wacute;1E83
-waekorean;3159
-wahiragana;308F
-wakatakana;30EF
-wakatakanahalfwidth;FF9C
-wakorean;3158
-wasmallhiragana;308E
-wasmallkatakana;30EE
-wattosquare;3357
-wavedash;301C
-wavyunderscorevertical;FE34
-wawarabic;0648
-wawfinalarabic;FEEE
-wawhamzaabovearabic;0624
-wawhamzaabovefinalarabic;FE86
-wbsquare;33DD
-wcircle;24E6
-wcircumflex;0175
-wdieresis;1E85
-wdotaccent;1E87
-wdotbelow;1E89
-wehiragana;3091
-weierstrass;2118
-wekatakana;30F1
-wekorean;315E
-weokorean;315D
-wgrave;1E81
-whitebullet;25E6
-whitecircle;25CB
-whitecircleinverse;25D9
-whitecornerbracketleft;300E
-whitecornerbracketleftvertical;FE43
-whitecornerbracketright;300F
-whitecornerbracketrightvertical;FE44
-whitediamond;25C7
-whitediamondcontainingblacksmalldiamond;25C8
-whitedownpointingsmalltriangle;25BF
-whitedownpointingtriangle;25BD
-whiteleftpointingsmalltriangle;25C3
-whiteleftpointingtriangle;25C1
-whitelenticularbracketleft;3016
-whitelenticularbracketright;3017
-whiterightpointingsmalltriangle;25B9
-whiterightpointingtriangle;25B7
-whitesmallsquare;25AB
-whitesmilingface;263A
-whitesquare;25A1
-whitestar;2606
-whitetelephone;260F
-whitetortoiseshellbracketleft;3018
-whitetortoiseshellbracketright;3019
-whiteuppointingsmalltriangle;25B5
-whiteuppointingtriangle;25B3
-wihiragana;3090
-wikatakana;30F0
-wikorean;315F
-wmonospace;FF57
-wohiragana;3092
-wokatakana;30F2
-wokatakanahalfwidth;FF66
-won;20A9
-wonmonospace;FFE6
-wowaenthai;0E27
-wparen;24B2
-wring;1E98
-wsuperior;02B7
-wturned;028D
-wynn;01BF
-x;0078
-xabovecmb;033D
-xbopomofo;3112
-xcircle;24E7
-xdieresis;1E8D
-xdotaccent;1E8B
-xeharmenian;056D
-xi;03BE
-xmonospace;FF58
-xparen;24B3
-xsuperior;02E3
-y;0079
-yaadosquare;334E
-yabengali;09AF
-yacute;00FD
-yadeva;092F
-yaekorean;3152
-yagujarati;0AAF
-yagurmukhi;0A2F
-yahiragana;3084
-yakatakana;30E4
-yakatakanahalfwidth;FF94
-yakorean;3151
-yamakkanthai;0E4E
-yasmallhiragana;3083
-yasmallkatakana;30E3
-yasmallkatakanahalfwidth;FF6C
-yatcyrillic;0463
-ycircle;24E8
-ycircumflex;0177
-ydieresis;00FF
-ydotaccent;1E8F
-ydotbelow;1EF5
-yeharabic;064A
-yehbarreearabic;06D2
-yehbarreefinalarabic;FBAF
-yehfinalarabic;FEF2
-yehhamzaabovearabic;0626
-yehhamzaabovefinalarabic;FE8A
-yehhamzaaboveinitialarabic;FE8B
-yehhamzaabovemedialarabic;FE8C
-yehinitialarabic;FEF3
-yehmedialarabic;FEF4
-yehmeeminitialarabic;FCDD
-yehmeemisolatedarabic;FC58
-yehnoonfinalarabic;FC94
-yehthreedotsbelowarabic;06D1
-yekorean;3156
-yen;00A5
-yenmonospace;FFE5
-yeokorean;3155
-yeorinhieuhkorean;3186
-yerahbenyomohebrew;05AA
-yerahbenyomolefthebrew;05AA
-yericyrillic;044B
-yerudieresiscyrillic;04F9
-yesieungkorean;3181
-yesieungpansioskorean;3183
-yesieungsioskorean;3182
-yetivhebrew;059A
-ygrave;1EF3
-yhook;01B4
-yhookabove;1EF7
-yiarmenian;0575
-yicyrillic;0457
-yikorean;3162
-yinyang;262F
-yiwnarmenian;0582
-ymonospace;FF59
-yod;05D9
-yoddagesh;FB39
-yoddageshhebrew;FB39
-yodhebrew;05D9
-yodyodhebrew;05F2
-yodyodpatahhebrew;FB1F
-yohiragana;3088
-yoikorean;3189
-yokatakana;30E8
-yokatakanahalfwidth;FF96
-yokorean;315B
-yosmallhiragana;3087
-yosmallkatakana;30E7
-yosmallkatakanahalfwidth;FF6E
-yotgreek;03F3
-yoyaekorean;3188
-yoyakorean;3187
-yoyakthai;0E22
-yoyingthai;0E0D
-yparen;24B4
-ypogegrammeni;037A
-ypogegrammenigreekcmb;0345
-yr;01A6
-yring;1E99
-ysuperior;02B8
-ytilde;1EF9
-yturned;028E
-yuhiragana;3086
-yuikorean;318C
-yukatakana;30E6
-yukatakanahalfwidth;FF95
-yukorean;3160
-yusbigcyrillic;046B
-yusbigiotifiedcyrillic;046D
-yuslittlecyrillic;0467
-yuslittleiotifiedcyrillic;0469
-yusmallhiragana;3085
-yusmallkatakana;30E5
-yusmallkatakanahalfwidth;FF6D
-yuyekorean;318B
-yuyeokorean;318A
-yyabengali;09DF
-yyadeva;095F
-z;007A
-zaarmenian;0566
-zacute;017A
-zadeva;095B
-zagurmukhi;0A5B
-zaharabic;0638
-zahfinalarabic;FEC6
-zahinitialarabic;FEC7
-zahiragana;3056
-zahmedialarabic;FEC8
-zainarabic;0632
-zainfinalarabic;FEB0
-zakatakana;30B6
-zaqefgadolhebrew;0595
-zaqefqatanhebrew;0594
-zarqahebrew;0598
-zayin;05D6
-zayindagesh;FB36
-zayindageshhebrew;FB36
-zayinhebrew;05D6
-zbopomofo;3117
-zcaron;017E
-zcircle;24E9
-zcircumflex;1E91
-zcurl;0291
-zdot;017C
-zdotaccent;017C
-zdotbelow;1E93
-zecyrillic;0437
-zedescendercyrillic;0499
-zedieresiscyrillic;04DF
-zehiragana;305C
-zekatakana;30BC
-zero;0030
-zeroarabic;0660
-zerobengali;09E6
-zerodeva;0966
-zerogujarati;0AE6
-zerogurmukhi;0A66
-zerohackarabic;0660
-zeroinferior;2080
-zeromonospace;FF10
-zerooldstyle;F730
-zeropersian;06F0
-zerosuperior;2070
-zerothai;0E50
-zerowidthjoiner;FEFF
-zerowidthnonjoiner;200C
-zerowidthspace;200B
-zeta;03B6
-zhbopomofo;3113
-zhearmenian;056A
-zhebrevecyrillic;04C2
-zhecyrillic;0436
-zhedescendercyrillic;0497
-zhedieresiscyrillic;04DD
-zihiragana;3058
-zikatakana;30B8
-zinorhebrew;05AE
-zlinebelow;1E95
-zmonospace;FF5A
-zohiragana;305E
-zokatakana;30BE
-zparen;24B5
-zretroflexhook;0290
-zstroke;01B6
-zuhiragana;305A
-zukatakana;30BA
-a100;275E
-a101;2761
-a102;2762
-a103;2763
-a104;2764
-a105;2710
-a106;2765
-a107;2766
-a108;2767
-a109;2660
-a10;2721
-a110;2665
-a111;2666
-a112;2663
-a117;2709
-a118;2708
-a119;2707
-a11;261B
-a120;2460
-a121;2461
-a122;2462
-a123;2463
-a124;2464
-a125;2465
-a126;2466
-a127;2467
-a128;2468
-a129;2469
-a12;261E
-a130;2776
-a131;2777
-a132;2778
-a133;2779
-a134;277A
-a135;277B
-a136;277C
-a137;277D
-a138;277E
-a139;277F
-a13;270C
-a140;2780
-a141;2781
-a142;2782
-a143;2783
-a144;2784
-a145;2785
-a146;2786
-a147;2787
-a148;2788
-a149;2789
-a14;270D
-a150;278A
-a151;278B
-a152;278C
-a153;278D
-a154;278E
-a155;278F
-a156;2790
-a157;2791
-a158;2792
-a159;2793
-a15;270E
-a160;2794
-a161;2192
-a162;27A3
-a163;2194
-a164;2195
-a165;2799
-a166;279B
-a167;279C
-a168;279D
-a169;279E
-a16;270F
-a170;279F
-a171;27A0
-a172;27A1
-a173;27A2
-a174;27A4
-a175;27A5
-a176;27A6
-a177;27A7
-a178;27A8
-a179;27A9
-a17;2711
-a180;27AB
-a181;27AD
-a182;27AF
-a183;27B2
-a184;27B3
-a185;27B5
-a186;27B8
-a187;27BA
-a188;27BB
-a189;27BC
-a18;2712
-a190;27BD
-a191;27BE
-a192;279A
-a193;27AA
-a194;27B6
-a195;27B9
-a196;2798
-a197;27B4
-a198;27B7
-a199;27AC
-a19;2713
-a1;2701
-a200;27AE
-a201;27B1
-a202;2703
-a203;2750
-a204;2752
-a205;276E
-a206;2770
-a20;2714
-a21;2715
-a22;2716
-a23;2717
-a24;2718
-a25;2719
-a26;271A
-a27;271B
-a28;271C
-a29;2722
-a2;2702
-a30;2723
-a31;2724
-a32;2725
-a33;2726
-a34;2727
-a35;2605
-a36;2729
-a37;272A
-a38;272B
-a39;272C
-a3;2704
-a40;272D
-a41;272E
-a42;272F
-a43;2730
-a44;2731
-a45;2732
-a46;2733
-a47;2734
-a48;2735
-a49;2736
-a4;260E
-a50;2737
-a51;2738
-a52;2739
-a53;273A
-a54;273B
-a55;273C
-a56;273D
-a57;273E
-a58;273F
-a59;2740
-a5;2706
-a60;2741
-a61;2742
-a62;2743
-a63;2744
-a64;2745
-a65;2746
-a66;2747
-a67;2748
-a68;2749
-a69;274A
-a6;271D
-a70;274B
-a71;25CF
-a72;274D
-a73;25A0
-a74;274F
-a75;2751
-a76;25B2
-a77;25BC
-a78;25C6
-a79;2756
-a7;271E
-a81;25D7
-a82;2758
-a83;2759
-a84;275A
-a85;276F
-a86;2771
-a87;2772
-a88;2773
-a89;2768
-a8;271F
-a90;2769
-a91;276C
-a92;276D
-a93;276A
-a94;276B
-a95;2774
-a96;2775
-a97;275B
-a98;275C
-a99;275D
-a9;2720
-"""
-
-
-# string table management
-#
-class StringTable:
-  def __init__( self, name_list, master_table_name ):
-    self.names        = name_list
-    self.master_table = master_table_name
-    self.indices      = {}
-    index             = 0
-
-    for name in name_list:
-      self.indices[name] = index
-      index += len( name ) + 1
-
-    self.total = index
-
-  def dump( self, file ):
-    write = file.write
-    write( "  static const char  " + self.master_table +
-           "[" + repr( self.total ) + "] =\n" )
-    write( "  {\n" )
-
-    line = ""
-    for name in self.names:
-      line += "    '"
-      line += string.join( ( re.findall( ".", name ) ), "','" )
-      line += "', 0,\n"
-
-    write( line + "  };\n\n\n" )
-
-  def dump_sublist( self, file, table_name, macro_name, sublist ):
-    write = file.write
-    write( "#define " + macro_name + "  " + repr( len( sublist ) ) + "\n\n" )
-
-    write( "  /* Values are offsets into the `" +
-           self.master_table + "' table */\n\n" )
-    write( "  static const short  " + table_name +
-           "[" + macro_name + "] =\n" )
-    write( "  {\n" )
-
-    line  = "    "
-    comma = ""
-    col   = 0
-
-    for name in sublist:
-      line += comma
-      line += "%4d" % self.indices[name]
-      col  += 1
-      comma = ","
-      if col == 14:
-        col   = 0
-        comma = ",\n    "
-
-    write( line + "\n  };\n\n\n" )
-
-
-# We now store the Adobe Glyph List in compressed form.  The list is put
-# into a data structure called `trie' (because it has a tree-like
-# appearance).  Consider, for example, that you want to store the
-# following name mapping:
-#
-#   A        => 1
-#   Aacute   => 6
-#   Abalon   => 2
-#   Abstract => 4
-#
-# It is possible to store the entries as follows.
-#
-#   A => 1
-#   |
-#   +-acute => 6
-#   |
-#   +-b
-#     |
-#     +-alon => 2
-#     |
-#     +-stract => 4
-#
-# We see that each node in the trie has:
-#
-# - one or more `letters'
-# - an optional value
-# - zero or more child nodes
-#
-# The first step is to call
-#
-#   root = StringNode( "", 0 )
-#   for word in map.values():
-#     root.add( word, map[word] )
-#
-# which creates a large trie where each node has only one children.
-#
-# Executing
-#
-#   root = root.optimize()
-#
-# optimizes the trie by merging the letters of successive nodes whenever
-# possible.
-#
-# Each node of the trie is stored as follows.
-#
-# - First the node's letter, according to the following scheme.  We
-#   use the fact that in the AGL no name contains character codes > 127.
-#
-#     name         bitsize     description
-#     ----------------------------------------------------------------
-#     notlast            1     Set to 1 if this is not the last letter
-#                              in the word.
-#     ascii              7     The letter's ASCII value.
-#
-# - The letter is followed by a children count and the value of the
-#   current key (if any).  Again we can do some optimization because all
-#   AGL entries are from the BMP; this means that 16 bits are sufficient
-#   to store its Unicode values.  Additionally, no node has more than
-#   127 children.
-#
-#     name         bitsize     description
-#     -----------------------------------------
-#     hasvalue           1     Set to 1 if a 16-bit Unicode value follows.
-#     num_children       7     Number of children.  Can be 0 only if
-#                              `hasvalue' is set to 1.
-#     value             16     Optional Unicode value.
-#
-# - A node is finished by a list of 16bit absolute offsets to the
-#   children, which must be sorted in increasing order of their first
-#   letter.
-#
-# For simplicity, all 16bit quantities are stored in big-endian order.
-#
-# The root node has first letter = 0, and no value.
-#
-class StringNode:
-  def __init__( self, letter, value ):
-    self.letter   = letter
-    self.value    = value
-    self.children = {}
-
-  def __cmp__( self, other ):
-    return ord( self.letter[0] ) - ord( other.letter[0] )
-
-  def add( self, word, value ):
-    if len( word ) == 0:
-      self.value = value
-      return
-
-    letter = word[0]
-    word   = word[1:]
-
-    if self.children.has_key( letter ):
-      child = self.children[letter]
-    else:
-      child = StringNode( letter, 0 )
-      self.children[letter] = child
-
-    child.add( word, value )
-
-  def optimize( self ):
-    # optimize all children first
-    children      = self.children.values()
-    self.children = {}
-
-    for child in children:
-      self.children[child.letter[0]] = child.optimize()
-
-    # don't optimize if there's a value,
-    # if we don't have any child or if we
-    # have more than one child
-    if ( self.value != 0 ) or ( not children ) or len( children ) > 1:
-      return self
-
-    child = children[0]
-
-    self.letter  += child.letter
-    self.value    = child.value
-    self.children = child.children
-
-    return self
-
-  def dump_debug( self, write, margin ):
-    # this is used during debugging
-    line = margin + "+-"
-    if len( self.letter ) == 0:
-      line += "<NOLETTER>"
-    else:
-      line += self.letter
-
-    if self.value:
-      line += " => " + repr( self.value )
-
-    write( line + "\n" )
-
-    if self.children:
-      margin += "| "
-      for child in self.children.values():
-        child.dump_debug( write, margin )
-
-  def locate( self, index ):
-    self.index = index
-    if len( self.letter ) > 0:
-      index += len( self.letter ) + 1
-    else:
-      index += 2
-
-    if self.value != 0:
-      index += 2
-
-    children = self.children.values()
-    children.sort()
-
-    index += 2 * len( children )
-    for child in children:
-      index = child.locate( index )
-
-    return index
-
-  def store( self, storage ):
-    # write the letters
-    l = len( self.letter )
-    if l == 0:
-      storage += struct.pack( "B", 0 )
-    else:
-      for n in range( l ):
-        val = ord( self.letter[n] )
-        if n < l - 1:
-          val += 128
-        storage += struct.pack( "B", val )
-
-    # write the count
-    children = self.children.values()
-    children.sort()
-
-    count = len( children )
-
-    if self.value != 0:
-      storage += struct.pack( "!BH", count + 128, self.value )
-    else:
-      storage += struct.pack( "B", count )
-
-    for child in children:
-      storage += struct.pack( "!H", child.index )
-
-    for child in children:
-      storage = child.store( storage )
-
-    return storage
-
-
-def adobe_glyph_values():
-  """return the list of glyph names and their unicode values"""
-
-  lines  = string.split( adobe_glyph_list, '\n' )
-  glyphs = []
-  values = []
-
-  for line in lines:
-    if line:
-      fields = string.split( line, ';' )
-#     print fields[1] + ' - ' + fields[0]
-      subfields = string.split( fields[1], ' ' )
-      if len( subfields ) == 1:
-        glyphs.append( fields[0] )
-        values.append( fields[1] )
-
-  return glyphs, values
-
-
-def filter_glyph_names( alist, filter ):
-  """filter `alist' by taking _out_ all glyph names that are in `filter'"""
-
-  count  = 0
-  extras = []
-
-  for name in alist:
-    try:
-      filtered_index = filter.index( name )
-    except:
-      extras.append( name )
-
-  return extras
-
-
-def dump_encoding( file, encoding_name, encoding_list ):
-  """dump a given encoding"""
-
-  write = file.write
-  write( "  /* the following are indices into the SID name table */\n" )
-  write( "  static const unsigned short  " + encoding_name +
-         "[" + repr( len( encoding_list ) ) + "] =\n" )
-  write( "  {\n" )
-
-  line  = "    "
-  comma = ""
-  col   = 0
-  for value in encoding_list:
-    line += comma
-    line += "%3d" % value
-    comma = ","
-    col  += 1
-    if col == 16:
-      col = 0
-      comma = ",\n    "
-
-  write( line + "\n  };\n\n\n" )
-
-
-def dump_array( the_array, write, array_name ):
-  """dumps a given encoding"""
-
-  write( "  static const unsigned char  " + array_name +
-         "[" + repr( len( the_array ) ) + "L] =\n" )
-  write( "  {\n" )
-
-  line  = ""
-  comma = "    "
-  col   = 0
-
-  for value in the_array:
-    line += comma
-    line += "%3d" % ord( value )
-    comma = ","
-    col  += 1
-
-    if col == 16:
-      col   = 0
-      comma = ",\n    "
-
-    if len( line ) > 1024:
-      write( line )
-      line = ""
-
-  write( line + "\n  };\n\n\n" )
-
-
-def main():
-  """main program body"""
-
-  if len( sys.argv ) != 2:
-    print __doc__ % sys.argv[0]
-    sys.exit( 1 )
-
-  file  = open( sys.argv[1], "w\n" )
-  write = file.write
-
-  count_sid = len( sid_standard_names )
-
-  # `mac_extras' contains the list of glyph names in the Macintosh standard
-  # encoding which are not in the SID Standard Names.
-  #
-  mac_extras = filter_glyph_names( mac_standard_names, sid_standard_names )
-
-  # `base_list' contains the names of our final glyph names table.
-  # It consists of the `mac_extras' glyph names, followed by the SID
-  # standard names.
-  #
-  mac_extras_count = len( mac_extras )
-  base_list        = mac_extras + sid_standard_names
-
-  write( "/***************************************************************************/\n" )
-  write( "/*                                                                         */\n" )
-
-  write( "/*  %-71s*/\n" % os.path.basename( sys.argv[1] ) )
-
-  write( "/*                                                                         */\n" )
-  write( "/*    PostScript glyph names.                                              */\n" )
-  write( "/*                                                                         */\n" )
-  write( "/*  Copyright 2005, 2008, 2011 by                                          */\n" )
-  write( "/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */\n" )
-  write( "/*                                                                         */\n" )
-  write( "/*  This file is part of the FreeType project, and may only be used,       */\n" )
-  write( "/*  modified, and distributed under the terms of the FreeType project      */\n" )
-  write( "/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */\n" )
-  write( "/*  this file you indicate that you have read the license and              */\n" )
-  write( "/*  understand and accept it fully.                                        */\n" )
-  write( "/*                                                                         */\n" )
-  write( "/***************************************************************************/\n" )
-  write( "\n" )
-  write( "\n" )
-  write( "  /* This file has been generated automatically -- do not edit! */\n" )
-  write( "\n" )
-  write( "\n" )
-
-  # dump final glyph list (mac extras + sid standard names)
-  #
-  st = StringTable( base_list, "ft_standard_glyph_names" )
-
-  st.dump( file )
-  st.dump_sublist( file, "ft_mac_names",
-                   "FT_NUM_MAC_NAMES", mac_standard_names )
-  st.dump_sublist( file, "ft_sid_names",
-                   "FT_NUM_SID_NAMES", sid_standard_names )
-
-  dump_encoding( file, "t1_standard_encoding", t1_standard_encoding )
-  dump_encoding( file, "t1_expert_encoding", t1_expert_encoding )
-
-  # dump the AGL in its compressed form
-  #
-  agl_glyphs, agl_values = adobe_glyph_values()
-  dict = StringNode( "", 0 )
-
-  for g in range( len( agl_glyphs ) ):
-    dict.add( agl_glyphs[g], eval( "0x" + agl_values[g] ) )
-
-  dict       = dict.optimize()
-  dict_len   = dict.locate( 0 )
-  dict_array = dict.store( "" )
-
-  write( """\
-  /*
-   *  This table is a compressed version of the Adobe Glyph List (AGL),
-   *  optimized for efficient searching.  It has been generated by the
-   *  `glnames.py' python script located in the `src/tools' directory.
-   *
-   *  The lookup function to get the Unicode value for a given string
-   *  is defined below the table.
-   */
-
-#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
-""" )
-
-  dump_array( dict_array, write, "ft_adobe_glyph_list" )
-
-  # write the lookup routine now
-  #
-  write( """\
-  /*
-   *  This function searches the compressed table efficiently.
-   */
-  static unsigned long
-  ft_get_adobe_glyph_index( const char*  name,
-                            const char*  limit )
-  {
-    int                   c = 0;
-    int                   count, min, max;
-    const unsigned char*  p = ft_adobe_glyph_list;
-
-
-    if ( name == 0 || name >= limit )
-      goto NotFound;
-
-    c     = *name++;
-    count = p[1];
-    p    += 2;
-
-    min = 0;
-    max = count;
-
-    while ( min < max )
-    {
-      int                   mid = ( min + max ) >> 1;
-      const unsigned char*  q   = p + mid * 2;
-      int                   c2;
-
-
-      q = ft_adobe_glyph_list + ( ( (int)q[0] << 8 ) | q[1] );
-
-      c2 = q[0] & 127;
-      if ( c2 == c )
-      {
-        p = q;
-        goto Found;
-      }
-      if ( c2 < c )
-        min = mid + 1;
-      else
-        max = mid;
-    }
-    goto NotFound;
-
-  Found:
-    for (;;)
-    {
-      /* assert (*p & 127) == c */
-
-      if ( name >= limit )
-      {
-        if ( (p[0] & 128) == 0 &&
-             (p[1] & 128) != 0 )
-          return (unsigned long)( ( (int)p[2] << 8 ) | p[3] );
-
-        goto NotFound;
-      }
-      c = *name++;
-      if ( p[0] & 128 )
-      {
-        p++;
-        if ( c != (p[0] & 127) )
-          goto NotFound;
-
-        continue;
-      }
-
-      p++;
-      count = p[0] & 127;
-      if ( p[0] & 128 )
-        p += 2;
-
-      p++;
-
-      for ( ; count > 0; count--, p += 2 )
-      {
-        int                   offset = ( (int)p[0] << 8 ) | p[1];
-        const unsigned char*  q      = ft_adobe_glyph_list + offset;
-
-        if ( c == ( q[0] & 127 ) )
-        {
-          p = q;
-          goto NextIter;
-        }
-      }
-      goto NotFound;
-
-    NextIter:
-      ;
-    }
-
-  NotFound:
-    return 0;
-  }
-
-#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
-
-""" )
-
-  if 0:  # generate unit test, or don't
-    #
-    # now write the unit test to check that everything works OK
-    #
-    write( "#ifdef TEST\n\n" )
-
-    write( "static const char* const  the_names[] = {\n" )
-    for name in agl_glyphs:
-      write( '  "' + name + '",\n' )
-    write( "  0\n};\n" )
-
-    write( "static const unsigned long  the_values[] = {\n" )
-    for val in agl_values:
-      write( '  0x' + val + ',\n' )
-    write( "  0\n};\n" )
-
-    write( """
-#include <stdlib.h>
-#include <stdio.h>
-
-  int
-  main( void )
-  {
-    int                   result = 0;
-    const char* const*    names  = the_names;
-    const unsigned long*  values = the_values;
-
-
-    for ( ; *names; names++, values++ )
-    {
-      const char*    name      = *names;
-      unsigned long  reference = *values;
-      unsigned long  value;
-
-
-      value = ft_get_adobe_glyph_index( name, name + strlen( name ) );
-      if ( value != reference )
-      {
-        result = 1;
-        fprintf( stderr, "name '%s' => %04x instead of %04x\\n",
-                         name, value, reference );
-      }
-    }
-
-    return result;
-  }
-""" )
-
-    write( "#endif /* TEST */\n" )
-
-  write("\n/* END */\n")
-
-
-# Now run the main routine
-#
-main()
-
-
-# END

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott