From 38be0d13830efd2d98281c645c3a60afe05ffece Mon Sep 17 00:00:00 2001 From: Qt by Nokia Date: Wed, 27 Apr 2011 12:05:43 +0200 Subject: Initial import from the monolithic Qt. This is the beginning of revision history for this module. If you want to look at revision history older than this, please refer to the Qt Git wiki for how to use Git history grafting. At the time of writing, this wiki is located here: http://qt.gitorious.org/qt/pages/GitIntroductionWithQt If you have already performed the grafting and you don't see any history beyond this commit, try running "git log" with the "--follow" argument. Branched from the monolithic repo, Qt master branch, at commit 896db169ea224deb96c59ce8af800d019de63f12 --- src/3rdparty/freetype/docs/CHANGES | 3317 +++++++++++++++++++ src/3rdparty/freetype/docs/CUSTOMIZE | 150 + src/3rdparty/freetype/docs/DEBUG | 199 ++ src/3rdparty/freetype/docs/FTL.TXT | 169 + src/3rdparty/freetype/docs/GPL.TXT | 340 ++ src/3rdparty/freetype/docs/INSTALL | 91 + src/3rdparty/freetype/docs/INSTALL.ANY | 151 + src/3rdparty/freetype/docs/INSTALL.CROSS | 135 + src/3rdparty/freetype/docs/INSTALL.GNU | 159 + src/3rdparty/freetype/docs/INSTALL.MAC | 32 + src/3rdparty/freetype/docs/INSTALL.UNIX | 96 + src/3rdparty/freetype/docs/INSTALL.VMS | 62 + src/3rdparty/freetype/docs/LICENSE.TXT | 28 + src/3rdparty/freetype/docs/MAKEPP | 5 + src/3rdparty/freetype/docs/PATENTS | 27 + src/3rdparty/freetype/docs/PROBLEMS | 77 + src/3rdparty/freetype/docs/TODO | 40 + src/3rdparty/freetype/docs/TRUETYPE | 40 + src/3rdparty/freetype/docs/UPGRADE.UNIX | 137 + src/3rdparty/freetype/docs/VERSION.DLL | 135 + src/3rdparty/freetype/docs/formats.txt | 164 + src/3rdparty/freetype/docs/raster.txt | 635 ++++ src/3rdparty/freetype/docs/reference/README | 5 + .../docs/reference/ft2-base_interface.html | 3409 ++++++++++++++++++++ .../freetype/docs/reference/ft2-basic_types.html | 948 ++++++ .../freetype/docs/reference/ft2-bdf_fonts.html | 252 ++ .../docs/reference/ft2-bitmap_handling.html | 302 ++ .../docs/reference/ft2-cache_subsystem.html | 1098 +++++++ .../freetype/docs/reference/ft2-cid_fonts.html | 204 ++ .../freetype/docs/reference/ft2-computations.html | 792 +++++ .../freetype/docs/reference/ft2-font_formats.html | 83 + .../freetype/docs/reference/ft2-gasp_table.html | 141 + .../docs/reference/ft2-glyph_management.html | 648 ++++ .../freetype/docs/reference/ft2-glyph_stroker.html | 920 ++++++ .../docs/reference/ft2-glyph_variants.html | 267 ++ .../freetype/docs/reference/ft2-gx_validation.html | 348 ++ src/3rdparty/freetype/docs/reference/ft2-gzip.html | 94 + .../docs/reference/ft2-header_file_macros.html | 626 ++++ .../freetype/docs/reference/ft2-incremental.html | 365 +++ .../freetype/docs/reference/ft2-index.html | 290 ++ .../freetype/docs/reference/ft2-lcd_filtering.html | 149 + .../docs/reference/ft2-list_processing.html | 467 +++ src/3rdparty/freetype/docs/reference/ft2-lzw.html | 94 + .../freetype/docs/reference/ft2-mac_specific.html | 368 +++ .../docs/reference/ft2-module_management.html | 626 ++++ .../docs/reference/ft2-multiple_masters.html | 511 +++ .../freetype/docs/reference/ft2-ot_validation.html | 208 ++ .../docs/reference/ft2-outline_processing.html | 1106 +++++++ .../freetype/docs/reference/ft2-pfr_fonts.html | 206 ++ .../freetype/docs/reference/ft2-quick_advance.html | 177 + .../freetype/docs/reference/ft2-raster.html | 598 ++++ .../freetype/docs/reference/ft2-sfnt_names.html | 190 ++ .../docs/reference/ft2-sizes_management.html | 164 + .../docs/reference/ft2-system_interface.html | 399 +++ src/3rdparty/freetype/docs/reference/ft2-toc.html | 215 ++ .../docs/reference/ft2-truetype_engine.html | 132 + .../docs/reference/ft2-truetype_tables.html | 1209 +++++++ .../freetype/docs/reference/ft2-type1_tables.html | 466 +++ .../docs/reference/ft2-user_allocation.html | 47 + .../freetype/docs/reference/ft2-version.html | 213 ++ .../freetype/docs/reference/ft2-winfnt_fonts.html | 270 ++ src/3rdparty/freetype/docs/release | 166 + 62 files changed, 24962 insertions(+) create mode 100644 src/3rdparty/freetype/docs/CHANGES create mode 100644 src/3rdparty/freetype/docs/CUSTOMIZE create mode 100644 src/3rdparty/freetype/docs/DEBUG create mode 100644 src/3rdparty/freetype/docs/FTL.TXT create mode 100644 src/3rdparty/freetype/docs/GPL.TXT create mode 100644 src/3rdparty/freetype/docs/INSTALL create mode 100644 src/3rdparty/freetype/docs/INSTALL.ANY create mode 100644 src/3rdparty/freetype/docs/INSTALL.CROSS create mode 100644 src/3rdparty/freetype/docs/INSTALL.GNU create mode 100644 src/3rdparty/freetype/docs/INSTALL.MAC create mode 100644 src/3rdparty/freetype/docs/INSTALL.UNIX create mode 100644 src/3rdparty/freetype/docs/INSTALL.VMS create mode 100644 src/3rdparty/freetype/docs/LICENSE.TXT create mode 100644 src/3rdparty/freetype/docs/MAKEPP create mode 100644 src/3rdparty/freetype/docs/PATENTS create mode 100644 src/3rdparty/freetype/docs/PROBLEMS create mode 100644 src/3rdparty/freetype/docs/TODO create mode 100644 src/3rdparty/freetype/docs/TRUETYPE create mode 100644 src/3rdparty/freetype/docs/UPGRADE.UNIX create mode 100644 src/3rdparty/freetype/docs/VERSION.DLL create mode 100644 src/3rdparty/freetype/docs/formats.txt create mode 100644 src/3rdparty/freetype/docs/raster.txt create mode 100644 src/3rdparty/freetype/docs/reference/README create mode 100644 src/3rdparty/freetype/docs/reference/ft2-base_interface.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-basic_types.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-computations.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-font_formats.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-gasp_table.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-glyph_management.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-gx_validation.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-gzip.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-incremental.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-index.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-list_processing.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-lzw.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-mac_specific.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-module_management.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-ot_validation.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-outline_processing.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-quick_advance.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-raster.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-sizes_management.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-system_interface.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-toc.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-type1_tables.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-user_allocation.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-version.html create mode 100644 src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html create mode 100644 src/3rdparty/freetype/docs/release (limited to 'src/3rdparty/freetype/docs') diff --git a/src/3rdparty/freetype/docs/CHANGES b/src/3rdparty/freetype/docs/CHANGES new file mode 100644 index 0000000000..9eb68c2924 --- /dev/null +++ b/src/3rdparty/freetype/docs/CHANGES @@ -0,0 +1,3317 @@ +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 + #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= + 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 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__ 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__ 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 + 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 + , 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 + ) 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 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 + #include + #include + #include + + Now you should use: + + #include + #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 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 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 and not + part of anymore. + * 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 + 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. + * now include , + 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 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 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 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 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 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: + + + - simple FreeType types, without the API + + - definition of memory-management macros + + - added the `DSIG' (OpenType Digital Signature) tag to + + + - 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 + , as it was missing from the public header + (the implementation was already in `ftobjs.c'). + + - the file 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 + #include + + 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 + #include + + 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/ 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/'. + + - 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_' 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//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//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 --- diff --git a/src/3rdparty/freetype/docs/CUSTOMIZE b/src/3rdparty/freetype/docs/CUSTOMIZE new file mode 100644 index 0000000000..7d7d474ec0 --- /dev/null +++ b/src/3rdparty/freetype/docs/CUSTOMIZE @@ -0,0 +1,150 @@ +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 + export FTSYS_SRC=foo/my_ftsystem.c + make + make install + + on Windows: + + make setup + 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 `/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 + and , 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 + #define FT_CONFIG_MODULES_H + + #include + + #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 --- diff --git a/src/3rdparty/freetype/docs/DEBUG b/src/3rdparty/freetype/docs/DEBUG new file mode 100644 index 0000000000..1fccc21c46 --- /dev/null +++ b/src/3rdparty/freetype/docs/DEBUG @@ -0,0 +1,199 @@ +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'. + + 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 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 --- diff --git a/src/3rdparty/freetype/docs/FTL.TXT b/src/3rdparty/freetype/docs/FTL.TXT new file mode 100644 index 0000000000..bbaba33f47 --- /dev/null +++ b/src/3rdparty/freetype/docs/FTL.TXT @@ -0,0 +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 © The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace 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 freetype@nongnu.org + + 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 freetype-devel@nongnu.org + + 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 --- diff --git a/src/3rdparty/freetype/docs/GPL.TXT b/src/3rdparty/freetype/docs/GPL.TXT new file mode 100644 index 0000000000..b2fe7b6af3 --- /dev/null +++ b/src/3rdparty/freetype/docs/GPL.TXT @@ -0,0 +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. + + + Copyright (C) + + 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. + + , 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. diff --git a/src/3rdparty/freetype/docs/INSTALL b/src/3rdparty/freetype/docs/INSTALL new file mode 100644 index 0000000000..de50d0c2e4 --- /dev/null +++ b/src/3rdparty/freetype/docs/INSTALL @@ -0,0 +1,91 @@ + +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/' + directory, where 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 --- diff --git a/src/3rdparty/freetype/docs/INSTALL.ANY b/src/3rdparty/freetype/docs/INSTALL.ANY new file mode 100644 index 0000000000..86e94d585f --- /dev/null +++ b/src/3rdparty/freetype/docs/INSTALL.ANY @@ -0,0 +1,151 @@ +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 + src/base/ftglyph.c -- recommended, see + + src/base/ftbdf.c -- optional, see + src/base/ftbitmap.c -- optional, see + src/base/ftcid.c -- optional, see + src/base/ftfstype.c -- optional + src/base/ftgasp.c -- optional, see + src/base/ftgxval.c -- optional, see + src/base/ftlcdfil.c -- optional, see + src/base/ftmm.c -- optional, see + src/base/ftotval.c -- optional, see + src/base/ftpatent.c -- optional + src/base/ftpfr.c -- optional, see + src/base/ftstroke.c -- optional, see + src/base/ftsynth.c -- optional, see + src/base/fttype1.c -- optional, see + src/base/ftwinfnt.c -- optional, see + src/base/ftxf86.c -- optional, see + + 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 ftsystem.c + cc -c -Ifreetype2/include ftinit.c + cc -c -Ifreetype2/include ftdebug.c + cc -c -Ifreetype2/include 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 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 --- diff --git a/src/3rdparty/freetype/docs/INSTALL.CROSS b/src/3rdparty/freetype/docs/INSTALL.CROSS new file mode 100644 index 0000000000..3def12c8c5 --- /dev/null +++ b/src/3rdparty/freetype/docs/INSTALL.CROSS @@ -0,0 +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=' and + `--build=' 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=' 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=' 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//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 --- diff --git a/src/3rdparty/freetype/docs/INSTALL.GNU b/src/3rdparty/freetype/docs/INSTALL.GNU new file mode 100644 index 0000000000..72df50a4ea --- /dev/null +++ b/src/3rdparty/freetype/docs/INSTALL.GNU @@ -0,0 +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 + + 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 name to use is platform-dependent. The list of + available compilers for your system is available in the file + `builds//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 + `/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 --- diff --git a/src/3rdparty/freetype/docs/INSTALL.MAC b/src/3rdparty/freetype/docs/INSTALL.MAC new file mode 100644 index 0000000000..42bb0d8637 --- /dev/null +++ b/src/3rdparty/freetype/docs/INSTALL.MAC @@ -0,0 +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. diff --git a/src/3rdparty/freetype/docs/INSTALL.UNIX b/src/3rdparty/freetype/docs/INSTALL.UNIX new file mode 100644 index 0000000000..1d5af993f8 --- /dev/null +++ b/src/3rdparty/freetype/docs/INSTALL.UNIX @@ -0,0 +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 + Copyright (C) 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=' 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 --- diff --git a/src/3rdparty/freetype/docs/INSTALL.VMS b/src/3rdparty/freetype/docs/INSTALL.VMS new file mode 100644 index 0000000000..994e566883 --- /dev/null +++ b/src/3rdparty/freetype/docs/INSTALL.VMS @@ -0,0 +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= + Options to pass to the link command e.g. lopts=/traceback + +ccopt= + 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 or + Martin P.J. Zinser + +------------------------------------------------------------------------ + +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 --- diff --git a/src/3rdparty/freetype/docs/LICENSE.TXT b/src/3rdparty/freetype/docs/LICENSE.TXT new file mode 100644 index 0000000000..102a03d651 --- /dev/null +++ b/src/3rdparty/freetype/docs/LICENSE.TXT @@ -0,0 +1,28 @@ + +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 PCF driver comes with a license similar to that of the X +Window System. It is compatible to the above two licenses (see file +src/pcf/readme). + + +--- end of LICENSE.TXT --- diff --git a/src/3rdparty/freetype/docs/MAKEPP b/src/3rdparty/freetype/docs/MAKEPP new file mode 100644 index 0000000000..58eaf551df --- /dev/null +++ b/src/3rdparty/freetype/docs/MAKEPP @@ -0,0 +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. diff --git a/src/3rdparty/freetype/docs/PATENTS b/src/3rdparty/freetype/docs/PATENTS new file mode 100644 index 0000000000..f36778b5e9 --- /dev/null +++ b/src/3rdparty/freetype/docs/PATENTS @@ -0,0 +1,27 @@ + + 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 --- diff --git a/src/3rdparty/freetype/docs/PROBLEMS b/src/3rdparty/freetype/docs/PROBLEMS new file mode 100644 index 0000000000..9b598966a0 --- /dev/null +++ b/src/3rdparty/freetype/docs/PROBLEMS @@ -0,0 +1,77 @@ +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 --- diff --git a/src/3rdparty/freetype/docs/TODO b/src/3rdparty/freetype/docs/TODO new file mode 100644 index 0000000000..be60d6f040 --- /dev/null +++ b/src/3rdparty/freetype/docs/TODO @@ -0,0 +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 --- diff --git a/src/3rdparty/freetype/docs/TRUETYPE b/src/3rdparty/freetype/docs/TRUETYPE new file mode 100644 index 0000000000..3e1614ad43 --- /dev/null +++ b/src/3rdparty/freetype/docs/TRUETYPE @@ -0,0 +1,40 @@ +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 --- diff --git a/src/3rdparty/freetype/docs/UPGRADE.UNIX b/src/3rdparty/freetype/docs/UPGRADE.UNIX new file mode 100644 index 0000000000..48c746d703 --- /dev/null +++ b/src/3rdparty/freetype/docs/UPGRADE.UNIX @@ -0,0 +1,137 @@ + +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= + make + make install (as root) + + where `' 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= + 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 --- diff --git a/src/3rdparty/freetype/docs/VERSION.DLL b/src/3rdparty/freetype/docs/VERSION.DLL new file mode 100644 index 0000000000..6b028b12f9 --- /dev/null +++ b/src/3rdparty/freetype/docs/VERSION.DLL @@ -0,0 +1,135 @@ +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.0.9 or 2.1.3. + + * The libtool (and Unix) specific version number, like 9.2.3. 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.3.2'. + +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. Unfortunately, this one wasn't available or +working correctly before the 2.1.3 official release. + + +2. History +---------- + +The following table gives, for each official release, the corresponding +libtool number, as well as the shared object number found on _most_ +systems, but not all of them: + + + release libtool so + ------------------------------- + 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 + 2.2.1 9.10.3 6.3.10 + 2.2.0 9.9.3 6.3.9 + 2.1.10 9.8.3 6.3.8 + 2.1.9 9.7.3 6.3.7 + 2.1.8 9.6.3 6.3.6 + 2.1.7 9.5.3 6.3.5 + 2.1.6 9.5.3 6.3.5 + 2.1.5 9.4.3 6.3.4 + 2.1.4 9.3.3 6.3.3 + 2.1.3 9.2.3 6.3.2 + 2.1.2 9.1.3 6.3.1 + 2.1.1 9.0.3 ? + 2.1.0 8.0.2 ? + 2.0.9 9.0.3 ? + 2.0.8 8.0.2 ? + 2.0.4 7.0.1 ? + 2.0.1 6.1.0 ? + +The libtool numbers are a bit inconsistent due to the library's history: + + - 2.1.0 was created as a development branch from 2.0.8 (hence the same + libtool numbers). + + - 2.0.9 was a bug-fix release of the `stable' branch, and we + incorrectly increased its libtool number. + + - 2.1.4 was a development version, however it was stable enough to be + the basis of the 2.2.0 release. + + +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 +#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, 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. + + +--- end of VERSION.DLL --- diff --git a/src/3rdparty/freetype/docs/formats.txt b/src/3rdparty/freetype/docs/formats.txt new file mode 100644 index 0000000000..571f5ff502 --- /dev/null +++ b/src/3rdparty/freetype/docs/formats.txt @@ -0,0 +1,164 @@ +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 wl@gnu.org or to the +FreeType developer's list at freetype-devel@nongnu.org (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 --- diff --git a/src/3rdparty/freetype/docs/raster.txt b/src/3rdparty/freetype/docs/raster.txt new file mode 100644 index 0000000000..95d9e24010 --- /dev/null +++ b/src/3rdparty/freetype/docs/raster.txt @@ -0,0 +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: diff --git a/src/3rdparty/freetype/docs/reference/README b/src/3rdparty/freetype/docs/reference/README new file mode 100644 index 0000000000..51b04d6f15 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/README @@ -0,0 +1,5 @@ +After saying `make refdoc' this directory contains the FreeType API +reference. You need python to make this target. + +This also works with Jam: Just type `jam refdoc' in the main directory. + diff --git a/src/3rdparty/freetype/docs/reference/ft2-base_interface.html b/src/3rdparty/freetype/docs/reference/ft2-base_interface.html new file mode 100644 index 0000000000..27f454b675 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-base_interface.html @@ -0,0 +1,3409 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Base Interface +

+

Synopsis

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FT_LibraryFT_IS_TRICKYFT_LOAD_XXX
FT_FaceFT_STYLE_FLAG_XXXFT_LOAD_TARGET_XXX
FT_SizeFT_Size_InternalFT_LOAD_TARGET_MODE
FT_GlyphSlotFT_Size_MetricsFT_Set_Transform
FT_CharMapFT_SizeRecFT_Render_Mode
FT_EncodingFT_SubGlyphft_render_mode_xxx
FT_Glyph_MetricsFT_Slot_InternalFT_Render_Glyph
FT_Bitmap_SizeFT_GlyphSlotRecFT_Kerning_Mode
FT_ModuleFT_Init_FreeTypeft_kerning_default
FT_DriverFT_Done_FreeTypeft_kerning_unfitted
FT_RendererFT_OPEN_XXXft_kerning_unscaled
FT_ENC_TAGFT_ParameterFT_Get_Kerning
ft_encoding_xxxFT_Open_ArgsFT_Get_Track_Kerning
FT_CharMapRecFT_New_FaceFT_Get_Glyph_Name
FT_Face_InternalFT_New_Memory_FaceFT_Get_Postscript_Name
FT_FaceRecFT_Open_FaceFT_Select_Charmap
FT_FACE_FLAG_XXXFT_Attach_FileFT_Set_Charmap
FT_HAS_HORIZONTALFT_Attach_StreamFT_Get_Charmap_Index
FT_HAS_VERTICALFT_Done_FaceFT_Get_Char_Index
FT_HAS_KERNINGFT_Select_SizeFT_Get_First_Char
FT_IS_SCALABLEFT_Size_Request_TypeFT_Get_Next_Char
FT_IS_SFNTFT_Size_RequestRecFT_Get_Name_Index
FT_IS_FIXED_WIDTHFT_Size_RequestFT_SUBGLYPH_FLAG_XXX
FT_HAS_FIXED_SIZESFT_Request_SizeFT_Get_SubGlyph_Info
FT_HAS_FAST_GLYPHSFT_Set_Char_SizeFT_FSTYPE_XXX
FT_HAS_GLYPH_NAMESFT_Set_Pixel_SizesFT_Get_FSType_Flags
FT_HAS_MULTIPLE_MASTERSFT_Load_Glyph
FT_IS_CID_KEYEDFT_Load_Char


+ +
+

This section describes the public high-level API of FreeType 2.

+

+
+

FT_Library

+
+

A handle to a FreeType library instance. Each ‘library’ is completely independent from the others; it is the ‘root’ of a set of objects like fonts, faces, sizes, etc.

+

It also embeds a memory manager (see FT_Memory), as well as a scan-line converter object (see FT_Raster).

+

For multi-threading applications each thread should have its own FT_Library object.

+

+
note
+

Library objects are normally created by FT_Init_FreeType, and destroyed with FT_Done_FreeType.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face

+
+

A handle to a given typographic face object. A face object models a given typeface, in a given style.

+

+
note
+

Each face object also owns a single FT_GlyphSlot object, as well as one or more FT_Size objects.

+

Use FT_New_Face or FT_Open_Face to create a new face object from a given filepathname or a custom input stream.

+

Use FT_Done_Face to destroy it (along with its slot and sizes).

+
+
also
+

See FT_FaceRec for the publicly accessible fields of a given face object.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Size

+
+

A handle to an object used to model a face scaled to a given character size.

+

+
note
+

Each FT_Face has an active FT_Size object that is used by functions like FT_Load_Glyph to determine the scaling transformation which is used to load and hint glyphs and metrics.

+

You can use FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Request_Size or even FT_Select_Size to change the content (i.e., the scaling values) of the active FT_Size.

+

You can use FT_New_Size to create additional size objects for a given FT_Face, but they won't be used by other functions until you activate it through FT_Activate_Size. Only one size can be activated at any given time per face.

+
+
also
+

See FT_SizeRec for the publicly accessible fields of a given size object.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_GlyphSlot

+
+

A handle to a given ‘glyph slot’. A slot is a container where it is possible to load any of the glyphs contained in its parent face.

+

In other words, each time you call FT_Load_Glyph or FT_Load_Char, the slot's content is erased by the new glyph data, i.e., the glyph's metrics, its image (bitmap or outline), and other control information.

+

+
also
+

See FT_GlyphSlotRec for the publicly accessible glyph fields.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_CharMap

+
+

A handle to a given character map. A charmap is used to translate character codes in a given encoding into glyph indexes for its parent's face. Some font formats may provide several charmaps per font.

+

Each face object owns zero or more charmaps, but only one of them can be ‘active’ and used by FT_Get_Char_Index or FT_Load_Char.

+

The list of available charmaps in a face is available through the ‘face->num_charmaps’ and ‘face->charmaps’ fields of FT_FaceRec.

+

The currently active charmap is available as ‘face->charmap’. You should call FT_Set_Charmap to change it.

+

+
note
+

When a new face is created (either through FT_New_Face or FT_Open_Face), the library looks for a Unicode charmap within the list and automatically activates it.

+
+
also
+

See FT_CharMapRec for the publicly accessible fields of a given character map.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Encoding

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef enum  FT_Encoding_
+  {
+    FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ),
+
+    FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ),
+    FT_ENC_TAG( FT_ENCODING_UNICODE,   'u', 'n', 'i', 'c' ),
+
+    FT_ENC_TAG( FT_ENCODING_SJIS,    's', 'j', 'i', 's' ),
+    FT_ENC_TAG( FT_ENCODING_GB2312,  'g', 'b', ' ', ' ' ),
+    FT_ENC_TAG( FT_ENCODING_BIG5,    'b', 'i', 'g', '5' ),
+    FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ),
+    FT_ENC_TAG( FT_ENCODING_JOHAB,   'j', 'o', 'h', 'a' ),
+
+    /* for backwards compatibility */
+    FT_ENCODING_MS_SJIS    = FT_ENCODING_SJIS,
+    FT_ENCODING_MS_GB2312  = FT_ENCODING_GB2312,
+    FT_ENCODING_MS_BIG5    = FT_ENCODING_BIG5,
+    FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG,
+    FT_ENCODING_MS_JOHAB   = FT_ENCODING_JOHAB,
+
+    FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ),
+    FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT,   'A', 'D', 'B', 'E' ),
+    FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM,   'A', 'D', 'B', 'C' ),
+    FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1,  'l', 'a', 't', '1' ),
+
+    FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ),
+
+    FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' )
+
+  } FT_Encoding;
+
+

+
+

An enumeration used to specify character sets supported by charmaps. Used in the FT_Select_Charmap API function.

+

+
note
+

Despite the name, this enumeration lists specific character repertories (i.e., charsets), and not text encoding methods (e.g., UTF-8, UTF-16, GB2312_EUC, etc.).

+

Because of 32-bit charcodes defined in Unicode (i.e., surrogates), all character codes must be expressed as FT_Longs.

+

Other encodings might be defined in the future.

+
+
values
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FT_ENCODING_NONE +

The encoding value 0 is reserved.

+
FT_ENCODING_UNICODE +

Corresponds to the Unicode character set. This value covers all versions of the Unicode repertoire, including ASCII and Latin-1. Most fonts include a Unicode charmap, but not all of them.

+
FT_ENCODING_MS_SYMBOL +

Corresponds to the Microsoft Symbol encoding, used to encode mathematical symbols in the 32..255 character code range. For more information, see ‘http://www.ceviz.net/symbol.htm’.

+
FT_ENCODING_SJIS +

Corresponds to Japanese SJIS encoding. More info at at ‘http://langsupport.japanreference.com/encoding.shtml’. See note on multi-byte encodings below.

+
FT_ENCODING_GB2312 +

Corresponds to an encoding system for Simplified Chinese as used used in mainland China.

+
FT_ENCODING_BIG5 +

Corresponds to an encoding system for Traditional Chinese as used in Taiwan and Hong Kong.

+
FT_ENCODING_WANSUNG +

Corresponds to the Korean encoding system known as Wansung. For more information see ‘http://www.microsoft.com/typography/unicode/949.txt’.

+
FT_ENCODING_JOHAB +

The Korean standard character set (KS C 5601-1992), which corresponds to MS Windows code page 1361. This character set includes all possible Hangeul character combinations.

+
FT_ENCODING_ADOBE_LATIN_1
+

Corresponds to a Latin-1 encoding as defined in a Type 1 PostScript font. It is limited to 256 character codes.

+
FT_ENCODING_ADOBE_STANDARD
+

Corresponds to the Adobe Standard encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.

+
FT_ENCODING_ADOBE_EXPERT
+

Corresponds to the Adobe Expert encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.

+
FT_ENCODING_ADOBE_CUSTOM
+

Corresponds to a custom encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.

+
FT_ENCODING_APPLE_ROMAN
+

Corresponds to the 8-bit Apple roman encoding. Many TrueType and OpenType fonts contain a charmap for this encoding, since older versions of Mac OS are able to use it.

+
FT_ENCODING_OLD_LATIN_2
+

This value is deprecated and was never used nor reported by FreeType. Don't use or test for it.

+
FT_ENCODING_MS_SJIS +

Same as FT_ENCODING_SJIS. Deprecated.

+
FT_ENCODING_MS_GB2312 +

Same as FT_ENCODING_GB2312. Deprecated.

+
FT_ENCODING_MS_BIG5 +

Same as FT_ENCODING_BIG5. Deprecated.

+
FT_ENCODING_MS_WANSUNG +

Same as FT_ENCODING_WANSUNG. Deprecated.

+
FT_ENCODING_MS_JOHAB +

Same as FT_ENCODING_JOHAB. Deprecated.

+
+
+
note
+

By default, FreeType automatically synthesizes a Unicode charmap for PostScript fonts, using their glyph names dictionaries. However, it also reports the encodings defined explicitly in the font file, for the cases when they are needed, with the Adobe values as well.

+

FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap is neither Unicode nor ISO-8859-1 (otherwise it is set to FT_ENCODING_UNICODE). Use FT_Get_BDF_Charset_ID to find out which encoding is really present. If, for example, the ‘cs_registry’ field is ‘KOI8’ and the ‘cs_encoding’ field is ‘R’, the font is encoded in KOI8-R.

+

FT_ENCODING_NONE is always set (with a single exception) by the winfonts driver. Use FT_Get_WinFNT_Header and examine the ‘charset’ field of the FT_WinFNT_HeaderRec structure to find out which encoding is really present. For example, FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for Russian).

+

FT_ENCODING_NONE is set if ‘platform_id’ is TT_PLATFORM_MACINTOSH and ‘encoding_id’ is not TT_MAC_ID_ROMAN (otherwise it is set to FT_ENCODING_APPLE_ROMAN).

+

If ‘platform_id’ is TT_PLATFORM_MACINTOSH, use the function FT_Get_CMap_Language_ID to query the Mac language ID which may be needed to be able to distinguish Apple encoding variants. See

+

http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT

+

to get an idea how to do that. Basically, if the language ID is 0, don't use it, otherwise subtract 1 from the language ID. Then examine ‘encoding_id’. If, for example, ‘encoding_id’ is TT_MAC_ID_ROMAN and the language ID (minus 1) is ‘TT_MAC_LANGID_GREEK’, it is the Greek encoding, not Roman. TT_MAC_ID_ARABIC with ‘TT_MAC_LANGID_FARSI’ means the Farsi variant the Arabic encoding.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_Metrics

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_Glyph_Metrics_
+  {
+    FT_Pos  width;
+    FT_Pos  height;
+
+    FT_Pos  horiBearingX;
+    FT_Pos  horiBearingY;
+    FT_Pos  horiAdvance;
+
+    FT_Pos  vertBearingX;
+    FT_Pos  vertBearingY;
+    FT_Pos  vertAdvance;
+
+  } FT_Glyph_Metrics;
+
+

+
+

A structure used to model the metrics of a single glyph. The values are expressed in 26.6 fractional pixel format; if the flag FT_LOAD_NO_SCALE has been used while loading the glyph, values are expressed in font units instead.

+

+
fields
+

+ + + + + + + + + +
width +

The glyph's width.

+
height +

The glyph's height.

+
horiBearingX +

Left side bearing for horizontal layout.

+
horiBearingY +

Top side bearing for horizontal layout.

+
horiAdvance +

Advance width for horizontal layout.

+
vertBearingX +

Left side bearing for vertical layout.

+
vertBearingY +

Top side bearing for vertical layout.

+
vertAdvance +

Advance height for vertical layout.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Bitmap_Size

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_Bitmap_Size_
+  {
+    FT_Short  height;
+    FT_Short  width;
+
+    FT_Pos    size;
+
+    FT_Pos    x_ppem;
+    FT_Pos    y_ppem;
+
+  } FT_Bitmap_Size;
+
+

+
+

This structure models the metrics of a bitmap strike (i.e., a set of glyphs for a given point size and resolution) in a bitmap font. It is used for the ‘available_sizes’ field of FT_Face.

+

+
fields
+

+ + + + + + +
height +

The vertical distance, in pixels, between two consecutive baselines. It is always positive.

+
width +

The average width, in pixels, of all glyphs in the strike.

+
size +

The nominal size of the strike in 26.6 fractional points. This field is not very useful.

+
x_ppem +

The horizontal ppem (nominal width) in 26.6 fractional pixels.

+
y_ppem +

The vertical ppem (nominal height) in 26.6 fractional pixels.

+
+
+
note
+

Windows FNT: The nominal size given in a FNT font is not reliable. Thus when the driver finds it incorrect, it sets ‘size’ to some calculated values and sets ‘x_ppem’ and ‘y_ppem’ to the pixel width and height given in the font, respectively.

+

TrueType embedded bitmaps: ‘size’, ‘width’, and ‘height’ values are not contained in the bitmap strike itself. They are computed from the global font parameters.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Module

+
+

A handle to a given FreeType module object. Each module can be a font driver, a renderer, or anything else that provides services to the formers.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Driver

+
+

A handle to a given FreeType font driver object. Each font driver is a special module capable of creating faces from font files.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Renderer

+
+

A handle to a given FreeType renderer. A renderer is a special module in charge of converting a glyph image to a bitmap, when necessary. Each renderer supports a given glyph image format, and one or more target surface depths.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ENC_TAG

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#ifndef FT_ENC_TAG
+#define FT_ENC_TAG( value, a, b, c, d )         \
+          value = ( ( (FT_UInt32)(a) << 24 ) |  \
+                    ( (FT_UInt32)(b) << 16 ) |  \
+                    ( (FT_UInt32)(c) <<  8 ) |  \
+                      (FT_UInt32)(d)         )
+
+#endif /* FT_ENC_TAG */
+
+

+
+

This macro converts four-letter tags into an unsigned long. It is used to define ‘encoding’ identifiers (see FT_Encoding).

+

+
note
+

Since many 16-bit compilers don't like 32-bit enumerations, you should redefine this macro in case of problems to something like this:

+
+  #define FT_ENC_TAG( value, a, b, c, d )  value                   
+
+

to get a simple enumeration without assigning special numbers.

+
+
+
+ + +
[Index][TOC]
+ +
+

ft_encoding_xxx

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define ft_encoding_none            FT_ENCODING_NONE
+#define ft_encoding_unicode         FT_ENCODING_UNICODE
+#define ft_encoding_symbol          FT_ENCODING_MS_SYMBOL
+#define ft_encoding_latin_1         FT_ENCODING_ADOBE_LATIN_1
+#define ft_encoding_latin_2         FT_ENCODING_OLD_LATIN_2
+#define ft_encoding_sjis            FT_ENCODING_SJIS
+#define ft_encoding_gb2312          FT_ENCODING_GB2312
+#define ft_encoding_big5            FT_ENCODING_BIG5
+#define ft_encoding_wansung         FT_ENCODING_WANSUNG
+#define ft_encoding_johab           FT_ENCODING_JOHAB
+
+#define ft_encoding_adobe_standard  FT_ENCODING_ADOBE_STANDARD
+#define ft_encoding_adobe_expert    FT_ENCODING_ADOBE_EXPERT
+#define ft_encoding_adobe_custom    FT_ENCODING_ADOBE_CUSTOM
+#define ft_encoding_apple_roman     FT_ENCODING_APPLE_ROMAN
+
+

+
+

These constants are deprecated; use the corresponding FT_Encoding values instead.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CharMapRec

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_CharMapRec_
+  {
+    FT_Face      face;
+    FT_Encoding  encoding;
+    FT_UShort    platform_id;
+    FT_UShort    encoding_id;
+
+  } FT_CharMapRec;
+
+

+
+

The base charmap structure.

+

+
fields
+

+ + + + + +
face +

A handle to the parent face object.

+
encoding +

An FT_Encoding tag identifying the charmap. Use this with FT_Select_Charmap.

+
platform_id +

An ID number describing the platform for the following encoding ID. This comes directly from the TrueType specification and should be emulated for other formats.

+
encoding_id +

A platform specific encoding number. This also comes from the TrueType specification and should be emulated similarly.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face_Internal

+
+

An opaque handle to an ‘FT_Face_InternalRec’ structure, used to model private data of a given FT_Face object.

+

This structure might change between releases of FreeType 2 and is not generally available to client applications.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_FaceRec

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_FaceRec_
+  {
+    FT_Long           num_faces;
+    FT_Long           face_index;
+
+    FT_Long           face_flags;
+    FT_Long           style_flags;
+
+    FT_Long           num_glyphs;
+
+    FT_String*        family_name;
+    FT_String*        style_name;
+
+    FT_Int            num_fixed_sizes;
+    FT_Bitmap_Size*   available_sizes;
+
+    FT_Int            num_charmaps;
+    FT_CharMap*       charmaps;
+
+    FT_Generic        generic;
+
+    /*# The following member variables (down to `underline_thickness') */
+    /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size    */
+    /*# for bitmap fonts.                                              */
+    FT_BBox           bbox;
+
+    FT_UShort         units_per_EM;
+    FT_Short          ascender;
+    FT_Short          descender;
+    FT_Short          height;
+
+    FT_Short          max_advance_width;
+    FT_Short          max_advance_height;
+
+    FT_Short          underline_position;
+    FT_Short          underline_thickness;
+
+    FT_GlyphSlot      glyph;
+    FT_Size           size;
+    FT_CharMap        charmap;
+
+    /*@private begin */
+
+    FT_Driver         driver;
+    FT_Memory         memory;
+    FT_Stream         stream;
+
+    FT_ListRec        sizes_list;
+
+    FT_Generic        autohint;
+    void*             extensions;
+
+    FT_Face_Internal  internal;
+
+    /*@private end */
+
+  } FT_FaceRec;
+
+

+
+

FreeType root face class structure. A face object models a typeface in a font file.

+

+
fields
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
num_faces +

The number of faces in the font file. Some font formats can have multiple faces in a font file.

+
face_index +

The index of the face in the font file. It is set to 0 if there is only one face in the font file.

+
face_flags +

A set of bit flags that give important information about the face; see FT_FACE_FLAG_XXX for the details.

+
style_flags +

A set of bit flags indicating the style of the face; see FT_STYLE_FLAG_XXX for the details.

+
num_glyphs +

The number of glyphs in the face. If the face is scalable and has sbits (see ‘num_fixed_sizes’), it is set to the number of outline glyphs.

+

For CID-keyed fonts, this value gives the highest CID used in the font.

+
family_name +

The face's family name. This is an ASCII string, usually in English, which describes the typeface's family (like ‘Times New Roman’, ‘Bodoni’, ‘Garamond’, etc). This is a least common denominator used to list fonts. Some formats (TrueType & OpenType) provide localized and Unicode versions of this string. Applications should use the format specific interface to access them. Can be NULL (e.g., in fonts embedded in a PDF file).

+
style_name +

The face's style name. This is an ASCII string, usually in English, which describes the typeface's style (like ‘Italic’, ‘Bold’, ‘Condensed’, etc). Not all font formats provide a style name, so this field is optional, and can be set to NULL. As for ‘family_name’, some formats provide localized and Unicode versions of this string. Applications should use the format specific interface to access them.

+
num_fixed_sizes +

The number of bitmap strikes in the face. Even if the face is scalable, there might still be bitmap strikes, which are called ‘sbits’ in that case.

+
available_sizes +

An array of FT_Bitmap_Size for all bitmap strikes in the face. It is set to NULL if there is no bitmap strike.

+
num_charmaps +

The number of charmaps in the face.

+
charmaps +

An array of the charmaps of the face.

+
generic +

A field reserved for client uses. See the FT_Generic type description.

+
bbox +

The font bounding box. Coordinates are expressed in font units (see ‘units_per_EM’). The box is large enough to contain any glyph from the font. Thus, ‘bbox.yMax’ can be seen as the ‘maximal ascender’, and ‘bbox.yMin’ as the ‘minimal descender’. Only relevant for scalable formats.

+

Note that the bounding box might be off by (at least) one pixel for hinted fonts. See FT_Size_Metrics for further discussion.

+
units_per_EM +

The number of font units per EM square for this face. This is typically 2048 for TrueType fonts, and 1000 for Type 1 fonts. Only relevant for scalable formats.

+
ascender +

The typographic ascender of the face, expressed in font units. For font formats not having this information, it is set to ‘bbox.yMax’. Only relevant for scalable formats.

+
descender +

The typographic descender of the face, expressed in font units. For font formats not having this information, it is set to ‘bbox.yMin’. Note that this field is usually negative. Only relevant for scalable formats.

+
height +

The height is the vertical distance between two consecutive baselines, expressed in font units. It is always positive. Only relevant for scalable formats.

+
max_advance_width +

The maximal advance width, in font units, for all glyphs in this face. This can be used to make word wrapping computations faster. Only relevant for scalable formats.

+
max_advance_height +

The maximal advance height, in font units, for all glyphs in this face. This is only relevant for vertical layouts, and is set to ‘height’ for fonts that do not provide vertical metrics. Only relevant for scalable formats.

+
underline_position +

The position, in font units, of the underline line for this face. It is the center of the underlining stem. Only relevant for scalable formats.

+
underline_thickness +

The thickness, in font units, of the underline for this face. Only relevant for scalable formats.

+
glyph +

The face's associated glyph slot(s).

+
size +

The current active size for this face.

+
charmap +

The current active charmap for this face.

+
+
+
note
+

Fields may be changed after a call to FT_Attach_File or FT_Attach_Stream.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_FACE_FLAG_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_FACE_FLAG_SCALABLE          ( 1L <<  0 )
+#define FT_FACE_FLAG_FIXED_SIZES       ( 1L <<  1 )
+#define FT_FACE_FLAG_FIXED_WIDTH       ( 1L <<  2 )
+#define FT_FACE_FLAG_SFNT              ( 1L <<  3 )
+#define FT_FACE_FLAG_HORIZONTAL        ( 1L <<  4 )
+#define FT_FACE_FLAG_VERTICAL          ( 1L <<  5 )
+#define FT_FACE_FLAG_KERNING           ( 1L <<  6 )
+#define FT_FACE_FLAG_FAST_GLYPHS       ( 1L <<  7 )
+#define FT_FACE_FLAG_MULTIPLE_MASTERS  ( 1L <<  8 )
+#define FT_FACE_FLAG_GLYPH_NAMES       ( 1L <<  9 )
+#define FT_FACE_FLAG_EXTERNAL_STREAM   ( 1L << 10 )
+#define FT_FACE_FLAG_HINTER            ( 1L << 11 )
+#define FT_FACE_FLAG_CID_KEYED         ( 1L << 12 )
+#define FT_FACE_FLAG_TRICKY            ( 1L << 13 )
+
+

+
+

A list of bit flags used in the ‘face_flags’ field of the FT_FaceRec structure. They inform client applications of properties of the corresponding face.

+

+
values
+

+ + + + + + + + + + + + + + + + + + + + + + +
FT_FACE_FLAG_SCALABLE +

Indicates that the face contains outline glyphs. This doesn't prevent bitmap strikes, i.e., a face can have both this and and FT_FACE_FLAG_FIXED_SIZES set.

+
FT_FACE_FLAG_FIXED_SIZES
+

Indicates that the face contains bitmap strikes. See also the ‘num_fixed_sizes’ and ‘available_sizes’ fields of FT_FaceRec.

+
FT_FACE_FLAG_FIXED_WIDTH
+

Indicates that the face contains fixed-width characters (like Courier, Lucido, MonoType, etc.).

+
FT_FACE_FLAG_SFNT +

Indicates that the face uses the ‘sfnt’ storage scheme. For now, this means TrueType and OpenType.

+
FT_FACE_FLAG_HORIZONTAL
+

Indicates that the face contains horizontal glyph metrics. This should be set for all common formats.

+
FT_FACE_FLAG_VERTICAL +

Indicates that the face contains vertical glyph metrics. This is only available in some formats, not all of them.

+
FT_FACE_FLAG_KERNING +

Indicates that the face contains kerning information. If set, the kerning distance can be retrieved through the function FT_Get_Kerning. Otherwise the function always return the vector (0,0). Note that FreeType doesn't handle kerning data from the ‘GPOS’ table (as present in some OpenType fonts).

+
FT_FACE_FLAG_FAST_GLYPHS
+

THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT.

+
FT_FACE_FLAG_MULTIPLE_MASTERS
+

Indicates that the font contains multiple masters and is capable of interpolating between them. See the multiple-masters specific API for details.

+
FT_FACE_FLAG_GLYPH_NAMES
+

Indicates that the font contains glyph names that can be retrieved through FT_Get_Glyph_Name. Note that some TrueType fonts contain broken glyph name tables. Use the function FT_Has_PS_Glyph_Names when needed.

+
FT_FACE_FLAG_EXTERNAL_STREAM
+

Used internally by FreeType to indicate that a face's stream was provided by the client application and should not be destroyed when FT_Done_Face is called. Don't read or test this flag.

+
FT_FACE_FLAG_HINTER +

Set if the font driver has a hinting machine of its own. For example, with TrueType fonts, it makes sense to use data from the SFNT ‘gasp’ table only if the native TrueType hinting engine (with the bytecode interpreter) is available and active.

+
FT_FACE_FLAG_CID_KEYED +

Set if the font is CID-keyed. In that case, the font is not accessed by glyph indices but by CID values. For subsetted CID-keyed fonts this has the consequence that not all index values are a valid argument to FT_Load_Glyph. Only the CID values for which corresponding glyphs in the subsetted font exist make FT_Load_Glyph return successfully; in all other cases you get an ‘FT_Err_Invalid_Argument’ error.

+

Note that CID-keyed fonts which are in an SFNT wrapper don't have this flag set since the glyphs are accessed in the normal way (using contiguous indices); the ‘CID-ness’ isn't visible to the application.

+
FT_FACE_FLAG_TRICKY +

Set if the font is ‘tricky’, this is, it always needs the font format's native hinting engine to get a reasonable result. A typical example is the Chinese font ‘mingli.ttf’ which uses TrueType bytecode instructions to move and scale all of its subglyphs.

+

It is not possible to autohint such fonts using FT_LOAD_FORCE_AUTOHINT; it will also ignore FT_LOAD_NO_HINTING. You have to set both FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT to really disable hinting; however, you probably never want this except for demonstration purposes.

+

Currently, there are six TrueType fonts in the list of tricky fonts; they are hard-coded in file ‘ttobjs.c’.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_HAS_HORIZONTAL

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_HAS_HORIZONTAL( face ) \
+          ( face->face_flags & FT_FACE_FLAG_HORIZONTAL )
+
+

+
+

A macro that returns true whenever a face object contains horizontal metrics (this is true for all font formats though).

+

+
also
+

FT_HAS_VERTICAL can be used to check for vertical metrics.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_HAS_VERTICAL

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_HAS_VERTICAL( face ) \
+          ( face->face_flags & FT_FACE_FLAG_VERTICAL )
+
+

+
+

A macro that returns true whenever a face object contains vertical metrics.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_HAS_KERNING

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_HAS_KERNING( face ) \
+          ( face->face_flags & FT_FACE_FLAG_KERNING )
+
+

+
+

A macro that returns true whenever a face object contains kerning data that can be accessed with FT_Get_Kerning.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_IS_SCALABLE

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_IS_SCALABLE( face ) \
+          ( face->face_flags & FT_FACE_FLAG_SCALABLE )
+
+

+
+

A macro that returns true whenever a face object contains a scalable font face (true for TrueType, Type 1, Type 42, CID, OpenType/CFF, and PFR font formats.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_IS_SFNT

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_IS_SFNT( face ) \
+          ( face->face_flags & FT_FACE_FLAG_SFNT )
+
+

+
+

A macro that returns true whenever a face object contains a font whose format is based on the SFNT storage scheme. This usually means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded bitmap fonts.

+

If this macro is true, all functions defined in FT_SFNT_NAMES_H and FT_TRUETYPE_TABLES_H are available.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_IS_FIXED_WIDTH

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_IS_FIXED_WIDTH( face ) \
+          ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH )
+
+

+
+

A macro that returns true whenever a face object contains a font face that contains fixed-width (or ‘monospace’, ‘fixed-pitch’, etc.) glyphs.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_HAS_FIXED_SIZES

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_HAS_FIXED_SIZES( face ) \
+          ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
+
+

+
+

A macro that returns true whenever a face object contains some embedded bitmaps. See the ‘available_sizes’ field of the FT_FaceRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_HAS_FAST_GLYPHS

+
+

Deprecated.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_HAS_GLYPH_NAMES

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_HAS_GLYPH_NAMES( face ) \
+          ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
+
+

+
+

A macro that returns true whenever a face object contains some glyph names that can be accessed through FT_Get_Glyph_Name.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_HAS_MULTIPLE_MASTERS

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_HAS_MULTIPLE_MASTERS( face ) \
+          ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS )
+
+

+
+

A macro that returns true whenever a face object contains some multiple masters. The functions provided by FT_MULTIPLE_MASTERS_H are then available to choose the exact design you want.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_IS_CID_KEYED

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_IS_CID_KEYED( face ) \
+          ( face->face_flags & FT_FACE_FLAG_CID_KEYED )
+
+

+
+

A macro that returns true whenever a face object contains a CID-keyed font. See the discussion of FT_FACE_FLAG_CID_KEYED for more details.

+

If this macro is true, all functions defined in FT_CID_H are available.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_IS_TRICKY

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_IS_TRICKY( face ) \
+          ( face->face_flags & FT_FACE_FLAG_TRICKY )
+
+

+
+

A macro that returns true whenever a face represents a ‘tricky’ font. See the discussion of FT_FACE_FLAG_TRICKY for more details.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_STYLE_FLAG_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_STYLE_FLAG_ITALIC  ( 1 << 0 )
+#define FT_STYLE_FLAG_BOLD    ( 1 << 1 )
+
+

+
+

A list of bit-flags used to indicate the style of a given face. These are used in the ‘style_flags’ field of FT_FaceRec.

+

+
values
+

+ + + +
FT_STYLE_FLAG_ITALIC +

Indicates that a given face style is italic or oblique.

+
FT_STYLE_FLAG_BOLD +

Indicates that a given face is bold.

+
+
+
note
+

The style information as provided by FreeType is very basic. More details are beyond the scope and should be done on a higher level (for example, by analyzing various fields of the ‘OS/2’ table in SFNT based fonts).

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Size_Internal

+
+

An opaque handle to an ‘FT_Size_InternalRec’ structure, used to model private data of a given FT_Size object.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Size_Metrics

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_Size_Metrics_
+  {
+    FT_UShort  x_ppem;      /* horizontal pixels per EM               */
+    FT_UShort  y_ppem;      /* vertical pixels per EM                 */
+
+    FT_Fixed   x_scale;     /* scaling values used to convert font    */
+    FT_Fixed   y_scale;     /* units to 26.6 fractional pixels        */
+
+    FT_Pos     ascender;    /* ascender in 26.6 frac. pixels          */
+    FT_Pos     descender;   /* descender in 26.6 frac. pixels         */
+    FT_Pos     height;      /* text height in 26.6 frac. pixels       */
+    FT_Pos     max_advance; /* max horizontal advance, in 26.6 pixels */
+
+  } FT_Size_Metrics;
+
+

+
+

The size metrics structure gives the metrics of a size object.

+

+
fields
+

+ + + + + + + + + +
x_ppem +

The width of the scaled EM square in pixels, hence the term ‘ppem’ (pixels per EM). It is also referred to as ‘nominal width’.

+
y_ppem +

The height of the scaled EM square in pixels, hence the term ‘ppem’ (pixels per EM). It is also referred to as ‘nominal height’.

+
x_scale +

A 16.16 fractional scaling value used to convert horizontal metrics from font units to 26.6 fractional pixels. Only relevant for scalable font formats.

+
y_scale +

A 16.16 fractional scaling value used to convert vertical metrics from font units to 26.6 fractional pixels. Only relevant for scalable font formats.

+
ascender +

The ascender in 26.6 fractional pixels. See FT_FaceRec for the details.

+
descender +

The descender in 26.6 fractional pixels. See FT_FaceRec for the details.

+
height +

The height in 26.6 fractional pixels. See FT_FaceRec for the details.

+
max_advance +

The maximal advance width in 26.6 fractional pixels. See FT_FaceRec for the details.

+
+
+
note
+

The scaling values, if relevant, are determined first during a size changing operation. The remaining fields are then set by the driver. For scalable formats, they are usually set to scaled values of the corresponding fields in FT_FaceRec.

+

Note that due to glyph hinting, these values might not be exact for certain fonts. Thus they must be treated as unreliable with an error margin of at least one pixel!

+

Indeed, the only way to get the exact metrics is to render all glyphs. As this would be a definite performance hit, it is up to client applications to perform such computations.

+

The FT_Size_Metrics structure is valid for bitmap fonts also.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_SizeRec

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_SizeRec_
+  {
+    FT_Face           face;      /* parent face object              */
+    FT_Generic        generic;   /* generic pointer for client uses */
+    FT_Size_Metrics   metrics;   /* size metrics                    */
+    FT_Size_Internal  internal;
+
+  } FT_SizeRec;
+
+

+
+

FreeType root size class structure. A size object models a face object at a given size.

+

+
fields
+

+ + + + +
face +

Handle to the parent face object.

+
generic +

A typeless pointer, which is unused by the FreeType library or any of its drivers. It can be used by client applications to link their own data to each size object.

+
metrics +

Metrics for this size object. This field is read-only.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_SubGlyph

+
+

The subglyph structure is an internal object used to describe subglyphs (for example, in the case of composites).

+

+
note
+

The subglyph implementation is not part of the high-level API, hence the forward structure declaration.

+

You can however retrieve subglyph information with FT_Get_SubGlyph_Info.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Slot_Internal

+
+

An opaque handle to an ‘FT_Slot_InternalRec’ structure, used to model private data of a given FT_GlyphSlot object.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_GlyphSlotRec

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_GlyphSlotRec_
+  {
+    FT_Library        library;
+    FT_Face           face;
+    FT_GlyphSlot      next;
+    FT_UInt           reserved;       /* retained for binary compatibility */
+    FT_Generic        generic;
+
+    FT_Glyph_Metrics  metrics;
+    FT_Fixed          linearHoriAdvance;
+    FT_Fixed          linearVertAdvance;
+    FT_Vector         advance;
+
+    FT_Glyph_Format   format;
+
+    FT_Bitmap         bitmap;
+    FT_Int            bitmap_left;
+    FT_Int            bitmap_top;
+
+    FT_Outline        outline;
+
+    FT_UInt           num_subglyphs;
+    FT_SubGlyph       subglyphs;
+
+    void*             control_data;
+    long              control_len;
+
+    FT_Pos            lsb_delta;
+    FT_Pos            rsb_delta;
+
+    void*             other;
+
+    FT_Slot_Internal  internal;
+
+  } FT_GlyphSlotRec;
+
+

+
+

FreeType root glyph slot class structure. A glyph slot is a container where individual glyphs can be loaded, be they in outline or bitmap format.

+

+
fields
+

+ + + + + + + + + + + + + + + + + + + + + +
library +

A handle to the FreeType library instance this slot belongs to.

+
face +

A handle to the parent face object.

+
next +

In some cases (like some font tools), several glyph slots per face object can be a good thing. As this is rare, the glyph slots are listed through a direct, single-linked list using its ‘next’ field.

+
generic +

A typeless pointer which is unused by the FreeType library or any of its drivers. It can be used by client applications to link their own data to each glyph slot object.

+
metrics +

The metrics of the last loaded glyph in the slot. The returned values depend on the last load flags (see the FT_Load_Glyph API function) and can be expressed either in 26.6 fractional pixels or font units.

+

Note that even when the glyph image is transformed, the metrics are not.

+
linearHoriAdvance +

The advance width of the unhinted glyph. Its value is expressed in 16.16 fractional pixels, unless FT_LOAD_LINEAR_DESIGN is set when loading the glyph. This field can be important to perform correct WYSIWYG layout. Only relevant for outline glyphs.

+
linearVertAdvance +

The advance height of the unhinted glyph. Its value is expressed in 16.16 fractional pixels, unless FT_LOAD_LINEAR_DESIGN is set when loading the glyph. This field can be important to perform correct WYSIWYG layout. Only relevant for outline glyphs.

+
advance +

This is the transformed advance width for the glyph (in 26.6 fractional pixel format).

+
format +

This field indicates the format of the image contained in the glyph slot. Typically FT_GLYPH_FORMAT_BITMAP, FT_GLYPH_FORMAT_OUTLINE, or FT_GLYPH_FORMAT_COMPOSITE, but others are possible.

+
bitmap +

This field is used as a bitmap descriptor when the slot format is FT_GLYPH_FORMAT_BITMAP. Note that the address and content of the bitmap buffer can change between calls of FT_Load_Glyph and a few other functions.

+
bitmap_left +

This is the bitmap's left bearing expressed in integer pixels. Of course, this is only valid if the format is FT_GLYPH_FORMAT_BITMAP.

+
bitmap_top +

This is the bitmap's top bearing expressed in integer pixels. Remember that this is the distance from the baseline to the top-most glyph scanline, upwards y coordinates being positive.

+
outline +

The outline descriptor for the current glyph image if its format is FT_GLYPH_FORMAT_OUTLINE. Once a glyph is loaded, ‘outline’ can be transformed, distorted, embolded, etc. However, it must not be freed.

+
num_subglyphs +

The number of subglyphs in a composite glyph. This field is only valid for the composite glyph format that should normally only be loaded with the FT_LOAD_NO_RECURSE flag. For now this is internal to FreeType.

+
subglyphs +

An array of subglyph descriptors for composite glyphs. There are ‘num_subglyphs’ elements in there. Currently internal to FreeType.

+
control_data +

Certain font drivers can also return the control data for a given glyph image (e.g. TrueType bytecode, Type 1 charstrings, etc.). This field is a pointer to such data.

+
control_len +

This is the length in bytes of the control data.

+
other +

Really wicked formats can use this pointer to present their own glyph image to client applications. Note that the application needs to know about the image format.

+
lsb_delta +

The difference between hinted and unhinted left side bearing while autohinting is active. Zero otherwise.

+
rsb_delta +

The difference between hinted and unhinted right side bearing while autohinting is active. Zero otherwise.

+
+
+
note
+

If FT_Load_Glyph is called with default flags (see FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in its native format (e.g., an outline glyph for TrueType and Type 1 formats).

+

This image can later be converted into a bitmap by calling FT_Render_Glyph. This function finds the current renderer for the native image's format, then invokes it.

+

The renderer is in charge of transforming the native image through the slot's face transformation fields, then converting it into a bitmap that is returned in ‘slot->bitmap’.

+

Note that ‘slot->bitmap_left’ and ‘slot->bitmap_top’ are also used to specify the position of the bitmap relative to the current pen position (e.g., coordinates (0,0) on the baseline). Of course, ‘slot->format’ is also changed to FT_GLYPH_FORMAT_BITMAP.

+
+
note
+

Here a small pseudo code fragment which shows how to use ‘lsb_delta’ and ‘rsb_delta’:

+
+  FT_Pos  origin_x       = 0;                                      
+  FT_Pos  prev_rsb_delta = 0;                                      
+                                                                   
+                                                                   
+  for all glyphs do                                                
+    <compute kern between current and previous glyph and add it to 
+     `origin_x'>                                                   
+                                                                   
+    <load glyph with `FT_Load_Glyph'>                              
+                                                                   
+    if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 )           
+      origin_x -= 64;                                              
+    else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 )      
+      origin_x += 64;                                              
+                                                                   
+    prev_rsb_delta = face->glyph->rsb_delta;                       
+                                                                   
+    <save glyph image, or render glyph, or ...>                    
+                                                                   
+    origin_x += face->glyph->advance.x;                            
+  endfor                                                           
+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Init_FreeType

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Init_FreeType( FT_Library  *alibrary );
+
+

+
+

Initialize a new FreeType library object. The set of modules that are registered by this function is determined at build time.

+

+
output
+

+ + +
alibrary +

A handle to a new library object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Done_FreeType

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Done_FreeType( FT_Library  library );
+
+

+
+

Destroy a given FreeType library object and all of its children, including resources, drivers, faces, sizes, etc.

+

+
input
+

+ + +
library +

A handle to the target library object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_OPEN_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_OPEN_MEMORY    0x1
+#define FT_OPEN_STREAM    0x2
+#define FT_OPEN_PATHNAME  0x4
+#define FT_OPEN_DRIVER    0x8
+#define FT_OPEN_PARAMS    0x10
+
+#define ft_open_memory    FT_OPEN_MEMORY     /* deprecated */
+#define ft_open_stream    FT_OPEN_STREAM     /* deprecated */
+#define ft_open_pathname  FT_OPEN_PATHNAME   /* deprecated */
+#define ft_open_driver    FT_OPEN_DRIVER     /* deprecated */
+#define ft_open_params    FT_OPEN_PARAMS     /* deprecated */
+
+

+
+

A list of bit-field constants used within the ‘flags’ field of the FT_Open_Args structure.

+

+
values
+

+ + + + + + + + + + + +
FT_OPEN_MEMORY +

This is a memory-based stream.

+
FT_OPEN_STREAM +

Copy the stream from the ‘stream’ field.

+
FT_OPEN_PATHNAME +

Create a new input stream from a C path name.

+
FT_OPEN_DRIVER +

Use the ‘driver’ field.

+
FT_OPEN_PARAMS +

Use the ‘num_params’ and ‘params’ fields.

+
ft_open_memory +

Deprecated; use FT_OPEN_MEMORY instead.

+
ft_open_stream +

Deprecated; use FT_OPEN_STREAM instead.

+
ft_open_pathname +

Deprecated; use FT_OPEN_PATHNAME instead.

+
ft_open_driver +

Deprecated; use FT_OPEN_DRIVER instead.

+
ft_open_params +

Deprecated; use FT_OPEN_PARAMS instead.

+
+
+
note
+

The ‘FT_OPEN_MEMORY’, ‘FT_OPEN_STREAM’, and ‘FT_OPEN_PATHNAME’ flags are mutually exclusive.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Parameter

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_Parameter_
+  {
+    FT_ULong    tag;
+    FT_Pointer  data;
+
+  } FT_Parameter;
+
+

+
+

A simple structure used to pass more or less generic parameters to FT_Open_Face.

+

+
fields
+

+ + + +
tag +

A four-byte identification tag.

+
data +

A pointer to the parameter data.

+
+
+
note
+

The ID and function of parameters are driver-specific.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Open_Args

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_Open_Args_
+  {
+    FT_UInt         flags;
+    const FT_Byte*  memory_base;
+    FT_Long         memory_size;
+    FT_String*      pathname;
+    FT_Stream       stream;
+    FT_Module       driver;
+    FT_Int          num_params;
+    FT_Parameter*   params;
+
+  } FT_Open_Args;
+
+

+
+

A structure used to indicate how to open a new font file or stream. A pointer to such a structure can be used as a parameter for the functions FT_Open_Face and FT_Attach_Stream.

+

+
fields
+

+ + + + + + + + + +
flags +

A set of bit flags indicating how to use the structure.

+
memory_base +

The first byte of the file in memory.

+
memory_size +

The size in bytes of the file in memory.

+
pathname +

A pointer to an 8-bit file pathname.

+
stream +

A handle to a source stream object.

+
driver +

This field is exclusively used by FT_Open_Face; it simply specifies the font driver to use to open the face. If set to 0, FreeType tries to load the face with each one of the drivers in its list.

+
num_params +

The number of extra parameters.

+
params +

Extra parameters passed to the font driver when opening a new face.

+
+
+
note
+

The stream type is determined by the contents of ‘flags’ which are tested in the following order by FT_Open_Face:

+

If the ‘FT_OPEN_MEMORY’ bit is set, assume that this is a memory file of ‘memory_size’ bytes, located at ‘memory_address’. The data are are not copied, and the client is responsible for releasing and destroying them after the corresponding call to FT_Done_Face.

+

Otherwise, if the ‘FT_OPEN_STREAM’ bit is set, assume that a custom input stream ‘stream’ is used.

+

Otherwise, if the ‘FT_OPEN_PATHNAME’ bit is set, assume that this is a normal file and use ‘pathname’ to open it.

+

If the ‘FT_OPEN_DRIVER’ bit is set, FT_Open_Face only tries to open the file with the driver whose handler is in ‘driver’.

+

If the ‘FT_OPEN_PARAMS’ bit is set, the parameters given by ‘num_params’ and ‘params’ is used. They are ignored otherwise.

+

Ideally, both the ‘pathname’ and ‘params’ fields should be tagged as ‘const’; this is missing for API backwards compatibility. In other words, applications should treat them as read-only.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_New_Face

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_New_Face( FT_Library   library,
+               const char*  filepathname,
+               FT_Long      face_index,
+               FT_Face     *aface );
+
+

+
+

This function calls FT_Open_Face to open a font by its pathname.

+

+
inout
+

+ + +
library +

A handle to the library resource.

+
+
+
input
+

+ + + +
pathname +

A path to the font file.

+
face_index +

The index of the face within the font. The first face has index 0.

+
+
+
output
+

+ + +
aface +

A handle to a new face object. If ‘face_index’ is greater than or equal to zero, it must be non-NULL. See FT_Open_Face for more details.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_New_Memory_Face

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_New_Memory_Face( FT_Library      library,
+                      const FT_Byte*  file_base,
+                      FT_Long         file_size,
+                      FT_Long         face_index,
+                      FT_Face        *aface );
+
+

+
+

This function calls FT_Open_Face to open a font which has been loaded into memory.

+

+
inout
+

+ + +
library +

A handle to the library resource.

+
+
+
input
+

+ + + + +
file_base +

A pointer to the beginning of the font data.

+
file_size +

The size of the memory chunk used by the font data.

+
face_index +

The index of the face within the font. The first face has index 0.

+
+
+
output
+

+ + +
aface +

A handle to a new face object. If ‘face_index’ is greater than or equal to zero, it must be non-NULL. See FT_Open_Face for more details.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You must not deallocate the memory before calling FT_Done_Face.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Open_Face

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Open_Face( FT_Library           library,
+                const FT_Open_Args*  args,
+                FT_Long              face_index,
+                FT_Face             *aface );
+
+

+
+

Create a face object from a given resource described by FT_Open_Args.

+

+
inout
+

+ + +
library +

A handle to the library resource.

+
+
+
input
+

+ + + +
args +

A pointer to an ‘FT_Open_Args’ structure which must be filled by the caller.

+
face_index +

The index of the face within the font. The first face has index 0.

+
+
+
output
+

+ + +
aface +

A handle to a new face object. If ‘face_index’ is greater than or equal to zero, it must be non-NULL. See note below.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

Unlike FreeType 1.x, this function automatically creates a glyph slot for the face object which can be accessed directly through ‘face->glyph’.

+

FT_Open_Face can be used to quickly check whether the font format of a given font resource is supported by FreeType. If the ‘face_index’ field is negative, the function's return value is 0 if the font format is recognized, or non-zero otherwise; the function returns a more or less empty face handle in ‘*aface’ (if ‘aface’ isn't NULL). The only useful field in this special case is ‘face->num_faces’ which gives the number of faces within the font file. After examination, the returned FT_Face structure should be deallocated with a call to FT_Done_Face.

+

Each new face object created with this function also owns a default FT_Size object, accessible as ‘face->size’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Attach_File

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Attach_File( FT_Face      face,
+                  const char*  filepathname );
+
+

+
+

This function calls FT_Attach_Stream to attach a file.

+

+
inout
+

+ + +
face +

The target face object.

+
+
+
input
+

+ + +
filepathname +

The pathname.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Attach_Stream

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Attach_Stream( FT_Face        face,
+                    FT_Open_Args*  parameters );
+
+

+
+

‘Attach’ data to a face object. Normally, this is used to read additional information for the face object. For example, you can attach an AFM file that comes with a Type 1 font to get the kerning values and other metrics.

+

+
inout
+

+ + +
face +

The target face object.

+
+
+
input
+

+ + +
parameters +

A pointer to FT_Open_Args which must be filled by the caller.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The meaning of the ‘attach’ (i.e., what really happens when the new file is read) is not fixed by FreeType itself. It really depends on the font format (and thus the font driver).

+

Client applications are expected to know what they are doing when invoking this function. Most drivers simply do not implement file attachments.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Done_Face

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Done_Face( FT_Face  face );
+
+

+
+

Discard a given face object, as well as all of its child slots and sizes.

+

+
input
+

+ + +
face +

A handle to a target face object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Select_Size

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Select_Size( FT_Face  face,
+                  FT_Int   strike_index );
+
+

+
+

Select a bitmap strike.

+

+
inout
+

+ + +
face +

A handle to a target face object.

+
+
+
input
+

+ + +
strike_index +

The index of the bitmap strike in the ‘available_sizes’ field of FT_FaceRec structure.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Size_Request_Type

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef enum  FT_Size_Request_Type_
+  {
+    FT_SIZE_REQUEST_TYPE_NOMINAL,
+    FT_SIZE_REQUEST_TYPE_REAL_DIM,
+    FT_SIZE_REQUEST_TYPE_BBOX,
+    FT_SIZE_REQUEST_TYPE_CELL,
+    FT_SIZE_REQUEST_TYPE_SCALES,
+
+    FT_SIZE_REQUEST_TYPE_MAX
+
+  } FT_Size_Request_Type;
+
+

+
+

An enumeration type that lists the supported size request types.

+

+
values
+

+ + + + + + + + + + + +
FT_SIZE_REQUEST_TYPE_NOMINAL
+

The nominal size. The ‘units_per_EM’ field of FT_FaceRec is used to determine both scaling values.

+
FT_SIZE_REQUEST_TYPE_REAL_DIM
+

The real dimension. The sum of the the ‘Ascender’ and (minus of) the ‘Descender’ fields of FT_FaceRec are used to determine both scaling values.

+
FT_SIZE_REQUEST_TYPE_BBOX
+

The font bounding box. The width and height of the ‘bbox’ field of FT_FaceRec are used to determine the horizontal and vertical scaling value, respectively.

+
FT_SIZE_REQUEST_TYPE_CELL
+

The ‘max_advance_width’ field of FT_FaceRec is used to determine the horizontal scaling value; the vertical scaling value is determined the same way as FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling values are set to the smaller one. This type is useful if you want to specify the font size for, say, a window of a given dimension and 80x24 cells.

+
FT_SIZE_REQUEST_TYPE_SCALES
+

Specify the scaling values directly.

+
+
+
note
+

The above descriptions only apply to scalable formats. For bitmap formats, the behaviour is up to the driver.

+

See the note section of FT_Size_Metrics if you wonder how size requesting relates to scaling values.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Size_RequestRec

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef struct  FT_Size_RequestRec_
+  {
+    FT_Size_Request_Type  type;
+    FT_Long               width;
+    FT_Long               height;
+    FT_UInt               horiResolution;
+    FT_UInt               vertResolution;
+
+  } FT_Size_RequestRec;
+
+

+
+

A structure used to model a size request.

+

+
fields
+

+ + + + + + +
type +

See FT_Size_Request_Type.

+
width +

The desired width.

+
height +

The desired height.

+
horiResolution +

The horizontal resolution. If set to zero, ‘width’ is treated as a 26.6 fractional pixel value.

+
vertResolution +

The vertical resolution. If set to zero, ‘height’ is treated as a 26.6 fractional pixel value.

+
+
+
note
+

If ‘width’ is zero, then the horizontal scaling value is set equal to the vertical scaling value, and vice versa.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Size_Request

+
+

A handle to a size request structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Request_Size

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Request_Size( FT_Face          face,
+                   FT_Size_Request  req );
+
+

+
+

Resize the scale of the active FT_Size object in a face.

+

+
inout
+

+ + +
face +

A handle to a target face object.

+
+
+
input
+

+ + +
req +

A pointer to a FT_Size_RequestRec.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

Although drivers may select the bitmap strike matching the request, you should not rely on this if you intend to select a particular bitmap strike. Use FT_Select_Size instead in that case.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Char_Size

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_Char_Size( FT_Face     face,
+                    FT_F26Dot6  char_width,
+                    FT_F26Dot6  char_height,
+                    FT_UInt     horz_resolution,
+                    FT_UInt     vert_resolution );
+
+

+
+

This function calls FT_Request_Size to request the nominal size (in points).

+

+
inout
+

+ + +
face +

A handle to a target face object.

+
+
+
input
+

+ + + + + +
char_width +

The nominal width, in 26.6 fractional points.

+
char_height +

The nominal height, in 26.6 fractional points.

+
horz_resolution +

The horizontal resolution in dpi.

+
vert_resolution +

The vertical resolution in dpi.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

If either the character width or height is zero, it is set equal to the other value.

+

If either the horizontal or vertical resolution is zero, it is set equal to the other value.

+

A character width or height smaller than 1pt is set to 1pt; if both resolution values are zero, they are set to 72dpi.

+

Don't use this function if you are using the FreeType cache API.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Pixel_Sizes

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_Pixel_Sizes( FT_Face  face,
+                      FT_UInt  pixel_width,
+                      FT_UInt  pixel_height );
+
+

+
+

This function calls FT_Request_Size to request the nominal size (in pixels).

+

+
inout
+

+ + +
face +

A handle to the target face object.

+
+
+
input
+

+ + + +
pixel_width +

The nominal width, in pixels.

+
pixel_height +

The nominal height, in pixels.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Load_Glyph

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Load_Glyph( FT_Face   face,
+                 FT_UInt   glyph_index,
+                 FT_Int32  load_flags );
+
+

+
+

A function used to load a single glyph into the glyph slot of a face object.

+

+
inout
+

+ + +
face +

A handle to the target face object where the glyph is loaded.

+
+
+
input
+

+ + + +
glyph_index +

The index of the glyph in the font file. For CID-keyed fonts (either in PS or in CFF format) this argument specifies the CID value.

+
load_flags +

A flag indicating what to load for this glyph. The FT_LOAD_XXX constants can be used to control the glyph loading process (e.g., whether the outline should be scaled, whether to load bitmaps or not, whether to hint the outline, etc).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The loaded glyph may be transformed. See FT_Set_Transform for the details.

+

For subsetted CID-keyed fonts, ‘FT_Err_Invalid_Argument’ is returned for invalid CID values (this is, for CID values which don't have a corresponding glyph in the font). See the discussion of the FT_FACE_FLAG_CID_KEYED flag for more details.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Load_Char

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Load_Char( FT_Face   face,
+                FT_ULong  char_code,
+                FT_Int32  load_flags );
+
+

+
+

A function used to load a single glyph into the glyph slot of a face object, according to its character code.

+

+
inout
+

+ + +
face +

A handle to a target face object where the glyph is loaded.

+
+
+
input
+

+ + + +
char_code +

The glyph's character code, according to the current charmap used in the face.

+
load_flags +

A flag indicating what to load for this glyph. The FT_LOAD_XXX constants can be used to control the glyph loading process (e.g., whether the outline should be scaled, whether to load bitmaps or not, whether to hint the outline, etc).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function simply calls FT_Get_Char_Index and FT_Load_Glyph.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_LOAD_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_LOAD_DEFAULT                      0x0
+#define FT_LOAD_NO_SCALE                     0x1
+#define FT_LOAD_NO_HINTING                   0x2
+#define FT_LOAD_RENDER                       0x4
+#define FT_LOAD_NO_BITMAP                    0x8
+#define FT_LOAD_VERTICAL_LAYOUT              0x10
+#define FT_LOAD_FORCE_AUTOHINT               0x20
+#define FT_LOAD_CROP_BITMAP                  0x40
+#define FT_LOAD_PEDANTIC                     0x80
+#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH  0x200
+#define FT_LOAD_NO_RECURSE                   0x400
+#define FT_LOAD_IGNORE_TRANSFORM             0x800
+#define FT_LOAD_MONOCHROME                   0x1000
+#define FT_LOAD_LINEAR_DESIGN                0x2000
+#define FT_LOAD_NO_AUTOHINT                  0x8000U
+
+

+
+

A list of bit-field constants used with FT_Load_Glyph to indicate what kind of operations to perform during glyph loading.

+

+
values
+

+ + + + + + + + + + + + + + + + + + + +
FT_LOAD_DEFAULT +

Corresponding to 0, this value is used as the default glyph load operation. In this case, the following happens:

+

1. FreeType looks for a bitmap for the glyph corresponding to the face's current size. If one is found, the function returns. The bitmap data can be accessed from the glyph slot (see note below).

+

2. If no embedded bitmap is searched or found, FreeType looks for a scalable outline. If one is found, it is loaded from the font file, scaled to device pixels, then ‘hinted’ to the pixel grid in order to optimize it. The outline data can be accessed from the glyph slot (see note below).

+

Note that by default, the glyph loader doesn't render outlines into bitmaps. The following flags are used to modify this default behaviour to more specific and useful cases.

+
FT_LOAD_NO_SCALE +

Don't scale the outline glyph loaded, but keep it in font units.

+

This flag implies FT_LOAD_NO_HINTING and FT_LOAD_NO_BITMAP, and unsets FT_LOAD_RENDER.

+
FT_LOAD_NO_HINTING +

Disable hinting. This generally generates ‘blurrier’ bitmap glyph when the glyph is rendered in any of the anti-aliased modes. See also the note below.

+

This flag is implied by FT_LOAD_NO_SCALE.

+
FT_LOAD_RENDER +

Call FT_Render_Glyph after the glyph is loaded. By default, the glyph is rendered in FT_RENDER_MODE_NORMAL mode. This can be overridden by FT_LOAD_TARGET_XXX or FT_LOAD_MONOCHROME.

+

This flag is unset by FT_LOAD_NO_SCALE.

+
FT_LOAD_NO_BITMAP +

Ignore bitmap strikes when loading. Bitmap-only fonts ignore this flag.

+

FT_LOAD_NO_SCALE always sets this flag.

+
FT_LOAD_VERTICAL_LAYOUT
+

Load the glyph for vertical text layout. Don't use it as it is problematic currently.

+
FT_LOAD_FORCE_AUTOHINT +

Indicates that the auto-hinter is preferred over the font's native hinter. See also the note below.

+
FT_LOAD_CROP_BITMAP +

Indicates that the font driver should crop the loaded bitmap glyph (i.e., remove all space around its black bits). Not all drivers implement this.

+
FT_LOAD_PEDANTIC +

Indicates that the font driver should perform pedantic verifications during glyph loading. This is mostly used to detect broken glyphs in fonts. By default, FreeType tries to handle broken fonts also.

+
FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH
+

Indicates that the font driver should ignore the global advance width defined in the font. By default, that value is used as the advance width for all glyphs when the face has FT_FACE_FLAG_FIXED_WIDTH set.

+

This flag exists for historical reasons (to support buggy CJK fonts).

+
FT_LOAD_NO_RECURSE +

This flag is only used internally. It merely indicates that the font driver should not load composite glyphs recursively. Instead, it should set the ‘num_subglyph’ and ‘subglyphs’ values of the glyph slot accordingly, and set ‘glyph->format’ to FT_GLYPH_FORMAT_COMPOSITE.

+

The description of sub-glyphs is not available to client applications for now.

+

This flag implies FT_LOAD_NO_SCALE and FT_LOAD_IGNORE_TRANSFORM.

+
FT_LOAD_IGNORE_TRANSFORM
+

Indicates that the transform matrix set by FT_Set_Transform should be ignored.

+
FT_LOAD_MONOCHROME +

This flag is used with FT_LOAD_RENDER to indicate that you want to render an outline glyph to a 1-bit monochrome bitmap glyph, with 8 pixels packed into each byte of the bitmap data.

+

Note that this has no effect on the hinting algorithm used. You should rather use FT_LOAD_TARGET_MONO so that the monochrome-optimized hinting algorithm is used.

+
FT_LOAD_LINEAR_DESIGN +

Indicates that the ‘linearHoriAdvance’ and ‘linearVertAdvance’ fields of FT_GlyphSlotRec should be kept in font units. See FT_GlyphSlotRec for details.

+
FT_LOAD_NO_AUTOHINT +

Disable auto-hinter. See also the note below.

+
+
+
note
+

By default, hinting is enabled and the font's native hinter (see FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can disable hinting by setting FT_LOAD_NO_HINTING or change the precedence by setting FT_LOAD_FORCE_AUTOHINT. You can also set FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be used at all.

+

See the description of FT_FACE_FLAG_TRICKY for a special exception (affecting only a handful of Asian fonts).

+

Besides deciding which hinter to use, you can also decide which hinting algorithm to use. See FT_LOAD_TARGET_XXX for details.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_LOAD_TARGET_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_LOAD_TARGET_( x )   ( (FT_Int32)( (x) & 15 ) << 16 )
+
+#define FT_LOAD_TARGET_NORMAL  FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL )
+#define FT_LOAD_TARGET_LIGHT   FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT  )
+#define FT_LOAD_TARGET_MONO    FT_LOAD_TARGET_( FT_RENDER_MODE_MONO   )
+#define FT_LOAD_TARGET_LCD     FT_LOAD_TARGET_( FT_RENDER_MODE_LCD    )
+#define FT_LOAD_TARGET_LCD_V   FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V  )
+
+

+
+

A list of values that are used to select a specific hinting algorithm to use by the hinter. You should OR one of these values to your ‘load_flags’ when calling FT_Load_Glyph.

+

Note that font's native hinters may ignore the hinting algorithm you have specified (e.g., the TrueType bytecode interpreter). You can set FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used.

+

Also note that FT_LOAD_TARGET_LIGHT is an exception, in that it always implies FT_LOAD_FORCE_AUTOHINT.

+

+
values
+

+ + + + + + +
FT_LOAD_TARGET_NORMAL +

This corresponds to the default hinting algorithm, optimized for standard gray-level rendering. For monochrome output, use FT_LOAD_TARGET_MONO instead.

+
FT_LOAD_TARGET_LIGHT +

A lighter hinting algorithm for non-monochrome modes. Many generated glyphs are more fuzzy but better resemble its original shape. A bit like rendering on Mac OS X.

+

As a special exception, this target implies FT_LOAD_FORCE_AUTOHINT.

+
FT_LOAD_TARGET_MONO +

Strong hinting algorithm that should only be used for monochrome output. The result is probably unpleasant if the glyph is rendered in non-monochrome modes.

+
FT_LOAD_TARGET_LCD +

A variant of FT_LOAD_TARGET_NORMAL optimized for horizontally decimated LCD displays.

+
FT_LOAD_TARGET_LCD_V +

A variant of FT_LOAD_TARGET_NORMAL optimized for vertically decimated LCD displays.

+
+
+
note
+

You should use only one of the FT_LOAD_TARGET_XXX values in your ‘load_flags’. They can't be ORed.

+

If FT_LOAD_RENDER is also set, the glyph is rendered in the corresponding mode (i.e., the mode which matches the used algorithm best) unless FT_LOAD_MONOCHROME is set.

+

You can use a hinting algorithm that doesn't correspond to the same rendering mode. As an example, it is possible to use the ‘light’ hinting algorithm and have the results rendered in horizontal LCD pixel mode, with code like

+
+  FT_Load_Glyph( face, glyph_index,
+                 load_flags | FT_LOAD_TARGET_LIGHT );
+
+  FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_LOAD_TARGET_MODE

+
+

Return the FT_Render_Mode corresponding to a given FT_LOAD_TARGET_XXX value.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Transform

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( void )
+  FT_Set_Transform( FT_Face     face,
+                    FT_Matrix*  matrix,
+                    FT_Vector*  delta );
+
+

+
+

A function used to set the transformation that is applied to glyph images when they are loaded into a glyph slot through FT_Load_Glyph.

+

+
inout
+

+ + +
face +

A handle to the source face object.

+
+
+
input
+

+ + + +
matrix +

A pointer to the transformation's 2x2 matrix. Use 0 for the identity matrix.

+
delta +

A pointer to the translation vector. Use 0 for the null vector.

+
+
+
note
+

The transformation is only applied to scalable image formats after the glyph has been loaded. It means that hinting is unaltered by the transformation and is performed on the character size given in the last call to FT_Set_Char_Size or FT_Set_Pixel_Sizes.

+

Note that this also transforms the ‘face.glyph.advance’ field, but not the values in ‘face.glyph.metrics’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Render_Mode

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef enum  FT_Render_Mode_
+  {
+    FT_RENDER_MODE_NORMAL = 0,
+    FT_RENDER_MODE_LIGHT,
+    FT_RENDER_MODE_MONO,
+    FT_RENDER_MODE_LCD,
+    FT_RENDER_MODE_LCD_V,
+
+    FT_RENDER_MODE_MAX
+
+  } FT_Render_Mode;
+
+

+
+

An enumeration type that lists the render modes supported by FreeType 2. Each mode corresponds to a specific type of scanline conversion performed on the outline.

+

For bitmap fonts and embedded bitmaps the ‘bitmap->pixel_mode’ field in the FT_GlyphSlotRec structure gives the format of the returned bitmap.

+

All modes except FT_RENDER_MODE_MONO use 256 levels of opacity.

+

+
values
+

+ + + + + + +
FT_RENDER_MODE_NORMAL +

This is the default render mode; it corresponds to 8-bit anti-aliased bitmaps.

+
FT_RENDER_MODE_LIGHT +

This is equivalent to FT_RENDER_MODE_NORMAL. It is only defined as a separate value because render modes are also used indirectly to define hinting algorithm selectors. See FT_LOAD_TARGET_XXX for details.

+
FT_RENDER_MODE_MONO +

This mode corresponds to 1-bit bitmaps (with 2 levels of opacity).

+
FT_RENDER_MODE_LCD +

This mode corresponds to horizontal RGB and BGR sub-pixel displays like LCD screens. It produces 8-bit bitmaps that are 3 times the width of the original glyph outline in pixels, and which use the FT_PIXEL_MODE_LCD mode.

+
FT_RENDER_MODE_LCD_V +

This mode corresponds to vertical RGB and BGR sub-pixel displays (like PDA screens, rotated LCD displays, etc.). It produces 8-bit bitmaps that are 3 times the height of the original glyph outline in pixels and use the FT_PIXEL_MODE_LCD_V mode.

+
+
+
note
+

The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be filtered to reduce color-fringes by using FT_Library_SetLcdFilter (not active in the default builds). It is up to the caller to either call FT_Library_SetLcdFilter (if available) or do the filtering itself.

+

The selected render mode only affects vector glyphs of a font. Embedded bitmaps often have a different pixel mode like FT_PIXEL_MODE_MONO. You can use FT_Bitmap_Convert to transform them into 8-bit pixmaps.

+
+
+
+ + +
[Index][TOC]
+ +
+

ft_render_mode_xxx

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define ft_render_mode_normal  FT_RENDER_MODE_NORMAL
+#define ft_render_mode_mono    FT_RENDER_MODE_MONO
+
+

+
+

These constants are deprecated. Use the corresponding FT_Render_Mode values instead.

+

+
values
+

+ + + +
ft_render_mode_normal +

see FT_RENDER_MODE_NORMAL

+
ft_render_mode_mono +

see FT_RENDER_MODE_MONO

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Render_Glyph

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Render_Glyph( FT_GlyphSlot    slot,
+                   FT_Render_Mode  render_mode );
+
+

+
+

Convert a given glyph image to a bitmap. It does so by inspecting the glyph image format, finding the relevant renderer, and invoking it.

+

+
inout
+

+ + +
slot +

A handle to the glyph slot containing the image to convert.

+
+
+
input
+

+ + +
render_mode +

This is the render mode used to render the glyph image into a bitmap. See FT_Render_Mode for a list of possible values.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Kerning_Mode

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  typedef enum  FT_Kerning_Mode_
+  {
+    FT_KERNING_DEFAULT  = 0,
+    FT_KERNING_UNFITTED,
+    FT_KERNING_UNSCALED
+
+  } FT_Kerning_Mode;
+
+

+
+

An enumeration used to specify which kerning values to return in FT_Get_Kerning.

+

+
values
+

+ + + + +
FT_KERNING_DEFAULT +

Return scaled and grid-fitted kerning distances (value is 0).

+
FT_KERNING_UNFITTED +

Return scaled but un-grid-fitted kerning distances.

+
FT_KERNING_UNSCALED +

Return the kerning vector in original font units.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

ft_kerning_default

+
+

This constant is deprecated. Please use FT_KERNING_DEFAULT instead.

+

+
+
+ + +
[Index][TOC]
+ +
+

ft_kerning_unfitted

+
+

This constant is deprecated. Please use FT_KERNING_UNFITTED instead.

+

+
+
+ + +
[Index][TOC]
+ +
+

ft_kerning_unscaled

+
+

This constant is deprecated. Please use FT_KERNING_UNSCALED instead.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Kerning

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Kerning( FT_Face     face,
+                  FT_UInt     left_glyph,
+                  FT_UInt     right_glyph,
+                  FT_UInt     kern_mode,
+                  FT_Vector  *akerning );
+
+

+
+

Return the kerning vector between two glyphs of a same face.

+

+
input
+

+ + + + + +
face +

A handle to a source face object.

+
left_glyph +

The index of the left glyph in the kern pair.

+
right_glyph +

The index of the right glyph in the kern pair.

+
kern_mode +

See FT_Kerning_Mode for more information. Determines the scale and dimension of the returned kerning vector.

+
+
+
output
+

+ + +
akerning +

The kerning vector. This is either in font units or in pixels (26.6 format) for scalable formats, and in pixels for fixed-sizes formats.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

Only horizontal layouts (left-to-right & right-to-left) are supported by this method. Other layouts, or more sophisticated kernings, are out of the scope of this API function -- they can be implemented through format-specific interfaces.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Track_Kerning

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Track_Kerning( FT_Face    face,
+                        FT_Fixed   point_size,
+                        FT_Int     degree,
+                        FT_Fixed*  akerning );
+
+

+
+

Return the track kerning for a given face object at a given size.

+

+
input
+

+ + + + +
face +

A handle to a source face object.

+
point_size +

The point size in 16.16 fractional points.

+
degree +

The degree of tightness.

+
+
+
output
+

+ + +
akerning +

The kerning in 16.16 fractional points.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Glyph_Name

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Glyph_Name( FT_Face     face,
+                     FT_UInt     glyph_index,
+                     FT_Pointer  buffer,
+                     FT_UInt     buffer_max );
+
+

+
+

Retrieve the ASCII name of a given glyph in a face. This only works for those faces where FT_HAS_GLYPH_NAMES(face) returns 1.

+

+
input
+

+ + + + +
face +

A handle to a source face object.

+
glyph_index +

The glyph index.

+
buffer_max +

The maximal number of bytes available in the buffer.

+
+
+
output
+

+ + +
buffer +

A pointer to a target buffer where the name is copied to.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

An error is returned if the face doesn't provide glyph names or if the glyph index is invalid. In all cases of failure, the first byte of ‘buffer’ is set to 0 to indicate an empty name.

+

The glyph name is truncated to fit within the buffer if it is too long. The returned string is always zero-terminated.

+

This function is not compiled within the library if the config macro ‘FT_CONFIG_OPTION_NO_GLYPH_NAMES’ is defined in ‘include/freetype/config/ftoptions.h’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Postscript_Name

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( const char* )
+  FT_Get_Postscript_Name( FT_Face  face );
+
+

+
+

Retrieve the ASCII PostScript name of a given face, if available. This only works with PostScript and TrueType fonts.

+

+
input
+

+ + +
face +

A handle to the source face object.

+
+
+
return
+

A pointer to the face's PostScript name. NULL if unavailable.

+
+
note
+

The returned pointer is owned by the face and is destroyed with it.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Select_Charmap

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Select_Charmap( FT_Face      face,
+                     FT_Encoding  encoding );
+
+

+
+

Select a given charmap by its encoding tag (as listed in ‘freetype.h’).

+

+
inout
+

+ + +
face +

A handle to the source face object.

+
+
+
input
+

+ + +
encoding +

A handle to the selected encoding.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function returns an error if no charmap in the face corresponds to the encoding queried here.

+

Because many fonts contain more than a single cmap for Unicode encoding, this function has some special code to select the one which covers Unicode best (‘best’ in the sense that a UCS-4 cmap is preferred to a UCS-2 cmap). It is thus preferable to FT_Set_Charmap in this case.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Charmap

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_Charmap( FT_Face     face,
+                  FT_CharMap  charmap );
+
+

+
+

Select a given charmap for character code to glyph index mapping.

+

+
inout
+

+ + +
face +

A handle to the source face object.

+
+
+
input
+

+ + +
charmap +

A handle to the selected charmap.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function returns an error if the charmap is not part of the face (i.e., if it is not listed in the ‘face->charmaps’ table).

+

It also fails if a type 14 charmap is selected.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Charmap_Index

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Int )
+  FT_Get_Charmap_Index( FT_CharMap  charmap );
+
+

+
+

Retrieve index of a given charmap.

+

+
input
+

+ + +
charmap +

A handle to a charmap.

+
+
+
return
+

The index into the array of character maps within the face to which ‘charmap’ belongs.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Char_Index

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_UInt )
+  FT_Get_Char_Index( FT_Face   face,
+                     FT_ULong  charcode );
+
+

+
+

Return the glyph index of a given character code. This function uses a charmap object to do the mapping.

+

+
input
+

+ + + +
face +

A handle to the source face object.

+
charcode +

The character code.

+
+
+
return
+

The glyph index. 0 means ‘undefined character code’.

+
+
note
+

If you use FreeType to manipulate the contents of font files directly, be aware that the glyph index returned by this function doesn't always correspond to the internal indices used within the file. This is done to ensure that value 0 always corresponds to the ‘missing glyph’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_First_Char

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_ULong )
+  FT_Get_First_Char( FT_Face   face,
+                     FT_UInt  *agindex );
+
+

+
+

This function is used to return the first character code in the current charmap of a given face. It also returns the corresponding glyph index.

+

+
input
+

+ + +
face +

A handle to the source face object.

+
+
+
output
+

+ + +
agindex +

Glyph index of first character code. 0 if charmap is empty.

+
+
+
return
+

The charmap's first character code.

+
+
note
+

You should use this function with FT_Get_Next_Char to be able to parse all character codes available in a given charmap. The code should look like this:

+
+  FT_ULong  charcode;                                              
+  FT_UInt   gindex;                                                
+                                                                   
+                                                                   
+  charcode = FT_Get_First_Char( face, &gindex );                   
+  while ( gindex != 0 )                                            
+  {                                                                
+    ... do something with (charcode,gindex) pair ...               
+                                                                   
+    charcode = FT_Get_Next_Char( face, charcode, &gindex );        
+  }                                                                
+
+

Note that ‘*agindex’ is set to 0 if the charmap is empty. The result itself can be 0 in two cases: if the charmap is empty or if the value 0 is the first valid character code.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Next_Char

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_ULong )
+  FT_Get_Next_Char( FT_Face    face,
+                    FT_ULong   char_code,
+                    FT_UInt   *agindex );
+
+

+
+

This function is used to return the next character code in the current charmap of a given face following the value ‘char_code’, as well as the corresponding glyph index.

+

+
input
+

+ + + +
face +

A handle to the source face object.

+
char_code +

The starting character code.

+
+
+
output
+

+ + +
agindex +

Glyph index of next character code. 0 if charmap is empty.

+
+
+
return
+

The charmap's next character code.

+
+
note
+

You should use this function with FT_Get_First_Char to walk over all character codes available in a given charmap. See the note for this function for a simple code example.

+

Note that ‘*agindex’ is set to 0 when there are no more codes in the charmap.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Name_Index

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_UInt )
+  FT_Get_Name_Index( FT_Face     face,
+                     FT_String*  glyph_name );
+
+

+
+

Return the glyph index of a given glyph name. This function uses driver specific objects to do the translation.

+

+
input
+

+ + + +
face +

A handle to the source face object.

+
glyph_name +

The glyph name.

+
+
+
return
+

The glyph index. 0 means ‘undefined character code’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_SUBGLYPH_FLAG_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS          1
+#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES      2
+#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID        4
+#define FT_SUBGLYPH_FLAG_SCALE                   8
+#define FT_SUBGLYPH_FLAG_XY_SCALE             0x40
+#define FT_SUBGLYPH_FLAG_2X2                  0x80
+#define FT_SUBGLYPH_FLAG_USE_MY_METRICS      0x200
+
+

+
+

A list of constants used to describe subglyphs. Please refer to the TrueType specification for the meaning of the various flags.

+

+
values
+

+ + + + + + + + + + + + + +
FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS
+

+
FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES
+

+
FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID
+

+
FT_SUBGLYPH_FLAG_SCALE +

+
FT_SUBGLYPH_FLAG_XY_SCALE
+

+
FT_SUBGLYPH_FLAG_2X2 +

+
FT_SUBGLYPH_FLAG_USE_MY_METRICS
+

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_SubGlyph_Info

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_SubGlyph_Info( FT_GlyphSlot  glyph,
+                        FT_UInt       sub_index,
+                        FT_Int       *p_index,
+                        FT_UInt      *p_flags,
+                        FT_Int       *p_arg1,
+                        FT_Int       *p_arg2,
+                        FT_Matrix    *p_transform );
+
+

+
+

Retrieve a description of a given subglyph. Only use it if ‘glyph->format’ is FT_GLYPH_FORMAT_COMPOSITE; an error is returned otherwise.

+

+
input
+

+ + + +
glyph +

The source glyph slot.

+
sub_index +

The index of the subglyph. Must be less than ‘glyph->num_subglyphs’.

+
+
+
output
+

+ + + + + + +
p_index +

The glyph index of the subglyph.

+
p_flags +

The subglyph flags, see FT_SUBGLYPH_FLAG_XXX.

+
p_arg1 +

The subglyph's first argument (if any).

+
p_arg2 +

The subglyph's second argument (if any).

+
p_transform +

The subglyph transformation (if any).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The values of ‘*p_arg1’, ‘*p_arg2’, and ‘*p_transform’ must be interpreted depending on the flags returned in ‘*p_flags’. See the TrueType specification for details.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_FSTYPE_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FT_FSTYPE_INSTALLABLE_EMBEDDING         0x0000
+#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING  0x0002
+#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING   0x0004
+#define FT_FSTYPE_EDITABLE_EMBEDDING            0x0008
+#define FT_FSTYPE_NO_SUBSETTING                 0x0100
+#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY         0x0200
+
+

+
+

A list of bit flags used in the ‘fsType’ field of the OS/2 table in a TrueType or OpenType font and the ‘FSType’ entry in a PostScript font. These bit flags are returned by FT_Get_FSType_Flags; they inform client applications of embedding and subsetting restrictions associated with a font.

+

See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for more details.

+

+
values
+

+ + + + + + + + + + + + + +
FT_FSTYPE_INSTALLABLE_EMBEDDING
+

Fonts with no fsType bit set may be embedded and permanently installed on the remote system by an application.

+
FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING
+

Fonts that have only this bit set must not be modified, embedded or exchanged in any manner without first obtaining permission of the font software copyright owner.

+
FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING
+

If this bit is set, the font may be embedded and temporarily loaded on the remote system. Documents containing Preview & Print fonts must be opened ‘read-only’; no edits can be applied to the document.

+
FT_FSTYPE_EDITABLE_EMBEDDING
+

If this bit is set, the font may be embedded but must only be installed temporarily on other systems. In contrast to Preview & Print fonts, documents containing editable fonts may be opened for reading, editing is permitted, and changes may be saved.

+
FT_FSTYPE_NO_SUBSETTING
+

If this bit is set, the font may not be subsetted prior to embedding.

+
FT_FSTYPE_BITMAP_EMBEDDING_ONLY
+

If this bit is set, only bitmaps contained in the font may be embedded; no outline data may be embedded. If there are no bitmaps available in the font, then the font is unembeddable.

+
+
+
note
+

While the fsType flags can indicate that a font may be embedded, a license with the font vendor may be separately required to use the font in this way.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_FSType_Flags

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_UShort )
+  FT_Get_FSType_Flags( FT_Face  face );
+
+

+
+

Return the fsType flags for a font.

+

+
input
+

+ + +
face +

A handle to the source face object.

+
+
+
return
+

The fsType flags, FT_FSTYPE_XXX.

+
+
note
+

Use this function rather than directly reading the ‘fs_type’ field in the PS_FontInfoRec structure which is only guaranteed to return the correct results for Type 1 fonts.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-basic_types.html b/src/3rdparty/freetype/docs/reference/ft2-basic_types.html new file mode 100644 index 0000000000..9e77145b6a --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-basic_types.html @@ -0,0 +1,948 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Basic Data Types +

+

Synopsis

+ + + + + + + + + + + + + + + +
FT_ByteFT_OffsetFT_UnitVector
FT_BytesFT_PtrDistFT_F26Dot6
FT_CharFT_StringFT_Pixel_Mode
FT_IntFT_Tagft_pixel_mode_xxx
FT_UIntFT_ErrorFT_Palette_Mode
FT_Int16FT_FixedFT_Bitmap
FT_UInt16FT_PointerFT_IMAGE_TAG
FT_Int32FT_PosFT_Glyph_Format
FT_UInt32FT_Vectorft_glyph_format_xxx
FT_ShortFT_BBoxFT_Data
FT_UShortFT_MatrixFT_Generic_Finalizer
FT_LongFT_FWordFT_Generic
FT_ULongFT_UFWordFT_MAKE_TAG
FT_BoolFT_F2Dot14


+ +
+

This section contains the basic data types defined by FreeType 2, ranging from simple scalar types to bitmap descriptors. More font-specific structures are defined in a different section.

+

+
+

FT_Byte

+
+

A simple typedef for the unsigned char type.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Bytes

+
+

A typedef for constant memory areas.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Char

+
+

A simple typedef for the signed char type.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Int

+
+

A typedef for the int type.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_UInt

+
+

A typedef for the unsigned int type.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Int16

+
+

A typedef for a 16bit signed integer type.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_UInt16

+
+

A typedef for a 16bit unsigned integer type.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Int32

+
+

A typedef for a 32bit signed integer type. The size depends on the configuration.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_UInt32

+
+
+ + +
[Index][TOC]
+ +
+

FT_Short

+
+

A typedef for signed short.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_UShort

+
+

A typedef for unsigned short.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Long

+
+

A typedef for signed long.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ULong

+
+

A typedef for unsigned long.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Bool

+
+

A typedef of unsigned char, used for simple booleans. As usual, values 1 and 0 represent true and false, respectively.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Offset

+
+

This is equivalent to the ANSI C ‘size_t’ type, i.e., the largest unsigned integer type used to express a file size or position, or a memory block size.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_PtrDist

+
+

This is equivalent to the ANSI C ‘ptrdiff_t’ type, i.e., the largest signed integer type used to express the distance between two pointers.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_String

+
+

A simple typedef for the char type, usually used for strings.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Tag

+
+

A typedef for 32-bit tags (as used in the SFNT format).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Error

+
+

The FreeType error code type. A value of 0 is always interpreted as a successful operation.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Fixed

+
+

This type is used to store 16.16 fixed float values, like scaling values or matrix coefficients.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Pointer

+
+

A simple typedef for a typeless pointer.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Pos

+
+

The type FT_Pos is a 32-bit integer used to store vectorial coordinates. Depending on the context, these can represent distances in integer font units, or 16.16, or 26.6 fixed float pixel coordinates.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_Vector_
+  {
+    FT_Pos  x;
+    FT_Pos  y;
+
+  } FT_Vector;
+
+

+
+

A simple structure used to store a 2D vector; coordinates are of the FT_Pos type.

+

+
fields
+

+ + + +
x +

The horizontal coordinate.

+
y +

The vertical coordinate.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_BBox

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_BBox_
+  {
+    FT_Pos  xMin, yMin;
+    FT_Pos  xMax, yMax;
+
+  } FT_BBox;
+
+

+
+

A structure used to hold an outline's bounding box, i.e., the coordinates of its extrema in the horizontal and vertical directions.

+

+
fields
+

+ + + + + +
xMin +

The horizontal minimum (left-most).

+
yMin +

The vertical minimum (bottom-most).

+
xMax +

The horizontal maximum (right-most).

+
yMax +

The vertical maximum (top-most).

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Matrix

+
+Defined in FT_TYPES_H (freetype/fttypes.h). +

+
+
+  typedef struct  FT_Matrix_
+  {
+    FT_Fixed  xx, xy;
+    FT_Fixed  yx, yy;
+
+  } FT_Matrix;
+
+

+
+

A simple structure used to store a 2x2 matrix. Coefficients are in 16.16 fixed float format. The computation performed is:

+
+   x' = x*xx + y*xy                                             
+   y' = x*yx + y*yy                                             
+
+

+
fields
+

+ + + + + +
xx +

Matrix coefficient.

+
xy +

Matrix coefficient.

+
yx +

Matrix coefficient.

+
yy +

Matrix coefficient.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_FWord

+
+

A signed 16-bit integer used to store a distance in original font units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_UFWord

+
+

An unsigned 16-bit integer used to store a distance in original font units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_F2Dot14

+
+

A signed 2.14 fixed float type used for unit vectors.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_UnitVector

+
+Defined in FT_TYPES_H (freetype/fttypes.h). +

+
+
+  typedef struct  FT_UnitVector_
+  {
+    FT_F2Dot14  x;
+    FT_F2Dot14  y;
+
+  } FT_UnitVector;
+
+

+
+

A simple structure used to store a 2D vector unit vector. Uses FT_F2Dot14 types.

+

+
fields
+

+ + + +
x +

Horizontal coordinate.

+
y +

Vertical coordinate.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_F26Dot6

+
+

A signed 26.6 fixed float type used for vectorial pixel coordinates.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Pixel_Mode

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef enum  FT_Pixel_Mode_
+  {
+    FT_PIXEL_MODE_NONE = 0,
+    FT_PIXEL_MODE_MONO,
+    FT_PIXEL_MODE_GRAY,
+    FT_PIXEL_MODE_GRAY2,
+    FT_PIXEL_MODE_GRAY4,
+    FT_PIXEL_MODE_LCD,
+    FT_PIXEL_MODE_LCD_V,
+
+    FT_PIXEL_MODE_MAX      /* do not remove */
+
+  } FT_Pixel_Mode;
+
+

+
+

An enumeration type used to describe the format of pixels in a given bitmap. Note that additional formats may be added in the future.

+

+
values
+

+ + + + + + + + +
FT_PIXEL_MODE_NONE +

Value 0 is reserved.

+
FT_PIXEL_MODE_MONO +

A monochrome bitmap, using 1 bit per pixel. Note that pixels are stored in most-significant order (MSB), which means that the left-most pixel in a byte has value 128.

+
FT_PIXEL_MODE_GRAY +

An 8-bit bitmap, generally used to represent anti-aliased glyph images. Each pixel is stored in one byte. Note that the number of ‘gray’ levels is stored in the ‘num_grays’ field of the FT_Bitmap structure (it generally is 256).

+
FT_PIXEL_MODE_GRAY2 +

A 2-bit per pixel bitmap, used to represent embedded anti-aliased bitmaps in font files according to the OpenType specification. We haven't found a single font using this format, however.

+
FT_PIXEL_MODE_GRAY4 +

A 4-bit per pixel bitmap, representing embedded anti-aliased bitmaps in font files according to the OpenType specification. We haven't found a single font using this format, however.

+
FT_PIXEL_MODE_LCD +

An 8-bit bitmap, representing RGB or BGR decimated glyph images used for display on LCD displays; the bitmap is three times wider than the original glyph image. See also FT_RENDER_MODE_LCD.

+
FT_PIXEL_MODE_LCD_V +

An 8-bit bitmap, representing RGB or BGR decimated glyph images used for display on rotated LCD displays; the bitmap is three times taller than the original glyph image. See also FT_RENDER_MODE_LCD_V.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

ft_pixel_mode_xxx

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+#define ft_pixel_mode_none   FT_PIXEL_MODE_NONE
+#define ft_pixel_mode_mono   FT_PIXEL_MODE_MONO
+#define ft_pixel_mode_grays  FT_PIXEL_MODE_GRAY
+#define ft_pixel_mode_pal2   FT_PIXEL_MODE_GRAY2
+#define ft_pixel_mode_pal4   FT_PIXEL_MODE_GRAY4
+
+

+
+

A list of deprecated constants. Use the corresponding FT_Pixel_Mode values instead.

+

+
values
+

+ + + + + + +
ft_pixel_mode_none +

See FT_PIXEL_MODE_NONE.

+
ft_pixel_mode_mono +

See FT_PIXEL_MODE_MONO.

+
ft_pixel_mode_grays +

See FT_PIXEL_MODE_GRAY.

+
ft_pixel_mode_pal2 +

See FT_PIXEL_MODE_GRAY2.

+
ft_pixel_mode_pal4 +

See FT_PIXEL_MODE_GRAY4.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Palette_Mode

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef enum  FT_Palette_Mode_
+  {
+    ft_palette_mode_rgb = 0,
+    ft_palette_mode_rgba,
+
+    ft_palette_mode_max   /* do not remove */
+
+  } FT_Palette_Mode;
+
+

+
+

THIS TYPE IS DEPRECATED. DO NOT USE IT!

+

An enumeration type to describe the format of a bitmap palette, used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8.

+

+
values
+

+ + + +
ft_palette_mode_rgb +

The palette is an array of 3-byte RGB records.

+
ft_palette_mode_rgba +

The palette is an array of 4-byte RGBA records.

+
+
+
note
+

As ft_pixel_mode_pal2, pal4 and pal8 are currently unused by FreeType, these types are not handled by the library itself.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Bitmap

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_Bitmap_
+  {
+    int             rows;
+    int             width;
+    int             pitch;
+    unsigned char*  buffer;
+    short           num_grays;
+    char            pixel_mode;
+    char            palette_mode;
+    void*           palette;
+
+  } FT_Bitmap;
+
+

+
+

A structure used to describe a bitmap or pixmap to the raster. Note that we now manage pixmaps of various depths through the ‘pixel_mode’ field.

+

+
fields
+

+ + + + + + + + + +
rows +

The number of bitmap rows.

+
width +

The number of pixels in bitmap row.

+
pitch +

The pitch's absolute value is the number of bytes taken by one bitmap row, including padding. However, the pitch is positive when the bitmap has a ‘down’ flow, and negative when it has an ‘up’ flow. In all cases, the pitch is an offset to add to a bitmap pointer in order to go down one row.

+
buffer +

A typeless pointer to the bitmap buffer. This value should be aligned on 32-bit boundaries in most cases.

+
num_grays +

This field is only used with FT_PIXEL_MODE_GRAY; it gives the number of gray levels used in the bitmap.

+
pixel_mode +

The pixel mode, i.e., how pixel bits are stored. See FT_Pixel_Mode for possible values.

+
palette_mode +

This field is intended for paletted pixel modes; it indicates how the palette is stored. Not used currently.

+
palette +

A typeless pointer to the bitmap palette; this field is intended for paletted pixel modes. Not used currently.

+
+
+
note
+

For now, the only pixel modes supported by FreeType are mono and grays. However, drivers might be added in the future to support more ‘colorful’ options.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_IMAGE_TAG

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+#ifndef FT_IMAGE_TAG
+#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 )  \
+          value = ( ( (unsigned long)_x1 << 24 ) | \
+                    ( (unsigned long)_x2 << 16 ) | \
+                    ( (unsigned long)_x3 << 8  ) | \
+                      (unsigned long)_x4         )
+#endif /* FT_IMAGE_TAG */
+
+

+
+

This macro converts four-letter tags to an unsigned long type.

+

+
note
+

Since many 16-bit compilers don't like 32-bit enumerations, you should redefine this macro in case of problems to something like this:

+
+  #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 )  value         
+
+

to get a simple enumeration without assigning special numbers.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_Format

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef enum  FT_Glyph_Format_
+  {
+    FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ),
+
+    FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ),
+    FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP,    'b', 'i', 't', 's' ),
+    FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE,   'o', 'u', 't', 'l' ),
+    FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER,   'p', 'l', 'o', 't' )
+
+  } FT_Glyph_Format;
+
+

+
+

An enumeration type used to describe the format of a given glyph image. Note that this version of FreeType only supports two image formats, even though future font drivers will be able to register their own format.

+

+
values
+

+ + + + + + + + + +
FT_GLYPH_FORMAT_NONE +

The value 0 is reserved.

+
FT_GLYPH_FORMAT_COMPOSITE
+

The glyph image is a composite of several other images. This format is only used with FT_LOAD_NO_RECURSE, and is used to report compound glyphs (like accented characters).

+
FT_GLYPH_FORMAT_BITMAP +

The glyph image is a bitmap, and can be described as an FT_Bitmap. You generally need to access the ‘bitmap’ field of the FT_GlyphSlotRec structure to read it.

+
FT_GLYPH_FORMAT_OUTLINE
+

The glyph image is a vectorial outline made of line segments and Bézier arcs; it can be described as an FT_Outline; you generally want to access the ‘outline’ field of the FT_GlyphSlotRec structure to read it.

+
FT_GLYPH_FORMAT_PLOTTER
+

The glyph image is a vectorial path with no inside and outside contours. Some Type 1 fonts, like those in the Hershey family, contain glyphs in this format. These are described as FT_Outline, but FreeType isn't currently capable of rendering them correctly.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

ft_glyph_format_xxx

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+#define ft_glyph_format_none       FT_GLYPH_FORMAT_NONE
+#define ft_glyph_format_composite  FT_GLYPH_FORMAT_COMPOSITE
+#define ft_glyph_format_bitmap     FT_GLYPH_FORMAT_BITMAP
+#define ft_glyph_format_outline    FT_GLYPH_FORMAT_OUTLINE
+#define ft_glyph_format_plotter    FT_GLYPH_FORMAT_PLOTTER
+
+

+
+

A list of deprecated constants. Use the corresponding FT_Glyph_Format values instead.

+

+
values
+

+ + + + + + + + + +
ft_glyph_format_none +

See FT_GLYPH_FORMAT_NONE.

+
ft_glyph_format_composite
+

See FT_GLYPH_FORMAT_COMPOSITE.

+
ft_glyph_format_bitmap +

See FT_GLYPH_FORMAT_BITMAP.

+
ft_glyph_format_outline
+

See FT_GLYPH_FORMAT_OUTLINE.

+
ft_glyph_format_plotter
+

See FT_GLYPH_FORMAT_PLOTTER.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Data

+
+Defined in FT_TYPES_H (freetype/fttypes.h). +

+
+
+  typedef struct  FT_Data_
+  {
+    const FT_Byte*  pointer;
+    FT_Int          length;
+
+  } FT_Data;
+
+

+
+

Read-only binary data represented as a pointer and a length.

+

+
fields
+

+ + + +
pointer +

The data.

+
length +

The length of the data in bytes.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Generic_Finalizer

+
+

Describe a function used to destroy the ‘client’ data of any FreeType object. See the description of the FT_Generic type for details of usage.

+

+
input
+

The address of the FreeType object which is under finalization. Its client data is accessed through its ‘generic’ field.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Generic

+
+Defined in FT_TYPES_H (freetype/fttypes.h). +

+
+
+  typedef struct  FT_Generic_
+  {
+    void*                 data;
+    FT_Generic_Finalizer  finalizer;
+
+  } FT_Generic;
+
+

+
+

Client applications often need to associate their own data to a variety of FreeType core objects. For example, a text layout API might want to associate a glyph cache to a given size object.

+

Most FreeType object contains a ‘generic’ field, of type FT_Generic, which usage is left to client applications and font servers.

+

It can be used to store a pointer to client-specific data, as well as the address of a ‘finalizer’ function, which will be called by FreeType when the object is destroyed (for example, the previous client example would put the address of the glyph cache destructor in the ‘finalizer’ field).

+

+
fields
+

+ + + +
data +

A typeless pointer to any client-specified data. This field is completely ignored by the FreeType library.

+
finalizer +

A pointer to a ‘generic finalizer’ function, which will be called when the object is destroyed. If this field is set to NULL, no code will be called.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_MAKE_TAG

+
+Defined in FT_TYPES_H (freetype/fttypes.h). +

+
+
+#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
+          ( ( (FT_ULong)_x1 << 24 ) |     \
+            ( (FT_ULong)_x2 << 16 ) |     \
+            ( (FT_ULong)_x3 <<  8 ) |     \
+              (FT_ULong)_x4         )
+
+

+
+

This macro converts four-letter tags which are used to label TrueType tables into an unsigned long to be used within FreeType.

+

+
note
+

The produced values must be 32-bit integers. Don't redefine this macro.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html new file mode 100644 index 0000000000..e7bf5a09bd --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html @@ -0,0 +1,252 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+BDF and PCF Files +

+

Synopsis

+ + + +
FT_PropertyTypeBDF_PropertyRecFT_Get_BDF_Property
BDF_PropertyFT_Get_BDF_Charset_ID


+ +
+

This section contains the declaration of functions specific to BDF and PCF fonts.

+

+
+

FT_PropertyType

+
+Defined in FT_BDF_H (freetype/ftbdf.h). +

+
+
+  typedef enum  BDF_PropertyType_
+  {
+    BDF_PROPERTY_TYPE_NONE     = 0,
+    BDF_PROPERTY_TYPE_ATOM     = 1,
+    BDF_PROPERTY_TYPE_INTEGER  = 2,
+    BDF_PROPERTY_TYPE_CARDINAL = 3
+
+  } BDF_PropertyType;
+
+

+
+

A list of BDF property types.

+

+
values
+

+ + + + + + + +
BDF_PROPERTY_TYPE_NONE +

Value 0 is used to indicate a missing property.

+
BDF_PROPERTY_TYPE_ATOM +

Property is a string atom.

+
BDF_PROPERTY_TYPE_INTEGER
+

Property is a 32-bit signed integer.

+
BDF_PROPERTY_TYPE_CARDINAL
+

Property is a 32-bit unsigned integer.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

BDF_Property

+
+

A handle to a BDF_PropertyRec structure to model a given BDF/PCF property.

+

+
+
+ + +
[Index][TOC]
+ +
+

BDF_PropertyRec

+
+Defined in FT_BDF_H (freetype/ftbdf.h). +

+
+
+  typedef struct  BDF_PropertyRec_
+  {
+    BDF_PropertyType  type;
+    union {
+      const char*     atom;
+      FT_Int32        integer;
+      FT_UInt32       cardinal;
+
+    } u;
+
+  } BDF_PropertyRec;
+
+

+
+

This structure models a given BDF/PCF property.

+

+
fields
+

+ + + + + +
type +

The property type.

+
u.atom +

The atom string, if type is BDF_PROPERTY_TYPE_ATOM.

+
u.integer +

A signed integer, if type is BDF_PROPERTY_TYPE_INTEGER.

+
u.cardinal +

An unsigned integer, if type is BDF_PROPERTY_TYPE_CARDINAL.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_BDF_Charset_ID

+
+Defined in FT_BDF_H (freetype/ftbdf.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_BDF_Charset_ID( FT_Face       face,
+                         const char*  *acharset_encoding,
+                         const char*  *acharset_registry );
+
+

+
+

Retrieve a BDF font character set identity, according to the BDF specification.

+

+
input
+

+ + +
face +

A handle to the input face.

+
+
+
output
+

+ + + +
acharset_encoding +

Charset encoding, as a C string, owned by the face.

+
acharset_registry +

Charset registry, as a C string, owned by the face.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function only works with BDF faces, returning an error otherwise.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_BDF_Property

+
+Defined in FT_BDF_H (freetype/ftbdf.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_BDF_Property( FT_Face           face,
+                       const char*       prop_name,
+                       BDF_PropertyRec  *aproperty );
+
+

+
+

Retrieve a BDF property from a BDF or PCF font file.

+

+
input
+

+ + + +
face +

A handle to the input face.

+
name +

The property name.

+
+
+
output
+

+ + +
aproperty +

The property.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function works with BDF and PCF fonts. It returns an error otherwise. It also returns an error if the property is not in the font.

+

A ‘property’ is a either key-value pair within the STARTPROPERTIES ... ENDPROPERTIES block of a BDF font or a key-value pair from the ‘info->props’ array within a ‘FontRec’ structure of a PCF font.

+

Integer properties are always stored as ‘signed’ within PCF fonts; consequently, BDF_PROPERTY_TYPE_CARDINAL is a possible return value for BDF fonts only.

+

In case of error, ‘aproperty->type’ is always set to BDF_PROPERTY_TYPE_NONE.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html b/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html new file mode 100644 index 0000000000..5fd64d7a00 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html @@ -0,0 +1,302 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Bitmap Handling +

+

Synopsis

+ + + +
FT_Bitmap_NewFT_Bitmap_EmboldenFT_GlyphSlot_Own_Bitmap
FT_Bitmap_CopyFT_Bitmap_ConvertFT_Bitmap_Done


+ +
+

This section contains functions for converting FT_Bitmap objects.

+

+
+

FT_Bitmap_New

+
+Defined in FT_BITMAP_H (freetype/ftbitmap.h). +

+
+
+  FT_EXPORT( void )
+  FT_Bitmap_New( FT_Bitmap  *abitmap );
+
+

+
+

Initialize a pointer to an FT_Bitmap structure.

+

+
inout
+

+ + +
abitmap +

A pointer to the bitmap structure.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Bitmap_Copy

+
+Defined in FT_BITMAP_H (freetype/ftbitmap.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Bitmap_Copy( FT_Library        library,
+                  const FT_Bitmap  *source,
+                  FT_Bitmap        *target);
+
+

+
+

Copy a bitmap into another one.

+

+
input
+

+ + + +
library +

A handle to a library object.

+
source +

A handle to the source bitmap.

+
+
+
output
+

+ + +
target +

A handle to the target bitmap.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Bitmap_Embolden

+
+Defined in FT_BITMAP_H (freetype/ftbitmap.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Bitmap_Embolden( FT_Library  library,
+                      FT_Bitmap*  bitmap,
+                      FT_Pos      xStrength,
+                      FT_Pos      yStrength );
+
+

+
+

Embolden a bitmap. The new bitmap will be about ‘xStrength’ pixels wider and ‘yStrength’ pixels higher. The left and bottom borders are kept unchanged.

+

+
input
+

+ + + + +
library +

A handle to a library object.

+
xStrength +

How strong the glyph is emboldened horizontally. Expressed in 26.6 pixel format.

+
yStrength +

How strong the glyph is emboldened vertically. Expressed in 26.6 pixel format.

+
+
+
inout
+

+ + +
bitmap +

A handle to the target bitmap.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The current implementation restricts ‘xStrength’ to be less than or equal to 8 if bitmap is of pixel_mode FT_PIXEL_MODE_MONO.

+

If you want to embolden the bitmap owned by a FT_GlyphSlotRec, you should call FT_GlyphSlot_Own_Bitmap on the slot first.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Bitmap_Convert

+
+Defined in FT_BITMAP_H (freetype/ftbitmap.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Bitmap_Convert( FT_Library        library,
+                     const FT_Bitmap  *source,
+                     FT_Bitmap        *target,
+                     FT_Int            alignment );
+
+

+
+

Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a bitmap object with depth 8bpp, making the number of used bytes per line (a.k.a. the ‘pitch’) a multiple of ‘alignment’.

+

+
input
+

+ + + + +
library +

A handle to a library object.

+
source +

The source bitmap.

+
alignment +

The pitch of the bitmap is a multiple of this parameter. Common values are 1, 2, or 4.

+
+
+
output
+

+ + +
target +

The target bitmap.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

It is possible to call FT_Bitmap_Convert multiple times without calling FT_Bitmap_Done (the memory is simply reallocated).

+

Use FT_Bitmap_Done to finally remove the bitmap object.

+

The ‘library’ argument is taken to have access to FreeType's memory handling functions.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_GlyphSlot_Own_Bitmap

+
+Defined in FT_BITMAP_H (freetype/ftbitmap.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot );
+
+

+
+

Make sure that a glyph slot owns ‘slot->bitmap’.

+

+
input
+

+ + +
slot +

The glyph slot.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function is to be used in combination with FT_Bitmap_Embolden.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Bitmap_Done

+
+Defined in FT_BITMAP_H (freetype/ftbitmap.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Bitmap_Done( FT_Library  library,
+                  FT_Bitmap  *bitmap );
+
+

+
+

Destroy a bitmap object created with FT_Bitmap_New.

+

+
input
+

+ + + +
library +

A handle to a library object.

+
bitmap +

The bitmap object to be freed.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The ‘library’ argument is taken to have access to FreeType's memory handling functions.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html b/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html new file mode 100644 index 0000000000..8cf3b5a855 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html @@ -0,0 +1,1098 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Cache Sub-System +

+

Synopsis

+ + + + + + + + + + + + + + + +
FTC_ManagerFTC_CMapCache_New
FTC_FaceIDFTC_CMapCache_Lookup
FTC_Face_RequesterFTC_ImageTypeRec
FTC_NodeFTC_ImageType
FTC_Manager_NewFTC_ImageCache
FTC_Manager_ResetFTC_ImageCache_New
FTC_Manager_DoneFTC_ImageCache_Lookup
FTC_Manager_LookupFaceFTC_ImageCache_LookupScaler
FTC_ScalerRecFTC_SBit
FTC_ScalerFTC_SBitRec
FTC_Manager_LookupSizeFTC_SBitCache
FTC_Node_UnrefFTC_SBitCache_New
FTC_Manager_RemoveFaceIDFTC_SBitCache_Lookup
FTC_CMapCacheFTC_SBitCache_LookupScaler


+ +
+

This section describes the FreeType 2 cache sub-system, which is used to limit the number of concurrently opened FT_Face and FT_Size objects, as well as caching information like character maps and glyph images while limiting their maximum memory usage.

+

Note that all types and functions begin with the ‘FTC_’ prefix.

+

The cache is highly portable and thus doesn't know anything about the fonts installed on your system, or how to access them. This implies the following scheme:

+

First, available or installed font faces are uniquely identified by FTC_FaceID values, provided to the cache by the client. Note that the cache only stores and compares these values, and doesn't try to interpret them in any way.

+

Second, the cache calls, only when needed, a client-provided function to convert a FTC_FaceID into a new FT_Face object. The latter is then completely managed by the cache, including its termination through FT_Done_Face.

+

Clients are free to map face IDs to anything else. The most simple usage is to associate them to a (pathname,face_index) pair that is used to call FT_New_Face. However, more complex schemes are also possible.

+

Note that for the cache to work correctly, the face ID values must be persistent, which means that the contents they point to should not change at runtime, or that their value should not become invalid.

+

If this is unavoidable (e.g., when a font is uninstalled at runtime), you should call FTC_Manager_RemoveFaceID as soon as possible, to let the cache get rid of any references to the old FTC_FaceID it may keep internally. Failure to do so will lead to incorrect behaviour or even crashes.

+

To use the cache, start with calling FTC_Manager_New to create a new FTC_Manager object, which models a single cache instance. You can then look up FT_Face and FT_Size objects with FTC_Manager_LookupFace and FTC_Manager_LookupSize, respectively.

+

If you want to use the charmap caching, call FTC_CMapCache_New, then later use FTC_CMapCache_Lookup to perform the equivalent of FT_Get_Char_Index, only much faster.

+

If you want to use the FT_Glyph caching, call FTC_ImageCache, then later use FTC_ImageCache_Lookup to retrieve the corresponding FT_Glyph objects from the cache.

+

If you need lots of small bitmaps, it is much more memory efficient to call FTC_SBitCache_New followed by FTC_SBitCache_Lookup. This returns FTC_SBitRec structures, which are used to store small bitmaps directly. (A small bitmap is one whose metrics and dimensions all fit into 8-bit integers).

+

We hope to also provide a kerning cache in the near future.

+

+
+

FTC_Manager

+
+

This object corresponds to one instance of the cache-subsystem. It is used to cache one or more FT_Face objects, along with corresponding FT_Size objects.

+

The manager intentionally limits the total number of opened FT_Face and FT_Size objects to control memory usage. See the ‘max_faces’ and ‘max_sizes’ parameters of FTC_Manager_New.

+

The manager is also used to cache ‘nodes’ of various types while limiting their total memory usage.

+

All limitations are enforced by keeping lists of managed objects in most-recently-used order, and flushing old nodes to make room for new ones.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_FaceID

+
+

An opaque pointer type that is used to identity face objects. The contents of such objects is application-dependent.

+

These pointers are typically used to point to a user-defined structure containing a font file path, and face index.

+

+
note
+

Never use NULL as a valid FTC_FaceID.

+

Face IDs are passed by the client to the cache manager, which calls, when needed, the FTC_Face_Requester to translate them into new FT_Face objects.

+

If the content of a given face ID changes at runtime, or if the value becomes invalid (e.g., when uninstalling a font), you should immediately call FTC_Manager_RemoveFaceID before any other cache function.

+

Failure to do so will result in incorrect behaviour or even memory leaks and crashes.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Face_Requester

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  typedef FT_Error
+  (*FTC_Face_Requester)( FTC_FaceID  face_id,
+                         FT_Library  library,
+                         FT_Pointer  request_data,
+                         FT_Face*    aface );
+
+

+
+

A callback function provided by client applications. It is used by the cache manager to translate a given FTC_FaceID into a new valid FT_Face object, on demand.

+

+
input
+

+ + + + +
face_id +

The face ID to resolve.

+
library +

A handle to a FreeType library object.

+
req_data +

Application-provided request data (see note below).

+
+
+
output
+

+ + +
aface +

A new FT_Face handle.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The third parameter ‘req_data’ is the same as the one passed by the client when FTC_Manager_New is called.

+

The face requester should not perform funny things on the returned face object, like creating a new FT_Size for it, or setting a transformation through FT_Set_Transform!

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Node

+
+

An opaque handle to a cache node object. Each cache node is reference-counted. A node with a count of 0 might be flushed out of a full cache whenever a lookup request is performed.

+

If you lookup nodes, you have the ability to ‘acquire’ them, i.e., to increment their reference count. This will prevent the node from being flushed out of the cache until you explicitly ‘release’ it (see FTC_Node_Unref).

+

See also FTC_SBitCache_Lookup and FTC_ImageCache_Lookup.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_Manager_New

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_Manager_New( FT_Library          library,
+                   FT_UInt             max_faces,
+                   FT_UInt             max_sizes,
+                   FT_ULong            max_bytes,
+                   FTC_Face_Requester  requester,
+                   FT_Pointer          req_data,
+                   FTC_Manager        *amanager );
+
+

+
+

Create a new cache manager.

+

+
input
+

+ + + + + + + +
library +

The parent FreeType library handle to use.

+
max_faces +

Maximum number of opened FT_Face objects managed by this cache instance. Use 0 for defaults.

+
max_sizes +

Maximum number of opened FT_Size objects managed by this cache instance. Use 0 for defaults.

+
max_bytes +

Maximum number of bytes to use for cached data nodes. Use 0 for defaults. Note that this value does not account for managed FT_Face and FT_Size objects.

+
requester +

An application-provided callback used to translate face IDs into real FT_Face objects.

+
req_data +

A generic pointer that is passed to the requester each time it is called (see FTC_Face_Requester).

+
+
+
output
+

+ + +
amanager +

A handle to a new manager object. 0 in case of failure.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Manager_Reset

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( void )
+  FTC_Manager_Reset( FTC_Manager  manager );
+
+

+
+

Empty a given cache manager. This simply gets rid of all the currently cached FT_Face and FT_Size objects within the manager.

+

+
inout
+

+ + +
manager +

A handle to the manager.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Manager_Done

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( void )
+  FTC_Manager_Done( FTC_Manager  manager );
+
+

+
+

Destroy a given manager after emptying it.

+

+
input
+

+ + +
manager +

A handle to the target cache manager object.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Manager_LookupFace

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_Manager_LookupFace( FTC_Manager  manager,
+                          FTC_FaceID   face_id,
+                          FT_Face     *aface );
+
+

+
+

Retrieve the FT_Face object that corresponds to a given face ID through a cache manager.

+

+
input
+

+ + + +
manager +

A handle to the cache manager.

+
face_id +

The ID of the face object.

+
+
+
output
+

+ + +
aface +

A handle to the face object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The returned FT_Face object is always owned by the manager. You should never try to discard it yourself.

+

The FT_Face object doesn't necessarily have a current size object (i.e., face->size can be 0). If you need a specific ‘font size’, use FTC_Manager_LookupSize instead.

+

Never change the face's transformation matrix (i.e., never call the FT_Set_Transform function) on a returned face! If you need to transform glyphs, do it yourself after glyph loading.

+

When you perform a lookup, out-of-memory errors are detected within the lookup and force incremental flushes of the cache until enough memory is released for the lookup to succeed.

+

If a lookup fails with ‘FT_Err_Out_Of_Memory’ the cache has already been completely flushed, and still no memory was available for the operation.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_ScalerRec

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  typedef struct  FTC_ScalerRec_
+  {
+    FTC_FaceID  face_id;
+    FT_UInt     width;
+    FT_UInt     height;
+    FT_Int      pixel;
+    FT_UInt     x_res;
+    FT_UInt     y_res;
+
+  } FTC_ScalerRec;
+
+

+
+

A structure used to describe a given character size in either pixels or points to the cache manager. See FTC_Manager_LookupSize.

+

+
fields
+

+ + + + + + + +
face_id +

The source face ID.

+
width +

The character width.

+
height +

The character height.

+
pixel +

A Boolean. If 1, the ‘width’ and ‘height’ fields are interpreted as integer pixel character sizes. Otherwise, they are expressed as 1/64th of points.

+
x_res +

Only used when ‘pixel’ is value 0 to indicate the horizontal resolution in dpi.

+
y_res +

Only used when ‘pixel’ is value 0 to indicate the vertical resolution in dpi.

+
+
+
note
+

This type is mainly used to retrieve FT_Size objects through the cache manager.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Scaler

+
+

A handle to an FTC_ScalerRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_Manager_LookupSize

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_Manager_LookupSize( FTC_Manager  manager,
+                          FTC_Scaler   scaler,
+                          FT_Size     *asize );
+
+

+
+

Retrieve the FT_Size object that corresponds to a given FTC_ScalerRec pointer through a cache manager.

+

+
input
+

+ + + +
manager +

A handle to the cache manager.

+
scaler +

A scaler handle.

+
+
+
output
+

+ + +
asize +

A handle to the size object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The returned FT_Size object is always owned by the manager. You should never try to discard it by yourself.

+

You can access the parent FT_Face object simply as ‘size->face’ if you need it. Note that this object is also owned by the manager.

+
+
note
+

When you perform a lookup, out-of-memory errors are detected within the lookup and force incremental flushes of the cache until enough memory is released for the lookup to succeed.

+

If a lookup fails with ‘FT_Err_Out_Of_Memory’ the cache has already been completely flushed, and still no memory is available for the operation.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Node_Unref

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( void )
+  FTC_Node_Unref( FTC_Node     node,
+                  FTC_Manager  manager );
+
+

+
+

Decrement a cache node's internal reference count. When the count reaches 0, it is not destroyed but becomes eligible for subsequent cache flushes.

+

+
input
+

+ + + +
node +

The cache node handle.

+
manager +

The cache manager handle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_Manager_RemoveFaceID

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( void )
+  FTC_Manager_RemoveFaceID( FTC_Manager  manager,
+                            FTC_FaceID   face_id );
+
+

+
+

A special function used to indicate to the cache manager that a given FTC_FaceID is no longer valid, either because its content changed, or because it was deallocated or uninstalled.

+

+
input
+

+ + + +
manager +

The cache manager handle.

+
face_id +

The FTC_FaceID to be removed.

+
+
+
note
+

This function flushes all nodes from the cache corresponding to this ‘face_id’, with the exception of nodes with a non-null reference count.

+

Such nodes are however modified internally so as to never appear in later lookups with the same ‘face_id’ value, and to be immediately destroyed when released by all their users.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_CMapCache

+
+

An opaque handle used to model a charmap cache. This cache is to hold character codes -> glyph indices mappings.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_CMapCache_New

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_CMapCache_New( FTC_Manager     manager,
+                     FTC_CMapCache  *acache );
+
+

+
+

Create a new charmap cache.

+

+
input
+

+ + +
manager +

A handle to the cache manager.

+
+
+
output
+

+ + +
acache +

A new cache handle. NULL in case of error.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

Like all other caches, this one will be destroyed with the cache manager.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_CMapCache_Lookup

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_UInt )
+  FTC_CMapCache_Lookup( FTC_CMapCache  cache,
+                        FTC_FaceID     face_id,
+                        FT_Int         cmap_index,
+                        FT_UInt32      char_code );
+
+

+
+

Translate a character code into a glyph index, using the charmap cache.

+

+
input
+

+ + + + + +
cache +

A charmap cache handle.

+
face_id +

The source face ID.

+
cmap_index +

The index of the charmap in the source face. Any negative value means to use the cache FT_Face's default charmap.

+
char_code +

The character code (in the corresponding charmap).

+
+
+
return
+

Glyph index. 0 means ‘no glyph’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_ImageTypeRec

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  typedef struct  FTC_ImageTypeRec_
+  {
+    FTC_FaceID  face_id;
+    FT_Int      width;
+    FT_Int      height;
+    FT_Int32    flags;
+
+  } FTC_ImageTypeRec;
+
+

+
+

A structure used to model the type of images in a glyph cache.

+

+
fields
+

+ + + + + +
face_id +

The face ID.

+
width +

The width in pixels.

+
height +

The height in pixels.

+
flags +

The load flags, as in FT_Load_Glyph.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_ImageType

+
+

A handle to an FTC_ImageTypeRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_ImageCache

+
+

A handle to an glyph image cache object. They are designed to hold many distinct glyph images while not exceeding a certain memory threshold.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_ImageCache_New

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_ImageCache_New( FTC_Manager      manager,
+                      FTC_ImageCache  *acache );
+
+

+
+

Create a new glyph image cache.

+

+
input
+

+ + +
manager +

The parent manager for the image cache.

+
+
+
output
+

+ + +
acache +

A handle to the new glyph image cache object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_ImageCache_Lookup

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_ImageCache_Lookup( FTC_ImageCache  cache,
+                         FTC_ImageType   type,
+                         FT_UInt         gindex,
+                         FT_Glyph       *aglyph,
+                         FTC_Node       *anode );
+
+

+
+

Retrieve a given glyph image from a glyph image cache.

+

+
input
+

+ + + + +
cache +

A handle to the source glyph image cache.

+
type +

A pointer to a glyph image type descriptor.

+
gindex +

The glyph index to retrieve.

+
+
+
output
+

+ + + +
aglyph +

The corresponding FT_Glyph object. 0 in case of failure.

+
anode +

Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The returned glyph is owned and managed by the glyph image cache. Never try to transform or discard it manually! You can however create a copy with FT_Glyph_Copy and modify the new one.

+

If ‘anode’ is not NULL, it receives the address of the cache node containing the glyph image, after increasing its reference count. This ensures that the node (as well as the FT_Glyph) will always be kept in the cache until you call FTC_Node_Unref to ‘release’ it.

+

If ‘anode’ is NULL, the cache node is left unchanged, which means that the FT_Glyph could be flushed out of the cache on the next call to one of the caching sub-system APIs. Don't assume that it is persistent!

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_ImageCache_LookupScaler

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_ImageCache_LookupScaler( FTC_ImageCache  cache,
+                               FTC_Scaler      scaler,
+                               FT_ULong        load_flags,
+                               FT_UInt         gindex,
+                               FT_Glyph       *aglyph,
+                               FTC_Node       *anode );
+
+

+
+

A variant of FTC_ImageCache_Lookup that uses an FTC_ScalerRec to specify the face ID and its size.

+

+
input
+

+ + + + + +
cache +

A handle to the source glyph image cache.

+
scaler +

A pointer to a scaler descriptor.

+
load_flags +

The corresponding load flags.

+
gindex +

The glyph index to retrieve.

+
+
+
output
+

+ + + +
aglyph +

The corresponding FT_Glyph object. 0 in case of failure.

+
anode +

Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The returned glyph is owned and managed by the glyph image cache. Never try to transform or discard it manually! You can however create a copy with FT_Glyph_Copy and modify the new one.

+

If ‘anode’ is not NULL, it receives the address of the cache node containing the glyph image, after increasing its reference count. This ensures that the node (as well as the FT_Glyph) will always be kept in the cache until you call FTC_Node_Unref to ‘release’ it.

+

If ‘anode’ is NULL, the cache node is left unchanged, which means that the FT_Glyph could be flushed out of the cache on the next call to one of the caching sub-system APIs. Don't assume that it is persistent!

+

Calls to FT_Set_Char_Size and friends have no effect on cached glyphs; you should always use the FreeType cache API instead.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_SBit

+
+

A handle to a small bitmap descriptor. See the FTC_SBitRec structure for details.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_SBitRec

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  typedef struct  FTC_SBitRec_
+  {
+    FT_Byte   width;
+    FT_Byte   height;
+    FT_Char   left;
+    FT_Char   top;
+
+    FT_Byte   format;
+    FT_Byte   max_grays;
+    FT_Short  pitch;
+    FT_Char   xadvance;
+    FT_Char   yadvance;
+
+    FT_Byte*  buffer;
+
+  } FTC_SBitRec;
+
+

+
+

A very compact structure used to describe a small glyph bitmap.

+

+
fields
+

+ + + + + + + + + + + +
width +

The bitmap width in pixels.

+
height +

The bitmap height in pixels.

+
left +

The horizontal distance from the pen position to the left bitmap border (a.k.a. ‘left side bearing’, or ‘lsb’).

+
top +

The vertical distance from the pen position (on the baseline) to the upper bitmap border (a.k.a. ‘top side bearing’). The distance is positive for upwards y coordinates.

+
format +

The format of the glyph bitmap (monochrome or gray).

+
max_grays +

Maximum gray level value (in the range 1 to 255).

+
pitch +

The number of bytes per bitmap line. May be positive or negative.

+
xadvance +

The horizontal advance width in pixels.

+
yadvance +

The vertical advance height in pixels.

+
buffer +

A pointer to the bitmap pixels.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_SBitCache

+
+

A handle to a small bitmap cache. These are special cache objects used to store small glyph bitmaps (and anti-aliased pixmaps) in a much more efficient way than the traditional glyph image cache implemented by FTC_ImageCache.

+

+
+
+ + +
[Index][TOC]
+ +
+

FTC_SBitCache_New

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_SBitCache_New( FTC_Manager     manager,
+                     FTC_SBitCache  *acache );
+
+

+
+

Create a new cache to store small glyph bitmaps.

+

+
input
+

+ + +
manager +

A handle to the source cache manager.

+
+
+
output
+

+ + +
acache +

A handle to the new sbit cache. NULL in case of error.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_SBitCache_Lookup

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_SBitCache_Lookup( FTC_SBitCache    cache,
+                        FTC_ImageType    type,
+                        FT_UInt          gindex,
+                        FTC_SBit        *sbit,
+                        FTC_Node        *anode );
+
+

+
+

Look up a given small glyph bitmap in a given sbit cache and ‘lock’ it to prevent its flushing from the cache until needed.

+

+
input
+

+ + + + +
cache +

A handle to the source sbit cache.

+
type +

A pointer to the glyph image type descriptor.

+
gindex +

The glyph index.

+
+
+
output
+

+ + + +
sbit +

A handle to a small bitmap descriptor.

+
anode +

Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The small bitmap descriptor and its bit buffer are owned by the cache and should never be freed by the application. They might as well disappear from memory on the next cache lookup, so don't treat them as persistent data.

+

The descriptor's ‘buffer’ field is set to 0 to indicate a missing glyph bitmap.

+

If ‘anode’ is not NULL, it receives the address of the cache node containing the bitmap, after increasing its reference count. This ensures that the node (as well as the image) will always be kept in the cache until you call FTC_Node_Unref to ‘release’ it.

+

If ‘anode’ is NULL, the cache node is left unchanged, which means that the bitmap could be flushed out of the cache on the next call to one of the caching sub-system APIs. Don't assume that it is persistent!

+
+
+
+ + +
[Index][TOC]
+ +
+

FTC_SBitCache_LookupScaler

+
+Defined in FT_CACHE_H (freetype/ftcache.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FTC_SBitCache_LookupScaler( FTC_SBitCache  cache,
+                              FTC_Scaler     scaler,
+                              FT_ULong       load_flags,
+                              FT_UInt        gindex,
+                              FTC_SBit      *sbit,
+                              FTC_Node      *anode );
+
+

+
+

A variant of FTC_SBitCache_Lookup that uses an FTC_ScalerRec to specify the face ID and its size.

+

+
input
+

+ + + + + +
cache +

A handle to the source sbit cache.

+
scaler +

A pointer to the scaler descriptor.

+
load_flags +

The corresponding load flags.

+
gindex +

The glyph index.

+
+
+
output
+

+ + + +
sbit +

A handle to a small bitmap descriptor.

+
anode +

Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The small bitmap descriptor and its bit buffer are owned by the cache and should never be freed by the application. They might as well disappear from memory on the next cache lookup, so don't treat them as persistent data.

+

The descriptor's ‘buffer’ field is set to 0 to indicate a missing glyph bitmap.

+

If ‘anode’ is not NULL, it receives the address of the cache node containing the bitmap, after increasing its reference count. This ensures that the node (as well as the image) will always be kept in the cache until you call FTC_Node_Unref to ‘release’ it.

+

If ‘anode’ is NULL, the cache node is left unchanged, which means that the bitmap could be flushed out of the cache on the next call to one of the caching sub-system APIs. Don't assume that it is persistent!

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html new file mode 100644 index 0000000000..2749e55047 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html @@ -0,0 +1,204 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+CID Fonts +

+

Synopsis

+ + + + +
FT_Get_CID_Registry_Ordering_Supplement
FT_Get_CID_Is_Internally_CID_Keyed
FT_Get_CID_From_Glyph_Index


+ +
+

This section contains the declaration of CID-keyed font specific functions.

+

+
+

FT_Get_CID_Registry_Ordering_Supplement

+
+Defined in FT_CID_H (freetype/ftcid.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_CID_Registry_Ordering_Supplement( FT_Face       face,
+                                           const char*  *registry,
+                                           const char*  *ordering,
+                                           FT_Int       *supplement);
+
+

+
+

Retrieve the Registry/Ordering/Supplement triple (also known as the "R/O/S") from a CID-keyed font.

+

+
input
+

+ + +
face +

A handle to the input face.

+
+
+
output
+

+ + + + +
registry +

The registry, as a C string, owned by the face.

+
ordering +

The ordering, as a C string, owned by the face.

+
supplement +

The supplement.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function only works with CID faces, returning an error otherwise.

+
+
since
+

2.3.6

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_CID_Is_Internally_CID_Keyed

+
+Defined in FT_CID_H (freetype/ftcid.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_CID_Is_Internally_CID_Keyed( FT_Face   face,
+                                      FT_Bool  *is_cid );
+
+

+
+

Retrieve the type of the input face, CID keyed or not. In constrast to the FT_IS_CID_KEYED macro this function returns successfully also for CID-keyed fonts in an SNFT wrapper.

+

+
input
+

+ + +
face +

A handle to the input face.

+
+
+
output
+

+ + +
is_cid +

The type of the face as an FT_Bool.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function only works with CID faces and OpenType fonts, returning an error otherwise.

+
+
since
+

2.3.9

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_CID_From_Glyph_Index

+
+Defined in FT_CID_H (freetype/ftcid.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_CID_From_Glyph_Index( FT_Face   face,
+                               FT_UInt   glyph_index,
+                               FT_UInt  *cid );
+
+

+
+

Retrieve the CID of the input glyph index.

+

+
input
+

+ + + +
face +

A handle to the input face.

+
glyph_index +

The input glyph index.

+
+
+
output
+

+ + +
cid +

The CID as an FT_UInt.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function only works with CID faces and OpenType fonts, returning an error otherwise.

+
+
since
+

2.3.9

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-computations.html b/src/3rdparty/freetype/docs/reference/ft2-computations.html new file mode 100644 index 0000000000..608139011c --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-computations.html @@ -0,0 +1,792 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Computations +

+

Synopsis

+ + + + + + + + + +
FT_MulDivFT_Matrix_InvertFT_Tan
FT_MulFixFT_AngleFT_Atan2
FT_DivFixFT_ANGLE_PIFT_Angle_Diff
FT_RoundFixFT_ANGLE_2PIFT_Vector_Unit
FT_CeilFixFT_ANGLE_PI2FT_Vector_Rotate
FT_FloorFixFT_ANGLE_PI4FT_Vector_Length
FT_Vector_TransformFT_SinFT_Vector_Polarize
FT_Matrix_MultiplyFT_CosFT_Vector_From_Polar


+ +
+

This section contains various functions used to perform computations on 16.16 fixed-float numbers or 2d vectors.

+

+
+

FT_MulDiv

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Long )
+  FT_MulDiv( FT_Long  a,
+             FT_Long  b,
+             FT_Long  c );
+
+

+
+

A very simple function used to perform the computation ‘(a*b)/c’ with maximal accuracy (it uses a 64-bit intermediate integer whenever necessary).

+

This function isn't necessarily as fast as some processor specific operations, but is at least completely portable.

+

+
input
+

+ + + + +
a +

The first multiplier.

+
b +

The second multiplier.

+
c +

The divisor.

+
+
+
return
+

The result of ‘(a*b)/c’. This function never traps when trying to divide by zero; it simply returns ‘MaxInt’ or ‘MinInt’ depending on the signs of ‘a’ and ‘b’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_MulFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Long )
+  FT_MulFix( FT_Long  a,
+             FT_Long  b );
+
+

+
+

A very simple function used to perform the computation ‘(a*b)/0x10000’ with maximal accuracy. Most of the time this is used to multiply a given value by a 16.16 fixed float factor.

+

+
input
+

+ + + +
a +

The first multiplier.

+
b +

The second multiplier. Use a 16.16 factor here whenever possible (see note below).

+
+
+
return
+

The result of ‘(a*b)/0x10000’.

+
+
note
+

This function has been optimized for the case where the absolute value of ‘a’ is less than 2048, and ‘b’ is a 16.16 scaling factor. As this happens mainly when scaling from notional units to fractional pixels in FreeType, it resulted in noticeable speed improvements between versions 2.x and 1.x.

+

As a conclusion, always try to place a 16.16 factor as the second argument of this function; this can make a great difference.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_DivFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Long )
+  FT_DivFix( FT_Long  a,
+             FT_Long  b );
+
+

+
+

A very simple function used to perform the computation ‘(a*0x10000)/b’ with maximal accuracy. Most of the time, this is used to divide a given value by a 16.16 fixed float factor.

+

+
input
+

+ + + +
a +

The first multiplier.

+
b +

The second multiplier. Use a 16.16 factor here whenever possible (see note below).

+
+
+
return
+

The result of ‘(a*0x10000)/b’.

+
+
note
+

The optimization for FT_DivFix() is simple: If (a << 16) fits in 32 bits, then the division is computed directly. Otherwise, we use a specialized version of FT_MulDiv.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_RoundFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_RoundFix( FT_Fixed  a );
+
+

+
+

A very simple function used to round a 16.16 fixed number.

+

+
input
+

+ + +
a +

The number to be rounded.

+
+
+
return
+

The result of ‘(a + 0x8000) & -0x10000’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_CeilFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_CeilFix( FT_Fixed  a );
+
+

+
+

A very simple function used to compute the ceiling function of a 16.16 fixed number.

+

+
input
+

+ + +
a +

The number for which the ceiling function is to be computed.

+
+
+
return
+

The result of ‘(a + 0x10000 - 1) & -0x10000’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_FloorFix

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_FloorFix( FT_Fixed  a );
+
+

+
+

A very simple function used to compute the floor function of a 16.16 fixed number.

+

+
input
+

+ + +
a +

The number for which the floor function is to be computed.

+
+
+
return
+

The result of ‘a & -0x10000’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Transform

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Transform( FT_Vector*        vec,
+                       const FT_Matrix*  matrix );
+
+

+
+

Transform a single vector through a 2x2 matrix.

+

+
inout
+

+ + +
vector +

The target vector to transform.

+
+
+
input
+

+ + +
matrix +

A pointer to the source 2x2 matrix.

+
+
+
note
+

The result is undefined if either ‘vector’ or ‘matrix’ is invalid.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Matrix_Multiply

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( void )
+  FT_Matrix_Multiply( const FT_Matrix*  a,
+                      FT_Matrix*        b );
+
+

+
+

Perform the matrix operation ‘b = a*b’.

+

+
input
+

+ + +
a +

A pointer to matrix ‘a’.

+
+
+
inout
+

+ + +
b +

A pointer to matrix ‘b’.

+
+
+
note
+

The result is undefined if either ‘a’ or ‘b’ is zero.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Matrix_Invert

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Matrix_Invert( FT_Matrix*  matrix );
+
+

+
+

Invert a 2x2 matrix. Return an error if it can't be inverted.

+

+
inout
+

+ + +
matrix +

A pointer to the target matrix. Remains untouched in case of error.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Angle

+
+

This type is used to model angle values in FreeType. Note that the angle is a 16.16 fixed float value expressed in degrees.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_PI

+
+

The angle pi expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_2PI

+
+

The angle 2*pi expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_PI2

+
+

The angle pi/2 expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ANGLE_PI4

+
+

The angle pi/4 expressed in FT_Angle units.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Sin

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Sin( FT_Angle  angle );
+
+

+
+

Return the sinus of a given angle in fixed point format.

+

+
input
+

+ + +
angle +

The input angle.

+
+
+
return
+

The sinus value.

+
+
note
+

If you need both the sinus and cosinus for a given angle, use the function FT_Vector_Unit.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Cos

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Cos( FT_Angle  angle );
+
+

+
+

Return the cosinus of a given angle in fixed point format.

+

+
input
+

+ + +
angle +

The input angle.

+
+
+
return
+

The cosinus value.

+
+
note
+

If you need both the sinus and cosinus for a given angle, use the function FT_Vector_Unit.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Tan

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Tan( FT_Angle  angle );
+
+

+
+

Return the tangent of a given angle in fixed point format.

+

+
input
+

+ + +
angle +

The input angle.

+
+
+
return
+

The tangent value.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Atan2

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Angle )
+  FT_Atan2( FT_Fixed  x,
+            FT_Fixed  y );
+
+

+
+

Return the arc-tangent corresponding to a given vector (x,y) in the 2d plane.

+

+
input
+

+ + + +
x +

The horizontal vector coordinate.

+
y +

The vertical vector coordinate.

+
+
+
return
+

The arc-tangent value (i.e. angle).

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Angle_Diff

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Angle )
+  FT_Angle_Diff( FT_Angle  angle1,
+                 FT_Angle  angle2 );
+
+

+
+

Return the difference between two angles. The result is always constrained to the ]-PI..PI] interval.

+

+
input
+

+ + + +
angle1 +

First angle.

+
angle2 +

Second angle.

+
+
+
return
+

Constrained value of ‘value2-value1’.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Unit

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Unit( FT_Vector*  vec,
+                  FT_Angle    angle );
+
+

+
+

Return the unit vector corresponding to a given angle. After the call, the value of ‘vec.x’ will be ‘sin(angle)’, and the value of ‘vec.y’ will be ‘cos(angle)’.

+

This function is useful to retrieve both the sinus and cosinus of a given angle quickly.

+

+
output
+

+ + +
vec +

The address of target vector.

+
+
+
input
+

+ + +
angle +

The address of angle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Rotate

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Rotate( FT_Vector*  vec,
+                    FT_Angle    angle );
+
+

+
+

Rotate a vector by a given angle.

+

+
inout
+

+ + +
vec +

The address of target vector.

+
+
+
input
+

+ + +
angle +

The address of angle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Length

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( FT_Fixed )
+  FT_Vector_Length( FT_Vector*  vec );
+
+

+
+

Return the length of a given vector.

+

+
input
+

+ + +
vec +

The address of target vector.

+
+
+
return
+

The vector length, expressed in the same units that the original vector coordinates.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_Polarize

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_Polarize( FT_Vector*  vec,
+                      FT_Fixed   *length,
+                      FT_Angle   *angle );
+
+

+
+

Compute both the length and angle of a given vector.

+

+
input
+

+ + +
vec +

The address of source vector.

+
+
+
output
+

+ + + +
length +

The vector length.

+
angle +

The vector angle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Vector_From_Polar

+
+Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). +

+
+
+  FT_EXPORT( void )
+  FT_Vector_From_Polar( FT_Vector*  vec,
+                        FT_Fixed    length,
+                        FT_Angle    angle );
+
+

+
+

Compute vector coordinates from a length and angle.

+

+
output
+

+ + +
vec +

The address of source vector.

+
+
+
input
+

+ + + +
length +

The vector length.

+
angle +

The vector angle.

+
+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-font_formats.html b/src/3rdparty/freetype/docs/reference/ft2-font_formats.html new file mode 100644 index 0000000000..589d749f82 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-font_formats.html @@ -0,0 +1,83 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Font Formats +

+

Synopsis

+ + +
FT_Get_X11_Font_Format


+ +
+

The single function in this section can be used to get the font format. Note that this information is not needed normally; however, there are special cases (like in PDF devices) where it is important to differentiate, in spite of FreeType's uniform API.

+

+
+

FT_Get_X11_Font_Format

+
+Defined in FT_XFREE86_H (freetype/ftxf86.h). +

+
+
+  FT_EXPORT( const char* )
+  FT_Get_X11_Font_Format( FT_Face  face );
+
+

+
+

Return a string describing the format of a given face, using values which can be used as an X11 FONT_PROPERTY. Possible values are ‘TrueType’, ‘Type 1’, ‘BDF’, ‘PCF’, ‘Type 42’, ‘CID Type 1’, ‘CFF’, ‘PFR’, and ‘Windows FNT’.

+

+
input
+

+ + +
face +

Input face handle.

+
+
+
return
+

Font format string. NULL in case of error.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html b/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html new file mode 100644 index 0000000000..2f0d2f50c2 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html @@ -0,0 +1,141 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Gasp Table +

+

Synopsis

+ + +
FT_GASP_XXXFT_Get_Gasp


+ +
+

The function FT_Get_Gasp can be used to query a TrueType or OpenType font for specific entries in its ‘gasp’ table, if any. This is mainly useful when implementing native TrueType hinting with the bytecode interpreter to duplicate the Windows text rendering results.

+

+
+

FT_GASP_XXX

+
+Defined in FT_GASP_H (freetype/ftgasp.h). +

+
+
+#define FT_GASP_NO_TABLE               -1
+#define FT_GASP_DO_GRIDFIT           0x01
+#define FT_GASP_DO_GRAY              0x02
+#define FT_GASP_SYMMETRIC_SMOOTHING  0x08
+#define FT_GASP_SYMMETRIC_GRIDFIT    0x10
+
+

+
+

A list of values and/or bit-flags returned by the FT_Get_Gasp function.

+

+
values
+

+ + + + + + + + +
FT_GASP_NO_TABLE +

This special value means that there is no GASP table in this face. It is up to the client to decide what to do.

+
FT_GASP_DO_GRIDFIT +

Grid-fitting and hinting should be performed at the specified ppem. This really means TrueType bytecode interpretation.

+
FT_GASP_DO_GRAY +

Anti-aliased rendering should be performed at the specified ppem.

+
FT_GASP_SYMMETRIC_SMOOTHING
+

Smoothing along multiple axes must be used with ClearType.

+
FT_GASP_SYMMETRIC_GRIDFIT
+

Grid-fitting must be used with ClearType's symmetric smoothing.

+
+
+
note
+

‘ClearType’ is Microsoft's implementation of LCD rendering, partly protected by patents.

+
+
since
+

2.3.0

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Gasp

+
+Defined in FT_GASP_H (freetype/ftgasp.h). +

+
+
+  FT_EXPORT( FT_Int )
+  FT_Get_Gasp( FT_Face  face,
+               FT_UInt  ppem );
+
+

+
+

Read the ‘gasp’ table from a TrueType or OpenType font file and return the entry corresponding to a given character pixel size.

+

+
input
+

+ + + +
face +

The source face handle.

+
ppem +

The vertical character pixel size.

+
+
+
return
+

Bit flags (see FT_GASP_XXX), or FT_GASP_NO_TABLE if there is no ‘gasp’ table in the face.

+
+
since
+

2.3.0

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html new file mode 100644 index 0000000000..79fc5b6d22 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html @@ -0,0 +1,648 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Glyph Management +

+

Synopsis

+ + + + + + +
FT_GlyphFT_OutlineGlyphRecft_glyph_bbox_xxx
FT_GlyphRecFT_Get_GlyphFT_Glyph_Get_CBox
FT_BitmapGlyphFT_Glyph_CopyFT_Glyph_To_Bitmap
FT_BitmapGlyphRecFT_Glyph_TransformFT_Done_Glyph
FT_OutlineGlyphFT_Glyph_BBox_Mode


+ +
+

This section contains definitions used to manage glyph data through generic FT_Glyph objects. Each of them can contain a bitmap, a vector outline, or even images in other formats.

+

+
+

FT_Glyph

+
+

Handle to an object used to model generic glyph images. It is a pointer to the FT_GlyphRec structure and can contain a glyph bitmap or pointer.

+

+
note
+

Glyph objects are not owned by the library. You must thus release them manually (through FT_Done_Glyph) before calling FT_Done_FreeType.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_GlyphRec

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  typedef struct  FT_GlyphRec_
+  {
+    FT_Library             library;
+    const FT_Glyph_Class*  clazz;
+    FT_Glyph_Format        format;
+    FT_Vector              advance;
+
+  } FT_GlyphRec;
+
+

+
+

The root glyph structure contains a given glyph image plus its advance width in 16.16 fixed float format.

+

+
fields
+

+ + + + + +
library +

A handle to the FreeType library object.

+
clazz +

A pointer to the glyph's class. Private.

+
format +

The format of the glyph's image.

+
advance +

A 16.16 vector that gives the glyph's advance width.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_BitmapGlyph

+
+

A handle to an object used to model a bitmap glyph image. This is a sub-class of FT_Glyph, and a pointer to FT_BitmapGlyphRec.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_BitmapGlyphRec

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  typedef struct  FT_BitmapGlyphRec_
+  {
+    FT_GlyphRec  root;
+    FT_Int       left;
+    FT_Int       top;
+    FT_Bitmap    bitmap;
+
+  } FT_BitmapGlyphRec;
+
+

+
+

A structure used for bitmap glyph images. This really is a ‘sub-class’ of FT_GlyphRec.

+

+
fields
+

+ + + + + +
root +

The root FT_Glyph fields.

+
left +

The left-side bearing, i.e., the horizontal distance from the current pen position to the left border of the glyph bitmap.

+
top +

The top-side bearing, i.e., the vertical distance from the current pen position to the top border of the glyph bitmap. This distance is positive for upwards y!

+
bitmap +

A descriptor for the bitmap.

+
+
+
note
+

You can typecast an FT_Glyph to FT_BitmapGlyph if you have ‘glyph->format == FT_GLYPH_FORMAT_BITMAP’. This lets you access the bitmap's contents easily.

+

The corresponding pixel buffer is always owned by FT_BitmapGlyph and is thus created and destroyed with it.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_OutlineGlyph

+
+

A handle to an object used to model an outline glyph image. This is a sub-class of FT_Glyph, and a pointer to FT_OutlineGlyphRec.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_OutlineGlyphRec

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  typedef struct  FT_OutlineGlyphRec_
+  {
+    FT_GlyphRec  root;
+    FT_Outline   outline;
+
+  } FT_OutlineGlyphRec;
+
+

+
+

A structure used for outline (vectorial) glyph images. This really is a ‘sub-class’ of FT_GlyphRec.

+

+
fields
+

+ + + +
root +

The root FT_Glyph fields.

+
outline +

A descriptor for the outline.

+
+
+
note
+

You can typecast an FT_Glyph to FT_OutlineGlyph if you have ‘glyph->format == FT_GLYPH_FORMAT_OUTLINE’. This lets you access the outline's content easily.

+

As the outline is extracted from a glyph slot, its coordinates are expressed normally in 26.6 pixels, unless the flag FT_LOAD_NO_SCALE was used in FT_Load_Glyph() or FT_Load_Char().

+

The outline's tables are always owned by the object and are destroyed with it.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Glyph

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Glyph( FT_GlyphSlot  slot,
+                FT_Glyph     *aglyph );
+
+

+
+

A function used to extract a glyph image from a slot. Note that the created FT_Glyph object must be released with FT_Done_Glyph.

+

+
input
+

+ + +
slot +

A handle to the source glyph slot.

+
+
+
output
+

+ + +
aglyph +

A handle to the glyph object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_Copy

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Glyph_Copy( FT_Glyph   source,
+                 FT_Glyph  *target );
+
+

+
+

A function used to copy a glyph image. Note that the created FT_Glyph object must be released with FT_Done_Glyph.

+

+
input
+

+ + +
source +

A handle to the source glyph object.

+
+
+
output
+

+ + +
target +

A handle to the target glyph object. 0 in case of error.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_Transform

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Glyph_Transform( FT_Glyph    glyph,
+                      FT_Matrix*  matrix,
+                      FT_Vector*  delta );
+
+

+
+

Transform a glyph image if its format is scalable.

+

+
inout
+

+ + +
glyph +

A handle to the target glyph object.

+
+
+
input
+

+ + + +
matrix +

A pointer to a 2x2 matrix to apply.

+
delta +

A pointer to a 2d vector to apply. Coordinates are expressed in 1/64th of a pixel.

+
+
+
return
+

FreeType error code (if not 0, the glyph format is not scalable).

+
+
note
+

The 2x2 transformation matrix is also applied to the glyph's advance vector.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_BBox_Mode

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  typedef enum  FT_Glyph_BBox_Mode_
+  {
+    FT_GLYPH_BBOX_UNSCALED  = 0,
+    FT_GLYPH_BBOX_SUBPIXELS = 0,
+    FT_GLYPH_BBOX_GRIDFIT   = 1,
+    FT_GLYPH_BBOX_TRUNCATE  = 2,
+    FT_GLYPH_BBOX_PIXELS    = 3
+
+  } FT_Glyph_BBox_Mode;
+
+

+
+

The mode how the values of FT_Glyph_Get_CBox are returned.

+

+
values
+

+ + + + + + + +
FT_GLYPH_BBOX_UNSCALED +

Return unscaled font units.

+
FT_GLYPH_BBOX_SUBPIXELS
+

Return unfitted 26.6 coordinates.

+
FT_GLYPH_BBOX_GRIDFIT +

Return grid-fitted 26.6 coordinates.

+
FT_GLYPH_BBOX_TRUNCATE +

Return coordinates in integer pixels.

+
FT_GLYPH_BBOX_PIXELS +

Return grid-fitted pixel coordinates.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

ft_glyph_bbox_xxx

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+#define ft_glyph_bbox_unscaled   FT_GLYPH_BBOX_UNSCALED
+#define ft_glyph_bbox_subpixels  FT_GLYPH_BBOX_SUBPIXELS
+#define ft_glyph_bbox_gridfit    FT_GLYPH_BBOX_GRIDFIT
+#define ft_glyph_bbox_truncate   FT_GLYPH_BBOX_TRUNCATE
+#define ft_glyph_bbox_pixels     FT_GLYPH_BBOX_PIXELS
+
+

+
+

These constants are deprecated. Use the corresponding FT_Glyph_BBox_Mode values instead.

+

+
values
+

+ + + + + + + +
ft_glyph_bbox_unscaled +

See FT_GLYPH_BBOX_UNSCALED.

+
ft_glyph_bbox_subpixels
+

See FT_GLYPH_BBOX_SUBPIXELS.

+
ft_glyph_bbox_gridfit +

See FT_GLYPH_BBOX_GRIDFIT.

+
ft_glyph_bbox_truncate +

See FT_GLYPH_BBOX_TRUNCATE.

+
ft_glyph_bbox_pixels +

See FT_GLYPH_BBOX_PIXELS.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_Get_CBox

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( void )
+  FT_Glyph_Get_CBox( FT_Glyph  glyph,
+                     FT_UInt   bbox_mode,
+                     FT_BBox  *acbox );
+
+

+
+

Return a glyph's ‘control box’. The control box encloses all the outline's points, including Bézier control points. Though it coincides with the exact bounding box for most glyphs, it can be slightly larger in some situations (like when rotating an outline which contains Bézier outside arcs).

+

Computing the control box is very fast, while getting the bounding box can take much more time as it needs to walk over all segments and arcs in the outline. To get the latter, you can use the ‘ftbbox’ component which is dedicated to this single task.

+

+
input
+

+ + + +
glyph +

A handle to the source glyph object.

+
mode +

The mode which indicates how to interpret the returned bounding box values.

+
+
+
output
+

+ + +
acbox +

The glyph coordinate bounding box. Coordinates are expressed in 1/64th of pixels if it is grid-fitted.

+
+
+
note
+

Coordinates are relative to the glyph origin, using the y upwards convention.

+

If the glyph has been loaded with FT_LOAD_NO_SCALE, ‘bbox_mode’ must be set to FT_GLYPH_BBOX_UNSCALED to get unscaled font units in 26.6 pixel format. The value FT_GLYPH_BBOX_SUBPIXELS is another name for this constant.

+

Note that the maximum coordinates are exclusive, which means that one can compute the width and height of the glyph image (be it in integer or 26.6 pixels) as:

+
+  width  = bbox.xMax - bbox.xMin;                                  
+  height = bbox.yMax - bbox.yMin;                                  
+
+

Note also that for 26.6 coordinates, if ‘bbox_mode’ is set to FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, which corresponds to:

+
+  bbox.xMin = FLOOR(bbox.xMin);                                    
+  bbox.yMin = FLOOR(bbox.yMin);                                    
+  bbox.xMax = CEILING(bbox.xMax);                                  
+  bbox.yMax = CEILING(bbox.yMax);                                  
+
+

To get the bbox in pixel coordinates, set ‘bbox_mode’ to FT_GLYPH_BBOX_TRUNCATE.

+

To get the bbox in grid-fitted pixel coordinates, set ‘bbox_mode’ to FT_GLYPH_BBOX_PIXELS.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_To_Bitmap

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Glyph_To_Bitmap( FT_Glyph*       the_glyph,
+                      FT_Render_Mode  render_mode,
+                      FT_Vector*      origin,
+                      FT_Bool         destroy );
+
+

+
+

Convert a given glyph object to a bitmap glyph object.

+

+
inout
+

+ + +
the_glyph +

A pointer to a handle to the target glyph.

+
+
+
input
+

+ + + + +
render_mode +

An enumeration that describes how the data is rendered.

+
origin +

A pointer to a vector used to translate the glyph image before rendering. Can be 0 (if no translation). The origin is expressed in 26.6 pixels.

+
destroy +

A boolean that indicates that the original glyph image should be destroyed by this function. It is never destroyed in case of error.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function does nothing if the glyph format isn't scalable.

+

The glyph image is translated with the ‘origin’ vector before rendering.

+

The first parameter is a pointer to an FT_Glyph handle, that will be replaced by this function (with newly allocated data). Typically, you would use (omitting error handling):

+

+
+  FT_Glyph        glyph;                                         
+  FT_BitmapGlyph  glyph_bitmap;                                  
+                                                                 
+                                                                 
+  // load glyph                                                  
+  error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT );     
+                                                                 
+  // extract glyph image                                         
+  error = FT_Get_Glyph( face->glyph, &glyph );                   
+                                                                 
+  // convert to a bitmap (default render mode + destroying old)  
+  if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )                 
+  {                                                              
+    error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT,  
+                                0, 1 );                          
+    if ( error ) // `glyph' unchanged                            
+      ...                                                        
+  }                                                              
+                                                                 
+  // access bitmap content by typecasting                        
+  glyph_bitmap = (FT_BitmapGlyph)glyph;                          
+                                                                 
+  // do funny stuff with it, like blitting/drawing               
+  ...                                                            
+                                                                 
+  // discard glyph image (bitmap or not)                         
+  FT_Done_Glyph( glyph );                                        
+
+

+

Here another example, again without error handling:

+

+
+  FT_Glyph  glyphs[MAX_GLYPHS]                                   
+                                                                 
+                                                                 
+  ...                                                            
+                                                                 
+  for ( idx = 0; i < MAX_GLYPHS; i++ )                           
+    error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) ||       
+            FT_Get_Glyph ( face->glyph, &glyph[idx] );           
+                                                                 
+  ...                                                            
+                                                                 
+  for ( idx = 0; i < MAX_GLYPHS; i++ )                           
+  {                                                              
+    FT_Glyph  bitmap = glyphs[idx];                              
+                                                                 
+                                                                 
+    ...                                                          
+                                                                 
+    // after this call, `bitmap' no longer points into           
+    // the `glyphs' array (and the old value isn't destroyed)    
+    FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 );    
+                                                                 
+    ...                                                          
+                                                                 
+    FT_Done_Glyph( bitmap );                                     
+  }                                                              
+                                                                 
+  ...                                                            
+                                                                 
+  for ( idx = 0; i < MAX_GLYPHS; i++ )                           
+    FT_Done_Glyph( glyphs[idx] );                                
+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Done_Glyph

+
+Defined in FT_GLYPH_H (freetype/ftglyph.h). +

+
+
+  FT_EXPORT( void )
+  FT_Done_Glyph( FT_Glyph  glyph );
+
+

+
+

Destroy a given glyph.

+

+
input
+

+ + +
glyph +

A handle to the target glyph object.

+
+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html new file mode 100644 index 0000000000..f5f24e4467 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html @@ -0,0 +1,920 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Glyph Stroker +

+

Synopsis

+ + + + + + + + + + + + +
FT_StrokerFT_Stroker_EndSubPath
FT_Stroker_LineJoinFT_Stroker_LineTo
FT_Stroker_LineCapFT_Stroker_ConicTo
FT_StrokerBorderFT_Stroker_CubicTo
FT_Outline_GetInsideBorderFT_Stroker_GetBorderCounts
FT_Outline_GetOutsideBorderFT_Stroker_ExportBorder
FT_Stroker_NewFT_Stroker_GetCounts
FT_Stroker_SetFT_Stroker_Export
FT_Stroker_RewindFT_Stroker_Done
FT_Stroker_ParseOutlineFT_Glyph_Stroke
FT_Stroker_BeginSubPathFT_Glyph_StrokeBorder


+ +
+

This component generates stroked outlines of a given vectorial glyph. It also allows you to retrieve the ‘outside’ and/or the ‘inside’ borders of the stroke.

+

This can be useful to generate ‘bordered’ glyph, i.e., glyphs displayed with a coloured (and anti-aliased) border around their shape.

+

+
+

FT_Stroker

+
+

Opaque handler to a path stroker object.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_LineJoin

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  typedef enum  FT_Stroker_LineJoin_
+  {
+    FT_STROKER_LINEJOIN_ROUND = 0,
+    FT_STROKER_LINEJOIN_BEVEL,
+    FT_STROKER_LINEJOIN_MITER
+
+  } FT_Stroker_LineJoin;
+
+

+
+

These values determine how two joining lines are rendered in a stroker.

+

+
values
+

+ + + + + + + +
FT_STROKER_LINEJOIN_ROUND
+

Used to render rounded line joins. Circular arcs are used to join two lines smoothly.

+
FT_STROKER_LINEJOIN_BEVEL
+

Used to render beveled line joins; i.e., the two joining lines are extended until they intersect.

+
FT_STROKER_LINEJOIN_MITER
+

Same as beveled rendering, except that an additional line break is added if the angle between the two joining lines is too closed (this is useful to avoid unpleasant spikes in beveled rendering).

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_LineCap

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  typedef enum  FT_Stroker_LineCap_
+  {
+    FT_STROKER_LINECAP_BUTT = 0,
+    FT_STROKER_LINECAP_ROUND,
+    FT_STROKER_LINECAP_SQUARE
+
+  } FT_Stroker_LineCap;
+
+

+
+

These values determine how the end of opened sub-paths are rendered in a stroke.

+

+
values
+

+ + + + + + + +
FT_STROKER_LINECAP_BUTT
+

The end of lines is rendered as a full stop on the last point itself.

+
FT_STROKER_LINECAP_ROUND
+

The end of lines is rendered as a half-circle around the last point.

+
FT_STROKER_LINECAP_SQUARE
+

The end of lines is rendered as a square around the last point.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_StrokerBorder

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  typedef enum  FT_StrokerBorder_
+  {
+    FT_STROKER_BORDER_LEFT = 0,
+    FT_STROKER_BORDER_RIGHT
+
+  } FT_StrokerBorder;
+
+

+
+

These values are used to select a given stroke border in FT_Stroker_GetBorderCounts and FT_Stroker_ExportBorder.

+

+
values
+

+ + + + +
FT_STROKER_BORDER_LEFT +

Select the left border, relative to the drawing direction.

+
FT_STROKER_BORDER_RIGHT
+

Select the right border, relative to the drawing direction.

+
+
+
note
+

Applications are generally interested in the ‘inside’ and ‘outside’ borders. However, there is no direct mapping between these and the ‘left’ and ‘right’ ones, since this really depends on the glyph's drawing orientation, which varies between font formats.

+

You can however use FT_Outline_GetInsideBorder and FT_Outline_GetOutsideBorder to get these.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_GetInsideBorder

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_StrokerBorder )
+  FT_Outline_GetInsideBorder( FT_Outline*  outline );
+
+

+
+

Retrieve the FT_StrokerBorder value corresponding to the ‘inside’ borders of a given outline.

+

+
input
+

+ + +
outline +

The source outline handle.

+
+
+
return
+

The border index. FT_STROKER_BORDER_RIGHT for empty or invalid outlines.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_GetOutsideBorder

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_StrokerBorder )
+  FT_Outline_GetOutsideBorder( FT_Outline*  outline );
+
+

+
+

Retrieve the FT_StrokerBorder value corresponding to the ‘outside’ borders of a given outline.

+

+
input
+

+ + +
outline +

The source outline handle.

+
+
+
return
+

The border index. FT_STROKER_BORDER_LEFT for empty or invalid outlines.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_New

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_New( FT_Library   library,
+                  FT_Stroker  *astroker );
+
+

+
+

Create a new stroker object.

+

+
input
+

+ + +
library +

FreeType library handle.

+
+
+
output
+

+ + +
astroker +

A new stroker object handle. NULL in case of error.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_Set

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( void )
+  FT_Stroker_Set( FT_Stroker           stroker,
+                  FT_Fixed             radius,
+                  FT_Stroker_LineCap   line_cap,
+                  FT_Stroker_LineJoin  line_join,
+                  FT_Fixed             miter_limit );
+
+

+
+

Reset a stroker object's attributes.

+

+
input
+

+ + + + + + +
stroker +

The target stroker handle.

+
radius +

The border radius.

+
line_cap +

The line cap style.

+
line_join +

The line join style.

+
miter_limit +

The miter limit for the FT_STROKER_LINEJOIN_MITER style, expressed as 16.16 fixed point value.

+
+
+
note
+

The radius is expressed in the same units as the outline coordinates.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_Rewind

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( void )
+  FT_Stroker_Rewind( FT_Stroker  stroker );
+
+

+
+

Reset a stroker object without changing its attributes. You should call this function before beginning a new series of calls to FT_Stroker_BeginSubPath or FT_Stroker_EndSubPath.

+

+
input
+

+ + +
stroker +

The target stroker handle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_ParseOutline

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_ParseOutline( FT_Stroker   stroker,
+                           FT_Outline*  outline,
+                           FT_Bool      opened );
+
+

+
+

A convenience function used to parse a whole outline with the stroker. The resulting outline(s) can be retrieved later by functions like FT_Stroker_GetCounts and FT_Stroker_Export.

+

+
input
+

+ + + + +
stroker +

The target stroker handle.

+
outline +

The source outline.

+
opened +

A boolean. If 1, the outline is treated as an open path instead of a closed one.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

If ‘opened’ is 0 (the default), the outline is treated as a closed path, and the stroker generates two distinct ‘border’ outlines.

+

If ‘opened’ is 1, the outline is processed as an open path, and the stroker generates a single ‘stroke’ outline.

+

This function calls FT_Stroker_Rewind automatically.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_BeginSubPath

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_BeginSubPath( FT_Stroker  stroker,
+                           FT_Vector*  to,
+                           FT_Bool     open );
+
+

+
+

Start a new sub-path in the stroker.

+

+
input
+

+ + + + +
stroker +

The target stroker handle.

+
to +

A pointer to the start vector.

+
open +

A boolean. If 1, the sub-path is treated as an open one.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function is useful when you need to stroke a path that is not stored as an FT_Outline object.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_EndSubPath

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_EndSubPath( FT_Stroker  stroker );
+
+

+
+

Close the current sub-path in the stroker.

+

+
input
+

+ + +
stroker +

The target stroker handle.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You should call this function after FT_Stroker_BeginSubPath. If the subpath was not ‘opened’, this function ‘draws’ a single line segment to the start position when needed.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_LineTo

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_LineTo( FT_Stroker  stroker,
+                     FT_Vector*  to );
+
+

+
+

‘Draw’ a single line segment in the stroker's current sub-path, from the last position.

+

+
input
+

+ + + +
stroker +

The target stroker handle.

+
to +

A pointer to the destination point.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You should call this function between FT_Stroker_BeginSubPath and FT_Stroker_EndSubPath.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_ConicTo

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_ConicTo( FT_Stroker  stroker,
+                      FT_Vector*  control,
+                      FT_Vector*  to );
+
+

+
+

‘Draw’ a single quadratic Bézier in the stroker's current sub-path, from the last position.

+

+
input
+

+ + + + +
stroker +

The target stroker handle.

+
control +

A pointer to a Bézier control point.

+
to +

A pointer to the destination point.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You should call this function between FT_Stroker_BeginSubPath and FT_Stroker_EndSubPath.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_CubicTo

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_CubicTo( FT_Stroker  stroker,
+                      FT_Vector*  control1,
+                      FT_Vector*  control2,
+                      FT_Vector*  to );
+
+

+
+

‘Draw’ a single cubic Bézier in the stroker's current sub-path, from the last position.

+

+
input
+

+ + + + + +
stroker +

The target stroker handle.

+
control1 +

A pointer to the first Bézier control point.

+
control2 +

A pointer to second Bézier control point.

+
to +

A pointer to the destination point.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You should call this function between FT_Stroker_BeginSubPath and FT_Stroker_EndSubPath.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_GetBorderCounts

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_GetBorderCounts( FT_Stroker        stroker,
+                              FT_StrokerBorder  border,
+                              FT_UInt          *anum_points,
+                              FT_UInt          *anum_contours );
+
+

+
+

Call this function once you have finished parsing your paths with the stroker. It returns the number of points and contours necessary to export one of the ‘border’ or ‘stroke’ outlines generated by the stroker.

+

+
input
+

+ + + +
stroker +

The target stroker handle.

+
border +

The border index.

+
+
+
output
+

+ + + +
anum_points +

The number of points.

+
anum_contours +

The number of contours.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

When an outline, or a sub-path, is ‘closed’, the stroker generates two independent ‘border’ outlines, named ‘left’ and ‘right’.

+

When the outline, or a sub-path, is ‘opened’, the stroker merges the ‘border’ outlines with caps. The ‘left’ border receives all points, while the ‘right’ border becomes empty.

+

Use the function FT_Stroker_GetCounts instead if you want to retrieve the counts associated to both borders.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_ExportBorder

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( void )
+  FT_Stroker_ExportBorder( FT_Stroker        stroker,
+                           FT_StrokerBorder  border,
+                           FT_Outline*       outline );
+
+

+
+

Call this function after FT_Stroker_GetBorderCounts to export the corresponding border to your own FT_Outline structure.

+

Note that this function appends the border points and contours to your outline, but does not try to resize its arrays.

+

+
input
+

+ + + + +
stroker +

The target stroker handle.

+
border +

The border index.

+
outline +

The target outline handle.

+
+
+
note
+

Always call this function after FT_Stroker_GetBorderCounts to get sure that there is enough room in your FT_Outline object to receive all new data.

+

When an outline, or a sub-path, is ‘closed’, the stroker generates two independent ‘border’ outlines, named ‘left’ and ‘right’

+

When the outline, or a sub-path, is ‘opened’, the stroker merges the ‘border’ outlines with caps. The ‘left’ border receives all points, while the ‘right’ border becomes empty.

+

Use the function FT_Stroker_Export instead if you want to retrieve all borders at once.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_GetCounts

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stroker_GetCounts( FT_Stroker  stroker,
+                        FT_UInt    *anum_points,
+                        FT_UInt    *anum_contours );
+
+

+
+

Call this function once you have finished parsing your paths with the stroker. It returns the number of points and contours necessary to export all points/borders from the stroked outline/path.

+

+
input
+

+ + +
stroker +

The target stroker handle.

+
+
+
output
+

+ + + +
anum_points +

The number of points.

+
anum_contours +

The number of contours.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_Export

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( void )
+  FT_Stroker_Export( FT_Stroker   stroker,
+                     FT_Outline*  outline );
+
+

+
+

Call this function after FT_Stroker_GetBorderCounts to export the all borders to your own FT_Outline structure.

+

Note that this function appends the border points and contours to your outline, but does not try to resize its arrays.

+

+
input
+

+ + + +
stroker +

The target stroker handle.

+
outline +

The target outline handle.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stroker_Done

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( void )
+  FT_Stroker_Done( FT_Stroker  stroker );
+
+

+
+

Destroy a stroker object.

+

+
input
+

+ + +
stroker +

A stroker handle. Can be NULL.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_Stroke

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Glyph_Stroke( FT_Glyph    *pglyph,
+                   FT_Stroker   stroker,
+                   FT_Bool      destroy );
+
+

+
+

Stroke a given outline glyph object with a given stroker.

+

+
inout
+

+ + +
pglyph +

Source glyph handle on input, new glyph handle on output.

+
+
+
input
+

+ + + +
stroker +

A stroker handle.

+
destroy +

A Boolean. If 1, the source glyph object is destroyed on success.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The source glyph is untouched in case of error.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Glyph_StrokeBorder

+
+Defined in FT_STROKER_H (freetype/ftstroke.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Glyph_StrokeBorder( FT_Glyph    *pglyph,
+                         FT_Stroker   stroker,
+                         FT_Bool      inside,
+                         FT_Bool      destroy );
+
+

+
+

Stroke a given outline glyph object with a given stroker, but only return either its inside or outside border.

+

+
inout
+

+ + +
pglyph +

Source glyph handle on input, new glyph handle on output.

+
+
+
input
+

+ + + + +
stroker +

A stroker handle.

+
inside +

A Boolean. If 1, return the inside border, otherwise the outside border.

+
destroy +

A Boolean. If 1, the source glyph object is destroyed on success.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The source glyph is untouched in case of error.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html new file mode 100644 index 0000000000..499c7e76fc --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html @@ -0,0 +1,267 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Glyph Variants +

+

Synopsis

+ + + + +
FT_Face_GetCharVariantIndexFT_Face_GetVariantsOfChar
FT_Face_GetCharVariantIsDefaultFT_Face_GetCharsOfVariant
FT_Face_GetVariantSelectors


+ +
+

Many CJK characters have variant forms. They are a sort of grey area somewhere between being totally irrelevant and semantically distinct; for this reason, the Unicode consortium decided to introduce Ideographic Variation Sequences (IVS), consisting of a Unicode base character and one of 240 variant selectors (U+E0100-U+E01EF), instead of further extending the already huge code range for CJK characters.

+

An IVS is registered and unique; for further details please refer to Unicode Technical Report #37, the Ideographic Variation Database. To date (October 2007), the character with the most variants is U+908A, having 8 such IVS.

+

Adobe and MS decided to support IVS with a new cmap subtable (format 14). It is an odd subtable because it is not a mapping of input code points to glyphs, but contains lists of all variants supported by the font.

+

A variant may be either ‘default’ or ‘non-default’. A default variant is the one you will get for that code point if you look it up in the standard Unicode cmap. A non-default variant is a different glyph.

+

+
+

FT_Face_GetCharVariantIndex

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_UInt )
+  FT_Face_GetCharVariantIndex( FT_Face   face,
+                               FT_ULong  charcode,
+                               FT_ULong  variantSelector );
+
+

+
+

Return the glyph index of a given character code as modified by the variation selector.

+

+
input
+

+ + + + +
face +

A handle to the source face object.

+
charcode +

The character code point in Unicode.

+
variantSelector +

The Unicode code point of the variation selector.

+
+
+
return
+

The glyph index. 0 means either ‘undefined character code’, or ‘undefined selector code’, or ‘no variation selector cmap subtable’, or ‘current CharMap is not Unicode’.

+
+
note
+

If you use FreeType to manipulate the contents of font files directly, be aware that the glyph index returned by this function doesn't always correspond to the internal indices used within the file. This is done to ensure that value 0 always corresponds to the ‘missing glyph’.

+

This function is only meaningful if a) the font has a variation selector cmap sub table, and b) the current charmap has a Unicode encoding.

+
+
since
+

2.3.6

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face_GetCharVariantIsDefault

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Int )
+  FT_Face_GetCharVariantIsDefault( FT_Face   face,
+                                   FT_ULong  charcode,
+                                   FT_ULong  variantSelector );
+
+

+
+

Check whether this variant of this Unicode character is the one to be found in the ‘cmap’.

+

+
input
+

+ + + + +
face +

A handle to the source face object.

+
charcode +

The character codepoint in Unicode.

+
variantSelector +

The Unicode codepoint of the variation selector.

+
+
+
return
+

1 if found in the standard (Unicode) cmap, 0 if found in the variation selector cmap, or -1 if it is not a variant.

+
+
note
+

This function is only meaningful if the font has a variation selector cmap subtable.

+
+
since
+

2.3.6

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face_GetVariantSelectors

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_UInt32* )
+  FT_Face_GetVariantSelectors( FT_Face  face );
+
+

+
+

Return a zero-terminated list of Unicode variant selectors found in the font.

+

+
input
+

+ + +
face +

A handle to the source face object.

+
+
+
return
+

A pointer to an array of selector code points, or NULL if there is no valid variant selector cmap subtable.

+
+
note
+

The last item in the array is 0; the array is owned by the FT_Face object but can be overwritten or released on the next call to a FreeType function.

+
+
since
+

2.3.6

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face_GetVariantsOfChar

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_UInt32* )
+  FT_Face_GetVariantsOfChar( FT_Face   face,
+                             FT_ULong  charcode );
+
+

+
+

Return a zero-terminated list of Unicode variant selectors found for the specified character code.

+

+
input
+

+ + + +
face +

A handle to the source face object.

+
charcode +

The character codepoint in Unicode.

+
+
+
return
+

A pointer to an array of variant selector code points which are active for the given character, or NULL if the corresponding list is empty.

+
+
note
+

The last item in the array is 0; the array is owned by the FT_Face object but can be overwritten or released on the next call to a FreeType function.

+
+
since
+

2.3.6

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face_GetCharsOfVariant

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_UInt32* )
+  FT_Face_GetCharsOfVariant( FT_Face   face,
+                             FT_ULong  variantSelector );
+
+

+
+

Return a zero-terminated list of Unicode character codes found for the specified variant selector.

+

+
input
+

+ + + +
face +

A handle to the source face object.

+
variantSelector +

The variant selector code point in Unicode.

+
+
+
return
+

A list of all the code points which are specified by this selector (both default and non-default codes are returned) or NULL if there is no valid cmap or the variant selector is invalid.

+
+
note
+

The last item in the array is 0; the array is owned by the FT_Face object but can be overwritten or released on the next call to a FreeType function.

+
+
since
+

2.3.6

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html b/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html new file mode 100644 index 0000000000..8c3a98f30d --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html @@ -0,0 +1,348 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+TrueTypeGX/AAT Validation +

+

Synopsis

+ + + + +
FT_VALIDATE_GX_LENGTHFT_TrueTypeGX_FreeFT_ClassicKern_Free
FT_VALIDATE_GXXXXFT_VALIDATE_CKERNXXX
FT_TrueTypeGX_ValidateFT_ClassicKern_Validate


+ +
+

This section contains the declaration of functions to validate some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, trak, prop, lcar).

+

+
+

FT_VALIDATE_GX_LENGTH

+
+

The number of tables checked in this module. Use it as a parameter for the ‘table-length’ argument of function FT_TrueTypeGX_Validate.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_VALIDATE_GXXXX

+
+Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). +

+
+
+#define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
+#define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
+#define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD( morx )
+#define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD( bsln )
+#define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD( just )
+#define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD( kern )
+#define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD( opbd )
+#define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD( trak )
+#define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD( prop )
+#define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD( lcar )
+
+#define FT_VALIDATE_GX  ( FT_VALIDATE_feat | \
+                          FT_VALIDATE_mort | \
+                          FT_VALIDATE_morx | \
+                          FT_VALIDATE_bsln | \
+                          FT_VALIDATE_just | \
+                          FT_VALIDATE_kern | \
+                          FT_VALIDATE_opbd | \
+                          FT_VALIDATE_trak | \
+                          FT_VALIDATE_prop | \
+                          FT_VALIDATE_lcar )
+
+

+
+

A list of bit-field constants used with FT_TrueTypeGX_Validate to indicate which TrueTypeGX/AAT Type tables should be validated.

+

+
values
+

+ + + + + + + + + + + + +
FT_VALIDATE_feat +

Validate ‘feat’ table.

+
FT_VALIDATE_mort +

Validate ‘mort’ table.

+
FT_VALIDATE_morx +

Validate ‘morx’ table.

+
FT_VALIDATE_bsln +

Validate ‘bsln’ table.

+
FT_VALIDATE_just +

Validate ‘just’ table.

+
FT_VALIDATE_kern +

Validate ‘kern’ table.

+
FT_VALIDATE_opbd +

Validate ‘opbd’ table.

+
FT_VALIDATE_trak +

Validate ‘trak’ table.

+
FT_VALIDATE_prop +

Validate ‘prop’ table.

+
FT_VALIDATE_lcar +

Validate ‘lcar’ table.

+
FT_VALIDATE_GX +

Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, trak, prop and lcar).

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_TrueTypeGX_Validate

+
+Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_TrueTypeGX_Validate( FT_Face   face,
+                          FT_UInt   validation_flags,
+                          FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
+                          FT_UInt   table_length );
+
+

+
+

Validate various TrueTypeGX tables to assure that all offsets and indices are valid. The idea is that a higher-level library which actually does the text layout can access those tables without error checking (which can be quite time consuming).

+

+
input
+

+ + + + +
face +

A handle to the input face.

+
validation_flags +

A bit field which specifies the tables to be validated. See FT_VALIDATE_GXXXX for possible values.

+
table_length +

The size of the ‘tables’ array. Normally, FT_VALIDATE_GX_LENGTH should be passed.

+
+
+
output
+

+ + +
tables +

The array where all validated sfnt tables are stored. The array itself must be allocated by a client.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function only works with TrueTypeGX fonts, returning an error otherwise.

+

After use, the application should deallocate the buffers pointed to by each ‘tables’ element, by calling FT_TrueTypeGX_Free. A NULL value indicates that the table either doesn't exist in the font, the application hasn't asked for validation, or the validator doesn't have the ability to validate the sfnt table.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_TrueTypeGX_Free

+
+Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). +

+
+
+  FT_EXPORT( void )
+  FT_TrueTypeGX_Free( FT_Face   face,
+                      FT_Bytes  table );
+
+

+
+

Free the buffer allocated by TrueTypeGX validator.

+

+
input
+

+ + + +
face +

A handle to the input face.

+
table +

The pointer to the buffer allocated by FT_TrueTypeGX_Validate.

+
+
+
note
+

This function must be used to free the buffer allocated by FT_TrueTypeGX_Validate only.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_VALIDATE_CKERNXXX

+
+Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). +

+
+
+#define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
+#define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
+
+#define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
+
+

+
+

A list of bit-field constants used with FT_ClassicKern_Validate to indicate the classic kern dialect or dialects. If the selected type doesn't fit, FT_ClassicKern_Validate regards the table as invalid.

+

+
values
+

+ + + + +
FT_VALIDATE_MS +

Handle the ‘kern’ table as a classic Microsoft kern table.

+
FT_VALIDATE_APPLE +

Handle the ‘kern’ table as a classic Apple kern table.

+
FT_VALIDATE_CKERN +

Handle the ‘kern’ as either classic Apple or Microsoft kern table.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_ClassicKern_Validate

+
+Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_ClassicKern_Validate( FT_Face    face,
+                           FT_UInt    validation_flags,
+                           FT_Bytes  *ckern_table );
+
+

+
+

Validate classic (16-bit format) kern table to assure that the offsets and indices are valid. The idea is that a higher-level library which actually does the text layout can access those tables without error checking (which can be quite time consuming).

+

The ‘kern’ table validator in FT_TrueTypeGX_Validate deals with both the new 32-bit format and the classic 16-bit format, while FT_ClassicKern_Validate only supports the classic 16-bit format.

+

+
input
+

+ + + +
face +

A handle to the input face.

+
validation_flags +

A bit field which specifies the dialect to be validated. See FT_VALIDATE_CKERNXXX for possible values.

+
+
+
output
+

+ + +
ckern_table +

A pointer to the kern table.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

After use, the application should deallocate the buffers pointed to by ‘ckern_table’, by calling FT_ClassicKern_Free. A NULL value indicates that the table doesn't exist in the font.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_ClassicKern_Free

+
+Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). +

+
+
+  FT_EXPORT( void )
+  FT_ClassicKern_Free( FT_Face   face,
+                       FT_Bytes  table );
+
+

+
+

Free the buffer allocated by classic Kern validator.

+

+
input
+

+ + + +
face +

A handle to the input face.

+
table +

The pointer to the buffer that is allocated by FT_ClassicKern_Validate.

+
+
+
note
+

This function must be used to free the buffer allocated by FT_ClassicKern_Validate only.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-gzip.html b/src/3rdparty/freetype/docs/reference/ft2-gzip.html new file mode 100644 index 0000000000..f9eca6a338 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-gzip.html @@ -0,0 +1,94 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+GZIP Streams +

+

Synopsis

+ + +
FT_Stream_OpenGzip


+ +
+

This section contains the declaration of Gzip-specific functions.

+

+
+

FT_Stream_OpenGzip

+
+Defined in FT_GZIP_H (freetype/ftgzip.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stream_OpenGzip( FT_Stream  stream,
+                      FT_Stream  source );
+
+

+
+

Open a new stream to parse gzip-compressed font files. This is mainly used to support the compressed ‘*.pcf.gz’ fonts that come with XFree86.

+

+
input
+

+ + + +
stream +

The target embedding stream.

+
source +

The source stream.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The source stream must be opened before calling this function.

+

Calling the internal function ‘FT_Stream_Close’ on the new stream will not call ‘FT_Stream_Close’ on the source stream. None of the stream objects will be released to the heap.

+

The stream implementation is very basic and resets the decompression process each time seeking backwards is needed within the stream.

+

In certain builds of the library, gzip compression recognition is automatically handled when calling FT_New_Face or FT_Open_Face. This means that if no font driver is capable of handling the raw compressed file, the library will try to open a gzipped stream from it and re-open the face with it.

+

This function may return ‘FT_Err_Unimplemented_Feature’ if your build of FreeType was not compiled with zlib support.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html b/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html new file mode 100644 index 0000000000..f81f2f915a --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html @@ -0,0 +1,626 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Header File Macros +

+

Synopsis

+ + + + + + + + + + + + + + + + + + + + + + + + +
FT_CONFIG_CONFIG_HFT_WINFONTS_H
FT_CONFIG_STANDARD_LIBRARY_HFT_GLYPH_H
FT_CONFIG_OPTIONS_HFT_BITMAP_H
FT_CONFIG_MODULES_HFT_BBOX_H
FT_FREETYPE_HFT_CACHE_H
FT_ERRORS_HFT_CACHE_IMAGE_H
FT_MODULE_ERRORS_HFT_CACHE_SMALL_BITMAPS_H
FT_SYSTEM_HFT_CACHE_CHARMAP_H
FT_IMAGE_HFT_MAC_H
FT_TYPES_HFT_MULTIPLE_MASTERS_H
FT_LIST_HFT_SFNT_NAMES_H
FT_OUTLINE_HFT_OPENTYPE_VALIDATE_H
FT_SIZES_HFT_GX_VALIDATE_H
FT_MODULE_HFT_PFR_H
FT_RENDER_HFT_STROKER_H
FT_TYPE1_TABLES_HFT_SYNTHESIS_H
FT_TRUETYPE_IDS_HFT_XFREE86_H
FT_TRUETYPE_TABLES_HFT_TRIGONOMETRY_H
FT_TRUETYPE_TAGS_HFT_LCD_FILTER_H
FT_BDF_HFT_UNPATENTED_HINTING_H
FT_CID_HFT_INCREMENTAL_H
FT_GZIP_HFT_GASP_H
FT_LZW_HFT_ADVANCES_H


+ +
+

The following macros are defined to the name of specific FreeType 2 header files. They can be used directly in #include statements as in:

+
+  #include FT_FREETYPE_H                                           
+  #include FT_MULTIPLE_MASTERS_H                                   
+  #include FT_GLYPH_H                                              
+
+

There are several reasons why we are now using macros to name public header files. The first one is that such macros are not limited to the infamous 8.3 naming rule required by DOS (and ‘FT_MULTIPLE_MASTERS_H’ is a lot more meaningful than ‘ftmm.h’).

+

The second reason is that it allows for more flexibility in the way FreeType 2 is installed on a given system.

+

+
+

FT_CONFIG_CONFIG_H

+
+
+#ifndef FT_CONFIG_CONFIG_H
+#define FT_CONFIG_CONFIG_H  <freetype/config/ftconfig.h>
+#endif
+
+

+
+

A macro used in #include statements to name the file containing FreeType 2 configuration data.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CONFIG_STANDARD_LIBRARY_H

+
+
+#ifndef FT_CONFIG_STANDARD_LIBRARY_H
+#define FT_CONFIG_STANDARD_LIBRARY_H  <freetype/config/ftstdlib.h>
+#endif
+
+

+
+

A macro used in #include statements to name the file containing FreeType 2 interface to the standard C library functions.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CONFIG_OPTIONS_H

+
+
+#ifndef FT_CONFIG_OPTIONS_H
+#define FT_CONFIG_OPTIONS_H  <freetype/config/ftoption.h>
+#endif
+
+

+
+

A macro used in #include statements to name the file containing FreeType 2 project-specific configuration options.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CONFIG_MODULES_H

+
+
+#ifndef FT_CONFIG_MODULES_H
+#define FT_CONFIG_MODULES_H  <freetype/config/ftmodule.h>
+#endif
+
+

+
+

A macro used in #include statements to name the file containing the list of FreeType 2 modules that are statically linked to new library instances in FT_Init_FreeType.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_FREETYPE_H

+
+

A macro used in #include statements to name the file containing the base FreeType 2 API.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ERRORS_H

+
+

A macro used in #include statements to name the file containing the list of FreeType 2 error codes (and messages).

+

It is included by FT_FREETYPE_H.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_MODULE_ERRORS_H

+
+

A macro used in #include statements to name the file containing the list of FreeType 2 module error offsets (and messages).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_SYSTEM_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 interface to low-level operations (i.e., memory management and stream i/o).

+

It is included by FT_FREETYPE_H.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_IMAGE_H

+
+

A macro used in #include statements to name the file containing type definitions related to glyph images (i.e., bitmaps, outlines, scan-converter parameters).

+

It is included by FT_FREETYPE_H.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_TYPES_H

+
+

A macro used in #include statements to name the file containing the basic data types defined by FreeType 2.

+

It is included by FT_FREETYPE_H.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_LIST_H

+
+

A macro used in #include statements to name the file containing the list management API of FreeType 2.

+

(Most applications will never need to include this file.)

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_OUTLINE_H

+
+

A macro used in #include statements to name the file containing the scalable outline management API of FreeType 2.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_SIZES_H

+
+

A macro used in #include statements to name the file containing the API which manages multiple FT_Size objects per face.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_MODULE_H

+
+

A macro used in #include statements to name the file containing the module management API of FreeType 2.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_RENDER_H

+
+

A macro used in #include statements to name the file containing the renderer module management API of FreeType 2.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_TYPE1_TABLES_H

+
+

A macro used in #include statements to name the file containing the types and API specific to the Type 1 format.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_TRUETYPE_IDS_H

+
+

A macro used in #include statements to name the file containing the enumeration values which identify name strings, languages, encodings, etc. This file really contains a large set of constant macro definitions, taken from the TrueType and OpenType specifications.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_TRUETYPE_TABLES_H

+
+

A macro used in #include statements to name the file containing the types and API specific to the TrueType (as well as OpenType) format.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_TRUETYPE_TAGS_H

+
+

A macro used in #include statements to name the file containing the definitions of TrueType four-byte ‘tags’ which identify blocks in SFNT-based font formats (i.e., TrueType and OpenType).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_BDF_H

+
+

A macro used in #include statements to name the file containing the definitions of an API which accesses BDF-specific strings from a face.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CID_H

+
+

A macro used in #include statements to name the file containing the definitions of an API which access CID font information from a face.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_GZIP_H

+
+

A macro used in #include statements to name the file containing the definitions of an API which supports gzip-compressed files.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_LZW_H

+
+

A macro used in #include statements to name the file containing the definitions of an API which supports LZW-compressed files.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_WINFONTS_H

+
+

A macro used in #include statements to name the file containing the definitions of an API which supports Windows FNT files.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_GLYPH_H

+
+

A macro used in #include statements to name the file containing the API of the optional glyph management component.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_BITMAP_H

+
+

A macro used in #include statements to name the file containing the API of the optional bitmap conversion component.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_BBOX_H

+
+

A macro used in #include statements to name the file containing the API of the optional exact bounding box computation routines.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CACHE_H

+
+

A macro used in #include statements to name the file containing the API of the optional FreeType 2 cache sub-system.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CACHE_IMAGE_H

+
+

A macro used in #include statements to name the file containing the ‘glyph image’ API of the FreeType 2 cache sub-system.

+

It is used to define a cache for FT_Glyph elements. You can also use the API defined in FT_CACHE_SMALL_BITMAPS_H if you only need to store small glyph bitmaps, as it will use less memory.

+

This macro is deprecated. Simply include FT_CACHE_H to have all glyph image-related cache declarations.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CACHE_SMALL_BITMAPS_H

+
+

A macro used in #include statements to name the file containing the ‘small bitmaps’ API of the FreeType 2 cache sub-system.

+

It is used to define a cache for small glyph bitmaps in a relatively memory-efficient way. You can also use the API defined in FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, including scalable outlines.

+

This macro is deprecated. Simply include FT_CACHE_H to have all small bitmaps-related cache declarations.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_CACHE_CHARMAP_H

+
+

A macro used in #include statements to name the file containing the ‘charmap’ API of the FreeType 2 cache sub-system.

+

This macro is deprecated. Simply include FT_CACHE_H to have all charmap-based cache declarations.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_MAC_H

+
+

A macro used in #include statements to name the file containing the Macintosh-specific FreeType 2 API. The latter is used to access fonts embedded in resource forks.

+

This header file must be explicitly included by client applications compiled on the Mac (note that the base API still works though).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_MULTIPLE_MASTERS_H

+
+

A macro used in #include statements to name the file containing the optional multiple-masters management API of FreeType 2.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_SFNT_NAMES_H

+
+

A macro used in #include statements to name the file containing the optional FreeType 2 API which accesses embedded ‘name’ strings in SFNT-based font formats (i.e., TrueType and OpenType).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_OPENTYPE_VALIDATE_H

+
+

A macro used in #include statements to name the file containing the optional FreeType 2 API which validates OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_GX_VALIDATE_H

+
+

A macro used in #include statements to name the file containing the optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat, mort, morx, bsln, just, kern, opbd, trak, prop).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_PFR_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which accesses PFR-specific data.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_STROKER_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which provides functions to stroke outline paths.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_SYNTHESIS_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which performs artificial obliquing and emboldening.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_XFREE86_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which provides functions specific to the XFree86 and X.Org X11 servers.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_TRIGONOMETRY_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which performs trigonometric computations (e.g., cosines and arc tangents).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_LCD_FILTER_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_UNPATENTED_HINTING_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_INCREMENTAL_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_GASP_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which returns entries from the TrueType GASP table.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ADVANCES_H

+
+

A macro used in #include statements to name the file containing the FreeType 2 API which returns individual and ranged glyph advances.

+

+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-incremental.html b/src/3rdparty/freetype/docs/reference/ft2-incremental.html new file mode 100644 index 0000000000..8fbc111faf --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-incremental.html @@ -0,0 +1,365 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Incremental Loading +

+

Synopsis

+ + + + + + +
FT_IncrementalFT_Incremental_GetGlyphMetricsFunc
FT_Incremental_MetricsRecFT_Incremental_FuncsRec
FT_Incremental_MetricsFT_Incremental_InterfaceRec
FT_Incremental_GetGlyphDataFuncFT_Incremental_Interface
FT_Incremental_FreeGlyphDataFuncFT_PARAM_TAG_INCREMENTAL


+ +
+

This section contains various functions used to perform so-called ‘incremental’ glyph loading. This is a mode where all glyphs loaded from a given FT_Face are provided by the client application,

+

Apart from that, all other tables are loaded normally from the font file. This mode is useful when FreeType is used within another engine, e.g., a PostScript Imaging Processor.

+

To enable this mode, you must use FT_Open_Face, passing an FT_Parameter with the FT_PARAM_TAG_INCREMENTAL tag and an FT_Incremental_Interface value. See the comments for FT_Incremental_InterfaceRec for an example.

+

+
+

FT_Incremental

+
+

An opaque type describing a user-provided object used to implement ‘incremental’ glyph loading within FreeType. This is used to support embedded fonts in certain environments (e.g., PostScript interpreters), where the glyph data isn't in the font file, or must be overridden by different values.

+

+
note
+

It is up to client applications to create and implement FT_Incremental objects, as long as they provide implementations for the methods FT_Incremental_GetGlyphDataFunc, FT_Incremental_FreeGlyphDataFunc and FT_Incremental_GetGlyphMetricsFunc.

+

See the description of FT_Incremental_InterfaceRec to understand how to use incremental objects with FreeType.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_MetricsRec

+
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). +

+
+
+  typedef struct  FT_Incremental_MetricsRec_
+  {
+    FT_Long  bearing_x;
+    FT_Long  bearing_y;
+    FT_Long  advance;
+
+  } FT_Incremental_MetricsRec;
+
+

+
+

A small structure used to contain the basic glyph metrics returned by the FT_Incremental_GetGlyphMetricsFunc method.

+

+
fields
+

+ + + + +
bearing_x +

Left bearing, in font units.

+
bearing_y +

Top bearing, in font units.

+
advance +

Glyph advance, in font units.

+
+
+
note
+

These correspond to horizontal or vertical metrics depending on the value of the ‘vertical’ argument to the function FT_Incremental_GetGlyphMetricsFunc.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_Metrics

+
+

A handle to an FT_Incremental_MetricsRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_GetGlyphDataFunc

+
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). +

+
+
+  typedef FT_Error
+  (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental  incremental,
+                                      FT_UInt         glyph_index,
+                                      FT_Data*        adata );
+
+

+
+

A function called by FreeType to access a given glyph's data bytes during FT_Load_Glyph or FT_Load_Char if incremental loading is enabled.

+

Note that the format of the glyph's data bytes depends on the font file format. For TrueType, it must correspond to the raw bytes within the ‘glyf’ table. For PostScript formats, it must correspond to the unencrypted charstring bytes, without any ‘lenIV’ header. It is undefined for any other format.

+

+
input
+

+ + + +
incremental +

Handle to an opaque FT_Incremental handle provided by the client application.

+
glyph_index +

Index of relevant glyph.

+
+
+
output
+

+ + +
adata +

A structure describing the returned glyph data bytes (which will be accessed as a read-only byte block).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

If this function returns successfully the method FT_Incremental_FreeGlyphDataFunc will be called later to release the data bytes.

+

Nested calls to FT_Incremental_GetGlyphDataFunc can happen for compound glyphs.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_FreeGlyphDataFunc

+
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). +

+
+
+  typedef void
+  (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental  incremental,
+                                       FT_Data*        data );
+
+

+
+

A function used to release the glyph data bytes returned by a successful call to FT_Incremental_GetGlyphDataFunc.

+

+
input
+

+ + + +
incremental +

A handle to an opaque FT_Incremental handle provided by the client application.

+
data +

A structure describing the glyph data bytes (which will be accessed as a read-only byte block).

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_GetGlyphMetricsFunc

+
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). +

+
+
+  typedef FT_Error
+  (*FT_Incremental_GetGlyphMetricsFunc)
+                      ( FT_Incremental              incremental,
+                        FT_UInt                     glyph_index,
+                        FT_Bool                     vertical,
+                        FT_Incremental_MetricsRec  *ametrics );
+
+

+
+

A function used to retrieve the basic metrics of a given glyph index before accessing its data. This is necessary because, in certain formats like TrueType, the metrics are stored in a different place from the glyph images proper.

+

+
input
+

+ + + + + +
incremental +

A handle to an opaque FT_Incremental handle provided by the client application.

+
glyph_index +

Index of relevant glyph.

+
vertical +

If true, return vertical metrics.

+
ametrics +

This parameter is used for both input and output. The original glyph metrics, if any, in font units. If metrics are not available all the values must be set to zero.

+
+
+
output
+

+ + +
ametrics +

The replacement glyph metrics in font units.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_FuncsRec

+
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). +

+
+
+  typedef struct  FT_Incremental_FuncsRec_
+  {
+    FT_Incremental_GetGlyphDataFunc     get_glyph_data;
+    FT_Incremental_FreeGlyphDataFunc    free_glyph_data;
+    FT_Incremental_GetGlyphMetricsFunc  get_glyph_metrics;
+
+  } FT_Incremental_FuncsRec;
+
+

+
+

A table of functions for accessing fonts that load data incrementally. Used in FT_Incremental_InterfaceRec.

+

+
fields
+

+ + + + +
get_glyph_data +

The function to get glyph data. Must not be null.

+
free_glyph_data +

The function to release glyph data. Must not be null.

+
get_glyph_metrics +

The function to get glyph metrics. May be null if the font does not provide overriding glyph metrics.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_InterfaceRec

+
+Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). +

+
+
+  typedef struct  FT_Incremental_InterfaceRec_
+  {
+    const FT_Incremental_FuncsRec*  funcs;
+    FT_Incremental                  object;
+
+  } FT_Incremental_InterfaceRec;
+
+

+
+

A structure to be used with FT_Open_Face to indicate that the user wants to support incremental glyph loading. You should use it with FT_PARAM_TAG_INCREMENTAL as in the following example:

+
+  FT_Incremental_InterfaceRec  inc_int;
+  FT_Parameter                 parameter;
+  FT_Open_Args                 open_args;
+
+
+  // set up incremental descriptor
+  inc_int.funcs  = my_funcs;
+  inc_int.object = my_object;
+
+  // set up optional parameter
+  parameter.tag  = FT_PARAM_TAG_INCREMENTAL;
+  parameter.data = &inc_int;
+
+  // set up FT_Open_Args structure
+  open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
+  open_args.pathname   = my_font_pathname;
+  open_args.num_params = 1;
+  open_args.params     = &parameter; // we use one optional argument
+
+  // open the font
+  error = FT_Open_Face( library, &open_args, index, &face );
+  ...
+
+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Incremental_Interface

+
+

A pointer to an FT_Incremental_InterfaceRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_PARAM_TAG_INCREMENTAL

+
+

A constant used as the tag of FT_Parameter structures to indicate an incremental loading object to be used by FreeType.

+

+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-index.html b/src/3rdparty/freetype/docs/reference/ft2-index.html new file mode 100644 index 0000000000..ca4d1691d8 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-index.html @@ -0,0 +1,290 @@ + + + + +FreeType-2.3.9 API Reference + + + + + +
[TOC]
+

FreeType-2.3.9 API Reference

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BDF_PROPERTY_TYPE_ATOMFT_LCD_FILTER_LIGHTFT_Stroker_Set
BDF_PROPERTY_TYPE_CARDINALFT_LCD_FILTER_NONEFT_StrokerBorder
BDF_PROPERTY_TYPE_INTEGERFT_LcdFilterFT_SUBGLYPH_FLAG_2X2
BDF_PROPERTY_TYPE_NONEFT_LIST_HFT_SUBGLYPH_FLAG_ARGS_ARE_WORDS
BDF_PropertyFT_LibraryFT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES
BDF_PropertyRecFT_Library_SetLcdFilterFT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID
CID_FaceDictFT_Library_VersionFT_SUBGLYPH_FLAG_SCALE
CID_FaceDictRecFT_ListFT_SUBGLYPH_FLAG_USE_MY_METRICS
CID_FaceInfoFT_List_AddFT_SUBGLYPH_FLAG_XXX
CID_FaceInfoRecFT_List_DestructorFT_SUBGLYPH_FLAG_XY_SCALE
CID_InfoFT_List_FinalizeFT_SubGlyph
FREETYPE_MAJORFT_List_FindFT_SYNTHESIS_H
FREETYPE_MINORFT_List_InsertFT_SYSTEM_H
FREETYPE_PATCHFT_List_IterateFT_Tag
FREETYPE_XXXFT_List_IteratorFT_Tan
FT_Activate_SizeFT_List_RemoveFT_TRIGONOMETRY_H
FT_ADVANCE_FLAG_FAST_ONLYFT_List_UpFT_TRUETYPE_ENGINE_TYPE_NONE
FT_ADVANCES_HFT_ListNodeFT_TRUETYPE_ENGINE_TYPE_PATENTED
FT_Add_Default_ModulesFT_ListNodeRecFT_TRUETYPE_ENGINE_TYPE_UNPATENTED
FT_Add_ModuleFT_ListRecFT_TRUETYPE_IDS_H
FT_Alloc_FuncFT_LOAD_CROP_BITMAPFT_TRUETYPE_TABLES_H
FT_ANGLE_2PIFT_LOAD_DEFAULTFT_TRUETYPE_TAGS_H
FT_ANGLE_PIFT_LOAD_FORCE_AUTOHINTFT_TrueTypeEngineType
FT_ANGLE_PI2FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTHFT_TrueTypeGX_Free
FT_ANGLE_PI4FT_LOAD_IGNORE_TRANSFORMFT_TrueTypeGX_Validate
FT_AngleFT_LOAD_LINEAR_DESIGNFT_TYPE1_TABLES_H
FT_Angle_DiffFT_LOAD_MONOCHROMEFT_TYPES_H
FT_Atan2FT_LOAD_NO_AUTOHINTFT_UFWord
FT_Attach_FileFT_LOAD_NO_BITMAPFT_UInt
FT_Attach_StreamFT_LOAD_NO_HINTINGFT_UInt16
FT_BBOX_HFT_LOAD_NO_RECURSEFT_UInt32
FT_BBoxFT_LOAD_NO_SCALEFT_ULong
FT_BDF_HFT_LOAD_PEDANTICFT_UNPATENTED_HINTING_H
FT_BITMAP_HFT_LOAD_RENDERFT_UnitVector
FT_BitmapFT_LOAD_TARGET_LCDFT_UShort
FT_Bitmap_ConvertFT_LOAD_TARGET_LCD_VFT_VALIDATE_APPLE
FT_Bitmap_CopyFT_LOAD_TARGET_LIGHTFT_VALIDATE_BASE
FT_Bitmap_DoneFT_LOAD_TARGET_MODEFT_VALIDATE_bsln
FT_Bitmap_EmboldenFT_LOAD_TARGET_MONOFT_VALIDATE_CKERN
FT_Bitmap_NewFT_LOAD_TARGET_NORMALFT_VALIDATE_CKERNXXX
FT_Bitmap_SizeFT_LOAD_TARGET_XXXFT_VALIDATE_feat
FT_BitmapGlyphFT_LOAD_VERTICAL_LAYOUTFT_VALIDATE_GDEF
FT_BitmapGlyphRecFT_LOAD_XXXFT_VALIDATE_GPOS
FT_BoolFT_Load_CharFT_VALIDATE_GSUB
FT_ByteFT_Load_GlyphFT_VALIDATE_GX
FT_BytesFT_Load_Sfnt_TableFT_VALIDATE_GX_LENGTH
FT_CACHE_CHARMAP_HFT_LongFT_VALIDATE_GXXXX
FT_CACHE_HFT_LZW_HFT_VALIDATE_JSTF
FT_CACHE_IMAGE_HFT_MAC_HFT_VALIDATE_just
FT_CACHE_SMALL_BITMAPS_HFT_MAKE_TAGFT_VALIDATE_kern
FT_CeilFixFT_MatrixFT_VALIDATE_lcar
FT_CharFT_Matrix_InvertFT_VALIDATE_MATH
FT_CharMapFT_Matrix_MultiplyFT_VALIDATE_MS
FT_CharMapRecFT_MemoryFT_VALIDATE_mort
FT_CID_HFT_MemoryRecFT_VALIDATE_morx
FT_ClassicKern_FreeFT_MM_AxisFT_VALIDATE_OT
FT_ClassicKern_ValidateFT_MM_VarFT_VALIDATE_OTXXX
FT_CONFIG_CONFIG_HFT_MODULE_ERRORS_HFT_VALIDATE_opbd
FT_CONFIG_MODULES_HFT_MODULE_HFT_VALIDATE_prop
FT_CONFIG_OPTIONS_HFT_ModuleFT_VALIDATE_trak
FT_CONFIG_STANDARD_LIBRARY_HFT_Module_ClassFT_Var_Axis
FT_CosFT_Module_ConstructorFT_Var_Named_Style
FT_DataFT_Module_DestructorFT_Vector
FT_DivFixFT_Module_RequesterFT_Vector_From_Polar
FT_Done_FaceFT_MULTIPLE_MASTERS_HFT_Vector_Length
FT_Done_FreeTypeFT_MulDivFT_Vector_Polarize
FT_Done_GlyphFT_MulFixFT_Vector_Rotate
FT_Done_LibraryFT_Multi_MasterFT_Vector_Transform
FT_Done_SizeFT_New_FaceFT_Vector_Unit
FT_DriverFT_New_Face_From_FONDFT_WINFONTS_H
FT_ENC_TAGFT_New_Face_From_FSRefFT_WinFNT_Header
FT_ENCODING_ADOBE_CUSTOMFT_New_Face_From_FSSpecFT_WinFNT_HeaderRec
FT_ENCODING_ADOBE_EXPERTFT_New_LibraryFT_WinFNT_ID_CP1250
FT_ENCODING_ADOBE_LATIN_1FT_New_Memory_FaceFT_WinFNT_ID_CP1251
FT_ENCODING_ADOBE_STANDARDFT_New_SizeFT_WinFNT_ID_CP1252
FT_ENCODING_APPLE_ROMANFT_OffsetFT_WinFNT_ID_CP1253
FT_ENCODING_BIG5FT_OPEN_DRIVERFT_WinFNT_ID_CP1254
FT_ENCODING_GB2312FT_OPEN_MEMORYFT_WinFNT_ID_CP1255
FT_ENCODING_JOHABFT_OPEN_PARAMSFT_WinFNT_ID_CP1256
FT_ENCODING_MS_BIG5FT_OPEN_PATHNAMEFT_WinFNT_ID_CP1257
FT_ENCODING_MS_GB2312FT_OPEN_STREAMFT_WinFNT_ID_CP1258
FT_ENCODING_MS_JOHABFT_OPEN_XXXFT_WinFNT_ID_CP1361
FT_ENCODING_MS_SJISFT_OPENTYPE_VALIDATE_HFT_WinFNT_ID_CP874
FT_ENCODING_MS_SYMBOLFT_Open_ArgsFT_WinFNT_ID_CP932
FT_ENCODING_MS_WANSUNGFT_Open_FaceFT_WinFNT_ID_CP936
FT_ENCODING_NONEFT_OpenType_FreeFT_WinFNT_ID_CP949
FT_ENCODING_OLD_LATIN_2FT_OpenType_ValidateFT_WinFNT_ID_CP950
FT_ENCODING_SJISFT_ORIENTATION_FILL_LEFTFT_WinFNT_ID_DEFAULT
FT_ENCODING_UNICODEFT_ORIENTATION_FILL_RIGHTFT_WinFNT_ID_MAC
FT_ENCODING_WANSUNGFT_ORIENTATION_NONEFT_WinFNT_ID_OEM
FT_EncodingFT_ORIENTATION_POSTSCRIPTFT_WinFNT_ID_SYMBOL
FT_ERRORS_HFT_ORIENTATION_TRUETYPEFT_WinFNT_ID_XXX
FT_ErrorFT_OrientationFT_XFREE86_H
FT_F26Dot6FT_OUTLINE_EVEN_ODD_FILLFTC_CMapCache
FT_F2Dot14FT_OUTLINE_FLAGSFTC_CMapCache_Lookup
FT_FACE_FLAG_CID_KEYEDFT_OUTLINE_HFTC_CMapCache_New
FT_FACE_FLAG_EXTERNAL_STREAMFT_OUTLINE_HIGH_PRECISIONFTC_Face_Requester
FT_FACE_FLAG_FAST_GLYPHSFT_OUTLINE_IGNORE_DROPOUTSFTC_FaceID
FT_FACE_FLAG_FIXED_SIZESFT_OUTLINE_INCLUDE_STUBSFTC_ImageCache
FT_FACE_FLAG_FIXED_WIDTHFT_OUTLINE_NONEFTC_ImageCache_Lookup
FT_FACE_FLAG_GLYPH_NAMESFT_OUTLINE_OWNERFTC_ImageCache_LookupScaler
FT_FACE_FLAG_HINTERFT_OUTLINE_REVERSE_FILLFTC_ImageCache_New
FT_FACE_FLAG_HORIZONTALFT_OUTLINE_SINGLE_PASSFTC_ImageType
FT_FACE_FLAG_KERNINGFT_OUTLINE_SMART_DROPOUTSFTC_ImageTypeRec
FT_FACE_FLAG_MULTIPLE_MASTERSFT_OutlineFTC_Manager
FT_FACE_FLAG_SCALABLEFT_Outline_CheckFTC_Manager_Done
FT_FACE_FLAG_SFNTFT_Outline_ConicToFuncFTC_Manager_LookupFace
FT_FACE_FLAG_TRICKYFT_Outline_CopyFTC_Manager_LookupSize
FT_FACE_FLAG_VERTICALFT_Outline_CubicToFuncFTC_Manager_New
FT_FACE_FLAG_XXXFT_Outline_DecomposeFTC_Manager_RemoveFaceID
FT_FaceFT_Outline_DoneFTC_Manager_Reset
FT_Face_CheckTrueTypePatentsFT_Outline_EmboldenFTC_Node
FT_Face_GetCharsOfVariantFT_Outline_FuncsFTC_Node_Unref
FT_Face_GetCharVariantIndexFT_Outline_Get_BBoxFTC_SBit
FT_Face_GetCharVariantIsDefaultFT_Outline_Get_BitmapFTC_SBitCache
FT_Face_GetVariantSelectorsFT_Outline_Get_CBoxFTC_SBitCache_Lookup
FT_Face_GetVariantsOfCharFT_Outline_Get_OrientationFTC_SBitCache_LookupScaler
FT_Face_InternalFT_Outline_GetInsideBorderFTC_SBitCache_New
FT_Face_SetUnpatentedHintingFT_Outline_GetOutsideBorderFTC_SBitRec
FT_FaceRecFT_Outline_LineToFuncFTC_Scaler
FT_FixedFT_Outline_MoveToFuncFTC_ScalerRec
FT_FloorFixFT_Outline_Newft_encoding_xxx
FT_FREETYPE_HFT_Outline_Renderft_glyph_bbox_gridfit
FT_Free_FuncFT_Outline_Reverseft_glyph_bbox_pixels
FT_FSTYPE_BITMAP_EMBEDDING_ONLYFT_Outline_Transformft_glyph_bbox_subpixels
FT_FSTYPE_EDITABLE_EMBEDDINGFT_Outline_Translateft_glyph_bbox_truncate
FT_FSTYPE_INSTALLABLE_EMBEDDINGFT_OutlineGlyphft_glyph_bbox_unscaled
FT_FSTYPE_NO_SUBSETTINGFT_OutlineGlyphRecft_glyph_bbox_xxx
FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDINGFT_PARAM_TAG_INCREMENTALft_glyph_format_bitmap
FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDINGFT_PARAM_TAG_UNPATENTED_HINTINGft_glyph_format_composite
FT_FSTYPE_XXXFT_Palette_Modeft_glyph_format_none
FT_FWordFT_Parameterft_glyph_format_outline
FT_GASP_DO_GRAYFT_PFR_Hft_glyph_format_plotter
FT_GASP_DO_GRIDFITFT_PIXEL_MODE_GRAYft_glyph_format_xxx
FT_GASP_HFT_PIXEL_MODE_GRAY2ft_kerning_default
FT_GASP_NO_TABLEFT_PIXEL_MODE_GRAY4ft_kerning_unfitted
FT_GASP_SYMMETRIC_GRIDFITFT_PIXEL_MODE_LCDft_kerning_unscaled
FT_GASP_SYMMETRIC_SMOOTHINGFT_PIXEL_MODE_LCD_Vft_open_driver
FT_GASP_XXXFT_PIXEL_MODE_MONOft_open_memory
FT_GenericFT_PIXEL_MODE_NONEft_open_params
FT_Generic_FinalizerFT_Pixel_Modeft_open_pathname
FT_Get_AdvanceFT_Pointerft_open_stream
FT_Get_AdvancesFT_Posft_outline_even_odd_fill
FT_Get_BDF_Charset_IDFT_PropertyTypeft_outline_flags
FT_Get_BDF_PropertyFT_PtrDistft_outline_high_precision
FT_Get_Char_IndexFT_RASTER_FLAG_AAft_outline_ignore_dropouts
FT_Get_Charmap_IndexFT_RASTER_FLAG_CLIPft_outline_none
FT_Get_CID_From_Glyph_IndexFT_RASTER_FLAG_DEFAULTft_outline_owner
FT_Get_CID_Is_Internally_CID_KeyedFT_RASTER_FLAG_DIRECTft_outline_reverse_fill
FT_Get_CID_Registry_Ordering_SupplementFT_RASTER_FLAG_XXXft_outline_single_pass
FT_Get_CMap_FormatFT_Rasterft_palette_mode_rgb
FT_Get_CMap_Language_IDFT_Raster_BitSet_Funcft_palette_mode_rgba
FT_Get_First_CharFT_Raster_BitTest_Funcft_pixel_mode_grays
FT_Get_FSType_FlagsFT_Raster_DoneFuncft_pixel_mode_mono
FT_Get_GaspFT_Raster_Funcsft_pixel_mode_none
FT_Get_GlyphFT_Raster_NewFuncft_pixel_mode_pal2
FT_Get_Glyph_NameFT_Raster_Paramsft_pixel_mode_pal4
FT_Get_KerningFT_Raster_RenderFuncft_pixel_mode_xxx
FT_Get_MM_VarFT_Raster_ResetFuncft_render_mode_mono
FT_Get_ModuleFT_Raster_SetModeFuncft_render_mode_normal
FT_Get_Multi_MasterFT_RENDER_Hft_render_mode_xxx
FT_Get_Name_IndexFT_RENDER_MODE_LCDPS_FontInfo
FT_Get_Next_CharFT_RENDER_MODE_LCD_VPS_FontInfoRec
FT_Get_PFR_AdvanceFT_RENDER_MODE_LIGHTPS_Private
FT_Get_PFR_KerningFT_RENDER_MODE_MONOPS_PrivateRec
FT_Get_PFR_MetricsFT_RENDER_MODE_NORMALT1_Blend_Flags
FT_Get_Postscript_NameFT_Realloc_FuncT1_FontInfo
FT_Get_PS_Font_InfoFT_Remove_ModuleT1_Private
FT_Get_PS_Font_PrivateFT_Render_GlyphTT_ADOBE_ID_CUSTOM
FT_Get_RendererFT_Render_ModeTT_ADOBE_ID_EXPERT
FT_Get_Sfnt_NameFT_RendererTT_ADOBE_ID_LATIN_1
FT_Get_Sfnt_Name_CountFT_Renderer_ClassTT_ADOBE_ID_STANDARD
FT_Get_Sfnt_TableFT_Request_SizeTT_ADOBE_ID_XXX
FT_Get_SubGlyph_InfoFT_RoundFixTT_APPLE_ID_DEFAULT
FT_Get_Track_KerningFT_Select_CharmapTT_APPLE_ID_ISO_10646
FT_Get_TrueType_Engine_TypeFT_Select_SizeTT_APPLE_ID_UNICODE_1_1
FT_Get_WinFNT_HeaderFT_Set_Char_SizeTT_APPLE_ID_UNICODE_2_0
FT_Get_X11_Font_FormatFT_Set_CharmapTT_APPLE_ID_UNICODE_32
FT_GetFile_From_Mac_ATS_NameFT_Set_Debug_HookTT_APPLE_ID_VARIANT_SELECTOR
FT_GetFile_From_Mac_NameFT_Set_MM_Blend_CoordinatesTT_APPLE_ID_XXX
FT_GetFilePath_From_Mac_ATS_NameFT_Set_MM_Design_CoordinatesTT_Header
FT_GLYPH_BBOX_GRIDFITFT_Set_Pixel_SizesTT_HoriHeader
FT_GLYPH_BBOX_PIXELSFT_Set_RendererTT_ISO_ID_10646
FT_GLYPH_BBOX_SUBPIXELSFT_Set_TransformTT_ISO_ID_7BIT_ASCII
FT_GLYPH_BBOX_TRUNCATEFT_Set_Var_Blend_CoordinatesTT_ISO_ID_8859_1
FT_GLYPH_BBOX_UNSCALEDFT_Set_Var_Design_CoordinatesTT_ISO_ID_XXX
FT_GLYPH_FORMAT_BITMAPFT_SFNT_NAMES_HTT_MAC_ID_ARABIC
FT_GLYPH_FORMAT_COMPOSITEFT_Sfnt_Table_InfoTT_MAC_ID_ARMENIAN
FT_GLYPH_FORMAT_NONEFT_Sfnt_TagTT_MAC_ID_BENGALI
FT_GLYPH_FORMAT_OUTLINEFT_SfntNameTT_MAC_ID_BURMESE
FT_GLYPH_FORMAT_PLOTTERFT_ShortTT_MAC_ID_DEVANAGARI
FT_GLYPH_HFT_SIZE_REQUEST_TYPE_BBOXTT_MAC_ID_GEEZ
FT_GlyphFT_SIZE_REQUEST_TYPE_CELLTT_MAC_ID_GEORGIAN
FT_Glyph_BBox_ModeFT_SIZE_REQUEST_TYPE_NOMINALTT_MAC_ID_GREEK
FT_Glyph_CopyFT_SIZE_REQUEST_TYPE_REAL_DIMTT_MAC_ID_GUJARATI
FT_Glyph_FormatFT_SIZE_REQUEST_TYPE_SCALESTT_MAC_ID_GURMUKHI
FT_Glyph_Get_CBoxFT_SIZES_HTT_MAC_ID_HEBREW
FT_Glyph_MetricsFT_SinTT_MAC_ID_JAPANESE
FT_Glyph_StrokeFT_SizeTT_MAC_ID_KANNADA
FT_Glyph_StrokeBorderFT_Size_InternalTT_MAC_ID_KHMER
FT_Glyph_To_BitmapFT_Size_MetricsTT_MAC_ID_KOREAN
FT_Glyph_TransformFT_Size_RequestTT_MAC_ID_LAOTIAN
FT_GlyphRecFT_Size_Request_TypeTT_MAC_ID_MALAYALAM
FT_GlyphSlotFT_Size_RequestRecTT_MAC_ID_MALDIVIAN
FT_GlyphSlot_Own_BitmapFT_SizeRecTT_MAC_ID_MONGOLIAN
FT_GlyphSlotRecFT_Slot_InternalTT_MAC_ID_ORIYA
FT_GX_VALIDATE_HFT_SpanTT_MAC_ID_ROMAN
FT_GZIP_HFT_SpanFuncTT_MAC_ID_RSYMBOL
FT_HAS_FAST_GLYPHSFT_STROKER_BORDER_LEFTTT_MAC_ID_RUSSIAN
FT_HAS_FIXED_SIZESFT_STROKER_BORDER_RIGHTTT_MAC_ID_SIMPLIFIED_CHINESE
FT_HAS_GLYPH_NAMESFT_STROKER_HTT_MAC_ID_SINDHI
FT_HAS_HORIZONTALFT_STROKER_LINECAP_BUTTTT_MAC_ID_SINHALESE
FT_HAS_KERNINGFT_STROKER_LINECAP_ROUNDTT_MAC_ID_SLAVIC
FT_HAS_MULTIPLE_MASTERSFT_STROKER_LINECAP_SQUARETT_MAC_ID_TAMIL
FT_HAS_VERTICALFT_STROKER_LINEJOIN_BEVELTT_MAC_ID_TELUGU
FT_Has_PS_Glyph_NamesFT_STROKER_LINEJOIN_MITERTT_MAC_ID_THAI
FT_IMAGE_HFT_STROKER_LINEJOIN_ROUNDTT_MAC_ID_TIBETAN
FT_IMAGE_TAGFT_STYLE_FLAG_BOLDTT_MAC_ID_TRADITIONAL_CHINESE
FT_INCREMENTAL_HFT_STYLE_FLAG_ITALICTT_MAC_ID_UNINTERP
FT_IncrementalFT_STYLE_FLAG_XXXTT_MAC_ID_VIETNAMESE
FT_Incremental_FreeGlyphDataFuncFT_StreamTT_MAC_ID_XXX
FT_Incremental_FuncsRecFT_Stream_CloseFuncTT_MaxProfile
FT_Incremental_GetGlyphDataFuncFT_Stream_IoFuncTT_MS_ID_BIG_5
FT_Incremental_GetGlyphMetricsFuncFT_Stream_OpenGzipTT_MS_ID_GB2312
FT_Incremental_InterfaceFT_Stream_OpenLZWTT_MS_ID_JOHAB
FT_Incremental_InterfaceRecFT_StreamDescTT_MS_ID_SJIS
FT_Incremental_MetricsFT_StreamRecTT_MS_ID_SYMBOL_CS
FT_Incremental_MetricsRecFT_StringTT_MS_ID_UCS_4
FT_Init_FreeTypeFT_StrokerTT_MS_ID_UNICODE_CS
FT_IntFT_Stroker_BeginSubPathTT_MS_ID_WANSUNG
FT_Int16FT_Stroker_ConicToTT_MS_ID_XXX
FT_Int32FT_Stroker_CubicToTT_OS2
FT_IS_CID_KEYEDFT_Stroker_DoneTT_PCLT
FT_IS_FIXED_WIDTHFT_Stroker_EndSubPathTT_PLATFORM_ADOBE
FT_IS_SCALABLEFT_Stroker_ExportTT_PLATFORM_APPLE_UNICODE
FT_IS_SFNTFT_Stroker_ExportBorderTT_PLATFORM_CUSTOM
FT_IS_TRICKYFT_Stroker_GetBorderCountsTT_PLATFORM_ISO
FT_KERNING_DEFAULTFT_Stroker_GetCountsTT_PLATFORM_MACINTOSH
FT_KERNING_UNFITTEDFT_Stroker_LineCapTT_PLATFORM_MICROSOFT
FT_KERNING_UNSCALEDFT_Stroker_LineJoinTT_PLATFORM_XXX
FT_Kerning_ModeFT_Stroker_LineToTT_Postscript
FT_LCD_FILTER_DEFAULTFT_Stroker_NewTT_VertHeader
FT_LCD_FILTER_HFT_Stroker_ParseOutline
FT_LCD_FILTER_LEGACYFT_Stroker_Rewind
+
+ +
[TOC]
+ +
generated on Thu Mar 12 10:57:36 2009
+ diff --git a/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html b/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html new file mode 100644 index 0000000000..9ae6a5f992 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html @@ -0,0 +1,149 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+LCD Filtering +

+

Synopsis

+ + +
FT_LcdFilterFT_Library_SetLcdFilter


+ +
+

The FT_Library_SetLcdFilter API can be used to specify a low-pass filter which is then applied to LCD-optimized bitmaps generated through FT_Render_Glyph. This is useful to reduce color fringes which would occur with unfiltered rendering.

+

Note that no filter is active by default, and that this function is not implemented in default builds of the library. You need to #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your ‘ftoption.h’ file in order to activate it.

+

+
+

FT_LcdFilter

+
+Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h). +

+
+
+  typedef enum  FT_LcdFilter_
+  {
+    FT_LCD_FILTER_NONE    = 0,
+    FT_LCD_FILTER_DEFAULT = 1,
+    FT_LCD_FILTER_LIGHT   = 2,
+    FT_LCD_FILTER_LEGACY  = 16,
+
+    FT_LCD_FILTER_MAX   /* do not remove */
+
+  } FT_LcdFilter;
+
+

+
+

A list of values to identify various types of LCD filters.

+

+
values
+

+ + + + + +
FT_LCD_FILTER_NONE +

Do not perform filtering. When used with subpixel rendering, this results in sometimes severe color fringes.

+
FT_LCD_FILTER_DEFAULT +

The default filter reduces color fringes considerably, at the cost of a slight blurriness in the output.

+
FT_LCD_FILTER_LIGHT +

The light filter is a variant that produces less blurriness at the cost of slightly more color fringes than the default one. It might be better, depending on taste, your monitor, or your personal vision.

+
FT_LCD_FILTER_LEGACY +

This filter corresponds to the original libXft color filter. It provides high contrast output but can exhibit really bad color fringes if glyphs are not extremely well hinted to the pixel grid. In other words, it only works well if the TrueType bytecode interpreter is enabled and high-quality hinted fonts are used.

+

This filter is only provided for comparison purposes, and might be disabled or stay unsupported in the future.

+
+
+
since
+

2.3.0

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Library_SetLcdFilter

+
+Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Library_SetLcdFilter( FT_Library    library,
+                           FT_LcdFilter  filter );
+
+

+
+

This function is used to apply color filtering to LCD decimated bitmaps, like the ones used when calling FT_Render_Glyph with FT_RENDER_MODE_LCD or FT_RENDER_MODE_LCD_V.

+

+
input
+

+ + + +
library +

A handle to the target library instance.

+
filter +

The filter type.

+

You can use FT_LCD_FILTER_NONE here to disable this feature, or FT_LCD_FILTER_DEFAULT to use a default filter that should work well on most LCD screens.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This feature is always disabled by default. Clients must make an explicit call to this function with a ‘filter’ value other than FT_LCD_FILTER_NONE in order to enable it.

+

Due to PATENTS covering subpixel rendering, this function doesn't do anything except returning ‘FT_Err_Unimplemented_Feature’ if the configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not defined in your build of the library, which should correspond to all default builds of FreeType.

+

The filter affects glyph bitmaps rendered through FT_Render_Glyph, FT_Outline_Get_Bitmap, FT_Load_Glyph, and FT_Load_Char.

+

It does not affect the output of FT_Outline_Render and FT_Outline_Get_Bitmap.

+

If this feature is activated, the dimensions of LCD glyph bitmaps are either larger or taller than the dimensions of the corresponding outline with regards to the pixel grid. For example, for FT_RENDER_MODE_LCD, the filter adds up to 3 pixels to the left, and up to 3 pixels to the right.

+

The bitmap offset values are adjusted correctly, so clients shouldn't need to modify their layout and glyph positioning code when enabling the filter.

+
+
since
+

2.3.0

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-list_processing.html b/src/3rdparty/freetype/docs/reference/ft2-list_processing.html new file mode 100644 index 0000000000..bf0df50d0e --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-list_processing.html @@ -0,0 +1,467 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+List Processing +

+

Synopsis

+ + + + + + +
FT_ListFT_List_AddFT_List_Iterate
FT_ListNodeFT_List_InsertFT_List_Destructor
FT_ListRecFT_List_RemoveFT_List_Finalize
FT_ListNodeRecFT_List_Up
FT_List_FindFT_List_Iterator


+ +
+

This section contains various definitions related to list processing using doubly-linked nodes.

+

+
+

FT_List

+
+

A handle to a list record (see FT_ListRec).

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ListNode

+
+

Many elements and objects in FreeType are listed through an FT_List record (see FT_ListRec). As its name suggests, an FT_ListNode is a handle to a single list element.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_ListRec

+
+Defined in FT_TYPES_H (freetype/fttypes.h). +

+
+
+  typedef struct  FT_ListRec_
+  {
+    FT_ListNode  head;
+    FT_ListNode  tail;
+
+  } FT_ListRec;
+
+

+
+

A structure used to hold a simple doubly-linked list. These are used in many parts of FreeType.

+

+
fields
+

+ + + +
head +

The head (first element) of doubly-linked list.

+
tail +

The tail (last element) of doubly-linked list.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_ListNodeRec

+
+Defined in FT_TYPES_H (freetype/fttypes.h). +

+
+
+  typedef struct  FT_ListNodeRec_
+  {
+    FT_ListNode  prev;
+    FT_ListNode  next;
+    void*        data;
+
+  } FT_ListNodeRec;
+
+

+
+

A structure used to hold a single list element.

+

+
fields
+

+ + + + +
prev +

The previous element in the list. NULL if first.

+
next +

The next element in the list. NULL if last.

+
data +

A typeless pointer to the listed object.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Find

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  FT_EXPORT( FT_ListNode )
+  FT_List_Find( FT_List  list,
+                void*    data );
+
+

+
+

Find the list node for a given listed object.

+

+
input
+

+ + + +
list +

A pointer to the parent list.

+
data +

The address of the listed object.

+
+
+
return
+

List node. NULL if it wasn't found.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Add

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  FT_EXPORT( void )
+  FT_List_Add( FT_List      list,
+               FT_ListNode  node );
+
+

+
+

Append an element to the end of a list.

+

+
inout
+

+ + + +
list +

A pointer to the parent list.

+
node +

The node to append.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Insert

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  FT_EXPORT( void )
+  FT_List_Insert( FT_List      list,
+                  FT_ListNode  node );
+
+

+
+

Insert an element at the head of a list.

+

+
inout
+

+ + + +
list +

A pointer to parent list.

+
node +

The node to insert.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Remove

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  FT_EXPORT( void )
+  FT_List_Remove( FT_List      list,
+                  FT_ListNode  node );
+
+

+
+

Remove a node from a list. This function doesn't check whether the node is in the list!

+

+
input
+

+ + +
node +

The node to remove.

+
+
+
inout
+

+ + +
list +

A pointer to the parent list.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Up

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  FT_EXPORT( void )
+  FT_List_Up( FT_List      list,
+              FT_ListNode  node );
+
+

+
+

Move a node to the head/top of a list. Used to maintain LRU lists.

+

+
inout
+

+ + + +
list +

A pointer to the parent list.

+
node +

The node to move.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Iterator

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  typedef FT_Error
+  (*FT_List_Iterator)( FT_ListNode  node,
+                       void*        user );
+
+

+
+

An FT_List iterator function which is called during a list parse by FT_List_Iterate.

+

+
input
+

+ + + +
node +

The current iteration list node.

+
user +

A typeless pointer passed to FT_List_Iterate. Can be used to point to the iteration's state.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Iterate

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_List_Iterate( FT_List           list,
+                   FT_List_Iterator  iterator,
+                   void*             user );
+
+

+
+

Parse a list and calls a given iterator function on each element. Note that parsing is stopped as soon as one of the iterator calls returns a non-zero value.

+

+
input
+

+ + + + +
list +

A handle to the list.

+
iterator +

An iterator function, called on each node of the list.

+
user +

A user-supplied field which is passed as the second argument to the iterator.

+
+
+
return
+

The result (a FreeType error code) of the last iterator call.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Destructor

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  typedef void
+  (*FT_List_Destructor)( FT_Memory  memory,
+                         void*      data,
+                         void*      user );
+
+

+
+

An FT_List iterator function which is called during a list finalization by FT_List_Finalize to destroy all elements in a given list.

+

+
input
+

+ + + + +
system +

The current system object.

+
data +

The current object to destroy.

+
user +

A typeless pointer passed to FT_List_Iterate. It can be used to point to the iteration's state.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_List_Finalize

+
+Defined in FT_LIST_H (freetype/ftlist.h). +

+
+
+  FT_EXPORT( void )
+  FT_List_Finalize( FT_List             list,
+                    FT_List_Destructor  destroy,
+                    FT_Memory           memory,
+                    void*               user );
+
+

+
+

Destroy all elements in the list as well as the list itself.

+

+
input
+

+ + + + + +
list +

A handle to the list.

+
destroy +

A list destructor that will be applied to each element of the list.

+
memory +

The current memory object which handles deallocation.

+
user +

A user-supplied field which is passed as the last argument to the destructor.

+
+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-lzw.html b/src/3rdparty/freetype/docs/reference/ft2-lzw.html new file mode 100644 index 0000000000..5ef0a5f7ab --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-lzw.html @@ -0,0 +1,94 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+LZW Streams +

+

Synopsis

+ + +
FT_Stream_OpenLZW


+ +
+

This section contains the declaration of LZW-specific functions.

+

+
+

FT_Stream_OpenLZW

+
+Defined in FT_LZW_H (freetype/ftlzw.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Stream_OpenLZW( FT_Stream  stream,
+                     FT_Stream  source );
+
+

+
+

Open a new stream to parse LZW-compressed font files. This is mainly used to support the compressed ‘*.pcf.Z’ fonts that come with XFree86.

+

+
input
+

+ + + +
stream +

The target embedding stream.

+
source +

The source stream.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The source stream must be opened before calling this function.

+

Calling the internal function ‘FT_Stream_Close’ on the new stream will not call ‘FT_Stream_Close’ on the source stream. None of the stream objects will be released to the heap.

+

The stream implementation is very basic and resets the decompression process each time seeking backwards is needed within the stream

+

In certain builds of the library, LZW compression recognition is automatically handled when calling FT_New_Face or FT_Open_Face. This means that if no font driver is capable of handling the raw compressed file, the library will try to open a LZW stream from it and re-open the face with it.

+

This function may return ‘FT_Err_Unimplemented_Feature’ if your build of FreeType was not compiled with LZW support.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html b/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html new file mode 100644 index 0000000000..3528c72db7 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html @@ -0,0 +1,368 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Mac Specific Interface +

+

Synopsis

+ + + + +
FT_New_Face_From_FONDFT_GetFilePath_From_Mac_ATS_Name
FT_GetFile_From_Mac_NameFT_New_Face_From_FSSpec
FT_GetFile_From_Mac_ATS_NameFT_New_Face_From_FSRef


+ +
+

The following definitions are only available if FreeType is compiled on a Macintosh.

+

+
+

FT_New_Face_From_FOND

+
+Defined in FT_MAC_H (freetype/ftmac.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_New_Face_From_FOND( FT_Library  library,
+                         Handle      fond,
+                         FT_Long     face_index,
+                         FT_Face    *aface )
+                       FT_DEPRECATED_ATTRIBUTE;
+
+

+
+

Create a new face object from a FOND resource.

+

+
inout
+

+ + +
library +

A handle to the library resource.

+
+
+
input
+

+ + + +
fond +

A FOND resource.

+
face_index +

Only supported for the -1 ‘sanity check’ special case.

+
+
+
output
+

+ + +
aface +

A handle to a new face object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
notes
+

This function can be used to create FT_Face objects from fonts that are installed in the system as follows.

+
+  fond = GetResource( 'FOND', fontName );                          
+  error = FT_New_Face_From_FOND( library, fond, 0, &face );        
+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_GetFile_From_Mac_Name

+
+Defined in FT_MAC_H (freetype/ftmac.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_GetFile_From_Mac_Name( const char*  fontName,
+                            FSSpec*      pathSpec,
+                            FT_Long*     face_index )
+                          FT_DEPRECATED_ATTRIBUTE;
+
+

+
+

Return an FSSpec for the disk file containing the named font.

+

+
input
+

+ + +
fontName +

Mac OS name of the font (e.g., Times New Roman Bold).

+
+
+
output
+

+ + + +
pathSpec +

FSSpec to the file. For passing to FT_New_Face_From_FSSpec.

+
face_index +

Index of the face. For passing to FT_New_Face_From_FSSpec.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_GetFile_From_Mac_ATS_Name

+
+Defined in FT_MAC_H (freetype/ftmac.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_GetFile_From_Mac_ATS_Name( const char*  fontName,
+                                FSSpec*      pathSpec,
+                                FT_Long*     face_index )
+                              FT_DEPRECATED_ATTRIBUTE;
+
+

+
+

Return an FSSpec for the disk file containing the named font.

+

+
input
+

+ + +
fontName +

Mac OS name of the font in ATS framework.

+
+
+
output
+

+ + + +
pathSpec +

FSSpec to the file. For passing to FT_New_Face_From_FSSpec.

+
face_index +

Index of the face. For passing to FT_New_Face_From_FSSpec.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_GetFilePath_From_Mac_ATS_Name

+
+Defined in FT_MAC_H (freetype/ftmac.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_GetFilePath_From_Mac_ATS_Name( const char*  fontName,
+                                    UInt8*       path,
+                                    UInt32       maxPathSize,
+                                    FT_Long*     face_index )
+                                  FT_DEPRECATED_ATTRIBUTE;
+
+

+
+

Return a pathname of the disk file and face index for given font name which is handled by ATS framework.

+

+
input
+

+ + +
fontName +

Mac OS name of the font in ATS framework.

+
+
+
output
+

+ + + + +
path +

Buffer to store pathname of the file. For passing to FT_New_Face. The client must allocate this buffer before calling this function.

+
maxPathSize +

Lengths of the buffer ‘path’ that client allocated.

+
face_index +

Index of the face. For passing to FT_New_Face.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_New_Face_From_FSSpec

+
+Defined in FT_MAC_H (freetype/ftmac.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_New_Face_From_FSSpec( FT_Library     library,
+                           const FSSpec  *spec,
+                           FT_Long        face_index,
+                           FT_Face       *aface )
+                         FT_DEPRECATED_ATTRIBUTE;
+
+

+
+

Create a new face object from a given resource and typeface index using an FSSpec to the font file.

+

+
inout
+

+ + +
library +

A handle to the library resource.

+
+
+
input
+

+ + + +
spec +

FSSpec to the font file.

+
face_index +

The index of the face within the resource. The first face has index 0.

+
+
+
output
+

+ + +
aface +

A handle to a new face object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

FT_New_Face_From_FSSpec is identical to FT_New_Face except it accepts an FSSpec instead of a path.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_New_Face_From_FSRef

+
+Defined in FT_MAC_H (freetype/ftmac.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_New_Face_From_FSRef( FT_Library    library,
+                          const FSRef  *ref,
+                          FT_Long       face_index,
+                          FT_Face      *aface )
+                        FT_DEPRECATED_ATTRIBUTE;
+
+

+
+

Create a new face object from a given resource and typeface index using an FSRef to the font file.

+

+
inout
+

+ + +
library +

A handle to the library resource.

+
+
+
input
+

+ + + +
spec +

FSRef to the font file.

+
face_index +

The index of the face within the resource. The first face has index 0.

+
+
+
output
+

+ + +
aface +

A handle to a new face object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

FT_New_Face_From_FSRef is identical to FT_New_Face except it accepts an FSRef instead of a path.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-module_management.html b/src/3rdparty/freetype/docs/reference/ft2-module_management.html new file mode 100644 index 0000000000..e621f27745 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-module_management.html @@ -0,0 +1,626 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Module Management +

+

Synopsis

+ + + + + + +
FT_Module_ConstructorFT_Get_ModuleFT_Add_Default_Modules
FT_Module_DestructorFT_Remove_ModuleFT_Renderer_Class
FT_Module_RequesterFT_New_LibraryFT_Get_Renderer
FT_Module_ClassFT_Done_LibraryFT_Set_Renderer
FT_Add_ModuleFT_Set_Debug_Hook


+ +
+

The definitions below are used to manage modules within FreeType. Modules can be added, upgraded, and removed at runtime.

+

+
+

FT_Module_Constructor

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  typedef FT_Error
+  (*FT_Module_Constructor)( FT_Module  module );
+
+

+
+

A function used to initialize (not create) a new module object.

+

+
input
+

+ + +
module +

The module to initialize.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Module_Destructor

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  typedef void
+  (*FT_Module_Destructor)( FT_Module  module );
+
+

+
+

A function used to finalize (not destroy) a given module object.

+

+
input
+

+ + +
module +

The module to finalize.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Module_Requester

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  typedef FT_Module_Interface
+  (*FT_Module_Requester)( FT_Module    module,
+                          const char*  name );
+
+

+
+

A function used to query a given module for a specific interface.

+

+
input
+

+ + + +
module +

The module to finalize.

+
name +

The name of the interface in the module.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Module_Class

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  typedef struct  FT_Module_Class_
+  {
+    FT_ULong               module_flags;
+    FT_Long                module_size;
+    const FT_String*       module_name;
+    FT_Fixed               module_version;
+    FT_Fixed               module_requires;
+
+    const void*            module_interface;
+
+    FT_Module_Constructor  module_init;
+    FT_Module_Destructor   module_done;
+    FT_Module_Requester    get_interface;
+
+  } FT_Module_Class;
+
+

+
+

The module class descriptor.

+

+
fields
+

+ + + + + + + + + +
module_flags +

Bit flags describing the module.

+
module_size +

The size of one module object/instance in bytes.

+
module_name +

The name of the module.

+
module_version +

The version, as a 16.16 fixed number (major.minor).

+
module_requires +

The version of FreeType this module requires, as a 16.16 fixed number (major.minor). Starts at version 2.0, i.e., 0x20000.

+
module_init +

The initializing function.

+
module_done +

The finalizing function.

+
get_interface +

The interface requesting function.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Add_Module

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Add_Module( FT_Library              library,
+                 const FT_Module_Class*  clazz );
+
+

+
+

Add a new module to a given library instance.

+

+
inout
+

+ + +
library +

A handle to the library object.

+
+
+
input
+

+ + +
clazz +

A pointer to class descriptor for the module.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

An error will be returned if a module already exists by that name, or if the module requires a version of FreeType that is too great.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Module

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( FT_Module )
+  FT_Get_Module( FT_Library   library,
+                 const char*  module_name );
+
+

+
+

Find a module by its name.

+

+
input
+

+ + + +
library +

A handle to the library object.

+
module_name +

The module's name (as an ASCII string).

+
+
+
return
+

A module handle. 0 if none was found.

+
+
note
+

FreeType's internal modules aren't documented very well, and you should look up the source code for details.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Remove_Module

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Remove_Module( FT_Library  library,
+                    FT_Module   module );
+
+

+
+

Remove a given module from a library instance.

+

+
inout
+

+ + +
library +

A handle to a library object.

+
+
+
input
+

+ + +
module +

A handle to a module object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The module object is destroyed by the function in case of success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_New_Library

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_New_Library( FT_Memory    memory,
+                  FT_Library  *alibrary );
+
+

+
+

This function is used to create a new FreeType library instance from a given memory object. It is thus possible to use libraries with distinct memory allocators within the same program.

+

+
input
+

+ + +
memory +

A handle to the original memory object.

+
+
+
output
+

+ + +
alibrary +

A pointer to handle of a new library object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Done_Library

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Done_Library( FT_Library  library );
+
+

+
+

Discard a given library object. This closes all drivers and discards all resource objects.

+

+
input
+

+ + +
library +

A handle to the target library.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Debug_Hook

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( void )
+  FT_Set_Debug_Hook( FT_Library         library,
+                     FT_UInt            hook_index,
+                     FT_DebugHook_Func  debug_hook );
+
+

+
+

Set a debug hook function for debugging the interpreter of a font format.

+

+
inout
+

+ + +
library +

A handle to the library object.

+
+
+
input
+

+ + + +
hook_index +

The index of the debug hook. You should use the values defined in ‘ftobjs.h’, e.g., ‘FT_DEBUG_HOOK_TRUETYPE’.

+
debug_hook +

The function used to debug the interpreter.

+
+
+
note
+

Currently, four debug hook slots are available, but only two (for the TrueType and the Type 1 interpreter) are defined.

+

Since the internal headers of FreeType are no longer installed, the symbol ‘FT_DEBUG_HOOK_TRUETYPE’ isn't available publicly. This is a bug and will be fixed in a forthcoming release.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Add_Default_Modules

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( void )
+  FT_Add_Default_Modules( FT_Library  library );
+
+

+
+

Add the set of default drivers to a given library object. This is only useful when you create a library object with FT_New_Library (usually to plug a custom memory manager).

+

+
inout
+

+ + +
library +

A handle to a new library object.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Renderer_Class

+
+Defined in FT_RENDER_H (freetype/ftrender.h). +

+
+
+  typedef struct  FT_Renderer_Class_
+  {
+    FT_Module_Class            root;
+
+    FT_Glyph_Format            glyph_format;
+
+    FT_Renderer_RenderFunc     render_glyph;
+    FT_Renderer_TransformFunc  transform_glyph;
+    FT_Renderer_GetCBoxFunc    get_glyph_cbox;
+    FT_Renderer_SetModeFunc    set_mode;
+
+    FT_Raster_Funcs*           raster_class;
+
+  } FT_Renderer_Class;
+
+

+
+

The renderer module class descriptor.

+

+
fields
+

+ + + + + + + + + +
root +

The root FT_Module_Class fields.

+
glyph_format +

The glyph image format this renderer handles.

+
render_glyph +

A method used to render the image that is in a given glyph slot into a bitmap.

+
transform_glyph +

A method used to transform the image that is in a given glyph slot.

+
get_glyph_cbox +

A method used to access the glyph's cbox.

+
set_mode +

A method used to pass additional parameters.

+
raster_class +

For FT_GLYPH_FORMAT_OUTLINE renderers only. This is a pointer to its raster's class.

+
raster +

For FT_GLYPH_FORMAT_OUTLINE renderers only. This is a pointer to the corresponding raster object, if any.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Renderer

+
+Defined in FT_RENDER_H (freetype/ftrender.h). +

+
+
+  FT_EXPORT( FT_Renderer )
+  FT_Get_Renderer( FT_Library       library,
+                   FT_Glyph_Format  format );
+
+

+
+

Retrieve the current renderer for a given glyph format.

+

+
input
+

+ + + +
library +

A handle to the library object.

+
format +

The glyph format.

+
+
+
return
+

A renderer handle. 0 if none found.

+
+
note
+

An error will be returned if a module already exists by that name, or if the module requires a version of FreeType that is too great.

+

To add a new renderer, simply use FT_Add_Module. To retrieve a renderer by its name, use FT_Get_Module.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Renderer

+
+Defined in FT_RENDER_H (freetype/ftrender.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_Renderer( FT_Library     library,
+                   FT_Renderer    renderer,
+                   FT_UInt        num_params,
+                   FT_Parameter*  parameters );
+
+

+
+

Set the current renderer to use, and set additional mode.

+

+
inout
+

+ + +
library +

A handle to the library object.

+
+
+
input
+

+ + + + +
renderer +

A handle to the renderer object.

+
num_params +

The number of additional parameters.

+
parameters +

Additional parameters.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

In case of success, the renderer will be used to convert glyph images in the renderer's known format into bitmaps.

+

This doesn't change the current renderer for other formats.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html b/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html new file mode 100644 index 0000000000..a977f87f79 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html @@ -0,0 +1,511 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Multiple Masters +

+

Synopsis

+ + + + + + + +
FT_MM_AxisFT_Get_MM_Var
FT_Multi_MasterFT_Set_MM_Design_Coordinates
FT_Var_AxisFT_Set_Var_Design_Coordinates
FT_Var_Named_StyleFT_Set_MM_Blend_Coordinates
FT_MM_VarFT_Set_Var_Blend_Coordinates
FT_Get_Multi_Master


+ +
+

The following types and functions are used to manage Multiple Master fonts, i.e., the selection of specific design instances by setting design axis coordinates.

+

George Williams has extended this interface to make it work with both Type 1 Multiple Masters fonts and GX distortable (var) fonts. Some of these routines only work with MM fonts, others will work with both types. They are similar enough that a consistent interface makes sense.

+

+
+

FT_MM_Axis

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  typedef struct  FT_MM_Axis_
+  {
+    FT_String*  name;
+    FT_Long     minimum;
+    FT_Long     maximum;
+
+  } FT_MM_Axis;
+
+

+
+

A simple structure used to model a given axis in design space for Multiple Masters fonts.

+

This structure can't be used for GX var fonts.

+

+
fields
+

+ + + + +
name +

The axis's name.

+
minimum +

The axis's minimum design coordinate.

+
maximum +

The axis's maximum design coordinate.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Multi_Master

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  typedef struct  FT_Multi_Master_
+  {
+    FT_UInt     num_axis;
+    FT_UInt     num_designs;
+    FT_MM_Axis  axis[T1_MAX_MM_AXIS];
+
+  } FT_Multi_Master;
+
+

+
+

A structure used to model the axes and space of a Multiple Masters font.

+

This structure can't be used for GX var fonts.

+

+
fields
+

+ + + + +
num_axis +

Number of axes. Cannot exceed 4.

+
num_designs +

Number of designs; should be normally 2^num_axis even though the Type 1 specification strangely allows for intermediate designs to be present. This number cannot exceed 16.

+
axis +

A table of axis descriptors.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Var_Axis

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  typedef struct  FT_Var_Axis_
+  {
+    FT_String*  name;
+
+    FT_Fixed    minimum;
+    FT_Fixed    def;
+    FT_Fixed    maximum;
+
+    FT_ULong    tag;
+    FT_UInt     strid;
+
+  } FT_Var_Axis;
+
+

+
+

A simple structure used to model a given axis in design space for Multiple Masters and GX var fonts.

+

+
fields
+

+ + + + + + + +
name +

The axis's name. Not always meaningful for GX.

+
minimum +

The axis's minimum design coordinate.

+
def +

The axis's default design coordinate. FreeType computes meaningful default values for MM; it is then an integer value, not in 16.16 format.

+
maximum +

The axis's maximum design coordinate.

+
tag +

The axis's tag (the GX equivalent to ‘name’). FreeType provides default values for MM if possible.

+
strid +

The entry in ‘name’ table (another GX version of ‘name’). Not meaningful for MM.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Var_Named_Style

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  typedef struct  FT_Var_Named_Style_
+  {
+    FT_Fixed*  coords;
+    FT_UInt    strid;
+
+  } FT_Var_Named_Style;
+
+

+
+

A simple structure used to model a named style in a GX var font.

+

This structure can't be used for MM fonts.

+

+
fields
+

+ + + +
coords +

The design coordinates for this style. This is an array with one entry for each axis.

+
strid +

The entry in ‘name’ table identifying this style.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_MM_Var

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  typedef struct  FT_MM_Var_
+  {
+    FT_UInt              num_axis;
+    FT_UInt              num_designs;
+    FT_UInt              num_namedstyles;
+    FT_Var_Axis*         axis;
+    FT_Var_Named_Style*  namedstyle;
+
+  } FT_MM_Var;
+
+

+
+

A structure used to model the axes and space of a Multiple Masters or GX var distortable font.

+

Some fields are specific to one format and not to the other.

+

+
fields
+

+ + + + + + +
num_axis +

The number of axes. The maximum value is 4 for MM; no limit in GX.

+
num_designs +

The number of designs; should be normally 2^num_axis for MM fonts. Not meaningful for GX (where every glyph could have a different number of designs).

+
num_namedstyles +

The number of named styles; only meaningful for GX which allows certain design coordinates to have a string ID (in the ‘name’ table) associated with them. The font can tell the user that, for example, Weight=1.5 is ‘Bold’.

+
axis +

A table of axis descriptors. GX fonts contain slightly more data than MM.

+
namedstyles +

A table of named styles. Only meaningful with GX.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Multi_Master

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Multi_Master( FT_Face           face,
+                       FT_Multi_Master  *amaster );
+
+

+
+

Retrieve the Multiple Master descriptor of a given font.

+

This function can't be used with GX fonts.

+

+
input
+

+ + +
face +

A handle to the source face.

+
+
+
output
+

+ + +
amaster +

The Multiple Masters descriptor.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_MM_Var

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_MM_Var( FT_Face      face,
+                 FT_MM_Var*  *amaster );
+
+

+
+

Retrieve the Multiple Master/GX var descriptor of a given font.

+

+
input
+

+ + +
face +

A handle to the source face.

+
+
+
output
+

+ + +
amaster +

The Multiple Masters/GX var descriptor. Allocates a data structure, which the user must free (a single call to FT_FREE will do it).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_MM_Design_Coordinates

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_MM_Design_Coordinates( FT_Face   face,
+                                FT_UInt   num_coords,
+                                FT_Long*  coords );
+
+

+
+

For Multiple Masters fonts, choose an interpolated font design through design coordinates.

+

This function can't be used with GX fonts.

+

+
inout
+

+ + +
face +

A handle to the source face.

+
+
+
input
+

+ + + +
num_coords +

The number of design coordinates (must be equal to the number of axes in the font).

+
coords +

An array of design coordinates.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Var_Design_Coordinates

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_Var_Design_Coordinates( FT_Face    face,
+                                 FT_UInt    num_coords,
+                                 FT_Fixed*  coords );
+
+

+
+

For Multiple Master or GX Var fonts, choose an interpolated font design through design coordinates.

+

+
inout
+

+ + +
face +

A handle to the source face.

+
+
+
input
+

+ + + +
num_coords +

The number of design coordinates (must be equal to the number of axes in the font).

+
coords +

An array of design coordinates.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_MM_Blend_Coordinates

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_MM_Blend_Coordinates( FT_Face    face,
+                               FT_UInt    num_coords,
+                               FT_Fixed*  coords );
+
+

+
+

For Multiple Masters and GX var fonts, choose an interpolated font design through normalized blend coordinates.

+

+
inout
+

+ + +
face +

A handle to the source face.

+
+
+
input
+

+ + + +
num_coords +

The number of design coordinates (must be equal to the number of axes in the font).

+
coords +

The design coordinates array (each element must be between 0 and 1.0).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Set_Var_Blend_Coordinates

+
+Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Set_Var_Blend_Coordinates( FT_Face    face,
+                                FT_UInt    num_coords,
+                                FT_Fixed*  coords );
+
+

+
+

This is another name of FT_Set_MM_Blend_Coordinates.

+

+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html b/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html new file mode 100644 index 0000000000..e2289ef093 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html @@ -0,0 +1,208 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+OpenType Validation +

+

Synopsis

+ + +
FT_VALIDATE_OTXXXFT_OpenType_ValidateFT_OpenType_Free


+ +
+

This section contains the declaration of functions to validate some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).

+

+
+

FT_VALIDATE_OTXXX

+
+Defined in FT_OPENTYPE_VALIDATE_H (freetype/ftotval.h). +

+
+
+#define FT_VALIDATE_BASE  0x0100
+#define FT_VALIDATE_GDEF  0x0200
+#define FT_VALIDATE_GPOS  0x0400
+#define FT_VALIDATE_GSUB  0x0800
+#define FT_VALIDATE_JSTF  0x1000
+#define FT_VALIDATE_MATH  0x2000
+
+#define FT_VALIDATE_OT  FT_VALIDATE_BASE | \
+                        FT_VALIDATE_GDEF | \
+                        FT_VALIDATE_GPOS | \
+                        FT_VALIDATE_GSUB | \
+                        FT_VALIDATE_JSTF | \
+                        FT_VALIDATE_MATH
+
+

+
+

A list of bit-field constants used with FT_OpenType_Validate to indicate which OpenType tables should be validated.

+

+
values
+

+ + + + + + + + +
FT_VALIDATE_BASE +

Validate BASE table.

+
FT_VALIDATE_GDEF +

Validate GDEF table.

+
FT_VALIDATE_GPOS +

Validate GPOS table.

+
FT_VALIDATE_GSUB +

Validate GSUB table.

+
FT_VALIDATE_JSTF +

Validate JSTF table.

+
FT_VALIDATE_MATH +

Validate MATH table.

+
FT_VALIDATE_OT +

Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_OpenType_Validate

+
+Defined in FT_OPENTYPE_VALIDATE_H (freetype/ftotval.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_OpenType_Validate( FT_Face    face,
+                        FT_UInt    validation_flags,
+                        FT_Bytes  *BASE_table,
+                        FT_Bytes  *GDEF_table,
+                        FT_Bytes  *GPOS_table,
+                        FT_Bytes  *GSUB_table,
+                        FT_Bytes  *JSTF_table );
+
+

+
+

Validate various OpenType tables to assure that all offsets and indices are valid. The idea is that a higher-level library which actually does the text layout can access those tables without error checking (which can be quite time consuming).

+

+
input
+

+ + + +
face +

A handle to the input face.

+
validation_flags +

A bit field which specifies the tables to be validated. See FT_VALIDATE_OTXXX for possible values.

+
+
+
output
+

+ + + + + + +
BASE_table +

A pointer to the BASE table.

+
GDEF_table +

A pointer to the GDEF table.

+
GPOS_table +

A pointer to the GPOS table.

+
GSUB_table +

A pointer to the GSUB table.

+
JSTF_table +

A pointer to the JSTF table.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function only works with OpenType fonts, returning an error otherwise.

+

After use, the application should deallocate the five tables with FT_OpenType_Free. A NULL value indicates that the table either doesn't exist in the font, or the application hasn't asked for validation.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_OpenType_Free

+
+Defined in FT_OPENTYPE_VALIDATE_H (freetype/ftotval.h). +

+
+
+  FT_EXPORT( void )
+  FT_OpenType_Free( FT_Face   face,
+                    FT_Bytes  table );
+
+

+
+

Free the buffer allocated by OpenType validator.

+

+
input
+

+ + + +
face +

A handle to the input face.

+
table +

The pointer to the buffer that is allocated by FT_OpenType_Validate.

+
+
+
note
+

This function must be used to free the buffer allocated by FT_OpenType_Validate only.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html b/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html new file mode 100644 index 0000000000..d0b670ed96 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html @@ -0,0 +1,1106 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Outline Processing +

+

Synopsis

+ + + + + + + + + + + + + +
FT_OutlineFT_Outline_MoveToFunc
FT_OUTLINE_FLAGSFT_Outline_LineToFunc
FT_Outline_NewFT_Outline_ConicToFunc
FT_Outline_DoneFT_Outline_CubicToFunc
FT_Outline_CopyFT_Outline_Funcs
FT_Outline_TranslateFT_Outline_Decompose
FT_Outline_TransformFT_Outline_Get_CBox
FT_Outline_EmboldenFT_Outline_Get_Bitmap
FT_Outline_ReverseFT_Outline_Render
FT_Outline_CheckFT_Orientation
FT_Outline_Get_BBoxFT_Outline_Get_Orientation
ft_outline_flags


+ +
+

This section contains routines used to create and destroy scalable glyph images known as ‘outlines’. These can also be measured, transformed, and converted into bitmaps and pixmaps.

+

+
+

FT_Outline

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_Outline_
+  {
+    short       n_contours;      /* number of contours in glyph        */
+    short       n_points;        /* number of points in the glyph      */
+
+    FT_Vector*  points;          /* the outline's points               */
+    char*       tags;            /* the points flags                   */
+    short*      contours;        /* the contour end points             */
+
+    int         flags;           /* outline masks                      */
+
+  } FT_Outline;
+
+

+
+

This structure is used to describe an outline to the scan-line converter.

+

+
fields
+

+ + + + + + + +
n_contours +

The number of contours in the outline.

+
n_points +

The number of points in the outline.

+
points +

A pointer to an array of ‘n_points’ FT_Vector elements, giving the outline's point coordinates.

+
tags +

A pointer to an array of ‘n_points’ chars, giving each outline point's type. If bit 0 is unset, the point is ‘off’ the curve, i.e., a Bézier control point, while it is ‘on’ when set.

+

Bit 1 is meaningful for ‘off’ points only. If set, it indicates a third-order Bézier arc control point; and a second-order control point if unset.

+
contours +

An array of ‘n_contours’ shorts, giving the end point of each contour within the outline. For example, the first contour is defined by the points ‘0’ to ‘contours[0]’, the second one is defined by the points ‘contours[0]+1’ to ‘contours[1]’, etc.

+
flags +

A set of bit flags used to characterize the outline and give hints to the scan-converter and hinter on how to convert/grid-fit it. See FT_OUTLINE_FLAGS.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_OUTLINE_FLAGS

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+#define FT_OUTLINE_NONE             0x0
+#define FT_OUTLINE_OWNER            0x1
+#define FT_OUTLINE_EVEN_ODD_FILL    0x2
+#define FT_OUTLINE_REVERSE_FILL     0x4
+#define FT_OUTLINE_IGNORE_DROPOUTS  0x8
+#define FT_OUTLINE_SMART_DROPOUTS   0x10
+#define FT_OUTLINE_INCLUDE_STUBS    0x20
+
+#define FT_OUTLINE_HIGH_PRECISION   0x100
+#define FT_OUTLINE_SINGLE_PASS      0x200
+
+

+
+

A list of bit-field constants use for the flags in an outline's ‘flags’ field.

+

+
values
+

+ + + + + + + + + + + + + + + + +
FT_OUTLINE_NONE +

Value 0 is reserved.

+
FT_OUTLINE_OWNER +

If set, this flag indicates that the outline's field arrays (i.e., ‘points’, ‘flags’, and ‘contours’) are ‘owned’ by the outline object, and should thus be freed when it is destroyed.

+
FT_OUTLINE_EVEN_ODD_FILL
+

By default, outlines are filled using the non-zero winding rule. If set to 1, the outline will be filled using the even-odd fill rule (only works with the smooth raster).

+
FT_OUTLINE_REVERSE_FILL
+

By default, outside contours of an outline are oriented in clock-wise direction, as defined in the TrueType specification. This flag is set if the outline uses the opposite direction (typically for Type 1 fonts). This flag is ignored by the scan converter.

+
FT_OUTLINE_IGNORE_DROPOUTS
+

By default, the scan converter will try to detect drop-outs in an outline and correct the glyph bitmap to ensure consistent shape continuity. If set, this flag hints the scan-line converter to ignore such cases.

+
FT_OUTLINE_SMART_DROPOUTS
+

Select smart dropout control. If unset, use simple dropout control. Ignored if FT_OUTLINE_IGNORE_DROPOUTS is set.

+
FT_OUTLINE_INCLUDE_STUBS
+

If set, turn pixels on for ‘stubs’, otherwise exclude them. Ignored if FT_OUTLINE_IGNORE_DROPOUTS is set.

+
FT_OUTLINE_HIGH_PRECISION
+

This flag indicates that the scan-line converter should try to convert this outline to bitmaps with the highest possible quality. It is typically set for small character sizes. Note that this is only a hint that might be completely ignored by a given scan-converter.

+
FT_OUTLINE_SINGLE_PASS +

This flag is set to force a given scan-converter to only use a single pass over the outline to render a bitmap glyph image. Normally, it is set for very large character sizes. It is only a hint that might be completely ignored by a given scan-converter.

+
+
+
note
+

Please refer to the description of the ‘SCANTYPE’ instruction in the OpenType specification (in file ‘ttinst1.doc’) how simple drop-outs, smart drop-outs, and stubs are defined.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_New

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_New( FT_Library   library,
+                  FT_UInt      numPoints,
+                  FT_Int       numContours,
+                  FT_Outline  *anoutline );
+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_New_Internal( FT_Memory    memory,
+                           FT_UInt      numPoints,
+                           FT_Int       numContours,
+                           FT_Outline  *anoutline );
+
+

+
+

Create a new outline of a given size.

+

+
input
+

+ + + + +
library +

A handle to the library object from where the outline is allocated. Note however that the new outline will not necessarily be freed, when destroying the library, by FT_Done_FreeType.

+
numPoints +

The maximal number of points within the outline.

+
numContours +

The maximal number of contours within the outline.

+
+
+
output
+

+ + +
anoutline +

A handle to the new outline.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The reason why this function takes a ‘library’ parameter is simply to use the library's memory allocator.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Done

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Done( FT_Library   library,
+                   FT_Outline*  outline );
+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Done_Internal( FT_Memory    memory,
+                            FT_Outline*  outline );
+
+

+
+

Destroy an outline created with FT_Outline_New.

+

+
input
+

+ + + +
library +

A handle of the library object used to allocate the outline.

+
outline +

A pointer to the outline object to be discarded.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

If the outline's ‘owner’ field is not set, only the outline descriptor will be released.

+

The reason why this function takes an ‘library’ parameter is simply to use ft_mem_free().

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Copy

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Copy( const FT_Outline*  source,
+                   FT_Outline        *target );
+
+

+
+

Copy an outline into another one. Both objects must have the same sizes (number of points & number of contours) when this function is called.

+

+
input
+

+ + +
source +

A handle to the source outline.

+
+
+
output
+

+ + +
target +

A handle to the target outline.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Translate

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( void )
+  FT_Outline_Translate( const FT_Outline*  outline,
+                        FT_Pos             xOffset,
+                        FT_Pos             yOffset );
+
+

+
+

Apply a simple translation to the points of an outline.

+

+
inout
+

+ + +
outline +

A pointer to the target outline descriptor.

+
+
+
input
+

+ + + +
xOffset +

The horizontal offset.

+
yOffset +

The vertical offset.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Transform

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( void )
+  FT_Outline_Transform( const FT_Outline*  outline,
+                        const FT_Matrix*   matrix );
+
+

+
+

Apply a simple 2x2 matrix to all of an outline's points. Useful for applying rotations, slanting, flipping, etc.

+

+
inout
+

+ + +
outline +

A pointer to the target outline descriptor.

+
+
+
input
+

+ + +
matrix +

A pointer to the transformation matrix.

+
+
+
note
+

You can use FT_Outline_Translate if you need to translate the outline's points.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Embolden

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Embolden( FT_Outline*  outline,
+                       FT_Pos       strength );
+
+

+
+

Embolden an outline. The new outline will be at most 4 times ‘strength’ pixels wider and higher. You may think of the left and bottom borders as unchanged.

+

Negative ‘strength’ values to reduce the outline thickness are possible also.

+

+
inout
+

+ + +
outline +

A handle to the target outline.

+
+
+
input
+

+ + +
strength +

How strong the glyph is emboldened. Expressed in 26.6 pixel format.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The used algorithm to increase or decrease the thickness of the glyph doesn't change the number of points; this means that certain situations like acute angles or intersections are sometimes handled incorrectly.

+

If you need ‘better’ metrics values you should call FT_Outline_Get_CBox ot FT_Outline_Get_BBox.

+

Example call:

+
+  FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );                   
+  if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE )             
+    FT_Outline_Embolden( &face->slot->outline, strength );         
+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Reverse

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( void )
+  FT_Outline_Reverse( FT_Outline*  outline );
+
+

+
+

Reverse the drawing direction of an outline. This is used to ensure consistent fill conventions for mirrored glyphs.

+

+
inout
+

+ + +
outline +

A pointer to the target outline descriptor.

+
+
+
note
+

This function toggles the bit flag FT_OUTLINE_REVERSE_FILL in the outline's ‘flags’ field.

+

It shouldn't be used by a normal client application, unless it knows what it is doing.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Check

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Check( FT_Outline*  outline );
+
+

+
+

Check the contents of an outline descriptor.

+

+
input
+

+ + +
outline +

A handle to a source outline.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Get_BBox

+
+Defined in FT_BBOX_H (freetype/ftbbox.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Get_BBox( FT_Outline*  outline,
+                       FT_BBox     *abbox );
+
+

+
+

Compute the exact bounding box of an outline. This is slower than computing the control box. However, it uses an advanced algorithm which returns very quickly when the two boxes coincide. Otherwise, the outline Bézier arcs are traversed to extract their extrema.

+

+
input
+

+ + +
outline +

A pointer to the source outline.

+
+
+
output
+

+ + +
abbox +

The outline's exact bounding box.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

ft_outline_flags

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+#define ft_outline_none             FT_OUTLINE_NONE
+#define ft_outline_owner            FT_OUTLINE_OWNER
+#define ft_outline_even_odd_fill    FT_OUTLINE_EVEN_ODD_FILL
+#define ft_outline_reverse_fill     FT_OUTLINE_REVERSE_FILL
+#define ft_outline_ignore_dropouts  FT_OUTLINE_IGNORE_DROPOUTS
+#define ft_outline_high_precision   FT_OUTLINE_HIGH_PRECISION
+#define ft_outline_single_pass      FT_OUTLINE_SINGLE_PASS
+
+

+
+

These constants are deprecated. Please use the corresponding FT_OUTLINE_FLAGS values.

+

+
values
+

+ + + + + + + + + + + + +
ft_outline_none +

See FT_OUTLINE_NONE.

+
ft_outline_owner +

See FT_OUTLINE_OWNER.

+
ft_outline_even_odd_fill
+

See FT_OUTLINE_EVEN_ODD_FILL.

+
ft_outline_reverse_fill
+

See FT_OUTLINE_REVERSE_FILL.

+
ft_outline_ignore_dropouts
+

See FT_OUTLINE_IGNORE_DROPOUTS.

+
ft_outline_high_precision
+

See FT_OUTLINE_HIGH_PRECISION.

+
ft_outline_single_pass +

See FT_OUTLINE_SINGLE_PASS.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_MoveToFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Outline_MoveToFunc)( const FT_Vector*  to,
+                            void*             user );
+
+#define FT_Outline_MoveTo_Func  FT_Outline_MoveToFunc
+
+

+
+

A function pointer type used to describe the signature of a ‘move to’ function during outline walking/decomposition.

+

A ‘move to’ is emitted to start a new contour in an outline.

+

+
input
+

+ + + +
to +

A pointer to the target point of the ‘move to’.

+
user +

A typeless pointer which is passed from the caller of the decomposition function.

+
+
+
return
+

Error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_LineToFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Outline_LineToFunc)( const FT_Vector*  to,
+                            void*             user );
+
+#define FT_Outline_LineTo_Func  FT_Outline_LineToFunc
+
+

+
+

A function pointer type used to describe the signature of a ‘line to’ function during outline walking/decomposition.

+

A ‘line to’ is emitted to indicate a segment in the outline.

+

+
input
+

+ + + +
to +

A pointer to the target point of the ‘line to’.

+
user +

A typeless pointer which is passed from the caller of the decomposition function.

+
+
+
return
+

Error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_ConicToFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Outline_ConicToFunc)( const FT_Vector*  control,
+                             const FT_Vector*  to,
+                             void*             user );
+
+#define FT_Outline_ConicTo_Func  FT_Outline_ConicToFunc
+
+

+
+

A function pointer type use to describe the signature of a ‘conic to’ function during outline walking/decomposition.

+

A ‘conic to’ is emitted to indicate a second-order Bézier arc in the outline.

+

+
input
+

+ + + + +
control +

An intermediate control point between the last position and the new target in ‘to’.

+
to +

A pointer to the target end point of the conic arc.

+
user +

A typeless pointer which is passed from the caller of the decomposition function.

+
+
+
return
+

Error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_CubicToFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Outline_CubicToFunc)( const FT_Vector*  control1,
+                             const FT_Vector*  control2,
+                             const FT_Vector*  to,
+                             void*             user );
+
+#define FT_Outline_CubicTo_Func  FT_Outline_CubicToFunc
+
+

+
+

A function pointer type used to describe the signature of a ‘cubic to’ function during outline walking/decomposition.

+

A ‘cubic to’ is emitted to indicate a third-order Bézier arc.

+

+
input
+

+ + + + + +
control1 +

A pointer to the first Bézier control point.

+
control2 +

A pointer to the second Bézier control point.

+
to +

A pointer to the target end point.

+
user +

A typeless pointer which is passed from the caller of the decomposition function.

+
+
+
return
+

Error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Funcs

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_Outline_Funcs_
+  {
+    FT_Outline_MoveToFunc   move_to;
+    FT_Outline_LineToFunc   line_to;
+    FT_Outline_ConicToFunc  conic_to;
+    FT_Outline_CubicToFunc  cubic_to;
+
+    int                     shift;
+    FT_Pos                  delta;
+
+  } FT_Outline_Funcs;
+
+

+
+

A structure to hold various function pointers used during outline decomposition in order to emit segments, conic, and cubic Béziers, as well as ‘move to’ and ‘close to’ operations.

+

+
fields
+

+ + + + + + + +
move_to +

The ‘move to’ emitter.

+
line_to +

The segment emitter.

+
conic_to +

The second-order Bézier arc emitter.

+
cubic_to +

The third-order Bézier arc emitter.

+
shift +

The shift that is applied to coordinates before they are sent to the emitter.

+
delta +

The delta that is applied to coordinates before they are sent to the emitter, but after the shift.

+
+
+
note
+

The point coordinates sent to the emitters are the transformed version of the original coordinates (this is important for high accuracy during scan-conversion). The transformation is simple:

+
+  x' = (x << shift) - delta                                        
+  y' = (x << shift) - delta                                        
+
+

Set the value of ‘shift’ and ‘delta’ to 0 to get the original point coordinates.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Decompose

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Decompose( FT_Outline*              outline,
+                        const FT_Outline_Funcs*  func_interface,
+                        void*                    user );
+
+

+
+

Walk over an outline's structure to decompose it into individual segments and Bézier arcs. This function is also able to emit ‘move to’ and ‘close to’ operations to indicate the start and end of new contours in the outline.

+

+
input
+

+ + + +
outline +

A pointer to the source target.

+
func_interface +

A table of ‘emitters’, i.e., function pointers called during decomposition to indicate path operations.

+
+
+
inout
+

+ + +
user +

A typeless pointer which is passed to each emitter during the decomposition. It can be used to store the state during the decomposition.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Get_CBox

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( void )
+  FT_Outline_Get_CBox( const FT_Outline*  outline,
+                       FT_BBox           *acbox );
+
+

+
+

Return an outline's ‘control box’. The control box encloses all the outline's points, including Bézier control points. Though it coincides with the exact bounding box for most glyphs, it can be slightly larger in some situations (like when rotating an outline which contains Bézier outside arcs).

+

Computing the control box is very fast, while getting the bounding box can take much more time as it needs to walk over all segments and arcs in the outline. To get the latter, you can use the ‘ftbbox’ component which is dedicated to this single task.

+

+
input
+

+ + +
outline +

A pointer to the source outline descriptor.

+
+
+
output
+

+ + +
acbox +

The outline's control box.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Get_Bitmap

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Get_Bitmap( FT_Library        library,
+                         FT_Outline*       outline,
+                         const FT_Bitmap  *abitmap );
+
+

+
+

Render an outline within a bitmap. The outline's image is simply OR-ed to the target bitmap.

+

+
input
+

+ + + +
library +

A handle to a FreeType library object.

+
outline +

A pointer to the source outline descriptor.

+
+
+
inout
+

+ + +
abitmap +

A pointer to the target bitmap descriptor.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function does NOT CREATE the bitmap, it only renders an outline image within the one you pass to it! Consequently, the various fields in ‘abitmap’ should be set accordingly.

+

It will use the raster corresponding to the default glyph format.

+

The value of the ‘num_grays’ field in ‘abitmap’ is ignored. If you select the gray-level rasterizer, and you want less than 256 gray levels, you have to use FT_Outline_Render directly.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Render

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Outline_Render( FT_Library         library,
+                     FT_Outline*        outline,
+                     FT_Raster_Params*  params );
+
+

+
+

Render an outline within a bitmap using the current scan-convert. This function uses an FT_Raster_Params structure as an argument, allowing advanced features like direct composition, translucency, etc.

+

+
input
+

+ + + +
library +

A handle to a FreeType library object.

+
outline +

A pointer to the source outline descriptor.

+
+
+
inout
+

+ + +
params +

A pointer to an FT_Raster_Params structure used to describe the rendering operation.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You should know what you are doing and how FT_Raster_Params works to use this function.

+

The field ‘params.source’ will be set to ‘outline’ before the scan converter is called, which means that the value you give to it is actually ignored.

+

The gray-level rasterizer always uses 256 gray levels. If you want less gray levels, you have to provide your own span callback. See the FT_RASTER_FLAG_DIRECT value of the ‘flags’ field in the FT_Raster_Params structure for more details.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Orientation

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  typedef enum  FT_Orientation_
+  {
+    FT_ORIENTATION_TRUETYPE   = 0,
+    FT_ORIENTATION_POSTSCRIPT = 1,
+    FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE,
+    FT_ORIENTATION_FILL_LEFT  = FT_ORIENTATION_POSTSCRIPT,
+    FT_ORIENTATION_NONE
+
+  } FT_Orientation;
+
+

+
+

A list of values used to describe an outline's contour orientation.

+

The TrueType and PostScript specifications use different conventions to determine whether outline contours should be filled or unfilled.

+

+
values
+

+ + + + + + + + + + +
FT_ORIENTATION_TRUETYPE
+

According to the TrueType specification, clockwise contours must be filled, and counter-clockwise ones must be unfilled.

+
FT_ORIENTATION_POSTSCRIPT
+

According to the PostScript specification, counter-clockwise contours must be filled, and clockwise ones must be unfilled.

+
FT_ORIENTATION_FILL_RIGHT
+

This is identical to FT_ORIENTATION_TRUETYPE, but is used to remember that in TrueType, everything that is to the right of the drawing direction of a contour must be filled.

+
FT_ORIENTATION_FILL_LEFT
+

This is identical to FT_ORIENTATION_POSTSCRIPT, but is used to remember that in PostScript, everything that is to the left of the drawing direction of a contour must be filled.

+
FT_ORIENTATION_NONE +

The orientation cannot be determined. That is, different parts of the glyph have different orientation.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Outline_Get_Orientation

+
+Defined in FT_OUTLINE_H (freetype/ftoutln.h). +

+
+
+  FT_EXPORT( FT_Orientation )
+  FT_Outline_Get_Orientation( FT_Outline*  outline );
+
+

+
+

This function analyzes a glyph outline and tries to compute its fill orientation (see FT_Orientation). This is done by computing the direction of each global horizontal and/or vertical extrema within the outline.

+

Note that this will return FT_ORIENTATION_TRUETYPE for empty outlines.

+

+
input
+

+ + +
outline +

A handle to the source outline.

+
+
+
return
+

The orientation.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html new file mode 100644 index 0000000000..8edf34ea96 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html @@ -0,0 +1,206 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+PFR Fonts +

+

Synopsis

+ + +
FT_Get_PFR_MetricsFT_Get_PFR_KerningFT_Get_PFR_Advance


+ +
+

This section contains the declaration of PFR-specific functions.

+

+
+

FT_Get_PFR_Metrics

+
+Defined in FT_PFR_H (freetype/ftpfr.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_PFR_Metrics( FT_Face    face,
+                      FT_UInt   *aoutline_resolution,
+                      FT_UInt   *ametrics_resolution,
+                      FT_Fixed  *ametrics_x_scale,
+                      FT_Fixed  *ametrics_y_scale );
+
+

+
+

Return the outline and metrics resolutions of a given PFR face.

+

+
input
+

+ + +
face +

Handle to the input face. It can be a non-PFR face.

+
+
+
output
+

+ + + + + +
aoutline_resolution +

Outline resolution. This is equivalent to ‘face->units_per_EM’ for non-PFR fonts. Optional (parameter can be NULL).

+
ametrics_resolution +

Metrics resolution. This is equivalent to ‘outline_resolution’ for non-PFR fonts. Optional (parameter can be NULL).

+
ametrics_x_scale +

A 16.16 fixed-point number used to scale distance expressed in metrics units to device sub-pixels. This is equivalent to ‘face->size->x_scale’, but for metrics only. Optional (parameter can be NULL).

+
ametrics_y_scale +

Same as ‘ametrics_x_scale’ but for the vertical direction. optional (parameter can be NULL).

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

If the input face is not a PFR, this function will return an error. However, in all cases, it will return valid values.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_PFR_Kerning

+
+Defined in FT_PFR_H (freetype/ftpfr.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_PFR_Kerning( FT_Face     face,
+                      FT_UInt     left,
+                      FT_UInt     right,
+                      FT_Vector  *avector );
+
+

+
+

Return the kerning pair corresponding to two glyphs in a PFR face. The distance is expressed in metrics units, unlike the result of FT_Get_Kerning.

+

+
input
+

+ + + + +
face +

A handle to the input face.

+
left +

Index of the left glyph.

+
right +

Index of the right glyph.

+
+
+
output
+

+ + +
avector +

A kerning vector.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function always return distances in original PFR metrics units. This is unlike FT_Get_Kerning with the FT_KERNING_UNSCALED mode, which always returns distances converted to outline units.

+

You can use the value of the ‘x_scale’ and ‘y_scale’ parameters returned by FT_Get_PFR_Metrics to scale these to device sub-pixels.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_PFR_Advance

+
+Defined in FT_PFR_H (freetype/ftpfr.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_PFR_Advance( FT_Face   face,
+                      FT_UInt   gindex,
+                      FT_Pos   *aadvance );
+
+

+
+

Return a given glyph advance, expressed in original metrics units, from a PFR font.

+

+
input
+

+ + + +
face +

A handle to the input face.

+
gindex +

The glyph index.

+
+
+
output
+

+ + +
aadvance +

The glyph advance in metrics units.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You can use the ‘x_scale’ or ‘y_scale’ results of FT_Get_PFR_Metrics to convert the advance to device sub-pixels (i.e., 1/64th of pixels).

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html b/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html new file mode 100644 index 0000000000..c832d437cf --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html @@ -0,0 +1,177 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Quick retrieval of advance values +

+

Synopsis

+ + + +
FT_ADVANCE_FLAG_FAST_ONLYFT_Get_Advances
FT_Get_Advance


+ +
+

This section contains functions to quickly extract advance values without handling glyph outlines, if possible.

+

+
+

FT_ADVANCE_FLAG_FAST_ONLY

+
+

A bit-flag to be OR-ed with the ‘flags’ parameter of the FT_Get_Advance and FT_Get_Advances functions.

+

If set, it indicates that you want these functions to fail if the corresponding hinting mode or font driver doesn't allow for very quick advance computation.

+

Typically, glyphs which are either unscaled, unhinted, bitmapped, or light-hinted can have their advance width computed very quickly.

+

Normal and bytecode hinted modes, which require loading, scaling, and hinting of the glyph outline, are extremely slow by comparison.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Advance

+
+Defined in FT_ADVANCES_H (freetype/ftadvanc.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Advance( FT_Face    face,
+                  FT_UInt    gindex,
+                  FT_Int32   load_flags,
+                  FT_Fixed  *padvance );
+
+

+
+

Retrieve the advance value of a given glyph outline in an FT_Face. By default, the unhinted advance is returned in font units.

+

+
input
+

+ + + + +
face +

The source FT_Face handle.

+
gindex +

The glyph index.

+
load_flags +

A set of bit flags similar to those used when calling FT_Load_Glyph, used to determine what kind of advances you need.

+
+
+
output
+

+ + +
padvance +

The advance value, in either font units or 16.16 format.

+

If FT_LOAD_VERTICAL_LAYOUT is set, this is the vertical advance corresponding to a vertical layout. Otherwise, it is the horizontal advance in a horizontal layout.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function may fail if you use FT_ADVANCE_FLAG_FAST_ONLY and if the corresponding font backend doesn't have a quick way to retrieve the advances.

+

A scaled advance is returned in 16.16 format but isn't transformed by the affine transformation specified by FT_Set_Transform.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Advances

+
+Defined in FT_ADVANCES_H (freetype/ftadvanc.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Advances( FT_Face    face,
+                   FT_UInt    start,
+                   FT_UInt    count,
+                   FT_Int32   load_flags,
+                   FT_Fixed  *padvances );
+
+

+
+

Retrieve the advance values of several glyph outlines in an FT_Face. By default, the unhinted advances are returned in font units.

+

+
input
+

+ + + + + +
face +

The source FT_Face handle.

+
start +

The first glyph index.

+
count +

The number of advance values you want to retrieve.

+
load_flags +

A set of bit flags similar to those used when calling FT_Load_Glyph.

+
+
+
output
+

+ + +
padvance +

The advances, in either font units or 16.16 format. This array must contain at least ‘count’ elements.

+

If FT_LOAD_VERTICAL_LAYOUT is set, these are the vertical advances corresponding to a vertical layout. Otherwise, they are the horizontal advances in a horizontal layout.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function may fail if you use FT_ADVANCE_FLAG_FAST_ONLY and if the corresponding font backend doesn't have a quick way to retrieve the advances.

+

Scaled advances are returned in 16.16 format but aren't transformed by the affine transformation specified by FT_Set_Transform.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-raster.html b/src/3rdparty/freetype/docs/reference/ft2-raster.html new file mode 100644 index 0000000000..9840eb4492 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-raster.html @@ -0,0 +1,598 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Scanline Converter +

+

Synopsis

+ + + + + + +
FT_RasterFT_RASTER_FLAG_XXXFT_Raster_SetModeFunc
FT_SpanFT_Raster_ParamsFT_Raster_RenderFunc
FT_SpanFuncFT_Raster_NewFuncFT_Raster_Funcs
FT_Raster_BitTest_FuncFT_Raster_DoneFunc
FT_Raster_BitSet_FuncFT_Raster_ResetFunc


+ +
+

This section contains technical definitions.

+

+
+

FT_Raster

+
+

A handle (pointer) to a raster object. Each object can be used independently to convert an outline into a bitmap or pixmap.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Span

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_Span_
+  {
+    short           x;
+    unsigned short  len;
+    unsigned char   coverage;
+
+  } FT_Span;
+
+

+
+

A structure used to model a single span of gray (or black) pixels when rendering a monochrome or anti-aliased bitmap.

+

+
fields
+

+ + + + +
x +

The span's horizontal start position.

+
len +

The span's length in pixels.

+
coverage +

The span color/coverage, ranging from 0 (background) to 255 (foreground). Only used for anti-aliased rendering.

+
+
+
note
+

This structure is used by the span drawing callback type named FT_SpanFunc which takes the y coordinate of the span as a a parameter.

+

The coverage value is always between 0 and 255. If you want less gray values, the callback function has to reduce them.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_SpanFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef void
+  (*FT_SpanFunc)( int             y,
+                  int             count,
+                  const FT_Span*  spans,
+                  void*           user );
+
+#define FT_Raster_Span_Func  FT_SpanFunc
+
+

+
+

A function used as a call-back by the anti-aliased renderer in order to let client applications draw themselves the gray pixel spans on each scan line.

+

+
input
+

+ + + + + +
y +

The scanline's y coordinate.

+
count +

The number of spans to draw on this scanline.

+
spans +

A table of ‘count’ spans to draw on the scanline.

+
user +

User-supplied data that is passed to the callback.

+
+
+
note
+

This callback allows client applications to directly render the gray spans of the anti-aliased bitmap to any kind of surfaces.

+

This can be used to write anti-aliased outlines directly to a given background bitmap, and even perform translucency.

+

Note that the ‘count’ field cannot be greater than a fixed value defined by the ‘FT_MAX_GRAY_SPANS’ configuration macro in ‘ftoption.h’. By default, this value is set to 32, which means that if there are more than 32 spans on a given scanline, the callback is called several times with the same ‘y’ parameter in order to draw all callbacks.

+

Otherwise, the callback is only called once per scan-line, and only for those scanlines that do have ‘gray’ pixels on them.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_BitTest_Func

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Raster_BitTest_Func)( int    y,
+                             int    x,
+                             void*  user );
+
+

+
+

THIS TYPE IS DEPRECATED. DO NOT USE IT.

+

A function used as a call-back by the monochrome scan-converter to test whether a given target pixel is already set to the drawing ‘color’. These tests are crucial to implement drop-out control per-se the TrueType spec.

+

+
input
+

+ + + + +
y +

The pixel's y coordinate.

+
x +

The pixel's x coordinate.

+
user +

User-supplied data that is passed to the callback.

+
+
+
return
+

1 if the pixel is ‘set’, 0 otherwise.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_BitSet_Func

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef void
+  (*FT_Raster_BitSet_Func)( int    y,
+                            int    x,
+                            void*  user );
+
+

+
+

THIS TYPE IS DEPRECATED. DO NOT USE IT.

+

A function used as a call-back by the monochrome scan-converter to set an individual target pixel. This is crucial to implement drop-out control according to the TrueType specification.

+

+
input
+

+ + + + +
y +

The pixel's y coordinate.

+
x +

The pixel's x coordinate.

+
user +

User-supplied data that is passed to the callback.

+
+
+
return
+

1 if the pixel is ‘set’, 0 otherwise.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_RASTER_FLAG_XXX

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+#define FT_RASTER_FLAG_DEFAULT  0x0
+#define FT_RASTER_FLAG_AA       0x1
+#define FT_RASTER_FLAG_DIRECT   0x2
+#define FT_RASTER_FLAG_CLIP     0x4
+
+  /* deprecated */
+#define ft_raster_flag_default  FT_RASTER_FLAG_DEFAULT
+#define ft_raster_flag_aa       FT_RASTER_FLAG_AA
+#define ft_raster_flag_direct   FT_RASTER_FLAG_DIRECT
+#define ft_raster_flag_clip     FT_RASTER_FLAG_CLIP
+
+

+
+

A list of bit flag constants as used in the ‘flags’ field of a FT_Raster_Params structure.

+

+
values
+

+ + + + + +
FT_RASTER_FLAG_DEFAULT +

This value is 0.

+
FT_RASTER_FLAG_AA +

This flag is set to indicate that an anti-aliased glyph image should be generated. Otherwise, it will be monochrome (1-bit).

+
FT_RASTER_FLAG_DIRECT +

This flag is set to indicate direct rendering. In this mode, client applications must provide their own span callback. This lets them directly draw or compose over an existing bitmap. If this bit is not set, the target pixmap's buffer must be zeroed before rendering.

+

Note that for now, direct rendering is only possible with anti-aliased glyphs.

+
FT_RASTER_FLAG_CLIP +

This flag is only used in direct rendering mode. If set, the output will be clipped to a box specified in the ‘clip_box’ field of the FT_Raster_Params structure.

+

Note that by default, the glyph bitmap is clipped to the target pixmap, except in direct rendering mode where all spans are generated if no clipping box is set.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_Params

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_Raster_Params_
+  {
+    const FT_Bitmap*        target;
+    const void*             source;
+    int                     flags;
+    FT_SpanFunc             gray_spans;
+    FT_SpanFunc             black_spans;
+    FT_Raster_BitTest_Func  bit_test;     /* doesn't work! */
+    FT_Raster_BitSet_Func   bit_set;      /* doesn't work! */
+    void*                   user;
+    FT_BBox                 clip_box;
+
+  } FT_Raster_Params;
+
+

+
+

A structure to hold the arguments used by a raster's render function.

+

+
fields
+

+ + + + + + + + + + +
target +

The target bitmap.

+
source +

A pointer to the source glyph image (e.g., an FT_Outline).

+
flags +

The rendering flags.

+
gray_spans +

The gray span drawing callback.

+
black_spans +

The black span drawing callback.

+
bit_test +

The bit test callback. UNIMPLEMENTED!

+
bit_set +

The bit set callback. UNIMPLEMENTED!

+
user +

User-supplied data that is passed to each drawing callback.

+
clip_box +

An optional clipping box. It is only used in direct rendering mode. Note that coordinates here should be expressed in integer pixels (and not in 26.6 fixed-point units).

+
+
+
note
+

An anti-aliased glyph bitmap is drawn if the FT_RASTER_FLAG_AA bit flag is set in the ‘flags’ field, otherwise a monochrome bitmap is generated.

+

If the FT_RASTER_FLAG_DIRECT bit flag is set in ‘flags’, the raster will call the ‘gray_spans’ callback to draw gray pixel spans, in the case of an aa glyph bitmap, it will call ‘black_spans’, and ‘bit_test’ and ‘bit_set’ in the case of a monochrome bitmap. This allows direct composition over a pre-existing bitmap through user-provided callbacks to perform the span drawing/composition.

+

Note that the ‘bit_test’ and ‘bit_set’ callbacks are required when rendering a monochrome bitmap, as they are crucial to implement correct drop-out control as defined in the TrueType specification.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_NewFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Raster_NewFunc)( void*       memory,
+                        FT_Raster*  raster );
+
+#define FT_Raster_New_Func  FT_Raster_NewFunc
+
+

+
+

A function used to create a new raster object.

+

+
input
+

+ + +
memory +

A handle to the memory allocator.

+
+
+
output
+

+ + +
raster +

A handle to the new raster object.

+
+
+
return
+

Error code. 0 means success.

+
+
note
+

The ‘memory’ parameter is a typeless pointer in order to avoid un-wanted dependencies on the rest of the FreeType code. In practice, it is an FT_Memory object, i.e., a handle to the standard FreeType memory allocator. However, this field can be completely ignored by a given raster implementation.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_DoneFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef void
+  (*FT_Raster_DoneFunc)( FT_Raster  raster );
+
+#define FT_Raster_Done_Func  FT_Raster_DoneFunc
+
+

+
+

A function used to destroy a given raster object.

+

+
input
+

+ + +
raster +

A handle to the raster object.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_ResetFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef void
+  (*FT_Raster_ResetFunc)( FT_Raster       raster,
+                          unsigned char*  pool_base,
+                          unsigned long   pool_size );
+
+#define FT_Raster_Reset_Func  FT_Raster_ResetFunc
+
+

+
+

FreeType provides an area of memory called the ‘render pool’, available to all registered rasters. This pool can be freely used during a given scan-conversion but is shared by all rasters. Its content is thus transient.

+

This function is called each time the render pool changes, or just after a new raster object is created.

+

+
input
+

+ + + + +
raster +

A handle to the new raster object.

+
pool_base +

The address in memory of the render pool.

+
pool_size +

The size in bytes of the render pool.

+
+
+
note
+

Rasters can ignore the render pool and rely on dynamic memory allocation if they want to (a handle to the memory allocator is passed to the raster constructor). However, this is not recommended for efficiency purposes.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_SetModeFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Raster_SetModeFunc)( FT_Raster      raster,
+                            unsigned long  mode,
+                            void*          args );
+
+#define FT_Raster_Set_Mode_Func  FT_Raster_SetModeFunc
+
+

+
+

This function is a generic facility to change modes or attributes in a given raster. This can be used for debugging purposes, or simply to allow implementation-specific ‘features’ in a given raster module.

+

+
input
+

+ + + + +
raster +

A handle to the new raster object.

+
mode +

A 4-byte tag used to name the mode or property.

+
args +

A pointer to the new mode/property to use.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_RenderFunc

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef int
+  (*FT_Raster_RenderFunc)( FT_Raster                raster,
+                           const FT_Raster_Params*  params );
+
+#define FT_Raster_Render_Func  FT_Raster_RenderFunc
+
+

+
+

Invoke a given raster to scan-convert a given glyph image into a target bitmap.

+

+
input
+

+ + + +
raster +

A handle to the raster object.

+
params +

A pointer to an FT_Raster_Params structure used to store the rendering parameters.

+
+
+
return
+

Error code. 0 means success.

+
+
note
+

The exact format of the source image depends on the raster's glyph format defined in its FT_Raster_Funcs structure. It can be an FT_Outline or anything else in order to support a large array of glyph formats.

+

Note also that the render function can fail and return a ‘FT_Err_Unimplemented_Feature’ error code if the raster used does not support direct composition.

+

XXX: For now, the standard raster doesn't support direct composition but this should change for the final release (see the files ‘demos/src/ftgrays.c’ and ‘demos/src/ftgrays2.c’ for examples of distinct implementations which support direct composition).

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Raster_Funcs

+
+Defined in FT_IMAGE_H (freetype/ftimage.h). +

+
+
+  typedef struct  FT_Raster_Funcs_
+  {
+    FT_Glyph_Format        glyph_format;
+    FT_Raster_NewFunc      raster_new;
+    FT_Raster_ResetFunc    raster_reset;
+    FT_Raster_SetModeFunc  raster_set_mode;
+    FT_Raster_RenderFunc   raster_render;
+    FT_Raster_DoneFunc     raster_done;
+
+  } FT_Raster_Funcs;
+
+

+
+

A structure used to describe a given raster class to the library.

+

+
fields
+

+ + + + + + +
glyph_format +

The supported glyph format for this raster.

+
raster_new +

The raster constructor.

+
raster_reset +

Used to reset the render pool within the raster.

+
raster_render +

A function to render a glyph into a given bitmap.

+
raster_done +

The raster destructor.

+
+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html b/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html new file mode 100644 index 0000000000..94cddd8786 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html @@ -0,0 +1,190 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+SFNT Names +

+

Synopsis

+ + +
FT_SfntNameFT_Get_Sfnt_Name_CountFT_Get_Sfnt_Name


+ +
+

The TrueType and OpenType specifications allow the inclusion of a special ‘names table’ in font files. This table contains textual (and internationalized) information regarding the font, like family name, copyright, version, etc.

+

The definitions below are used to access them if available.

+

Note that this has nothing to do with glyph names!

+

+
+

FT_SfntName

+
+Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h). +

+
+
+  typedef struct  FT_SfntName_
+  {
+    FT_UShort  platform_id;
+    FT_UShort  encoding_id;
+    FT_UShort  language_id;
+    FT_UShort  name_id;
+
+    FT_Byte*   string;      /* this string is *not* null-terminated! */
+    FT_UInt    string_len;  /* in bytes */
+
+  } FT_SfntName;
+
+

+
+

A structure used to model an SFNT ‘name’ table entry.

+

+
fields
+

+ + + + + + + +
platform_id +

The platform ID for ‘string’.

+
encoding_id +

The encoding ID for ‘string’.

+
language_id +

The language ID for ‘string’.

+
name_id +

An identifier for ‘string’.

+
string +

The ‘name’ string. Note that its format differs depending on the (platform,encoding) pair. It can be a Pascal String, a UTF-16 one, etc.

+

Generally speaking, the string is not zero-terminated. Please refer to the TrueType specification for details.

+
string_len +

The length of ‘string’ in bytes.

+
+
+
note
+

Possible values for ‘platform_id’, ‘encoding_id’, ‘language_id’, and ‘name_id’ are given in the file ‘ttnameid.h’. For details please refer to the TrueType or OpenType specification.

+

See also TT_PLATFORM_XXX, TT_APPLE_ID_XXX, TT_MAC_ID_XXX, TT_ISO_ID_XXX, and TT_MS_ID_XXX.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Sfnt_Name_Count

+
+Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h). +

+
+
+  FT_EXPORT( FT_UInt )
+  FT_Get_Sfnt_Name_Count( FT_Face  face );
+
+

+
+

Retrieve the number of name strings in the SFNT ‘name’ table.

+

+
input
+

+ + +
face +

A handle to the source face.

+
+
+
return
+

The number of strings in the ‘name’ table.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Sfnt_Name

+
+Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_Sfnt_Name( FT_Face       face,
+                    FT_UInt       idx,
+                    FT_SfntName  *aname );
+
+

+
+

Retrieve a string of the SFNT ‘name’ table for a given index.

+

+
input
+

+ + + +
face +

A handle to the source face.

+
idx +

The index of the ‘name’ string.

+
+
+
output
+

+ + +
aname +

The indexed FT_SfntName structure.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The ‘string’ array returned in the ‘aname’ structure is not null-terminated.

+

Use FT_Get_Sfnt_Name_Count to get the total number of available ‘name’ table entries, then do a loop until you get the right platform, encoding, and name ID.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html b/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html new file mode 100644 index 0000000000..324e584c50 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html @@ -0,0 +1,164 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Size Management +

+

Synopsis

+ + +
FT_New_SizeFT_Done_SizeFT_Activate_Size


+ +
+

When creating a new face object (e.g., with FT_New_Face), an FT_Size object is automatically created and used to store all pixel-size dependent information, available in the ‘face->size’ field.

+

It is however possible to create more sizes for a given face, mostly in order to manage several character pixel sizes of the same font family and style. See FT_New_Size and FT_Done_Size.

+

Note that FT_Set_Pixel_Sizes and FT_Set_Char_Size only modify the contents of the current ‘active’ size; you thus need to use FT_Activate_Size to change it.

+

99% of applications won't need the functions provided here, especially if they use the caching sub-system, so be cautious when using these.

+

+
+

FT_New_Size

+
+Defined in FT_SIZES_H (freetype/ftsizes.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_New_Size( FT_Face   face,
+               FT_Size*  size );
+
+

+
+

Create a new size object from a given face object.

+

+
input
+

+ + +
face +

A handle to a parent face object.

+
+
+
output
+

+ + +
asize +

A handle to a new size object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

You need to call FT_Activate_Size in order to select the new size for upcoming calls to FT_Set_Pixel_Sizes, FT_Set_Char_Size, FT_Load_Glyph, FT_Load_Char, etc.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Done_Size

+
+Defined in FT_SIZES_H (freetype/ftsizes.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Done_Size( FT_Size  size );
+
+

+
+

Discard a given size object. Note that FT_Done_Face automatically discards all size objects allocated with FT_New_Size.

+

+
input
+

+ + +
size +

A handle to a target size object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Activate_Size

+
+Defined in FT_SIZES_H (freetype/ftsizes.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Activate_Size( FT_Size  size );
+
+

+
+

Even though it is possible to create several size objects for a given face (see FT_New_Size for details), functions like FT_Load_Glyph or FT_Load_Char only use the one which has been activated last to determine the ‘current character pixel size’.

+

This function can be used to ‘activate’ a previously created size object.

+

+
input
+

+ + +
size +

A handle to a target size object.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

If ‘face’ is the size's parent face object, this function changes the value of ‘face->size’ to the input size handle.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-system_interface.html b/src/3rdparty/freetype/docs/reference/ft2-system_interface.html new file mode 100644 index 0000000000..809e2a7705 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-system_interface.html @@ -0,0 +1,399 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+System Interface +

+

Synopsis

+ + + + + +
FT_MemoryFT_MemoryRecFT_Stream_CloseFunc
FT_Alloc_FuncFT_StreamFT_StreamRec
FT_Free_FuncFT_StreamDesc
FT_Realloc_FuncFT_Stream_IoFunc


+ +
+

This section contains various definitions related to memory management and i/o access. You need to understand this information if you want to use a custom memory manager or you own i/o streams.

+

+
+

FT_Memory

+
+

A handle to a given memory manager object, defined with an FT_MemoryRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Alloc_Func

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  typedef void*
+  (*FT_Alloc_Func)( FT_Memory  memory,
+                    long       size );
+
+

+
+

A function used to allocate ‘size’ bytes from ‘memory’.

+

+
input
+

+ + + +
memory +

A handle to the source memory manager.

+
size +

The size in bytes to allocate.

+
+
+
return
+

Address of new memory block. 0 in case of failure.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Free_Func

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  typedef void
+  (*FT_Free_Func)( FT_Memory  memory,
+                   void*      block );
+
+

+
+

A function used to release a given block of memory.

+

+
input
+

+ + + +
memory +

A handle to the source memory manager.

+
block +

The address of the target memory block.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Realloc_Func

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  typedef void*
+  (*FT_Realloc_Func)( FT_Memory  memory,
+                      long       cur_size,
+                      long       new_size,
+                      void*      block );
+
+

+
+

A function used to re-allocate a given block of memory.

+

+
input
+

+ + + + + +
memory +

A handle to the source memory manager.

+
cur_size +

The block's current size in bytes.

+
new_size +

The block's requested new size.

+
block +

The block's current address.

+
+
+
return
+

New block address. 0 in case of memory shortage.

+
+
note
+

In case of error, the old block must still be available.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_MemoryRec

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  struct  FT_MemoryRec_
+  {
+    void*            user;
+    FT_Alloc_Func    alloc;
+    FT_Free_Func     free;
+    FT_Realloc_Func  realloc;
+  };
+
+

+
+

A structure used to describe a given memory manager to FreeType 2.

+

+
fields
+

+ + + + + +
user +

A generic typeless pointer for user data.

+
alloc +

A pointer type to an allocation function.

+
free +

A pointer type to an memory freeing function.

+
realloc +

A pointer type to a reallocation function.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stream

+
+

A handle to an input stream.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_StreamDesc

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  typedef union  FT_StreamDesc_
+  {
+    long   value;
+    void*  pointer;
+
+  } FT_StreamDesc;
+
+

+
+

A union type used to store either a long or a pointer. This is used to store a file descriptor or a ‘FILE*’ in an input stream.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Stream_IoFunc

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  typedef unsigned long
+  (*FT_Stream_IoFunc)( FT_Stream       stream,
+                       unsigned long   offset,
+                       unsigned char*  buffer,
+                       unsigned long   count );
+
+

+
+

A function used to seek and read data from a given input stream.

+

+
input
+

+ + + + + +
stream +

A handle to the source stream.

+
offset +

The offset of read in stream (always from start).

+
buffer +

The address of the read buffer.

+
count +

The number of bytes to read from the stream.

+
+
+
return
+

The number of bytes effectively read by the stream.

+
+
note
+

This function might be called to perform a seek or skip operation with a ‘count’ of 0.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Stream_CloseFunc

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  typedef void
+  (*FT_Stream_CloseFunc)( FT_Stream  stream );
+
+

+
+

A function used to close a given input stream.

+

+
input
+

+ + +
stream +

A handle to the target stream.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_StreamRec

+
+Defined in FT_SYSTEM_H (freetype/ftsystem.h). +

+
+
+  typedef struct  FT_StreamRec_
+  {
+    unsigned char*       base;
+    unsigned long        size;
+    unsigned long        pos;
+
+    FT_StreamDesc        descriptor;
+    FT_StreamDesc        pathname;
+    FT_Stream_IoFunc     read;
+    FT_Stream_CloseFunc  close;
+
+    FT_Memory            memory;
+    unsigned char*       cursor;
+    unsigned char*       limit;
+
+  } FT_StreamRec;
+
+

+
+

A structure used to describe an input stream.

+

+
input
+

+ + + + + + + + + + + +
base +

For memory-based streams, this is the address of the first stream byte in memory. This field should always be set to NULL for disk-based streams.

+
size +

The stream size in bytes.

+
pos +

The current position within the stream.

+
descriptor +

This field is a union that can hold an integer or a pointer. It is used by stream implementations to store file descriptors or ‘FILE*’ pointers.

+
pathname +

This field is completely ignored by FreeType. However, it is often useful during debugging to use it to store the stream's filename (where available).

+
read +

The stream's input function.

+
close +

The stream;s close function.

+
memory +

The memory manager to use to preload frames. This is set internally by FreeType and shouldn't be touched by stream implementations.

+
cursor +

This field is set and used internally by FreeType when parsing frames.

+
limit +

This field is set and used internally by FreeType when parsing frames.

+
+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-toc.html b/src/3rdparty/freetype/docs/reference/ft2-toc.html new file mode 100644 index 0000000000..cb51bdbea9 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-toc.html @@ -0,0 +1,215 @@ + + + + +FreeType-2.3.9 API Reference + + + + + +
[Index]
+

FreeType-2.3.9 API Reference

+ +

Table of Contents

+

General Remarks

  • + + +
    +User allocation +

    How client applications should allocate FreeType data structures.

    +
    +
+

Core API

+

Format-Specific API

+

Cache Sub-System

  • + + +
    +Cache Sub-System +

    How to cache face, size, and glyph data with FreeType 2.

    +
    +
+

Support API

+

Miscellaneous

+

Global Index

+
+ + +
[Index]
+ +
generated on Thu Mar 12 10:57:36 2009
+ diff --git a/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html b/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html new file mode 100644 index 0000000000..007e8331a5 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html @@ -0,0 +1,132 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+The TrueType Engine +

+

Synopsis

+ + +
FT_TrueTypeEngineTypeFT_Get_TrueType_Engine_Type


+ +
+

This section contains a function used to query the level of TrueType bytecode support compiled in this version of the library.

+

+
+

FT_TrueTypeEngineType

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  typedef enum  FT_TrueTypeEngineType_
+  {
+    FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
+    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
+    FT_TRUETYPE_ENGINE_TYPE_PATENTED
+
+  } FT_TrueTypeEngineType;
+
+

+
+

A list of values describing which kind of TrueType bytecode engine is implemented in a given FT_Library instance. It is used by the FT_Get_TrueType_Engine_Type function.

+

+
values
+

+ + + + + + + +
FT_TRUETYPE_ENGINE_TYPE_NONE
+

The library doesn't implement any kind of bytecode interpreter.

+
FT_TRUETYPE_ENGINE_TYPE_UNPATENTED
+

The library implements a bytecode interpreter that doesn't support the patented operations of the TrueType virtual machine.

+

Its main use is to load certain Asian fonts which position and scale glyph components with bytecode instructions. It produces bad output for most other fonts.

+
FT_TRUETYPE_ENGINE_TYPE_PATENTED
+

The library implements a bytecode interpreter that covers the full instruction set of the TrueType virtual machine. See the file ‘docs/PATENTS’ for legal aspects.

+
+
+
since
+

2.2

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_TrueType_Engine_Type

+
+Defined in FT_MODULE_H (freetype/ftmodapi.h). +

+
+
+  FT_EXPORT( FT_TrueTypeEngineType )
+  FT_Get_TrueType_Engine_Type( FT_Library  library );
+
+

+
+

Return an FT_TrueTypeEngineType value to indicate which level of the TrueType virtual machine a given library instance supports.

+

+
input
+

+ + +
library +

A library instance.

+
+
+
return
+

A value indicating which level is supported.

+
+
since
+

2.2

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html b/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html new file mode 100644 index 0000000000..6d83a1a505 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html @@ -0,0 +1,1209 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+TrueType Tables +

+

Synopsis

+ + + + + + + + + + + +
TT_PLATFORM_XXXTT_Postscript
TT_APPLE_ID_XXXTT_PCLT
TT_MAC_ID_XXXTT_MaxProfile
TT_ISO_ID_XXXFT_Sfnt_Tag
TT_MS_ID_XXXFT_Get_Sfnt_Table
TT_ADOBE_ID_XXXFT_Load_Sfnt_Table
TT_HeaderFT_Sfnt_Table_Info
TT_HoriHeaderFT_Get_CMap_Language_ID
TT_VertHeaderFT_Get_CMap_Format
TT_OS2FT_PARAM_TAG_UNPATENTED_HINTING


+ +
+

This section contains the definition of TrueType-specific tables as well as some routines used to access and process them.

+

+
+

TT_PLATFORM_XXX

+
+Defined in FT_TRUETYPE_IDS_H (freetype/ttnameid.h). +

+
+
+#define TT_PLATFORM_APPLE_UNICODE  0
+#define TT_PLATFORM_MACINTOSH      1
+#define TT_PLATFORM_ISO            2 /* deprecated */
+#define TT_PLATFORM_MICROSOFT      3
+#define TT_PLATFORM_CUSTOM         4
+#define TT_PLATFORM_ADOBE          7 /* artificial */
+
+

+
+

A list of valid values for the ‘platform_id’ identifier code in FT_CharMapRec and FT_SfntName structures.

+

+
values
+

+ + + + + + + + +
TT_PLATFORM_APPLE_UNICODE
+

Used by Apple to indicate a Unicode character map and/or name entry. See TT_APPLE_ID_XXX for corresponding ‘encoding_id’ values. Note that name entries in this format are coded as big-endian UCS-2 character codes only.

+
TT_PLATFORM_MACINTOSH +

Used by Apple to indicate a MacOS-specific charmap and/or name entry. See TT_MAC_ID_XXX for corresponding ‘encoding_id’ values. Note that most TrueType fonts contain an Apple roman charmap to be usable on MacOS systems (even if they contain a Microsoft charmap as well).

+
TT_PLATFORM_ISO +

This value was used to specify Unicode charmaps. It is however now deprecated. See TT_ISO_ID_XXX for a list of corresponding ‘encoding_id’ values.

+
TT_PLATFORM_MICROSOFT +

Used by Microsoft to indicate Windows-specific charmaps. See TT_MS_ID_XXX for a list of corresponding ‘encoding_id’ values. Note that most fonts contain a Unicode charmap using (TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS).

+
TT_PLATFORM_CUSTOM +

Used to indicate application-specific charmaps.

+
TT_PLATFORM_ADOBE +

This value isn't part of any font format specification, but is used by FreeType to report Adobe-specific charmaps in an FT_CharMapRec structure. See TT_ADOBE_ID_XXX.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

TT_APPLE_ID_XXX

+
+Defined in FT_TRUETYPE_IDS_H (freetype/ttnameid.h). +

+
+
+#define TT_APPLE_ID_DEFAULT           0 /* Unicode 1.0 */
+#define TT_APPLE_ID_UNICODE_1_1       1 /* specify Hangul at U+34xx */
+#define TT_APPLE_ID_ISO_10646         2 /* deprecated */
+#define TT_APPLE_ID_UNICODE_2_0       3 /* or later */
+#define TT_APPLE_ID_UNICODE_32        4 /* 2.0 or later, full repertoire */
+#define TT_APPLE_ID_VARIANT_SELECTOR  5 /* variation selector data */
+
+

+
+

A list of valid values for the ‘encoding_id’ for TT_PLATFORM_APPLE_UNICODE charmaps and name entries.

+

+
values
+

+ + + + + + + + + + +
TT_APPLE_ID_DEFAULT +

Unicode version 1.0.

+
TT_APPLE_ID_UNICODE_1_1
+

Unicode 1.1; specifies Hangul characters starting at U+34xx.

+
TT_APPLE_ID_ISO_10646 +

Deprecated (identical to preceding).

+
TT_APPLE_ID_UNICODE_2_0
+

Unicode 2.0 and beyond (UTF-16 BMP only).

+
TT_APPLE_ID_UNICODE_32 +

Unicode 3.1 and beyond, using UTF-32.

+
TT_APPLE_ID_VARIANT_SELECTOR
+

From Adobe, not Apple. Not a normal cmap. Specifies variations on a real cmap.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

TT_MAC_ID_XXX

+
+Defined in FT_TRUETYPE_IDS_H (freetype/ttnameid.h). +

+
+
+#define TT_MAC_ID_ROMAN                 0
+#define TT_MAC_ID_JAPANESE              1
+#define TT_MAC_ID_TRADITIONAL_CHINESE   2
+#define TT_MAC_ID_KOREAN                3
+#define TT_MAC_ID_ARABIC                4
+#define TT_MAC_ID_HEBREW                5
+#define TT_MAC_ID_GREEK                 6
+#define TT_MAC_ID_RUSSIAN               7
+#define TT_MAC_ID_RSYMBOL               8
+#define TT_MAC_ID_DEVANAGARI            9
+#define TT_MAC_ID_GURMUKHI             10
+#define TT_MAC_ID_GUJARATI             11
+#define TT_MAC_ID_ORIYA                12
+#define TT_MAC_ID_BENGALI              13
+#define TT_MAC_ID_TAMIL                14
+#define TT_MAC_ID_TELUGU               15
+#define TT_MAC_ID_KANNADA              16
+#define TT_MAC_ID_MALAYALAM            17
+#define TT_MAC_ID_SINHALESE            18
+#define TT_MAC_ID_BURMESE              19
+#define TT_MAC_ID_KHMER                20
+#define TT_MAC_ID_THAI                 21
+#define TT_MAC_ID_LAOTIAN              22
+#define TT_MAC_ID_GEORGIAN             23
+#define TT_MAC_ID_ARMENIAN             24
+#define TT_MAC_ID_MALDIVIAN            25
+#define TT_MAC_ID_SIMPLIFIED_CHINESE   25
+#define TT_MAC_ID_TIBETAN              26
+#define TT_MAC_ID_MONGOLIAN            27
+#define TT_MAC_ID_GEEZ                 28
+#define TT_MAC_ID_SLAVIC               29
+#define TT_MAC_ID_VIETNAMESE           30
+#define TT_MAC_ID_SINDHI               31
+#define TT_MAC_ID_UNINTERP             32
+
+

+
+

A list of valid values for the ‘encoding_id’ for TT_PLATFORM_MACINTOSH charmaps and name entries.

+

+
values
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TT_MAC_ID_ROMAN +

+
TT_MAC_ID_JAPANESE +

+
TT_MAC_ID_TRADITIONAL_CHINESE
+

+
TT_MAC_ID_KOREAN +

+
TT_MAC_ID_ARABIC +

+
TT_MAC_ID_HEBREW +

+
TT_MAC_ID_GREEK +

+
TT_MAC_ID_RUSSIAN +

+
TT_MAC_ID_RSYMBOL +

+
TT_MAC_ID_DEVANAGARI +

+
TT_MAC_ID_GURMUKHI +

+
TT_MAC_ID_GUJARATI +

+
TT_MAC_ID_ORIYA +

+
TT_MAC_ID_BENGALI +

+
TT_MAC_ID_TAMIL +

+
TT_MAC_ID_TELUGU +

+
TT_MAC_ID_KANNADA +

+
TT_MAC_ID_MALAYALAM +

+
TT_MAC_ID_SINHALESE +

+
TT_MAC_ID_BURMESE +

+
TT_MAC_ID_KHMER +

+
TT_MAC_ID_THAI +

+
TT_MAC_ID_LAOTIAN +

+
TT_MAC_ID_GEORGIAN +

+
TT_MAC_ID_ARMENIAN +

+
TT_MAC_ID_MALDIVIAN +

+
TT_MAC_ID_SIMPLIFIED_CHINESE
+

+
TT_MAC_ID_TIBETAN +

+
TT_MAC_ID_MONGOLIAN +

+
TT_MAC_ID_GEEZ +

+
TT_MAC_ID_SLAVIC +

+
TT_MAC_ID_VIETNAMESE +

+
TT_MAC_ID_SINDHI +

+
TT_MAC_ID_UNINTERP +

+
+
+
+
+ + +
[Index][TOC]
+ +
+

TT_ISO_ID_XXX

+
+Defined in FT_TRUETYPE_IDS_H (freetype/ttnameid.h). +

+
+
+#define TT_ISO_ID_7BIT_ASCII  0
+#define TT_ISO_ID_10646       1
+#define TT_ISO_ID_8859_1      2
+
+

+
+

A list of valid values for the ‘encoding_id’ for TT_PLATFORM_ISO charmaps and name entries.

+

Their use is now deprecated.

+

+
values
+

+ + + + +
TT_ISO_ID_7BIT_ASCII +

ASCII.

+
TT_ISO_ID_10646 +

ISO/10646.

+
TT_ISO_ID_8859_1 +

Also known as Latin-1.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

TT_MS_ID_XXX

+
+Defined in FT_TRUETYPE_IDS_H (freetype/ttnameid.h). +

+
+
+#define TT_MS_ID_SYMBOL_CS    0
+#define TT_MS_ID_UNICODE_CS   1
+#define TT_MS_ID_SJIS         2
+#define TT_MS_ID_GB2312       3
+#define TT_MS_ID_BIG_5        4
+#define TT_MS_ID_WANSUNG      5
+#define TT_MS_ID_JOHAB        6
+#define TT_MS_ID_UCS_4       10
+
+

+
+

A list of valid values for the ‘encoding_id’ for TT_PLATFORM_MICROSOFT charmaps and name entries.

+

+
values
+

+ + + + + + + + + +
TT_MS_ID_SYMBOL_CS +

Corresponds to Microsoft symbol encoding. See FT_ENCODING_MS_SYMBOL.

+
TT_MS_ID_UNICODE_CS +

Corresponds to a Microsoft WGL4 charmap, matching Unicode. See FT_ENCODING_UNICODE.

+
TT_MS_ID_SJIS +

Corresponds to SJIS Japanese encoding. See FT_ENCODING_SJIS.

+
TT_MS_ID_GB2312 +

Corresponds to Simplified Chinese as used in Mainland China. See FT_ENCODING_GB2312.

+
TT_MS_ID_BIG_5 +

Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. See FT_ENCODING_BIG5.

+
TT_MS_ID_WANSUNG +

Corresponds to Korean Wansung encoding. See FT_ENCODING_WANSUNG.

+
TT_MS_ID_JOHAB +

Corresponds to Johab encoding. See FT_ENCODING_JOHAB.

+
TT_MS_ID_UCS_4 +

Corresponds to UCS-4 or UTF-32 charmaps. This has been added to the OpenType specification version 1.4 (mid-2001.)

+
+
+
+
+ + +
[Index][TOC]
+ +
+

TT_ADOBE_ID_XXX

+
+Defined in FT_TRUETYPE_IDS_H (freetype/ttnameid.h). +

+
+
+#define TT_ADOBE_ID_STANDARD  0
+#define TT_ADOBE_ID_EXPERT    1
+#define TT_ADOBE_ID_CUSTOM    2
+#define TT_ADOBE_ID_LATIN_1   3
+
+

+
+

A list of valid values for the ‘encoding_id’ for TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension!

+

+
values
+

+ + + + + +
TT_ADOBE_ID_STANDARD +

Adobe standard encoding.

+
TT_ADOBE_ID_EXPERT +

Adobe expert encoding.

+
TT_ADOBE_ID_CUSTOM +

Adobe custom encoding.

+
TT_ADOBE_ID_LATIN_1 +

Adobe Latin 1 encoding.

+
+
+
+
+ + +
[Index][TOC]
+ +
+

TT_Header

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef struct  TT_Header_
+  {
+    FT_Fixed   Table_Version;
+    FT_Fixed   Font_Revision;
+
+    FT_Long    CheckSum_Adjust;
+    FT_Long    Magic_Number;
+
+    FT_UShort  Flags;
+    FT_UShort  Units_Per_EM;
+
+    FT_Long    Created [2];
+    FT_Long    Modified[2];
+
+    FT_Short   xMin;
+    FT_Short   yMin;
+    FT_Short   xMax;
+    FT_Short   yMax;
+
+    FT_UShort  Mac_Style;
+    FT_UShort  Lowest_Rec_PPEM;
+
+    FT_Short   Font_Direction;
+    FT_Short   Index_To_Loc_Format;
+    FT_Short   Glyph_Data_Format;
+
+  } TT_Header;
+
+

+
+

A structure used to model a TrueType font header table. All fields follow the TrueType specification.

+

+
+
+ + +
[Index][TOC]
+ +
+

TT_HoriHeader

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef struct  TT_HoriHeader_
+  {
+    FT_Fixed   Version;
+    FT_Short   Ascender;
+    FT_Short   Descender;
+    FT_Short   Line_Gap;
+
+    FT_UShort  advance_Width_Max;      /* advance width maximum */
+
+    FT_Short   min_Left_Side_Bearing;  /* minimum left-sb       */
+    FT_Short   min_Right_Side_Bearing; /* minimum right-sb      */
+    FT_Short   xMax_Extent;            /* xmax extents          */
+    FT_Short   caret_Slope_Rise;
+    FT_Short   caret_Slope_Run;
+    FT_Short   caret_Offset;
+
+    FT_Short   Reserved[4];
+
+    FT_Short   metric_Data_Format;
+    FT_UShort  number_Of_HMetrics;
+
+    /* The following fields are not defined by the TrueType specification */
+    /* but they are used to connect the metrics header to the relevant    */
+    /* `HMTX' table.                                                      */
+
+    void*      long_metrics;
+    void*      short_metrics;
+
+  } TT_HoriHeader;
+
+

+
+

A structure used to model a TrueType horizontal header, the ‘hhea’ table, as well as the corresponding horizontal metrics table, i.e., the ‘hmtx’ table.

+

+
fields
+

+ + + + + + + + + + + + + + + + +
Version +

The table version.

+
Ascender +

The font's ascender, i.e., the distance from the baseline to the top-most of all glyph points found in the font.

+

This value is invalid in many fonts, as it is usually set by the font designer, and often reflects only a portion of the glyphs found in the font (maybe ASCII).

+

You should use the ‘sTypoAscender’ field of the OS/2 table instead if you want the correct one.

+
Descender +

The font's descender, i.e., the distance from the baseline to the bottom-most of all glyph points found in the font. It is negative.

+

This value is invalid in many fonts, as it is usually set by the font designer, and often reflects only a portion of the glyphs found in the font (maybe ASCII).

+

You should use the ‘sTypoDescender’ field of the OS/2 table instead if you want the correct one.

+
Line_Gap +

The font's line gap, i.e., the distance to add to the ascender and descender to get the BTB, i.e., the baseline-to-baseline distance for the font.

+
advance_Width_Max +

This field is the maximum of all advance widths found in the font. It can be used to compute the maximum width of an arbitrary string of text.

+
min_Left_Side_Bearing +

The minimum left side bearing of all glyphs within the font.

+
min_Right_Side_Bearing +

The minimum right side bearing of all glyphs within the font.

+
xMax_Extent +

The maximum horizontal extent (i.e., the ‘width’ of a glyph's bounding box) for all glyphs in the font.

+
caret_Slope_Rise +

The rise coefficient of the cursor's slope of the cursor (slope=rise/run).

+
caret_Slope_Run +

The run coefficient of the cursor's slope.

+
Reserved +

8 reserved bytes.

+
metric_Data_Format +

Always 0.

+
number_Of_HMetrics +

Number of HMetrics entries in the ‘hmtx’ table -- this value can be smaller than the total number of glyphs in the font.

+
long_metrics +

A pointer into the ‘hmtx’ table.

+
short_metrics +

A pointer into the ‘hmtx’ table.

+
+
+
note
+

IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should be identical except for the names of their fields which are different.

+

This ensures that a single function in the ‘ttload’ module is able to read both the horizontal and vertical headers.

+
+
+
+ + +
[Index][TOC]
+ +
+

TT_VertHeader

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef struct  TT_VertHeader_
+  {
+    FT_Fixed   Version;
+    FT_Short   Ascender;
+    FT_Short   Descender;
+    FT_Short   Line_Gap;
+
+    FT_UShort  advance_Height_Max;      /* advance height maximum */
+
+    FT_Short   min_Top_Side_Bearing;    /* minimum left-sb or top-sb       */
+    FT_Short   min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb   */
+    FT_Short   yMax_Extent;             /* xmax or ymax extents            */
+    FT_Short   caret_Slope_Rise;
+    FT_Short   caret_Slope_Run;
+    FT_Short   caret_Offset;
+
+    FT_Short   Reserved[4];
+
+    FT_Short   metric_Data_Format;
+    FT_UShort  number_Of_VMetrics;
+
+    /* The following fields are not defined by the TrueType specification */
+    /* but they're used to connect the metrics header to the relevant     */
+    /* `HMTX' or `VMTX' table.                                            */
+
+    void*      long_metrics;
+    void*      short_metrics;
+
+  } TT_VertHeader;
+
+

+
+

A structure used to model a TrueType vertical header, the ‘vhea’ table, as well as the corresponding vertical metrics table, i.e., the ‘vmtx’ table.

+

+
fields
+

+ + + + + + + + + + + + + + + + + + +
Version +

The table version.

+
Ascender +

The font's ascender, i.e., the distance from the baseline to the top-most of all glyph points found in the font.

+

This value is invalid in many fonts, as it is usually set by the font designer, and often reflects only a portion of the glyphs found in the font (maybe ASCII).

+

You should use the ‘sTypoAscender’ field of the OS/2 table instead if you want the correct one.

+
Descender +

The font's descender, i.e., the distance from the baseline to the bottom-most of all glyph points found in the font. It is negative.

+

This value is invalid in many fonts, as it is usually set by the font designer, and often reflects only a portion of the glyphs found in the font (maybe ASCII).

+

You should use the ‘sTypoDescender’ field of the OS/2 table instead if you want the correct one.

+
Line_Gap +

The font's line gap, i.e., the distance to add to the ascender and descender to get the BTB, i.e., the baseline-to-baseline distance for the font.

+
advance_Height_Max +

This field is the maximum of all advance heights found in the font. It can be used to compute the maximum height of an arbitrary string of text.

+
min_Top_Side_Bearing +

The minimum top side bearing of all glyphs within the font.

+
min_Bottom_Side_Bearing
+

The minimum bottom side bearing of all glyphs within the font.

+
yMax_Extent +

The maximum vertical extent (i.e., the ‘height’ of a glyph's bounding box) for all glyphs in the font.

+
caret_Slope_Rise +

The rise coefficient of the cursor's slope of the cursor (slope=rise/run).

+
caret_Slope_Run +

The run coefficient of the cursor's slope.

+
caret_Offset +

The cursor's offset for slanted fonts. This value is ‘reserved’ in vmtx version 1.0.

+
Reserved +

8 reserved bytes.

+
metric_Data_Format +

Always 0.

+
number_Of_HMetrics +

Number of VMetrics entries in the ‘vmtx’ table -- this value can be smaller than the total number of glyphs in the font.

+
long_metrics +

A pointer into the ‘vmtx’ table.

+
short_metrics +

A pointer into the ‘vmtx’ table.

+
+
+
note
+

IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should be identical except for the names of their fields which are different.

+

This ensures that a single function in the ‘ttload’ module is able to read both the horizontal and vertical headers.

+
+
+
+ + +
[Index][TOC]
+ +
+

TT_OS2

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef struct  TT_OS2_
+  {
+    FT_UShort  version;                /* 0x0001 - more or 0xFFFF */
+    FT_Short   xAvgCharWidth;
+    FT_UShort  usWeightClass;
+    FT_UShort  usWidthClass;
+    FT_Short   fsType;
+    FT_Short   ySubscriptXSize;
+    FT_Short   ySubscriptYSize;
+    FT_Short   ySubscriptXOffset;
+    FT_Short   ySubscriptYOffset;
+    FT_Short   ySuperscriptXSize;
+    FT_Short   ySuperscriptYSize;
+    FT_Short   ySuperscriptXOffset;
+    FT_Short   ySuperscriptYOffset;
+    FT_Short   yStrikeoutSize;
+    FT_Short   yStrikeoutPosition;
+    FT_Short   sFamilyClass;
+
+    FT_Byte    panose[10];
+
+    FT_ULong   ulUnicodeRange1;        /* Bits 0-31   */
+    FT_ULong   ulUnicodeRange2;        /* Bits 32-63  */
+    FT_ULong   ulUnicodeRange3;        /* Bits 64-95  */
+    FT_ULong   ulUnicodeRange4;        /* Bits 96-127 */
+
+    FT_Char    achVendID[4];
+
+    FT_UShort  fsSelection;
+    FT_UShort  usFirstCharIndex;
+    FT_UShort  usLastCharIndex;
+    FT_Short   sTypoAscender;
+    FT_Short   sTypoDescender;
+    FT_Short   sTypoLineGap;
+    FT_UShort  usWinAscent;
+    FT_UShort  usWinDescent;
+
+    /* only version 1 tables: */
+
+    FT_ULong   ulCodePageRange1;       /* Bits 0-31   */
+    FT_ULong   ulCodePageRange2;       /* Bits 32-63  */
+
+    /* only version 2 tables: */
+
+    FT_Short   sxHeight;
+    FT_Short   sCapHeight;
+    FT_UShort  usDefaultChar;
+    FT_UShort  usBreakChar;
+    FT_UShort  usMaxContext;
+
+  } TT_OS2;
+
+

+
+

A structure used to model a TrueType OS/2 table. This is the long table version. All fields comply to the TrueType specification.

+

Note that we now support old Mac fonts which do not include an OS/2 table. In this case, the ‘version’ field is always set to 0xFFFF.

+

+
+
+ + +
[Index][TOC]
+ +
+

TT_Postscript

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef struct  TT_Postscript_
+  {
+    FT_Fixed  FormatType;
+    FT_Fixed  italicAngle;
+    FT_Short  underlinePosition;
+    FT_Short  underlineThickness;
+    FT_ULong  isFixedPitch;
+    FT_ULong  minMemType42;
+    FT_ULong  maxMemType42;
+    FT_ULong  minMemType1;
+    FT_ULong  maxMemType1;
+
+    /* Glyph names follow in the file, but we don't   */
+    /* load them by default.  See the ttpost.c file.  */
+
+  } TT_Postscript;
+
+

+
+

A structure used to model a TrueType PostScript table. All fields comply to the TrueType specification. This structure does not reference the PostScript glyph names, which can be nevertheless accessed with the ‘ttpost’ module.

+

+
+
+ + +
[Index][TOC]
+ +
+

TT_PCLT

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef struct  TT_PCLT_
+  {
+    FT_Fixed   Version;
+    FT_ULong   FontNumber;
+    FT_UShort  Pitch;
+    FT_UShort  xHeight;
+    FT_UShort  Style;
+    FT_UShort  TypeFamily;
+    FT_UShort  CapHeight;
+    FT_UShort  SymbolSet;
+    FT_Char    TypeFace[16];
+    FT_Char    CharacterComplement[8];
+    FT_Char    FileName[6];
+    FT_Char    StrokeWeight;
+    FT_Char    WidthType;
+    FT_Byte    SerifStyle;
+    FT_Byte    Reserved;
+
+  } TT_PCLT;
+
+

+
+

A structure used to model a TrueType PCLT table. All fields comply to the TrueType specification.

+

+
+
+ + +
[Index][TOC]
+ +
+

TT_MaxProfile

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef struct  TT_MaxProfile_
+  {
+    FT_Fixed   version;
+    FT_UShort  numGlyphs;
+    FT_UShort  maxPoints;
+    FT_UShort  maxContours;
+    FT_UShort  maxCompositePoints;
+    FT_UShort  maxCompositeContours;
+    FT_UShort  maxZones;
+    FT_UShort  maxTwilightPoints;
+    FT_UShort  maxStorage;
+    FT_UShort  maxFunctionDefs;
+    FT_UShort  maxInstructionDefs;
+    FT_UShort  maxStackElements;
+    FT_UShort  maxSizeOfInstructions;
+    FT_UShort  maxComponentElements;
+    FT_UShort  maxComponentDepth;
+
+  } TT_MaxProfile;
+
+

+
+

The maximum profile is a table containing many max values which can be used to pre-allocate arrays. This ensures that no memory allocation occurs during a glyph load.

+

+
fields
+

+ + + + + + + + + + + + + + + + +
version +

The version number.

+
numGlyphs +

The number of glyphs in this TrueType font.

+
maxPoints +

The maximum number of points in a non-composite TrueType glyph. See also the structure element ‘maxCompositePoints’.

+
maxContours +

The maximum number of contours in a non-composite TrueType glyph. See also the structure element ‘maxCompositeContours’.

+
maxCompositePoints +

The maximum number of points in a composite TrueType glyph. See also the structure element ‘maxPoints’.

+
maxCompositeContours +

The maximum number of contours in a composite TrueType glyph. See also the structure element ‘maxContours’.

+
maxZones +

The maximum number of zones used for glyph hinting.

+
maxTwilightPoints +

The maximum number of points in the twilight zone used for glyph hinting.

+
maxStorage +

The maximum number of elements in the storage area used for glyph hinting.

+
maxFunctionDefs +

The maximum number of function definitions in the TrueType bytecode for this font.

+
maxInstructionDefs +

The maximum number of instruction definitions in the TrueType bytecode for this font.

+
maxStackElements +

The maximum number of stack elements used during bytecode interpretation.

+
maxSizeOfInstructions +

The maximum number of TrueType opcodes used for glyph hinting.

+
maxComponentElements +

The maximum number of simple (i.e., non- composite) glyphs in a composite glyph.

+
maxComponentDepth +

The maximum nesting depth of composite glyphs.

+
+
+
note
+

This structure is only used during font loading.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Sfnt_Tag

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  typedef enum  FT_Sfnt_Tag_
+  {
+    ft_sfnt_head = 0,
+    ft_sfnt_maxp = 1,
+    ft_sfnt_os2  = 2,
+    ft_sfnt_hhea = 3,
+    ft_sfnt_vhea = 4,
+    ft_sfnt_post = 5,
+    ft_sfnt_pclt = 6,
+
+    sfnt_max   /* internal end mark */
+
+  } FT_Sfnt_Tag;
+
+

+
+

An enumeration used to specify the index of an SFNT table. Used in the FT_Get_Sfnt_Table API function.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_Sfnt_Table

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  FT_EXPORT( void* )
+  FT_Get_Sfnt_Table( FT_Face      face,
+                     FT_Sfnt_Tag  tag );
+
+

+
+

Return a pointer to a given SFNT table within a face.

+

+
input
+

+ + + +
face +

A handle to the source.

+
tag +

The index of the SFNT table.

+
+
+
return
+

A type-less pointer to the table. This will be 0 in case of error, or if the corresponding table was not found OR loaded from the file.

+
+
note
+

The table is owned by the face object and disappears with it.

+

This function is only useful to access SFNT tables that are loaded by the sfnt, truetype, and opentype drivers. See FT_Sfnt_Tag for a list.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Load_Sfnt_Table

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Load_Sfnt_Table( FT_Face    face,
+                      FT_ULong   tag,
+                      FT_Long    offset,
+                      FT_Byte*   buffer,
+                      FT_ULong*  length );
+
+

+
+

Load any font table into client memory.

+

+
input
+

+ + + + +
face +

A handle to the source face.

+
tag +

The four-byte tag of the table to load. Use the value 0 if you want to access the whole font file. Otherwise, you can use one of the definitions found in the FT_TRUETYPE_TAGS_H file, or forge a new one with FT_MAKE_TAG.

+
offset +

The starting offset in the table (or file if tag == 0).

+
+
+
output
+

+ + +
buffer +

The target buffer address. The client must ensure that the memory array is big enough to hold the data.

+
+
+
inout
+

+ + +
length +

If the ‘length’ parameter is NULL, then try to load the whole table. Return an error code if it fails.

+

Else, if ‘*length’ is 0, exit immediately while returning the table's (or file) full size in it.

+

Else the number of bytes to read from the table or file, from the starting offset.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

If you need to determine the table's length you should first call this function with ‘*length’ set to 0, as in the following example:

+
+  FT_ULong  length = 0;
+
+
+  error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
+  if ( error ) { ... table does not exist ... }
+
+  buffer = malloc( length );
+  if ( buffer == NULL ) { ... not enough memory ... }
+
+  error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
+  if ( error ) { ... could not load table ... }
+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Sfnt_Table_Info

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Sfnt_Table_Info( FT_Face    face,
+                      FT_UInt    table_index,
+                      FT_ULong  *tag,
+                      FT_ULong  *length );
+
+

+
+

Return information on an SFNT table.

+

+
input
+

+ + + +
face +

A handle to the source face.

+
table_index +

The index of an SFNT table. The function returns FT_Err_Table_Missing for an invalid value.

+
+
+
output
+

+ + + +
tag +

The name tag of the SFNT table.

+
length +

The length of the SFNT table.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

SFNT tables with length zero are treated as missing.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_CMap_Language_ID

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  FT_EXPORT( FT_ULong )
+  FT_Get_CMap_Language_ID( FT_CharMap  charmap );
+
+

+
+

Return TrueType/sfnt specific cmap language ID. Definitions of language ID values are in ‘freetype/ttnameid.h’.

+

+
input
+

+ + +
charmap +

The target charmap.

+
+
+
return
+

The language ID of ‘charmap’. If ‘charmap’ doesn't belong to a TrueType/sfnt face, just return 0 as the default value.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_CMap_Format

+
+Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). +

+
+
+  FT_EXPORT( FT_Long )
+  FT_Get_CMap_Format( FT_CharMap  charmap );
+
+

+
+

Return TrueType/sfnt specific cmap format.

+

+
input
+

+ + +
charmap +

The target charmap.

+
+
+
return
+

The format of ‘charmap’. If ‘charmap’ doesn't belong to a TrueType/sfnt face, return -1.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_PARAM_TAG_UNPATENTED_HINTING

+
+

A constant used as the tag of an FT_Parameter structure to indicate that unpatented methods only should be used by the TrueType bytecode interpreter for a typeface opened by FT_Open_Face.

+

+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html b/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html new file mode 100644 index 0000000000..8eaa3f9a10 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html @@ -0,0 +1,466 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Type 1 Tables +

+

Synopsis

+ + + + + + +
PS_FontInfoRecT1_PrivateCID_FaceInfo
PS_FontInfoT1_Blend_FlagsCID_Info
T1_FontInfoCID_FaceDictRecFT_Has_PS_Glyph_Names
PS_PrivateRecCID_FaceDictFT_Get_PS_Font_Info
PS_PrivateCID_FaceInfoRecFT_Get_PS_Font_Private


+ +
+

This section contains the definition of Type 1-specific tables, including structures related to other PostScript font formats.

+

+
+

PS_FontInfoRec

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  typedef struct  PS_FontInfoRec_
+  {
+    FT_String*  version;
+    FT_String*  notice;
+    FT_String*  full_name;
+    FT_String*  family_name;
+    FT_String*  weight;
+    FT_Long     italic_angle;
+    FT_Bool     is_fixed_pitch;
+    FT_Short    underline_position;
+    FT_UShort   underline_thickness;
+
+  } PS_FontInfoRec;
+
+

+
+

A structure used to model a Type 1 or Type 2 FontInfo dictionary. Note that for Multiple Master fonts, each instance has its own FontInfo dictionary.

+

+
+
+ + +
[Index][TOC]
+ +
+

PS_FontInfo

+
+

A handle to a PS_FontInfoRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

T1_FontInfo

+
+

This type is equivalent to PS_FontInfoRec. It is deprecated but kept to maintain source compatibility between various versions of FreeType.

+

+
+
+ + +
[Index][TOC]
+ +
+

PS_PrivateRec

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  typedef struct  PS_PrivateRec_
+  {
+    FT_Int     unique_id;
+    FT_Int     lenIV;
+
+    FT_Byte    num_blue_values;
+    FT_Byte    num_other_blues;
+    FT_Byte    num_family_blues;
+    FT_Byte    num_family_other_blues;
+
+    FT_Short   blue_values[14];
+    FT_Short   other_blues[10];
+
+    FT_Short   family_blues      [14];
+    FT_Short   family_other_blues[10];
+
+    FT_Fixed   blue_scale;
+    FT_Int     blue_shift;
+    FT_Int     blue_fuzz;
+
+    FT_UShort  standard_width[1];
+    FT_UShort  standard_height[1];
+
+    FT_Byte    num_snap_widths;
+    FT_Byte    num_snap_heights;
+    FT_Bool    force_bold;
+    FT_Bool    round_stem_up;
+
+    FT_Short   snap_widths [13];  /* including std width  */
+    FT_Short   snap_heights[13];  /* including std height */
+
+    FT_Fixed   expansion_factor;
+
+    FT_Long    language_group;
+    FT_Long    password;
+
+    FT_Short   min_feature[2];
+
+  } PS_PrivateRec;
+
+

+
+

A structure used to model a Type 1 or Type 2 private dictionary. Note that for Multiple Master fonts, each instance has its own Private dictionary.

+

+
+
+ + +
[Index][TOC]
+ +
+

PS_Private

+
+

A handle to a PS_PrivateRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

T1_Private

+
+

This type is equivalent to PS_PrivateRec. It is deprecated but kept to maintain source compatibility between various versions of FreeType.

+

+
+
+ + +
[Index][TOC]
+ +
+

T1_Blend_Flags

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  typedef enum  T1_Blend_Flags_
+  {
+    /*# required fields in a FontInfo blend dictionary */
+    T1_BLEND_UNDERLINE_POSITION = 0,
+    T1_BLEND_UNDERLINE_THICKNESS,
+    T1_BLEND_ITALIC_ANGLE,
+
+    /*# required fields in a Private blend dictionary */
+    T1_BLEND_BLUE_VALUES,
+    T1_BLEND_OTHER_BLUES,
+    T1_BLEND_STANDARD_WIDTH,
+    T1_BLEND_STANDARD_HEIGHT,
+    T1_BLEND_STEM_SNAP_WIDTHS,
+    T1_BLEND_STEM_SNAP_HEIGHTS,
+    T1_BLEND_BLUE_SCALE,
+    T1_BLEND_BLUE_SHIFT,
+    T1_BLEND_FAMILY_BLUES,
+    T1_BLEND_FAMILY_OTHER_BLUES,
+    T1_BLEND_FORCE_BOLD,
+
+    /*# never remove */
+    T1_BLEND_MAX
+
+  } T1_Blend_Flags;
+
+

+
+

A set of flags used to indicate which fields are present in a given blend dictionary (font info or private). Used to support Multiple Masters fonts.

+

+
+
+ + +
[Index][TOC]
+ +
+

CID_FaceDictRec

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  typedef struct  CID_FaceDictRec_
+  {
+    PS_PrivateRec  private_dict;
+
+    FT_UInt        len_buildchar;
+    FT_Fixed       forcebold_threshold;
+    FT_Pos         stroke_width;
+    FT_Fixed       expansion_factor;
+
+    FT_Byte        paint_type;
+    FT_Byte        font_type;
+    FT_Matrix      font_matrix;
+    FT_Vector      font_offset;
+
+    FT_UInt        num_subrs;
+    FT_ULong       subrmap_offset;
+    FT_Int         sd_bytes;
+
+  } CID_FaceDictRec;
+
+

+
+

A structure used to represent data in a CID top-level dictionary.

+

+
+
+ + +
[Index][TOC]
+ +
+

CID_FaceDict

+
+

A handle to a CID_FaceDictRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

CID_FaceInfoRec

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  typedef struct  CID_FaceInfoRec_
+  {
+    FT_String*      cid_font_name;
+    FT_Fixed        cid_version;
+    FT_Int          cid_font_type;
+
+    FT_String*      registry;
+    FT_String*      ordering;
+    FT_Int          supplement;
+
+    PS_FontInfoRec  font_info;
+    FT_BBox         font_bbox;
+    FT_ULong        uid_base;
+
+    FT_Int          num_xuid;
+    FT_ULong        xuid[16];
+
+    FT_ULong        cidmap_offset;
+    FT_Int          fd_bytes;
+    FT_Int          gd_bytes;
+    FT_ULong        cid_count;
+
+    FT_Int          num_dicts;
+    CID_FaceDict    font_dicts;
+
+    FT_ULong        data_offset;
+
+  } CID_FaceInfoRec;
+
+

+
+

A structure used to represent CID Face information.

+

+
+
+ + +
[Index][TOC]
+ +
+

CID_FaceInfo

+
+

A handle to a CID_FaceInfoRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

CID_Info

+
+

This type is equivalent to CID_FaceInfoRec. It is deprecated but kept to maintain source compatibility between various versions of FreeType.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Has_PS_Glyph_Names

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  FT_EXPORT( FT_Int )
+  FT_Has_PS_Glyph_Names( FT_Face  face );
+
+

+
+

Return true if a given face provides reliable PostScript glyph names. This is similar to using the FT_HAS_GLYPH_NAMES macro, except that certain fonts (mostly TrueType) contain incorrect glyph name tables.

+

When this function returns true, the caller is sure that the glyph names returned by FT_Get_Glyph_Name are reliable.

+

+
input
+

+ + +
face +

face handle

+
+
+
return
+

Boolean. True if glyph names are reliable.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_PS_Font_Info

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_PS_Font_Info( FT_Face      face,
+                       PS_FontInfo  afont_info );
+
+

+
+

Retrieve the PS_FontInfoRec structure corresponding to a given PostScript font.

+

+
input
+

+ + +
face +

PostScript face handle.

+
+
+
output
+

+ + +
afont_info +

Output font info structure pointer.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The string pointers within the font info structure are owned by the face and don't need to be freed by the caller.

+

If the font's format is not PostScript-based, this function will return the ‘FT_Err_Invalid_Argument’ error code.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_PS_Font_Private

+
+Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_PS_Font_Private( FT_Face     face,
+                          PS_Private  afont_private );
+
+

+
+

Retrieve the PS_PrivateRec structure corresponding to a given PostScript font.

+

+
input
+

+ + +
face +

PostScript face handle.

+
+
+
output
+

+ + +
afont_private +

Output private dictionary structure pointer.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

The string pointers within the PS_PrivateRec structure are owned by the face and don't need to be freed by the caller.

+

If the font's format is not PostScript-based, this function returns the ‘FT_Err_Invalid_Argument’ error code.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html b/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html new file mode 100644 index 0000000000..d3b48b1286 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html @@ -0,0 +1,47 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+User allocation +

+
+

FreeType assumes that structures allocated by the user and passed as arguments are zeroed out except for the actual data. In other words, it is recommended to use ‘calloc’ (or variants of it) instead of ‘malloc’ for allocation.

+

+ + diff --git a/src/3rdparty/freetype/docs/reference/ft2-version.html b/src/3rdparty/freetype/docs/reference/ft2-version.html new file mode 100644 index 0000000000..2c7d9c1ef7 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-version.html @@ -0,0 +1,213 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+FreeType Version +

+

Synopsis

+ + + +
FREETYPE_XXXFT_Face_CheckTrueTypePatents
FT_Library_VersionFT_Face_SetUnpatentedHinting


+ +
+

Note that those functions and macros are of limited use because even a new release of FreeType with only documentation changes increases the version number.

+

+
+

FREETYPE_XXX

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+#define FREETYPE_MAJOR  2
+#define FREETYPE_MINOR  3
+#define FREETYPE_PATCH  9
+
+

+
+

These three macros identify the FreeType source code version. Use FT_Library_Version to access them at runtime.

+

+
values
+

+ + + + +
FREETYPE_MAJOR +

The major version number.

+
FREETYPE_MINOR +

The minor version number.

+
FREETYPE_PATCH +

The patch level.

+
+
+
note
+

The version number of FreeType if built as a dynamic link library with the ‘libtool’ package is not controlled by these three macros.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Library_Version

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( void )
+  FT_Library_Version( FT_Library   library,
+                      FT_Int      *amajor,
+                      FT_Int      *aminor,
+                      FT_Int      *apatch );
+
+

+
+

Return the version of the FreeType library being used. This is useful when dynamically linking to the library, since one cannot use the macros FREETYPE_MAJOR, FREETYPE_MINOR, and FREETYPE_PATCH.

+

+
input
+

+ + +
library +

A source library handle.

+
+
+
output
+

+ + + + +
amajor +

The major version number.

+
aminor +

The minor version number.

+
apatch +

The patch version number.

+
+
+
note
+

The reason why this function takes a ‘library’ argument is because certain programs implement library initialization in a custom way that doesn't use FT_Init_FreeType.

+

In such cases, the library version might not be available before the library object has been created.

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face_CheckTrueTypePatents

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Bool )
+  FT_Face_CheckTrueTypePatents( FT_Face  face );
+
+

+
+

Parse all bytecode instructions of a TrueType font file to check whether any of the patented opcodes are used. This is only useful if you want to be able to use the unpatented hinter with fonts that do not use these opcodes.

+

Note that this function parses all glyph instructions in the font file, which may be slow.

+

+
input
+

+ + +
face +

A face handle.

+
+
+
return
+

1 if this is a TrueType font that uses one of the patented opcodes, 0 otherwise.

+
+
since
+

2.3.5

+
+
+
+ + +
[Index][TOC]
+ +
+

FT_Face_SetUnpatentedHinting

+
+Defined in FT_FREETYPE_H (freetype/freetype.h). +

+
+
+  FT_EXPORT( FT_Bool )
+  FT_Face_SetUnpatentedHinting( FT_Face  face,
+                                FT_Bool  value );
+
+

+
+

Enable or disable the unpatented hinter for a given face. Only enable it if you have determined that the face doesn't use any patented opcodes (see FT_Face_CheckTrueTypePatents).

+

+
input
+

+ + + +
face +

A face handle.

+
value +

New boolean setting.

+
+
+
return
+

The old setting value. This will always be false if this is not an SFNT font, or if the unpatented hinter is not compiled in this instance of the library.

+
+
since
+

2.3.5

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html new file mode 100644 index 0000000000..7c850d7691 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html @@ -0,0 +1,270 @@ + + + + +FreeType-2.3.9 API Reference + + + + + + +
[Index][TOC]
+

FreeType-2.3.9 API Reference

+ +

+Window FNT Files +

+

Synopsis

+ + + +
FT_WinFNT_ID_XXXFT_WinFNT_Header
FT_WinFNT_HeaderRecFT_Get_WinFNT_Header


+ +
+

This section contains the declaration of Windows FNT specific functions.

+

+
+

FT_WinFNT_ID_XXX

+
+Defined in FT_WINFONTS_H (freetype/ftwinfnt.h). +

+
+
+#define FT_WinFNT_ID_CP1252    0
+#define FT_WinFNT_ID_DEFAULT   1
+#define FT_WinFNT_ID_SYMBOL    2
+#define FT_WinFNT_ID_MAC      77
+#define FT_WinFNT_ID_CP932   128
+#define FT_WinFNT_ID_CP949   129
+#define FT_WinFNT_ID_CP1361  130
+#define FT_WinFNT_ID_CP936   134
+#define FT_WinFNT_ID_CP950   136
+#define FT_WinFNT_ID_CP1253  161
+#define FT_WinFNT_ID_CP1254  162
+#define FT_WinFNT_ID_CP1258  163
+#define FT_WinFNT_ID_CP1255  177
+#define FT_WinFNT_ID_CP1256  178
+#define FT_WinFNT_ID_CP1257  186
+#define FT_WinFNT_ID_CP1251  204
+#define FT_WinFNT_ID_CP874   222
+#define FT_WinFNT_ID_CP1250  238
+#define FT_WinFNT_ID_OEM     255
+
+

+
+

A list of valid values for the ‘charset’ byte in FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX encodings (except for cp1361) can be found at ftp://ftp.unicode.org in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT.

+

+
values
+

+ + + + + + + + + + + + + + + + + + + + +
FT_WinFNT_ID_DEFAULT +

This is used for font enumeration and font creation as a ‘don't care’ value. Valid font files don't contain this value. When querying for information about the character set of the font that is currently selected into a specified device context, this return value (of the related Windows API) simply denotes failure.

+
FT_WinFNT_ID_SYMBOL +

There is no known mapping table available.

+
FT_WinFNT_ID_MAC +

Mac Roman encoding.

+
FT_WinFNT_ID_OEM +

From Michael Pöttgen <michael@poettgen.de>:

+

The ‘Windows Font Mapping’ article says that FT_WinFNT_ID_OEM is used for the charset of vector fonts, like ‘modern.fon’, ‘roman.fon’, and ‘script.fon’ on Windows.

+

The ‘CreateFont’ documentation says: The FT_WinFNT_ID_OEM value specifies a character set that is operating-system dependent.

+

The ‘IFIMETRICS’ documentation from the ‘Windows Driver Development Kit’ says: This font supports an OEM-specific character set. The OEM character set is system dependent.

+

In general OEM, as opposed to ANSI (i.e., cp1252), denotes the second default codepage that most international versions of Windows have. It is one of the OEM codepages from

+

http://www.microsoft.com/globaldev/reference/cphome.mspx,

+

and is used for the ‘DOS boxes’, to support legacy applications. A German Windows version for example usually uses ANSI codepage 1252 and OEM codepage 850.

+
FT_WinFNT_ID_CP874 +

A superset of Thai TIS 620 and ISO 8859-11.

+
FT_WinFNT_ID_CP932 +

A superset of Japanese Shift-JIS (with minor deviations).

+
FT_WinFNT_ID_CP936 +

A superset of simplified Chinese GB 2312-1980 (with different ordering and minor deviations).

+
FT_WinFNT_ID_CP949 +

A superset of Korean Hangul KS C 5601-1987 (with different ordering and minor deviations).

+
FT_WinFNT_ID_CP950 +

A superset of traditional Chinese Big 5 ETen (with different ordering and minor deviations).

+
FT_WinFNT_ID_CP1250 +

A superset of East European ISO 8859-2 (with slightly different ordering).

+
FT_WinFNT_ID_CP1251 +

A superset of Russian ISO 8859-5 (with different ordering).

+
FT_WinFNT_ID_CP1252 +

ANSI encoding. A superset of ISO 8859-1.

+
FT_WinFNT_ID_CP1253 +

A superset of Greek ISO 8859-7 (with minor modifications).

+
FT_WinFNT_ID_CP1254 +

A superset of Turkish ISO 8859-9.

+
FT_WinFNT_ID_CP1255 +

A superset of Hebrew ISO 8859-8 (with some modifications).

+
FT_WinFNT_ID_CP1256 +

A superset of Arabic ISO 8859-6 (with different ordering).

+
FT_WinFNT_ID_CP1257 +

A superset of Baltic ISO 8859-13 (with some deviations).

+
FT_WinFNT_ID_CP1258 +

For Vietnamese. This encoding doesn't cover all necessary characters.

+
FT_WinFNT_ID_CP1361 +

Korean (Johab).

+
+
+
+
+ + +
[Index][TOC]
+ +
+

FT_WinFNT_HeaderRec

+
+Defined in FT_WINFONTS_H (freetype/ftwinfnt.h). +

+
+
+  typedef struct  FT_WinFNT_HeaderRec_
+  {
+    FT_UShort  version;
+    FT_ULong   file_size;
+    FT_Byte    copyright[60];
+    FT_UShort  file_type;
+    FT_UShort  nominal_point_size;
+    FT_UShort  vertical_resolution;
+    FT_UShort  horizontal_resolution;
+    FT_UShort  ascent;
+    FT_UShort  internal_leading;
+    FT_UShort  external_leading;
+    FT_Byte    italic;
+    FT_Byte    underline;
+    FT_Byte    strike_out;
+    FT_UShort  weight;
+    FT_Byte    charset;
+    FT_UShort  pixel_width;
+    FT_UShort  pixel_height;
+    FT_Byte    pitch_and_family;
+    FT_UShort  avg_width;
+    FT_UShort  max_width;
+    FT_Byte    first_char;
+    FT_Byte    last_char;
+    FT_Byte    default_char;
+    FT_Byte    break_char;
+    FT_UShort  bytes_per_row;
+    FT_ULong   device_offset;
+    FT_ULong   face_name_offset;
+    FT_ULong   bits_pointer;
+    FT_ULong   bits_offset;
+    FT_Byte    reserved;
+    FT_ULong   flags;
+    FT_UShort  A_space;
+    FT_UShort  B_space;
+    FT_UShort  C_space;
+    FT_UShort  color_table_offset;
+    FT_ULong   reserved1[4];
+
+  } FT_WinFNT_HeaderRec;
+
+

+
+

Windows FNT Header info.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_WinFNT_Header

+
+

A handle to an FT_WinFNT_HeaderRec structure.

+

+
+
+ + +
[Index][TOC]
+ +
+

FT_Get_WinFNT_Header

+
+Defined in FT_WINFONTS_H (freetype/ftwinfnt.h). +

+
+
+  FT_EXPORT( FT_Error )
+  FT_Get_WinFNT_Header( FT_Face               face,
+                        FT_WinFNT_HeaderRec  *aheader );
+
+

+
+

Retrieve a Windows FNT font info header.

+

+
input
+

+ + +
face +

A handle to the input face.

+
+
+
output
+

+ + +
aheader +

The WinFNT header.

+
+
+
return
+

FreeType error code. 0 means success.

+
+
note
+

This function only works with Windows FNT faces, returning an error otherwise.

+
+
+
+ + +
[Index][TOC]
+ + + diff --git a/src/3rdparty/freetype/docs/release b/src/3rdparty/freetype/docs/release new file mode 100644 index 0000000000..e93f430df8 --- /dev/null +++ b/src/3rdparty/freetype/docs/release @@ -0,0 +1,166 @@ +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 freetype2 and ft2demos + modules). + +. Copy the CVS archive to another directory 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 + + to test compilation with both gcc and g++. + +. Test C++ compilation for ft2demos too. + +. Tag the CVS (freetype2, ft2demos). + + TODO: Tag the home page CVS on savannah.nongnu.org. + +. Say `make dist' in both the freetype2 and ft2demos modules to + generate the .tar.gz, .tar.bz2, and .zip files. + +. Create the doc bundles (freetype-doc-.tar.gz, + freetype-doc-.tar.bz2, ftdoc.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.7 + SAVANNAH_USER=wl + SOURCEFORGE_USER=wlemb + + ##################################################################### + + GPG='/usr/bin/gpg --batch --no-tty' + + version=`echo $VERSION | sed "s/\\.//g"` + + UNIX_PACKAGES="freetype ft2demos freetype-doc" + WINDOWS_PACKAGES="ft ftdmo ftdoc" + UNIX_ZIP="tar.gz tar.bz2" + WINDOWS_ZIP="zip" + + PACKAGE_LIST= + for i in $UNIX_PACKAGES; do + for j in $UNIX_ZIP; do + PACKAGE_LIST="$PACKAGE_LIST $i-$VERSION.$j" + done + done + for i in $WINDOWS_PACKAGES; do + for j in $WINDOWS_ZIP; do + PACKAGE_LIST="$PACKAGE_LIST $i$version.$j" + done + done + + 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 + + SIGNATURE_LIST= + for i in $PACKAGE_LIST; do + SIGNATURE_LIST="$SIGNATURE_LIST $i.sig" + done + + scp $PACKAGE_LIST $SIGNATURE_LIST \ + $SAVANNAH_USER@dl.sv.nongnu.org:/releases/freetype/ + + rsync -avP -e ssh $PACKAGE_LIST $SIGNATURE_LIST \ + $SOURCEFORGE_USER@frs.sf.net:uploads/ + + # 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 freetype-announce@nongnu.org and to relevant + newsgroups. + +---------------------------------------------------------------------- + +Copyright 2003, 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 release --- -- cgit v1.2.3