diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-07-07 09:56:43 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-07-07 09:56:43 +0000 |
commit | 750d5e56c495ac771c2180183e9fccc00f0fe6bf (patch) | |
tree | e2b12ae3c07d546028e969437ab8ca0eb6047540 /Build/source | |
parent | 04ab6a8796404e13e659f596d4ae1d912a82ea0f (diff) |
freetype 2.6.4
git-svn-id: svn://tug.org/texlive/trunk@41649 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
191 files changed, 5898 insertions, 2634 deletions
diff --git a/Build/source/libs/freetype2/ChangeLog b/Build/source/libs/freetype2/ChangeLog index a82eaa7b0ee..5399246acb8 100644 --- a/Build/source/libs/freetype2/ChangeLog +++ b/Build/source/libs/freetype2/ChangeLog @@ -1,3 +1,8 @@ +2016-07-07 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Import freetype-2.6.4. + * version.ac: Adjusted. + 2016-02-15 Karl Berry <karl@tug.org> * freetype-PATCHES: rename from freetype-src-PATCHES. diff --git a/Build/source/libs/freetype2/configure b/Build/source/libs/freetype2/configure index 19c8171588a..2a557ae765d 100755 --- a/Build/source/libs/freetype2/configure +++ b/Build/source/libs/freetype2/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for FreeType (TeX Live) 2.6.3. +# Generated by GNU Autoconf 2.69 for FreeType (TeX Live) 2.6.4. # # Report bugs to <tex-k@tug.org>. # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='FreeType (TeX Live)' PACKAGE_TARNAME='freetype--tex-live-' -PACKAGE_VERSION='2.6.3' -PACKAGE_STRING='FreeType (TeX Live) 2.6.3' +PACKAGE_VERSION='2.6.4' +PACKAGE_STRING='FreeType (TeX Live) 2.6.4' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1235,7 +1235,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures FreeType (TeX Live) 2.6.3 to adapt to many kinds of systems. +\`configure' configures FreeType (TeX Live) 2.6.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1302,7 +1302,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of FreeType (TeX Live) 2.6.3:";; + short | recursive ) echo "Configuration of FreeType (TeX Live) 2.6.4:";; esac cat <<\_ACEOF @@ -1398,7 +1398,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -FreeType (TeX Live) configure 2.6.3 +FreeType (TeX Live) configure 2.6.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1499,7 +1499,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by FreeType (TeX Live) $as_me 2.6.3, which was +It was created by FreeType (TeX Live) $as_me 2.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3422,7 +3422,7 @@ fi # Define the identity of the package. PACKAGE='freetype--tex-live-' - VERSION='2.6.3' + VERSION='2.6.4' cat >>confdefs.h <<_ACEOF @@ -4953,7 +4953,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by FreeType (TeX Live) $as_me 2.6.3, which was +This file was extended by FreeType (TeX Live) $as_me 2.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5010,7 +5010,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -FreeType (TeX Live) config.status 2.6.3 +FreeType (TeX Live) config.status 2.6.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/freetype2/freetype-PATCHES/ChangeLog b/Build/source/libs/freetype2/freetype-PATCHES/ChangeLog index c69be79d0a1..0cd8e58dc8b 100644 --- a/Build/source/libs/freetype2/freetype-PATCHES/ChangeLog +++ b/Build/source/libs/freetype2/freetype-PATCHES/ChangeLog @@ -1,3 +1,8 @@ +2016-07-07 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Imported freetype-2.6.4 source tree from: + http://savannah.nongnu.org/download/freetype/ + 2016-02-12 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Imported freetype-2.6.3 source tree from: diff --git a/Build/source/libs/freetype2/freetype-PATCHES/TL-Changes b/Build/source/libs/freetype2/freetype-PATCHES/TL-Changes index c595783b65a..2a6215521bb 100644 --- a/Build/source/libs/freetype2/freetype-PATCHES/TL-Changes +++ b/Build/source/libs/freetype2/freetype-PATCHES/TL-Changes @@ -1,6 +1,2 @@ -Changes applied to the freetype-2.6.3/ tree as obtained from: +Changes applied to the freetype-2.6.4/ tree as obtained from: http://savannah.nongnu.org/download/freetype/. - -Updated: - builds/unix/config.guess - builds/unix/config.sub diff --git a/Build/source/libs/freetype2/freetype-src/CMakeLists.txt b/Build/source/libs/freetype2/freetype-src/CMakeLists.txt index f02ee518e84..60520f1a2f2 100644 --- a/Build/source/libs/freetype2/freetype-src/CMakeLists.txt +++ b/Build/source/libs/freetype2/freetype-src/CMakeLists.txt @@ -36,11 +36,11 @@ # # For an iOS static library, use # -# cmake <path-to-freetype2-src-dir> -D IOS_PLATFORM=OS -G Xcode +# cmake -D IOS_PLATFORM=OS -G Xcode <path-to-freetype2-src-dir> # # or # -# cmake <path-to-freetype2-src-dir> -D IOS_PLATFORM=SIMULATOR -G Xcode +# cmake -D IOS_PLATFORM=SIMULATOR -G Xcode <path-to-freetype2-src-dir> # # Please refer to the cmake manual for further options, in particular, how # to modify compilation and linking parameters. @@ -68,6 +68,11 @@ # only if it is available. Example: # # cmake ... -DWITH_ZLIB=ON -DWITH_HarfBuzz=OFF ... +# +# . Installation of FreeType can be controlled with the CMake variables +# `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' +# (this is compatible with the same CMake variables in zlib's CMake +# support). cmake_minimum_required(VERSION 2.6) @@ -102,7 +107,7 @@ if (APPLE) set(BUILD_SHARED_LIBS OFF) set(CMAKE_TOOLCHAIN_FILE - ${PROJECT_SOURCE_DIR}/builds/cmake/iOS.cmake) + ${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake) endif () else () if (DEFINED IOS_PLATFORM) @@ -149,7 +154,7 @@ endif () set(VERSION_MAJOR "2") set(VERSION_MINOR "6") -set(VERSION_PATCH "3") +set(VERSION_PATCH "4") set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) set(SHARED_LIBRARY_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}) @@ -173,7 +178,7 @@ foreach (d ZLIB BZip2 PNG HarfBuzz) if (${d}_FOUND OR ${D}_FOUND) message(STATUS "Building with ${d}") - endif() + endif () endforeach () @@ -210,14 +215,17 @@ if (UNIX) endif () string(REPLACE "/undef " "#undef " FTCONFIG_H "${FTCONFIG_H}") - file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h" + file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new" "${FTCONFIG_H}") else () file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" FTCONFIG_H) - file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h" + file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new" "${FTCONFIG_H}") endif () +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new" + "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") # Create the options file @@ -246,8 +254,11 @@ if (HARFBUZZ_FOUND) "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1" FTOPTION_H "${FTOPTION_H}") endif () -file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h" +file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h-new" "${FTOPTION_H}") +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h-new" + "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") # Specify library include directories @@ -383,28 +394,33 @@ endif () # Installations # Note the trailing slash in the argument to the `DIRECTORY' directive -install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ - DESTINATION include/freetype2 - PATTERN "internal" EXCLUDE - PATTERN "ftconfig.h" EXCLUDE - PATTERN "ftoption.h" EXCLUDE -) -install(FILES - ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h - ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h - DESTINATION include/freetype2/freetype/config -) -install(TARGETS freetype - EXPORT freetype-targets - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - FRAMEWORK DESTINATION Library/Frameworks -) -install(EXPORT freetype-targets - DESTINATION lib/cmake/freetype - FILE freetype-config.cmake -) +if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) + install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ + DESTINATION include/freetype2 + PATTERN "internal" EXCLUDE + PATTERN "ftconfig.h" EXCLUDE + PATTERN "ftoption.h" EXCLUDE + ) + install(FILES + ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h + ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h + DESTINATION include/freetype2/freetype/config + ) +endif () + +if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) + install(TARGETS freetype + EXPORT freetype-targets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + FRAMEWORK DESTINATION Library/Frameworks + ) + install(EXPORT freetype-targets + DESTINATION lib/cmake/freetype + FILE freetype-config.cmake + ) +endif () # Packaging diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog b/Build/source/libs/freetype2/freetype-src/ChangeLog index a19b4decfb5..cefbf85068c 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog @@ -1,3 +1,1126 @@ +2016-07-05 Werner Lemberg <wl@gnu.org> + + * Version 2.6.4 released. + ========================= + + + Tag sources with `VER-2-6-4'. + + * docs/VERSION.TXT: Update documentation and bump version number to + 2.6.4. + + * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2005/index.html, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2008/index.html, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/index.html, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualc/index.html, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, + builds/windows/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.6.3/2.6.4/, s/263/264/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. + + * builds/unix/configure.raw (version_info): Set to 18:4:12. + * CMakeLists.txt (VERSION_PATCH): Set to 4. + + * docs/CHANGES: Updated. + +2016-07-05 Werner Lemberg <wl@gnu.org> + + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning. + +2016-07-04 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Variable type revision (part 2). + + * src/smooth/ftgrays.c (TArea): Restore original definition as `int'. + (gray_render_line) [FT_LONG64]: Updated. + (gray_convert_glyph): 32-bit band bisection stack should be 32 bands. + (gray_convert_glyph_inner): Trace successes and failures. + +2016-07-04 Werner Lemberg <wl@gnu.org> + + [autofit] Handle single-point contours as segments. + + Doing so allows us to link them to edges – some fonts like + `NotoSansGurmukhi-Regular' have such isolated points sitting exactly + on other outlines. + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't + ignore one-point contours but handle them specially as one-point + segments. + (af_latin_hints_compute_edges): Append one-point segments to edges + if possible. + +2016-07-02 Werner Lemberg <wl@gnu.org> + + [autofit] Remove unused structure members. + + * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove + `num_linked'. + + * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated. + +2016-07-02 Werner Lemberg <wl@gnu.org> + + [autofit] Update to Unicode 9.0.0. + + * src/autofit/afranges.c (af_arab_nonbase_uniranges, + af_cyrl_uniranges): Add new data. + +2016-07-01 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Variable type revision (part 1). + + This patch restores original `TCoord' definition as `int' so that the + rendering pool is used more efficiently on LP64 platforms (unix). + + * src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some + fields to `TCoord'. + (gray_find_cell, gray_render_scanline, gray_render_line, gray_hline, + gray_sweep, gray_convert_glyph): Updated. + +2016-06-28 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Minor clean-ups. + + * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'. + (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated. + +2016-06-27 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Minor clean-ups. + + * src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile + qualifier. + (gray_raster_render): Move span initializations from here. + (gray_sweep): ... to here and remove unused `target' argument. + +2016-06-26 Alexei Podtelezhnikov <apodtele@gmail.com> + + [pcf] Fix handling of very large fonts (#47708). + + * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an + unsigned short. + Only reject `0xFFFF' as an invalid encoding offset. + +2016-06-25 Werner Lemberg <wl@gnu.org> + + [truetype] Really fix deallocation in case of error (#47726). + + * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize + `outline.points' also. + +2016-06-23 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Consolidate memory management. + + * src/smooth/ftgrays.c (gray_init_cells): Remove function. + (gray_TWorker): Remove fields that become local variables. + (gray_raster_render): Move rendering buffer declaration from here. + (gray_convert_glyph): ... to here and update accordingly. + +2016-06-22 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Consolidate boundary checks. + + Removing the checks from `gray_hline' shaves 1% off rendering speed. + + * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'. + (gray_TWorker): No need to store `clip_box'. + (gray_hline): Remove unnecessary boundary checks. + (gray_convert_glyph): Move boundary checks from here. + (gray_raster_render): ... to here and consolidate. + +2016-06-21 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Use `FT_Outline_Get_CBox'. + + * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'. + (gray_compute_cbox): Remove this function. + (gray_convert_glyph): Update to use `FT_Outline_Get_CBox'. + +2016-06-20 Werner Lemberg <wl@gnu.org> + + [smooth] Remove compiler warnings. + + * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang. + +2016-06-20 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Sanitize memory managenent. + + * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up. + +2016-06-18 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Remove `band_shoot' that never worked. + + * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'. + (gray_convert_glyph): Updated. + +2016-06-17 Alexei Podtelezhnikov <apodtele@gmail.com> + + [raster, smooth] Handle FT_RENDER_POOL_SIZE better. + + * src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro. + (ft_black_render): Updated. + * src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro. + (gray_raster_render): Updated. + +2016-06-16 Werner Lemberg <wl@gnu.org> + + * src/base/md5.c: Updated to recent version. + +2016-06-14 Alexei Podtelezhnikov <apodtele@gmail.com> + + * src/smooth/ftgrays.c (gray_hline): Optimize if-condition. + +2016-06-13 Werner Lemberg <wl@gnu.org> + + [autofit] Add support for Cherokee script. + + * src/autofit/afblue.dat: Add blue zone data for Cherokee. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Cherokee standard characters. + + * src/autofit/afranges.c: Add Cherokee data. + + * src/autofit/afstyles.h: Add Cherokee data. + +2016-06-09 David Capello <davidcapello@gmail.com> + + [cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files. + + * CMakeLists.txt: Each time cmake is run those files are + modified and the whole FreeType library is recompiled. With this + change we change the files only if there are real modifications, so + we can avoid recompilations. + +2016-06-09 Werner Lemberg <wl@gnu.org> + + [bdf] Check number of properties (#48166). + + * src/bdf/bdflib.c (_bdf_parse_start): Implement. + +2016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Re-enable new line renderer on 64-bit archs. + + * src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new + implementation, where it is safe from overflows. + +2016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Minor clean-ups. + + * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way. + (gray_render_span): Remove spurious casts and streamline. + +2016-06-07 Werner Lemberg <wl@gnu.org> + + [autofit] Add support for Ethiopic script. + + * src/autofit/afblue.dat: Add blue zone data for Ethiopic. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Ethiopic standard characters. + + * src/autofit/afranges.c: Add Ethiopic data. + + * src/autofit/afstyles.h: Add Ethiopic data. + +2016-06-07 Werner Lemberg <wl@gnu.org> + + [autofit] Fix compilation with VS2016 (#48126). + + This compiler doesn't recognize the end-of-comment sequence `*/' if + it immediately follows non-ASCII characters. + + * src/autofit/afscript.h: Ensure whitespace before `*/'. + +2016-06-04 Werner Lemberg <wl@gnu.org> + + Fix a test for named instances (#48122). + + This was missed while giving negative face indices an extended + meaning. + + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement. + +2016-05-31 Nikolaus Waxweiler <madigens@gmail.com> + + [truetype] Let SHPIX move points in the twilight zone in v40. + + * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in + the twilight zone. Otherwise, treat SHPIX the same as DELTAP. + Unbreaks various fonts such as older versions of Rokkitt and DTL + Argo T Light that would glitch severly after calling ALIGNRP after a + blocked SHPIX. + +2016-05-30 Werner Lemberg <wl@gnu.org> + + [type42] Support `CharStrings' entry format as created by LilyPond. + + * src/type42/t42parse.c (t42_parse_charstrings): Handle entries + having the format + + (foo) cvn 12345 def + +2016-05-28 Werner Lemberg <wl@gnu.org> + + * src/autofit/afranges.c: Remove `UL' postfix from hex numbers. + + Suggested by Alexei. `UL' is only needed for 16bit compilers, but + it seems noone is using this anymore (and we no longer test whether + FreeType compiles in such an environment). Otherwise, it is easy to + add the postfix to the `AF_UNICODE_RANGE' macro. + +2016-05-26 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Shrink bisection stack. + + The convergence of Bézier flatteners is fast with the deviation + from straight line being assymptotically cut 4-fold on each bisection. + This justifies smaller bisection stack size. + + * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'. + (gray_render_conic): Create and use conic `bez_stack'. Move back the + band analysis from... + (gray_conic_to): ... here. + (gray_render_cubic): Create and use cubic `bez_stack'. Move back the + band analysis from... + (gray_cubic_to): ... here. + (gray_move_to): Updated. + +2016-05-25 Werner Lemberg <wl@gnu.org> + + [autofit] Fixes for Armenian and Gujarati ranges. + + * src/autofit/afranges.c (af_armn_uniranges): Corrected. + (af_guru_nonbase_uniranges): Make U+0A3E a base character. + +2016-05-24 Werner Lemberg <wl@gnu.org> + + [autofit] Add support for Armenian script. + + * src/autofit/afblue.dat: Add blue zone data for Armenian. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Armenian standard characters. + + * src/autofit/afranges.c: Add Armenian data. + + * src/autofit/afstyles.h: Add Armenian data. + +2016-05-23 Werner Lemberg <wl@gnu.org> + + * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'. + + This was commented about 10 years ago – I think the reason then to + disable libtool's `-export-symbols' option was to give some badly + programmed applications access to internal FreeType functions. + + I believe that we should no longer take care of such programs; the + number of symbols exported should be rather restricted as much as + possible. + +2016-05-22 Werner Lemberg <wl@gnu.org> + + [autofit] Add blue-zone support for Gurmukhi script. + + This essentially moves the Gurmukhi script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Gurmukhi. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Gurmukhi standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Gurmukhi data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2016-05-21 Werner Lemberg <wl@gnu.org> + + Minor clang++ fixes. + + * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c + (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add + initializer. + + * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit + conversion from NULL to boolean. + +2016-05-21 Werner Lemberg <wl@gnu.org> + + Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955). + + * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use + braces for `extern "C++"'. + +2016-05-17 Nikolaus Waxweiler <madigens@gmail.com> + + [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3]. + + * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with... + (tt_loader_set_pp): ... this new function. + Update all callers. + +2016-05-17 Nikolaus Waxweiler <madigens@gmail.com> + + [truetype] New implementation of v38 bytecode interpreter [2/3]. + + This patch actually modifies the bytecode interpreter. + + See added comments in `ttinterp.h' for more information on this and + the following commit in the series. + + * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by... + (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY, + SUBPIXEL_HINTING_MINIMAL): ...new macros. + (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backwards + compatibility. + Updated. + (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD): + Updated. + (Ins_INSTCTRL): Handle native ClearType mode flag. + Updated. + (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backwards + compatibility. + (Move_Zp2_Point): Ditto. + (Ins_SHP): Updated. + (Ins_SHPIX): Handle backwards compatibility. + Updated. + (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated. + (Ins_ALIGNRP): Updated. + (Ins_IUP, Ins_DELTAP): Handle backwards compatibility. + Updated. + (Ins_GETINFO): Handle v38 flags. + Updated. + (TT_RunIns): Handle backwards compatibility mode. + Updated. + +2016-05-17 Nikolaus Waxweiler <madigens@gmail.com> + + [truetype] New implementation of v38 bytecode interpreter [1/3]. + + This patch prepares data structures and the like. + + See added comments in `ttinterp.h' for more information on this and + the following commits in the series. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate + between subpixel versions. + (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY, + TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros. + + * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields + `subpixel_hinting_lean', `vertical_lcd_lean', + `backwards_compatibility', `iupx_called', iupy_called', and + `grayscale_cleartype' for new hinting mode. + + * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40 + interpreters conditionally. + + * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless + in v38 backwards compatibility mode. + Updated. + (compute_glyph_metrics): Add v38 backwards compatibility mode + constraint for adjusting advance widths. + Updated. + (tt_loader_init): Handle new flags `subpixel_hinting_lean', + `grayscale_cleartype', and `vertical_lcd_lean'. + Updated. + (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP): + Updated. + + * src/truetype/ttobjs.c (tt_driver_init): Conditionally set + default interpreter version number. + + * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated. + +2016-05-17 Werner Lemberg <wl@gnu.org> + + [cff] Fix matrix scaling (#47848). + + * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro. + + * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling + value of all matrix coefficients to scale matrix. + + * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for + matrix normalization if `matrix->yy' is zero. + +2016-05-16 Werner Lemberg <wl@gnu.org> + + [base] Reject invalid sfnt Mac resource (#47891). + + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity + of `CID ' and `TYPE1' table offset and length. + +2016-05-16 Werner Lemberg <wl@gnu.org> + + [cid] Fix scanning for `StartData' and `/sfnts' (#47892). + + * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN): + New macros. + (cid_parser_new): Fix and document algorithm. + +2016-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + [truetype] Improve the recursive reference detector. + + The previous fix for #46372 misunderstood a composite glyph referring + same component twice as a recursive reference. See the discussion + + http://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html + + Thanks to Khaled Hosny for finding this issue. + + * src/truetype/ttgload.c (ft_list_get_node_at): A function to get + the i-th node from FT_List. + (load_truetype_glyph): In the traversal scan of the reference tree + in the composite glyph, we clear the nodes filled by previous + sibling chain. + +2016-05-07 Werner Lemberg <wl@gnu.org> + + [cache] Allow value 0 for face ID. + + We never dereference `face_id', and some implementations might use a + running number instead of a pointer. Additionally, disallowing + value zero was undocumented. + + * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c + (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for + `face_id'. + +2016-05-05 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] More efficient accounting of conic splits and draws. + + A single decrement counter of segments to draw, instead of an array, + contains all the information necessary to decide when to split and + when to draw a conic segment. The number of splits before each draw is + equal to the number of trailing zeros in the counter. + + * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'. + (gray_render_conic): Updated to use decrement counter of segments. + +2016-05-05 Werner Lemberg <wl@gnu.org> + + [cff, truetype] Fix logic for `FT_Property_Set'. + + Otherwise some properties could be set to arbitrary values, which is + harmless, but querying could give wrong positive results. + + * src/cff/cffdrivr.c (cff_property_set) [hinting-engine], + * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]: + Only allow defined values. + +2016-04-25 Werner Lemberg <wl@gnu.org> + + [autofit] Add blue-zone support for Gujarati script. + + This essentially moves the Gujarati script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Gujarati. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Gujarati standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Gujarati data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Gujarati data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2016-04-24 Werner Lemberg <wl@gnu.org> + + Minor. + + * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro + argument with parentheses. + +2016-04-24 Werner Lemberg <wl@gnu.org> + + [truetype] Fix deallocation in case of error (#47726). + + * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in + `outline' that are going to be deallocated in case of error. + +2016-04-23 Werner Lemberg <wl@gnu.org> + + [autofit] Improve Georgian blue zone characters. + + Suggested by Akaki Razmadze <razmadzekoko@gmail.com>. + + * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM): + Updated. + + * src/autofit/afblue.c: Regenerated. + +2016-04-16 David Capello <davidcapello@gmail.com> + + [cmake] Honor SKIP_INSTALL_* settings (as used in zlib). + + As FreeType depends on zlib, if we don't install zlib (e.g., because + we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too + (cmake triggers an error saying that FreeType cannot be installed + because zlib target isn't in the export set). + + * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS', + `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings. + +2016-04-16 Behdad Esfahbod <behdad@behdad.org> + + [truetype] Another fix for non-intermediate GX tuples. + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing + cases. + +2016-04-12 Alexei Podtelezhnikov <apodtele@gmail.com> + + Remove forgotten macro. + + * include/freetype/internal/internal.h + [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove. + +2016-04-09 Werner Lemberg <wl@gnu.org> + + [autofit] Add support for Georgian scripts. + + Georgian is problematic, since `uppercase' forms of Mkhedruli + (called Mtavruli) are not yet defined in Unicode, which means that + proper blue zones can't be defined. However, there is already a + proposal submitted to Unicode; see + + http://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf + + Additionally, due to historical reasons, Unicode treats Khutsuri as + the same script as Mkhedruli, and so does OpenType. However, since + the two scripts have completely different shapes it can happen that + blue zones differ considerably. The tag `geok' used here (derived + from ISO 15924) to differentiate the two scripts is not an OpenType + tag in use. If we now have a font that contains both glyphs for + Mkhedruli and Khutsuri, and it uses OpenType features for both also, + HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence, + blue zones for `geok' are not used for glyphs involved in the + OpenType features. + + An issue not yet resolved is which OpenType feature should be used + to access Mtavruli glyph shapes; right now, FreeType doesn't set up + support for them, but it is easy to add them later on as soon as + more information is available. + + * src/autofit/afblue.dat: Add blue zone data for Georgian. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Georgian standard characters. + + * src/autofit/afranges.c: Add Georgian data. + + * src/autofit/afstyles.h: Add Georgian data. + +2016-04-05 Werner Lemberg <wl@gnu.org> + + [autofit] Provide dummy blue zone for pseudo script `none'. + + Even if the dummy hinter is used as the handler for `none' (which + doesn't use blue zones), it is more consistent than the old value + (which was 0), pointing to Arabic... + + * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE. + +2016-03-30 Werner Lemberg <wl@gnu.org> + + * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567). + +2016-03-30 Werner Lemberg <wl@gnu.org> + + * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate. + +2016-03-30 Werner Lemberg <wl@gnu.org> + + * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567). + +2016-03-29 Werner Lemberg <wl@gnu.org> + + * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift. + +2016-03-29 Werner Lemberg <wl@gnu.org> + + [pfr] Fix binary search (#47514). + + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border + conditions correctly. + +2016-03-29 Werner Lemberg <wl@gnu.org> + + [pfr] Minor. + + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left', + `right', and `middle' with `min', `max', and `mid' as used in other + FreeType binary search code. + (pfr_load_bitmap_metrics): Fix invalid left shift. + +2016-03-29 Werner Lemberg <wl@gnu.org> + + * src/pfr/pfrtypes.h: Replace all enums with macros. + + We need `~FOO' to unset bits, and only with unsigned values (which + `enum' isn't normally) this works cleanly. + +2016-03-26 Werner Lemberg <wl@gnu.org> + + [pfr] Robustify bitmap strike handling (#47514). + + We did a binary search for a charcode without ensuring that the + searched data is ordered. Validating the order is now done lazily, + this is, the first access to a bitmap glyph triggers the order check + in the corresponding bitmap strike. + + * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values + `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'. + + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument + a pointer. Handle new PFR_BITMAP_XXX flags. + (pfr_slot_load_bitmap): Updated. + +2016-03-26 Werner Lemberg <wl@gnu.org> + + [pfr] Fix handling of compound glyphs. + + Extra items are indicated with different bit positions. + + * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace + `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and + `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'. + + * src/pfr/pfrgload.c (pfr_glyph_load_simple, + pfr_glyph_load_compound): Use them. + +2016-03-25 Werner Lemberg <wl@gnu.org> + + [pfr] Minor. + + * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of + bare numbers. + +2016-03-25 Werner Lemberg <wl@gnu.org> + + [pfr] Various clang sanitizer fixes. + + * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle + signed nibbles. + (pfr_slot_load_bitmap): Correctly exit frame in case of error. + Fix invalid left shifts. + +2016-03-23 Werner Lemberg <wl@gnu.org> + + Rename `VERSION.DLL' (#47472). + + * docs/VERSION.DLL: Renamed to... + * docs/VERSIONS.TXT: ...this. + +2016-03-23 Werner Lemberg <wl@gnu.org> + + [raster, smooth] Directly test outline size (#47500). + + This improves stand-alone compilation. + + * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to... + + * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c + (gray_raster_render): ...these functions. + +2016-03-23 Werner Lemberg <wl@gnu.org> + + [raster, smooth] Fix some clang sanitizer runtime issues. + + * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode, + ft_black_render): Harmonize signatures with `ftimage.h'. + + * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset): + Ditto. + +2016-03-22 Werner Lemberg <wl@gnu.org> + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor. + + This fixes an AddressSanitizer issue: + + ttgload.c:430:7: runtime error: null pointer passed as argument 1, + which is declared to never be null + +2016-03-21 Werner Lemberg <wl@gnu.org> + + * src/autofit/afhints.c (af_glyph_hints_reload): Thinko. + + This fixes the previous commit to this file. + +2016-03-21 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Partly revert recent changes. + + * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework + conditions to fix rendering issues. + +2016-03-20 Werner Lemberg <wl@gnu.org> + + [autofit] Show `near' points in tracing. + + * src/autofit/afhints.h (AF_FLAG_NEAR): New macro. + + * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it. + (af_glyph_hints_reload): Handle AF_FLAG_NEAR. + +2016-03-18 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Minor refactoring and microoptimizations. + + * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move + band clipping from here. + (gray_conic_to, gray_cubic_to): ... to here. + (gray_rander_line, gray_render_scanline): Initialize variables closer + to their use. + +2016-03-17 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Minor refactoring. + + * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move + upscaling from here. + (gray_conic_to, gray_cubic_to): ... to here. + +2016-03-15 Werner Lemberg <wl@gnu.org> + + * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize. + +2016-03-14 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Temporarily revert 6eb6158dd787 (#47114). + + * src/smooth/ftgrays.c (gray_render_line): Old implementation. + +2016-03-12 Werner Lemberg <wl@gnu.org> + + [ftfuzzer] Improve coverage of rasterfuzzer. + + * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use + input data for `tags' array also. + Trim input data to get more positive hits. + +2016-03-11 Pavlo Denysov <paul.kiev+savannah@gmail.com> + + Fix CMake issues for iOS (patch #8941). + + * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory. + * builds/cmake/iOS.cmake: No longer enforce gcc. + +2016-03-09 Behdad Esfahbod <behdad@behdad.org> + + [truetype] Fix handling of non-intermediate GX tuples. + + We probably did not notice this as all fonts we tested had only + tuple_coords[i] be +1 or -1 for non-intermediate tuples. + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it. + +2016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com> + + [base] Refuse to render enormous outlines (#47114). + + The goal is to avoid integer overflows in the rendering algorithms. + The limit is chosen arbitrarily at some 2^18 pixels, which should be + enough for modern devices including printers. + + * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject + enormous outlines. + +2016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Replace left shifts with multiplications (#47114). + + * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it. + +2016-03-05 Werner Lemberg <wl@gnu.org> + + [autofit] Avoid excessive stem length rounding (#25392). + + * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument + to pass difference between hinted and unhinted position of base + point; use this to adjust the stem width depending on the PPEM so + that it doesn't become too large under certain circumstances. + Update all callers using value 0 for this argument except... + (af_latin_align_linked_edge): Pass position delta of base point to + `af_latin_compute_stem_width'. + +2016-03-05 J Raynor <jxraynor@gmail.com> + + Make FreeType compile on AIX out of the box. + + * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on + AIX. + +2016-03-01 Werner Lemberg <wl@gnu.org> + Kostya Serebryany <kcc@google.com> + + [ftfuzzer] Add unit for testing smooth and black rasterizers. + + * src/tools/ftfuzzer/rasterfuzzer.cc: New file. + +2016-03-01 Werner Lemberg <wl@gnu.org> + + [autofit] Fix reallocation error introduced in 2016-02-27 (#47310). + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign + `prev_segment' after reallocation. + +2016-03-01 Werner Lemberg <wl@gnu.org> + + Fix clang warnings. + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use + FT_UShort for `min_flags' and `max_flags'. + Initialize `prev_*' variables. + + * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix + types of local variables. + + * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]: + Update `printf' format string. + + * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast. + (LLVMFuzzerTestOneInput): Fix loop type. + +2016-02-29 Werner Lemberg <wl@gnu.org> + + [autofit] Add blue-zone support for Sinhala script. + + This essentially moves the Sinhala script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Sinhala. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Sinhala standard character and move data + out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Sinhala data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Sinhala data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2016-02-27 Werner Lemberg <wl@gnu.org> + + [autofit] Properly handle spikes pointing to the x-axis. + + An example that gets better rendered is glyph `uusignTaml' (glyph + index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem. + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly + handle segments where the last point of the first segment is + identical to the first point in the second one. This can happen for + malformed fonts or spikes. We either merge the new segment with the + previous one (both segments point into the same direction), or we + discard the shorter segment if they point into different directions. + +2016-02-27 Werner Lemberg <wl@gnu.org> + + [autofit] Minor code clean-up. + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Change + some local variable names to better differentiate between values + along a segment and values orthogonal to it. + +2016-02-26 Werner Lemberg <wl@gnu.org> + + [autofit] Improve BOUND action. + + In complex glyph shapes, the original logic was too simple to cater + for situations that would actually need something similar to PS Hint + masks. This fix should alleviate the worst cases. + + * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow + complete disappearance of stems. + +2016-02-25 Werner Lemberg <wl@gnu.org> + + [autofit] Add blue-zone support for Tamil script. + + This essentially moves the Tamil script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Tamil. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Tamil standard character and move data + out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Tamil data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Tamil data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2016-02-18 Werner Lemberg <wl@gnu.org> + + [autofit] Add blue-zone support for Malayalam script. + + This essentially moves the Malayalam script from the `Indic' hinter + to the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Malayalam. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Malayalam standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Malayalam data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Malayalam data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2016-02-16 Alexei Podtelezhnikov <apodtele@gmail.com> + + [smooth] Fix integer overflow (#47114). + + * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'. + +2016-02-15 Werner Lemberg <wl@gnu.org> + + * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing. + +2016-02-15 Werner Lemberg <wl@gnu.org> + + [cff] Handle T2 operator only with old CFF engine (#47157). + + * src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with + #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif. + +2016-02-15 Werner Lemberg <wl@gnu.org> + + [cff] Partially handle `load' and `store' ops in old CFF engine. + + Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be + displayed. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store, + cff_op_load>: Partially implement it. + + * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass + the number of Multiple Master axes. + Update all callers. + (cff_parse_multiple_master): Get number of axes. + (cff_parser_run) <opcode 31>: Updated. + * src/cff/cffparse.h: Updated. + (CFF_ParserRec): Add `num_axes' field. + + * src/cff/cffload.c: Updated. + + * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field. + +2016-02-15 Werner Lemberg <wl@gnu.org> + + [cff] Correctly trace SIDs that contain NULL bytes. + + We need this to properly trace Multiple Master CFFs, which contain + two SIDs that are charstrings. + + This commit makes FreeType also show the last SID, omitted + previously due to a bug. + + * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field. + + * src/cff/cffload.c (cff_index_get_pointers): Add argument to return + the pool size. + Update all callers. + + * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly + access `cff->strings' to display the non-default strings. + +2016-02-14 Werner Lemberg <wl@gnu.org> + + * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H. + +2016-02-14 Werner Lemberg <wl@gnu.org> + + * src/cff/cffparse.c: Include `cffgload.h'. + + Problem reported by Colin Walters <walters@verbum.org>. + +2016-02-14 Werner Lemberg <wl@gnu.org> + + [cff] Make old CFF engine show MM CFFs (without variations). + + The new code only displays the first master in the font. + + * src/cff/cffgload.c (cff_decode_parse_charstrings): Add new + parameter to allow function calls from dictionaries also. + <cff_op_blend>: Partially implement it. + Update all callers. + * src/cff/cffgload.h: Updated. + + * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the + number of Multiple Master designs. + Update all callers. + (cff_parse_multiple_master): New function to rudimentarily parse + operator. + (cff_parser_run): Handle `T2' operator. + * src/cff/cffparse.h: Updated. + (CFF_ParserRec): Add `num_designs' field. + + * src/cff/cffload.c: Updated. + + * src/cff/cfftoken.h: Handle `MultipleMaster' operator. + + * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field. + + * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for + MM CFFs. + +2016-02-09 Werner Lemberg <wl@gnu.org> + + [docmaker] Don't emit trailing newlines. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code): + Use `rstrip'. + 2016-02-07 Werner Lemberg <wl@gnu.org> * Version 2.6.3 released. @@ -29,7 +1152,7 @@ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. * builds/unix/configure.raw (version_info): Set to 18:3:12. - * CMakeLists.txt (VERSION_PATCH): Set to 2. + * CMakeLists.txt (VERSION_PATCH): Set to 3. * docs/CHANGES: Updated. @@ -372,7 +1495,7 @@ * src/autofit/afscript.h: Add another parameter to `SCRIPT', specifying hinting direction. - * src/autofit/afglobal.c, scr/autofit/afglobal.h, + * src/autofit/afglobal.c, src/autofit/afglobal.h, src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c, src/autofit/aftypes.h: Extend `SCRIPT' definitions. @@ -561,7 +1684,7 @@ [bdf] Remove dead code (#46625). The BDF specification only allows decimal numbers, no octal or - hexidecimal decoding is needed. + hexadecimal decoding is needed. * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos): Remove unused code and parameters. @@ -575,12 +1698,12 @@ * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set `error'. -2015-12-14 Ben Wagner <bungeman@gmail.com> +2015-12-14 Ben Wagner <bungeman@gmail.com> [base] Check error when seeking to data supplied offset (#46635). * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): - `ft_lookup_PS_in_sfnt_stream' returns offset and and length from + `ft_lookup_PS_in_sfnt_stream' returns offset and length from user supplied data. Use of this these values must be checked. 2015-12-13 Werner Lemberg <wl@gnu.org> @@ -734,7 +1857,7 @@ * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/. (af_face_globals_compute_style_coverage): Updated. - * src/autofit/afglocal.h: s/hbshim.h/afshaper.h/. + * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/. * src/autofit/autofit.c: s/hbshim.c/afshaper.c/. @@ -902,7 +2025,7 @@ 2015-11-27 Tamas Kenez <tamas.kenez@adasworks.com> - [cmake] Make `FindHarfbuzz' observe the REQUIRED option. + [cmake] Make `FindHarfBuzz' observe the REQUIRED option. * builds/cmake/FindHarfBuzz.cmake: Implement it. @@ -1700,7 +2823,7 @@ 2015-10-04 Werner Lemberg <wl@gnu.org> - [bzip2, gzip] Avoid access of unitialized memory (#46109). + [bzip2, gzip] Avoid access of uninitialized memory (#46109). * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c (ft_gzip_file_fill_input): In case of an error, adjust the limit to @@ -1708,7 +2831,7 @@ 2015-10-03 Werner Lemberg <wl@gnu.org> - [bzip2, gzip] Avoid access of unitialized memory (#46109). + [bzip2, gzip] Avoid access of uninitialized memory (#46109). * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c (ft_gzip_file_fill_output): In case of an error, adjust the limit to @@ -2117,7 +3240,7 @@ [raster,smooth] Microoptimizations. * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table, - Beziier_Up, ): Use do-while loops. + Bezier_Up, ): Use do-while loops. * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line, gray_convert_glyph): Ditto. @@ -2248,7 +3371,7 @@ [base] Improve emboldener (#45596). * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement - of zero-lenght segments. + of zero-length segments. 2015-08-16 Alexei Podtelezhnikov <apodtele@gmail.com> @@ -2323,7 +3446,7 @@ * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only if font matrix is not trivial. * src/cff/cffgload.c (cff_slot_load): Ditto. - * sff/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the + * src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the entire outline. 2015-08-11 Werner Lemberg <wl@gnu.org> @@ -2536,7 +3659,7 @@ * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include FT_CONFIG_STANDARD_LIBRARY_H earlier. - * src/truetype/ttpic.h: Include FT_INTERNL_PIC_H. + * src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H. 2015-07-07 Werner Lemberg <wl@gnu.org> @@ -2560,20 +3683,20 @@ (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas), src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues. -2015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> [truetype] Speed up bytecode interpreter. * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'. -2015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> [base] Speed up emboldening. * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use `FT_Vector_NormLen'. -2015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> [base] Implement fast vector normalization. @@ -2681,11 +3804,11 @@ * docs/*: Updated. -2015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com> * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp. -2015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com> * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing. @@ -2987,7 +4110,7 @@ incremental interface callback to apply the encoding to raw character index (as it was in the previous code). -2015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com> [autofit] Speed up IUP. @@ -3008,7 +4131,7 @@ * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we have an SFNT. -2015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com> [truetype] Speed up IUP. @@ -3068,7 +4191,7 @@ * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro. - * src/autofi/aflatin.c (af_latin_hints_apply) + * src/autofit/aflatin.c (af_latin_hints_apply) [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use of warper. @@ -3090,15 +4213,15 @@ * src/cff/cffgload.c (cff_slot_load): Use advance width and side bearing values from `hmtx' table if present. -2015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com> * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop. -2015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com> * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic. -2015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com> [autofit] Finish the thought. @@ -3174,7 +4297,7 @@ * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto. -2015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com> [base] Optimize `FT_Angle_Diff'. @@ -3193,11 +4316,11 @@ single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger than the default. -2015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com> * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring. -2015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com> Fix Savannah bug #44412 (part 2). @@ -3284,7 +4407,7 @@ include/config/ftheader.h, include/ftfntfmt.h, modules.cfg, src/base/ftfntfmt.c, vms_make.com: Updated. -2015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com> Fix Savannah bug #44412 (part 1). @@ -3305,7 +4428,7 @@ Found by Alexei. -2015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com> +2015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com> * src/base/ftstroke.c: Simplify. @@ -3699,7 +4822,7 @@ * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto. * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto. * src/type1/t1load.c (parse_blend_axis_types, parse_encoding, - parse_chharstrings, parse_dict): Ditto. + parse_charstrings, parse_dict): Ditto. * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings, t42_parse_dict): Ditto. @@ -3772,7 +4895,7 @@ * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'. * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c: - Signedess fixes. + Signedness fixes. 2015-02-16 Werner Lemberg <wl@gnu.org> @@ -4290,7 +5413,7 @@ 2015-01-11 Werner Lemberg <wl@gnu.org> - [truetype] Prettyfing. + [truetype] Prettifying. * src/truetype/ttinterp.c (project, dualproj, fast_project, fast_dualproj): Rename to... @@ -4322,7 +5445,7 @@ [truetype] More macro expansions. * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion, - adjusting funtion calls where necessary. + adjusting function calls where necessary. (FT_UNUSED_ARG): Removed, no longer needed. 2015-01-10 Werner Lemberg <wl@gnu.org> diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog.20 b/Build/source/libs/freetype2/freetype-src/ChangeLog.20 index 360bb486295..07775fffe9f 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog.20 +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog.20 @@ -330,7 +330,7 @@ 2001-12-22 Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr> - * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' + * src/pcf/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' and fix incorrect computation of `available_sizes'. 2001-12-22 David Turner <david@freetype.org> @@ -412,7 +412,7 @@ * src/cff/cffgload.h: Updated. * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, - CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New + CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GlyphSlot_Init): New functions. (CFF_Init_Face): Renamed to ... (CFF_Face_Init): This. @@ -1056,7 +1056,7 @@ 2001-08-30 Anthony Feik <afeick@hotmail.com> - * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag + * src/type1/t1afm.c (T1_Read_AFM): Now correctly sets the flag FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. 2001-08-25 Werner Lemberg <wl@gnu.org> @@ -1176,7 +1176,7 @@ * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for `cursor' and `capacity'. - * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second + * src/psaux/psobjs.c (reallocate_t1_table): Use FT_Long for second parameter. (PS_Table_Add): Use FT_Offset for `new_size'. @@ -1710,7 +1710,7 @@ `FT_Err_*' with `CFF_Err_*'. * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. - * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with + * src/sfnt/sfobjs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with `TT_Err_*'. * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, @@ -1730,7 +1730,7 @@ * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use FT_LOCAL_DEF. * src/cid/cidobjs.c (CID_Done_Driver): Ditto. - * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): + * src/truetype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): Ditto. * src/type1/t1objs.c (T1_Done_Driver): Ditto. * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. @@ -1759,7 +1759,7 @@ 2001-03-20 Werner Lemberg <wl@gnu.org> - * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. + * builds/win32/detect.mk: Fix .PHONY target for Intel compiler. 2001-03-20 David Turner <david.turner@freetype.org> @@ -2338,7 +2338,7 @@ 2000-12-06 Werner Lemberg <wl@gnu.org> * builds/module.mk: Replaced `xxx #' with `xxx$(space). - * builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to + * builds/os2/detect.mk, builds/win32/detect.mk: Moved comment to avoid trailing spaces in variable. * builds/freetype.mk: Use $(D) instead of $D to make statement more readable. @@ -2412,7 +2412,7 @@ * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', `setup'. -2000-11-30 David Turner <david.turner@freetype.ogr> +2000-11-30 David Turner <david.turner@freetype.org> * INSTALL: Slightly updated the quick starter documentation to include IDE compilation, prevent against BSD Make, and specify `make diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog.21 b/Build/source/libs/freetype2/freetype-src/ChangeLog.21 index a61682df2ca..855c86dde62 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog.21 +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog.21 @@ -327,7 +327,7 @@ Blaskey <listtarget@danbala.com>). * src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'. - * src/sfnt/ttcmac.c: Use SFNT_Err_Ok where appropriate. + * src/sfnt/ttcmap.c: Use SFNT_Err_Ok where appropriate. (tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate, tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use @@ -571,7 +571,7 @@ doing anything else. This avoids unnecessary heap allocations (400KByte of heap memory for the LZW decoder). - * src/gzip/ftgzip.c (FT_Stream_OpenGZip): Ditto for the gzip + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Ditto for the gzip decoder, although the code savings are smaller. * docs/CHANGES: Updated. @@ -756,7 +756,7 @@ (AF_AxisHintsRec): Add `max_segments' and `max_edges'. (af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes. - * src/autofit/aflatin.c (af_latin_metricsc_scale): Don't call + * src/autofit/aflatin.c (af_latin_metrics_scale): Don't call AF_SCALER_EQUAL_SCALES. (af_latin_hints_compute_segments): Change return type to FT_Error. Update all callers. @@ -1014,7 +1014,7 @@ t42_parse_charstrings, t42_parse_dict): Check parser error value after call to T1_Skip_PS_Token (where necessary). - * src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token, + * src/psaux/psobjs.c (skip_string, ps_parser_skip_PS_token, ps_tobytes): Add error messages. 2005-02-12 Werner Lemberg <wl@gnu.org> @@ -1112,7 +1112,7 @@ but return them as-is. * docs/CHANGES: Mention new bitmap API. - * include/freetype/ftchapter.s: Updated. + * include/freetype/ftchapters.h: Updated. 2004-12-11 Robert Clark <freetype@ratty.org.uk> @@ -1159,7 +1159,7 @@ (ah_test_extremum, ah_get_orientation): Removed. (ah_outline_load): Use FT_Outline_Get_Orientation. - * src/base/ftsynth.c (ft_test_extrama, ft_get_orientation): Removed. + * src/base/ftsynth.c (ft_test_extrema, ft_get_orientation): Removed. (FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation. 2004-11-23 Fernando Papa <fpapa@netgate.com.uy> @@ -1829,7 +1829,7 @@ 2004-08-05 David Turner <david@freetype.org> - `Activate' gray-scale specifing hinting within the TrueType + `Activate' gray-scale specifying hinting within the TrueType bytecode interpreter. This is an experimental feature which should probably be made optional. @@ -1839,7 +1839,7 @@ (TT_Load_Glyph): Here. Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'. - * src/truetyep/ttinterp.c (Ins_GETINFO): Return MS rasterizer + * src/truetype/ttinterp.c (Ins_GETINFO): Return MS rasterizer version 1.7. Return rotation and stretching info only if glyph is rotated or stretched, respectively. @@ -2048,7 +2048,7 @@ pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve debugging messages. - * src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up. + * src/pcf/pcfdrivr.c (FT_COMPONENT): Move up. (PCF_Face_Init): Simplify code. * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. @@ -2116,7 +2116,7 @@ * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change return type to FT_Bool. - * src/cache/ftbasic.c (ftc_basic_family_compare): Change return + * src/cache/ftcbasic.c (ftc_basic_family_compare): Change return type to FT_Bool. * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make @@ -2153,7 +2153,7 @@ * docs/CHANGES: Updated. -2004-06-04 David Chester <davidchester@gmx.net> +2004-06-04 David Chester <davidchester@qmx.net> Improve inter-letter spacing for autohinted glyphs. @@ -2289,7 +2289,7 @@ * src/cff/cffgload.h (CFF_Builder): Remove `error'. * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace - `Memory_Error' with `Fail' und update all users. + `Memory_Error' with `Fail' and update all users. 2004-05-11 Werner Lemberg <wl@gnu.org> @@ -2899,7 +2899,7 @@ Improve MacOS fond support. Provide a new API `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. - * src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h. + * src/base/ftmac.c [__MWERKS__]: Include FSp_fopen.h. STREAM_FILE [__MWERKS__]: New macro. (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. (file_spec_from_path) [__MWERKS__]: Updated #if statement. @@ -3331,7 +3331,7 @@ * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap Info service function if the cmap comes from sfnt. Return 0 if the - cmap is sythesized in cff module. + cmap is synthesized in cff module. 2004-01-20 David Turner <david@freetype.org> @@ -3460,7 +3460,7 @@ 2003-12-25 Werner Lemberg <wl@gnu.org> - * src/base/fttrigon.c, src/base/ftgloadr.c: Inlude + * src/base/fttrigon.c, src/base/ftgloadr.c: Include FT_INTERNAL_OBJECTS_H. * src/base/ftstroke.c (FT_Outline_GetInsideBorder, @@ -3539,7 +3539,7 @@ src/cache/ftcsbits.c, src/cache/ftccmap.c, src/cache/ftcbasic.c (added), - src/cache/ftclru.c (removed): + src/cache/ftlru.c (removed): *Complete* rewrite of the cache sub-system to `solve' the following points: @@ -4010,7 +4010,7 @@ * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. - * src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. (cid_ps_get_font_info): New function. (cid_service_ps_info): New service. (cid_services): Updated. @@ -4119,7 +4119,7 @@ (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, _num_bdf_properties), src/gzip/infutil.c (inflate_mask), src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), - src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c + src/gzip/inftrees.h (inflate_trees_fixed), src/gzip/inftrees.c (inflate_trees_fixed): Decorate with more `const' to avoid writable global variables which are disallowed on ARM. @@ -4659,7 +4659,7 @@ * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. - (t42_service_glyph_dict, t42_service_ps_name): New strucures + (t42_service_glyph_dict, t42_service_ps_name): New structures providing Type 42 services. (t42_services): New services list. (T42_Get_Interface): Use `ft_service_list_lookup'. @@ -4683,7 +4683,7 @@ (gindex,gindex). * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. - * src/pfr/prfload.c: Remove dead code. + * src/pfr/pfrload.c: Remove dead code. (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): New functions. (pfr_phy_font_done): Free `kern_pairs'. @@ -5116,7 +5116,7 @@ ft_glyph_bbox_subpixels, ft_glyph_bbox_gridfit, ft_glyph_bbox_truncate, ft_glyph_bbox_pixels): Replaced with FT_GLYPH_BBOX_UNSCALED, FT_GLYPH_BBOX_SUBPIXELS, - FT_GLYPH_BBIX_GRIDFIT, FT_GLYPH_BBOX_TRUNCATE, FT_GLYPH_BBOX_PIXELS. + FT_GLYPH_BBOX_GRIDFIT, FT_GLYPH_BBOX_TRUNCATE, FT_GLYPH_BBOX_PIXELS. The lowercase variants are now (deprecated aliases) to the uppercase versions. Updated all other files. @@ -5346,7 +5346,7 @@ * src/cff/cffload (cff_subfont_load): Fix default values of expansion_factor and blue_scale. - * src/cif/cidtoken.h, src/type1/t1tokens.h: Use T1_FIELD_FIXED_1000 + * src/cid/cidtoken.h, src/type1/t1tokens.h: Use T1_FIELD_FIXED_1000 for blue_scale. * src/pshinter/pshglob.c (psh_globals_new): Fix default value of @@ -5569,7 +5569,7 @@ * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdriver.c (PCF_Face_Init): Test for charset registry case-insensitively. - * src/gzip/ftgzip.c (ft_gzip_fil_io): Revert change from yesterday; + * src/gzip/ftgzip.c (ft_gzip_file_io): Revert change from yesterday; it has already been fixed differently. * src/truetype/ttinterp.c (DO_SFVTL): Add missing braces around @@ -5706,7 +5706,7 @@ (ah_outline_compute_edges): Scale `edge_distance_threshold' down after rounding instead of scaling comparison value in loop. - * src/autohint/ahhint.c (ah_hinter_align_stong_points): Provide + * src/autohint/ahhint.c (ah_hinter_align_strong_points): Provide alternative code which runs faster. Handle `before->scale == 0'. @@ -5960,7 +5960,7 @@ 2003-03-27 David Turner <david@freetype.org> - * README: Udpated. + * README: Updated. * README.UNX: Removed (now replaced by docs/INSTALL.UNX). @@ -6275,7 +6275,7 @@ (bdf_driver_class): Use `bdf_driver_requester'. * src/pcf/pcfdrivr.c: Include FT_BDF_H. - (pcf_get_bdf_property, pdc_driver_requester): New functions + (pcf_get_bdf_property, pcf_driver_requester): New functions (pcf_driver_class): Use `pcf_driver_requester'. * src/pcf/pcfread.c: Include `pcfread.h'. @@ -6547,7 +6547,7 @@ 2002-11-07 David Turner <david@freetype.org> - * src/cache/ftcsbit.c (ftc_sbit_node_load): Fixed a small bug that + * src/cache/ftcsbits.c (ftc_sbit_node_load): Fixed a small bug that caused problems with embedded bitmaps. * src/otlayout/otlayout.h, src/otlyaout/otlconf.h, @@ -6608,7 +6608,7 @@ 2002-11-01 David Turner <david@freetype.org> - Added PFR-specific public API. Fixed the kerning retrievel routine + Added PFR-specific public API. Fixed the kerning retrieval routine (it returned invalid values when the outline and metrics resolution differ). @@ -6695,7 +6695,7 @@ * src/pfr/pfrgload.c: Include `pfrsbit.h'. * src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): Rewritten. (pfr_phy_font_done, pfr_phy_font_load): Updated. - * src/pfr/pfrobks.c: Include `pfrsbit.h'. + * src/pfr/pfrobjs.c: Include `pfrsbit.h'. (pfr_face_init): Handle kerning and embedded bitmaps. (pfr_slot_load): Load embedded bitmaps. (PFR_KERN_INDEX): Removed. @@ -6973,7 +6973,7 @@ * src/pshinter/pshalgo2.c (psh2_glyph_find_strong_points), src/pshinter/pshalgo3.c (psh3_glyph_find_strong_points): Adding fix - to prevent seg fault when hints are provided in an empty glyph. + to prevent segfault when hints are provided in an empty glyph. * src/cache/ftccache.i (GEN_CACHE_LOOKUP) [FT_DEBUG_LEVEL_ERROR]: Removed conditional code. This fixes a bug that prevented @@ -7032,7 +7032,7 @@ (FTC_Image_Cache_Lookup): This function. (ftc_image_family_init): Updated. - * src/cache/ftcsbit.c (FTC_SBitQueryRec, FTC_SBitFamilyRec): + * src/cache/ftcsbits.c (FTC_SBitQueryRec, FTC_SBitFamilyRec): Updated. (ftc_sbit_node_load): Updated. Moved code to convert type flags to load flags to... @@ -7155,7 +7155,7 @@ to ... (FT_Glyph_{Init,Done,Transform,GetBBox,Copy,Prepare}Func): This. (FTRenderer_{render,transform,getCBox,setMode}): Renamed to ... - (FT_Renderer_{RenderFunc,TransformFunc,GetCBoxFunc,SeteModeFunc}): + (FT_Renderer_{RenderFunc,TransformFunc,GetCBoxFunc,SetModeFunc}): This. Updated all affected code. @@ -7556,7 +7556,7 @@ Get glyph offset. * src/truetype/ttobjs.c (TT_Face_Init) - [FT_CONFIG_OPTION_INCOREMENTAL]: Added the incremental loading + [FT_CONFIG_OPTION_INCREMENTAL]: Added the incremental loading system for the TrueType driver. * src/cid/cidgload.c (cid_load_glyph) @@ -7897,7 +7897,7 @@ 2002-06-21 Sven Neumann <sven@convergence.de> - * src/prf/pfrtypes.h (PFR_KernPair): New structure. + * src/pfr/pfrtypes.h (PFR_KernPair): New structure. (PFR_PhyFont): Use it. (PFR_KernFlags): New enumeration. * src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): New @@ -8245,7 +8245,7 @@ `fttype1.c' in src/base. * src/pshinter/pshglob.c (psh_blues_scale_zones): Fixed a bug that - prevented family blue zones substitution from hapenning correctly. + prevented family blue zones substitution from happening correctly. * include/freetype/ftbdf.h FT_Get_BDF_Charset_ID): Adding documentation comment. @@ -8622,7 +8622,7 @@ 2002-04-19 Werner Lemberg <wl@gnu.org> - * src/pfr/pfrload.c (pfr_extra_items_farse): Fix debug message. + * src/pfr/pfrload.c (pfr_extra_items_parse): Fix debug message. (pfr_phy_font_load): s/size/Size/ for local variable to avoid compiler warning. * src/pfr/pfrobjs.c (pfr_face_init): Fix debug message. @@ -8676,7 +8676,7 @@ 2002-04-16 Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr> - * src/pcf/pcfread (pcf_get_accell): Fix parsing of accelerator + * src/pcf/pcfread.c (pcf_get_accel): Fix parsing of accelerator tables. 2002-04-15 David Turner <david@freetype.org> @@ -8716,7 +8716,7 @@ src/cache/ftcimage.c, src/cache/ftcsbits.c, - src/cff/cffdriver.c, src/cff/cffload.c, src/cff/cffobjs.c, + src/cff/cffdrivr.c, src/cff/cffload.c, src/cff/cffobjs.c, src/cid/cidload.c, src/cid/cidparse.c, src/cid/cidriver.c, @@ -9068,7 +9068,7 @@ * include/freetype/internal/psaux.h, src/cid/cidload.c, src/cidtoken.h, src/psaux/psobjs.c, src/psaux/psobjs.h, - src/psaux/t1decode.c, stc/type1/t1load.c, src/type1/t1tokens.h: + src/psaux/t1decode.c, src/type1/t1load.c, src/type1/t1tokens.h: Updated common PostScript type definitions. Renamed all enumeration values like to uppercase variants: @@ -9076,7 +9076,7 @@ t1_field_cid_info => T1_FIELD_LOCATION_CID_INFO etc. - * include/freetype/internal/psglobals.h: Removed. + * include/freetype/internal/psglobal.h: Removed. * include/freetype/internal/pshints.h, src/pshinter/pshglob.h: Updated. diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog.22 b/Build/source/libs/freetype2/freetype-src/ChangeLog.22 index 79f9478f74b..ce08dc98dca 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog.22 +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog.22 @@ -260,7 +260,7 @@ 2006-04-26 Werner Lemberg <wl@gnu.org> * src/psaux/psobjs.c (shift_elements): Don't use FT_Long but - FT_PtrDiff for `delta'. Reported by Céline PILLET + FT_PtrDist for `delta'. Reported by Céline PILLET <Celine.Pillet@Tagginfo.com>. 2006-04-21 David Turner <david@freetype.org> @@ -352,7 +352,7 @@ * src/tools/docmaker/sources.py (re_bold, re_italic): Accept "'" also. -2006-03-23 David Turner <david@freetype.org> +2006-03-23 David Turner <david@freetype.org> Add FT_Get_SubGlyph_Info API to retrieve subglyph data. Note that we do not expose the FT_SubGlyphRec structure. @@ -360,7 +360,7 @@ * include/freetype/internal/ftgloadr.h (FT_SUBGLYPH_FLAGS_*): Moved to... * include/freetype/freetype.h (FT_SUBGLYPH_FLAGS_*): Here. - (FT_Get_SybGlyph_Info): New declaration. + (FT_Get_SubGlyph_Info): New declaration. * src/base/ftobjs.c (FT_Get_SubGlyph_Info): New function. @@ -387,10 +387,10 @@ (FTC_INode_Weight): Commented out. * src/cache/ftcimage.h: Updated. - * src/cache/ftmanag.c (FTC_Manager_Compress, + * src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_RegisterCache, FTC_Manager_FlushN): s/FT_EXPORT/FT_LOCAL/. - * src/cache/ftmanag.h: Updated. + * src/cache/ftcmanag.h: Updated. * src/cache/ftcsbits.c (FTC_SNode_Free, FTC_SNode_New, FTC_SNode_Compare): s/FT_EXPORT/FT_LOCAL/. @@ -934,7 +934,7 @@ * include/freetype/freetype.h (FT_GlyphSlotRec): Improve documentation of `outline' field. - * src/sfnt/sfobjc.s: Inckude FT_INTERNAL_DEBUG_H. + * src/sfnt/sfobjs.c: Include FT_INTERNAL_DEBUG_H. * src/sfnt/sfdriver.c: Include ttmtx.h. * src/autofit/afcjk.c: Include aftypes.h and aflatin.h. @@ -1630,8 +1630,8 @@ * include/freetype/internal/t1types.h (T1_FaceRec): Updated. - * src/psaux/t1cmap.h (T1_CmapStdRec): Updated. - (T1_CmapUnicode, T1_CmapUnicodeRec): Removed. + * src/psaux/t1cmap.h (T1_CMapStdRec): Updated. + (T1_CMapUnicode, T1_CMapUnicodeRec): Removed. * src/psaux/t1cmap.c (t1_get_glyph_name): New callback function. (t1_cmap_unicode_init, t1_cmap_unicode_done, @@ -1781,7 +1781,7 @@ Note that this doesn't force auto-hinting for all fonts, however. * src/autofit/afhints.c (af_glyph_hints_reload): Don't set - scaler_fiags here but... + scaler_flags here but... (af_glyph_hints_rescale): Here. * src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal @@ -1813,7 +1813,7 @@ [TT_CONFIG_OPTION_BDF]: New structure. (TT_FaceRec) [TT_CONFIG_OPTION_BDF]: New member `bdf'. - * include/freetype/ttags.h (TTAG_BDF): New macro. + * include/freetype/tttags.h (TTAG_BDF): New macro. * src/sfnt/Jamfile (_sources): Add ttbdf. @@ -1835,7 +1835,7 @@ 2005-12-07 Werner Lemberg <wl@gnu.org> - * src/sfnt/sfobjc.c (sfnt_init_face): Move tag check to... + * src/sfnt/sfobjs.c (sfnt_init_face): Move tag check to... * src/sfnt/ttload.c (sfnt_init): Here, before handling TTCs. 2005-12-06 Chia-I Wu <b90201047@ntu.edu.tw> @@ -1962,7 +1962,7 @@ * docs/CHANGES: Mention scaling bug. -2005-11-18 susuzki toshiya <mpsuzuki@hiroshima-u.ac.jp> +2005-11-18 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> * include/freetype/ftgxval.h, src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free): New functions to free @@ -2311,7 +2311,7 @@ CJK font). A SING Glyphlet Font is an OpenType font that contains the outline(s), either in a `glyf' or `CFF' table, for a glyph; `cmap', `BASE', and `GSUB' tables are present with the same format - and functionaliy as a regular OpenType font; there are no `name', + and functionality as a regular OpenType font; there are no `name', `head', `OS/2', and `post' tables; there are two new tables, `SING' which contains details about the glyphlet, and `META' which contains metadata. @@ -2320,7 +2320,7 @@ http://www.adobe.com/products/indesign/sing_gaiji.html - * include/freetype/ttags.h (TTAG_SING, TTAG_META): New macros for + * include/freetype/tttags.h (TTAG_SING, TTAG_META): New macros for the OpenType tables `SING' and `META'. These two tables are used in SING Glyphlet Format fonts. @@ -2371,7 +2371,7 @@ (gxv_kern_subtable_fmt1_valueTable_load, gxv_kern_subtable_fmt1_subtable_setup, gxv_kern_subtable_fmt1_entry_validate): Fix C++ compiler errors. - (gxv_kern_coverage_validate): Use KERN_DIALECT_UNKWOWN. + (gxv_kern_coverage_validate): Use KERN_DIALECT_UNKNOWN. Improve trace message. (gxv_kern_validate_generic): Fix C++ compiler error. Improve trace message. diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog.23 b/Build/source/libs/freetype2/freetype-src/ChangeLog.23 index bc8ea5b4802..b8a914bac35 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog.23 +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog.23 @@ -139,7 +139,7 @@ Fix compilation warning. * src/base/ftbase.h: s/LOCAL_DEF/LOCAL/. - * src/base/ftobjc.s: Include ftbase.h conditionally. + * src/base/ftobjs.c: Include ftbase.h conditionally. 2010-01-11 Kwang Yul Seo <skyul@company100.net> @@ -197,7 +197,7 @@ Fix Savannah bug #28395. * src/truetype/ttdriver.c (Load_Glyph), src/type1/t1gload.c - (T1_Loada_Glyph): Don't check `num_glyphs' if incremental interface + (T1_Load_Glyph): Don't check `num_glyphs' if incremental interface is used. 2010-01-05 Ken Sharp <ken.sharp@artifex.com> @@ -655,7 +655,7 @@ [Win64] Improve the computation of random seed from stack address. On LLP64 platform, the conversion from pointer to FT_Fixed need - to drop higher 32-bit. Explict casts are required. Reported by + to drop higher 32-bit. Explicit casts are required. Reported by NightStrike from MinGW-w64 project. See http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html @@ -891,7 +891,7 @@ pcf: Fix a comparison between FT_Long and FT_ULong. * src/pcf/pcfread.c (pcf_get_bitmaps): Return an error - if PCF_Face->nemetrics is negative. + if PCF_Face->nmetrics is negative. 2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> @@ -1150,7 +1150,7 @@ 2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> - cache: Insert explict casts for LP64 systems. + cache: Insert explicit casts for LP64 systems. * src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup): The type of FTC_ImageType->width @@ -1409,7 +1409,7 @@ base: Prevent some overflows on LP64 systems. - * src/base/ftadvance.c (FT_Get_Advances): Cast the + * src/base/ftadvanc.c (FT_Get_Advances): Cast the unsigned long constant FT_LOAD_ADVANCE_ONLY to FT_UInt32 for LP64 platforms. @@ -1499,7 +1499,7 @@ bdf: Fix some data types mismatching with their sources. - * src/bdf/bdrdrivr.c (bdf_cmap_char_index): The type + * src/bdf/bdfdrivr.c (bdf_cmap_char_index): The type of `code' is matched with BDF_encoding_el->enc. (bdf_cmap_char_next): The type of `charcode' is matched with BDF_encoding_el->enc. When *acharcode @@ -1545,7 +1545,7 @@ * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Exclude the legacy behaviour from 16-bit platform, because the current hack cannot detect the caller uses this function - via legacy convension. + via legacy convention. (FTC_SBitCache_Lookup): Ditto. 2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> @@ -1585,7 +1585,7 @@ 2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> - fttypes.h: Cast FT_MAKE_TAG output to FT_Tag exlicitly. + fttypes.h: Cast FT_MAKE_TAG output to FT_Tag explicitly. * include/freetype/fttypes.h (FT_MAKE_TAG): Cast the result to FT_Tag. @@ -1687,7 +1687,7 @@ sfnt: Count the size of the memory object by ptrdiff_t. * src/sfnt/ttbdf.c (tt_face_find_bdf_prop): The type of - `peroperty_len' is changed from FT_UInt to FT_Offset, + `property_len' is changed from FT_UInt to FT_Offset, to match with size_t, which is appropriate type for the object in the memory buffer. @@ -2122,7 +2122,7 @@ Use 16.16 format everywhere (except for large integers followed by a `div'). [CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS]: Remove #ifdef and activate - code uncoditionally. + code unconditionally. Add support for random numbers and update remaining code accordingly; this should work now. (t1_operator_seac): Updated. @@ -2479,7 +2479,7 @@ af_latin_script_class struct will have function to init it instead of being allocated in the global scope. Change af_latin_blue_chars to be PIC-compatible by being a two - dimentional array rather than array of pointers. + dimensional array rather than array of pointers. * src/autofit/aflatin2.h declare af_latin2_script_class @@ -2489,11 +2489,11 @@ af_latin2_script_class struct will have function to init it instead of being allocated in the global scope. Change af_latin2_blue_chars to be PIC-compatible by being a two - dimentional array rather than array of pointers. + dimensional array rather than array of pointers. * src/autofit/afglobal.c when FT_CONFIG_OPTION_PIC is defined af_script_classes array initialization was moved to afpic.c and - is later refered using macros defeined in afpic.h. + is later referred using macros defined in afpic.h. New Files: * src/autofit/afpic.h declare struct to hold PIC globals for autofit @@ -2573,7 +2573,7 @@ Macros will be used from rastpic.h in order to access ft_standard_raster from the pic_container (allocated in ftraster.c). In ft_raster1_render when PIC is enabled, the last letter of - module_name is used to verfy the renderer class rather than the + module_name is used to verify the renderer class rather than the class pointer. * src/raster/ftraster.c when FT_CONFIG_OPTION_PIC is defined @@ -2755,7 +2755,7 @@ And macros will be used from ttpic.h in order to access them from the pic_container. * src/truetype/ttobjs.c change trick_names array to be - PIC-compatible by being a two dimentional array rather than array + PIC-compatible by being a two dimensional array rather than array of pointers. New Files: @@ -2784,14 +2784,14 @@ Add macros to declare, allocate and initialize drivers (FT_Driver_ClassRec). * include/freetype/internal/ftpic.h new file to declare the - FT_PIC_Container struct and the functions to allocate and detroy it. + FT_PIC_Container struct and the functions to allocate and destroy it. * include/freetype/internal/ftserv.h add macros to allocate and - destory arrays of FT_ServiceDescRec. + destroy arrays of FT_ServiceDescRec. * include/freetype/internal/internal.h define macro to include ftpic.h. New Files: - * src/base/ftpic.c implement functions to allocate and destory the + * src/base/ftpic.c implement functions to allocate and destroy the global pic_container. * src/base/basepic.h declare struct to hold PIC globals for base and macros to access them. @@ -2814,8 +2814,8 @@ * src/base/ftglyph.c when FT_CONFIG_OPTION_PIC is defined ft_bitmap_glyph_class and ft_outline_glyph_class will be allocated in the pic_container instead of the global scope and use macros from - basepic.h to access them. - * src/base/ftbbox.c allocate bbox_interface stract on the stack + basepic.h to access them. + * src/base/ftbbox.c allocate bbox_interface struct on the stack instead of the global scope when FT_CONFIG_OPTION_PIC is defined. * src/base/ftstroke.c access ft_outline_glyph_class allocated in ftglyph.c via macros from basepic.h @@ -3519,7 +3519,7 @@ 2008-12-21 Werner Lemberg <wl@gnu.org> * src/pfr/pfrdrivr.c, src/winfonts/winfnt.c, src/cache/ftcmanag.c, - src/smooth/ftgrays.c, src/base/ftobjc.s, src/sfobjs.c: + src/smooth/ftgrays.c, src/base/ftobjs.c, src/sfobjs.c: s/_Err_Bad_Argument/_Err_Invalid_Argument/. The former is for errors in the bytecode interpreter only. @@ -3576,7 +3576,7 @@ * docs/CHANGES: Updated. -2008-12-18 Bevan, David <dbevan@emtex.com> +2008-12-18 David Bevan <dbevan@emtex.com> Provide API for accessing embedding and subsetting restriction information. @@ -3656,12 +3656,12 @@ * src/sfnt/sfobjs.c (sfnt_load_face): A font with neither outlines nor bitmaps is scalable. -2008-12-05 Werner Lemberg <wl@nu.org> +2008-12-05 Werner Lemberg <wl@gnu.org> * src/autofit/aflatin.c (af_latin_uniranges): Add more ranges. This fixes Savannah bug #21190 which also provides a basic patch. -2008-12-05 Werner Lemberg <wl@nu.org> +2008-12-05 Werner Lemberg <wl@gnu.org> * include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): Use value 0x100 instead of 0x10000; the latter value is already occupied by @@ -4098,7 +4098,7 @@ 2008-09-18 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> * src/cff/cffobjs.c (cff_face_init): Use TTAG_OTTO defined - in ttags.h instead of numerical value 0x4F54544FL. + in tttags.h instead of numerical value 0x4F54544FL. 2008-09-16 Werner Lemberg <wl@gnu.org> @@ -4160,7 +4160,7 @@ used in building of FreeType2, it is written in `freetype2.pc' and `freetype-config'. -2008-09-01 david turner <david@freetype.org> +2008-09-01 David Turner <david@freetype.org> * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Accept a negative cmap index to mean `use default cached FT_Face's charmap'. This fixes @@ -4248,7 +4248,7 @@ 2008-08-29 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> * src/sfnt/sfobjs.c (sfnt_open_font): Use TTAG_OTTO defined in - ttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ). + tttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ). 2008-08-28 Werner Lemberg <wl@gnu.org> @@ -4258,7 +4258,7 @@ 2008-08-23 Werner Lemberg <wl@gnu.org> - * src/type/t1afm.c (compare_kern_pairs), src/pxaux/afmparse.c + * src/type/t1afm.c (compare_kern_pairs), src/psaux/afmparse.c (afm_compare_kern_pairs): Fix comparison. This fixes Savannah bug #24119. @@ -4387,7 +4387,7 @@ * src/cff/cffload.c (cff_font_load): Pass `pure_cff'. Invert sids table only if `pure_cff' is set. - * src/cff/cffload.h: Udpated. + * src/cff/cffload.h: Updated. * src/cff/cffobjs.c (cff_face_init): Updated. Set FT_FACE_FLAG_CID_KEYED only if pure_cff is set. @@ -4931,7 +4931,7 @@ tt_cmap14_find_variant): Return correct value. (tt_cmap14_variant_chars): Fix check for `di'. -2008-02-29 Wermer Lemberg <wl@gnu.org> +2008-02-29 Werner Lemberg <wl@gnu.org> * docs/CHANGES: Updated. @@ -5329,7 +5329,7 @@ 2007-08-18 Werner Lemberg <wl@gnu.org> - * src/otvalid/otvcmmn.c (otv_x_y_ux_sy): Skip context glyphs. Found + * src/otvalid/otvcommn.c (otv_x_y_ux_sy): Skip context glyphs. Found by Imran Yousaf. Fixes Savannah bug #20773. (otv_Lookup_validate): Correct handling of LookupType. Found by @@ -5428,7 +5428,7 @@ * include/freetype/config/ftheader.h (FT_CID_H): New macro. * include/freetype/ftcid.h: New file. - * include/freetype/internal/ftserv.h (FT_SERVIVE_CID_H): New macro. + * include/freetype/internal/ftserv.h (FT_SERVICE_CID_H): New macro. * include/freetype/internal/services/svcid.h: New file. * src/base/ftcid.c: New file. @@ -5938,7 +5938,7 @@ Savannah patch #5929. - * include/freetype/tttables.h, src/base/ftobjcs.c + * include/freetype/tttables.h, src/base/ftobjs.c (FT_Get_CMap_Format): New function. * include/freetype/internal/services/svttcmap.c (TT_CMapInfo): Add @@ -6005,7 +6005,7 @@ 2007-05-11 David Turner <david@freetype.org> - * src/cache/ftbasic.c, include/freetype/ftcache.h + * src/cache/ftcbasic.c, include/freetype/ftcache.h (FTC_ImageCache_LookupScaler, FTC_SBit_Cache_LookupScaler): Two new functions that allow us to look up glyphs using an FTC_Scaler object to specify the size, making it possible to use fractional pixel @@ -6097,8 +6097,8 @@ 2007-04-06 David Turner <david@freetype.org> - * src/base/ftbimap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite bug - (Savannah bug #19536). + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite + bug (Savannah bug #19536). 2007-04-04 Werner Lemberg <wl@gnu.org> @@ -6201,14 +6201,14 @@ conftest.c, to avoid unexpected shell evaluation. Possibly it is a bug or undocumented behaviour of autoconf. -2007-03-18 David Turner <david@freetype.org> +2007-03-18 David Turner <david@freetype.org> * src/truetype/ttinterp.c (Ins_MDRP): Another bytecode regression fix; testing still needed. * src/truetype/ttinterp.c (Ins_MD): Another bytecode regression fix. -2007-03-17 David Turner <david@freetype.org> +2007-03-17 David Turner <david@freetype.org> * src/truetype/ttinterp.c (Ins_IP): Fix wrong handling of the (undocumented) twilight zone special case. @@ -6256,7 +6256,7 @@ case FT_Init_FreeType fails for some reason. Problem reported by Maximilian Schwerin <maximilian.schwerin@buelowssiege.de>. - * src/truetype/ttobs.c (tt_size_init_bytecode): Clear the `x_ppem' + * src/truetype/ttobjs.c (tt_size_init_bytecode): Clear the `x_ppem' and `y_ppem' fields of the `TT_Size.metrics' structure, not those of `TT_Size.root.metrics'. Problem reported by Daniel Glöckner <daniel-gl@gmx.net>. @@ -6335,7 +6335,7 @@ * src/base/ftutil.c (ft_mem_dup, ft_mem_strdup, ft_mem_strcpyn): New functions. - * src/bfd/bfddrivr.c (bdf_interpret_style, BDF_Face_Init), + * src/bdf/bdfdrivr.c (bdf_interpret_style, BDF_Face_Init), src/bdf/bdflib.c (_bdf_add_property), src/pcf/pcfread.c (pcf_get_properties, pcf_interpret_style, pcf_load_font), src/cff/cffdrivr.c (cff_get_glyph_name), src/cff/cffload.c @@ -6546,7 +6546,7 @@ 2007-01-16 David Turner <david@freetype.org> * src/autofit/aflatin.c (af_latin_hints_compute_segments), - src/cff/cffdriver.c (cff_ps_get_font_info), src/truetype/ttobjs.c + src/cff/cffdrivr.c (cff_ps_get_font_info), src/truetype/ttobjs.c (tt_face_init), src/truetype/ttinterp.c (Ins_SHC): Fix compiler warnings. @@ -6592,7 +6592,7 @@ * src/cff/cffload.c: Include FT_TYPE1_TABLES_H. (cff_font_done): Free font->font_info if necessary. - * src/cff/cffdrvr.c (cff_ps_get_font_info): New function. + * src/cff/cffdrivr.c (cff_ps_get_font_info): New function. (cff_service_ps_info): Register cff_ps_get_font_info. 2007-01-13 Werner Lemberg <wl@gnu.org> @@ -6734,7 +6734,7 @@ files are not used. * include/freetype/internal/tttypes.h (TT_FaceRec): Add members - `horz_metrics_offset' and `vert_metrics_ofset'. + `horz_metrics_offset' and `vert_metrics_offset'. * src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics): Updated. @@ -7517,7 +7517,7 @@ 2006-08-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> * modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to - build ftvalid in ft2demos. This has been inadvertedly changed + build ftvalid in ft2demos. This has been inadvertently changed 2006-08-13. 2006-08-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> @@ -7647,7 +7647,7 @@ `len_buildchar'. Remove `keywords_flags'. - * src/type1/t1load.h (T1_LoaderRect): New field + * src/type1/t1load.h (T1_LoaderRec): New field `keywords_encountered'. (T1_PRIVATE, T1_FONTDIR_AFTER_PRIVATE): New macros. @@ -7840,7 +7840,7 @@ * src/base/ftobjs.c (load_face_in_embedded_rfork): Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak. - * src/base/ftrfrk.c (raccess_guess_linux_double_from_file_name): + * src/base/ftrfork.c (raccess_guess_linux_double_from_file_name): Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak. 2006-05-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> @@ -7902,7 +7902,7 @@ (FT_Stream_OpenGzip): Use it to handle small files directly in memory. - * src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_ConvEexecDecode): + * src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Improve performance. * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Set `cursor' and diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog.24 b/Build/source/libs/freetype2/freetype-src/ChangeLog.24 index 3a4abe290c6..cbbfd8c6e98 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog.24 +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog.24 @@ -780,7 +780,7 @@ Move font tweaking tables to... - * src/truetype/ttsubpic.c: This file and decorate them with `static' + * src/truetype/ttsubpix.c: This file and decorate them with `static' and `const' where appropriate. (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to... @@ -978,7 +978,7 @@ [base] Clean up trigonometric core. - * src/base/fttrrigon.c (ft_trig_pseudo_polarize): Align algorithm + * src/base/fttrigon.c (ft_trig_pseudo_polarize): Align algorithm with `ft_trig_pseudo_rotate'. 2012-12-18 Infinality <infinality@infinality.net> @@ -990,7 +990,7 @@ 2012-12-17 Infinality <infinality@infinality.net> - [truetype] Remove unusued code and variables. + [truetype] Remove unused code and variables. * src/truetype/ttinterp.c: Updated. (Ins_FDEF): Remove opcode patterns that are not being used. @@ -1012,7 +1012,7 @@ 2012-12-16 Infinality <infinality@infinality.net> - [truetype] Remove unusued code and variables. Add minor fixes. + [truetype] Remove unused code and variables. Add minor fixes. * src/truetype/ttsubpix.h: Updated. (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Trebuchet MS. @@ -1037,7 +1037,7 @@ (Ins_FDEF): Rework code to fix bugs and add more detection. (Ins_CALL): Remove unused code. (Ins_LOOPCALL): Remove unused code. - (TT_RunIns): Remove unusued code. + (TT_RunIns): Remove unused code. (Ins_SHPIX): Add logic to handle ttfautohinted fonts. (Ins_MIRP): Don't round x in cut-in calculation. Add logic to handle ttfautohinted fonts. @@ -1395,7 +1395,7 @@ [autofit] Minor optimization. - * src/autofit/afglobals.c (af_face_globals_compute_script_coverage): + * src/autofit/afglobal.c (af_face_globals_compute_script_coverage): Add loop condition. 2012-09-29 Werner Lemberg <wl@gnu.org> @@ -1859,7 +1859,7 @@ Fix `checking if gcc static flag -static works' test. - On my linux build tree, I receive yes answer in in every package I + On my linux build tree, I receive yes answer in every package I build except freetype for this test checking if gcc static flag `-static' works @@ -2014,7 +2014,7 @@ (compute_glyph_metrics): Handle `compatible widths' option. (tt_loader_init): Handle ClearType GETINFO information bits. - * src/truetype/rules.mk (TT_DRC_SRC): Updated. + * src/truetype/rules.mk (TT_DRV_SRC): Updated. * src/truetype/ttinterp.c: Include `ttsubpix.h'. [Where necessary, changes below are guarded by @@ -2546,7 +2546,7 @@ * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value. -2012-02-24 Vinnie Falco <vinnie.falco@gmail.com> +2012-02-24 Vinnie Falco <vinnie.falco@gmail.com> Prepare source code for amalgamation (6/6). @@ -2556,20 +2556,20 @@ s/t1_init_loader/cid_init_loader/. s/t1_done_loader/cid_done_loader/. - * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/. + * src/psaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/. * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/. * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/. -2012-02-24 Vinnie Falco <vinnie.falco@gmail.com> +2012-02-24 Vinnie Falco <vinnie.falco@gmail.com> Prepare source code for amalgamation (5/6). * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after using it. -2012-02-22 Vinnie Falco <vinnie.falco@gmail.com> +2012-02-22 Vinnie Falco <vinnie.falco@gmail.com> Prepare source code for amalgamation (4/6). @@ -2581,7 +2581,7 @@ * src/raster/ftraster.c: s/TRaster/gray_TRaster/, s/PRaster/gray_PRaster/. -2012-02-20 Vinnie Falco <vinnie.falco@gmail.com> +2012-02-20 Vinnie Falco <vinnie.falco@gmail.com> Prepare source code for amalgamation (3/6). @@ -2590,14 +2590,14 @@ * src/raster/ftraster.c: s/TWorker/gray_TWorker/, s/PWorker/gray_PWorker/. -2012-02-20 Vinnie Falco <vinnie.falco@gmail.com> +2012-02-20 Vinnie Falco <vinnie.falco@gmail.com> Prepare source code for amalgamation (2/6). * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR, CEILING, TRUNC, and SCALED before defining it. -2012-02-20 Vinnie Falco <vinnie.falco@gmail.com> +2012-02-20 Vinnie Falco <vinnie.falco@gmail.com> Prepare source code for amalgamation (1/6). @@ -2796,9 +2796,9 @@ [base] Fix a dereference of uninitialized variable in PIC mode. * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be - set before derefering to obtain `library'. The initialization + set before dereferring to obtain `library'. The initialization of `clazz', `glyph', `library' and NULL pointer check are - reordered to minimize PIC conditonals. + reordered to minimize PIC conditionals. 2012-01-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> @@ -3261,7 +3261,7 @@ 2011-09-17 Alexei Podtelezhnikov <apodtele@gmail.com> - [smooth] Slightly optimize conic and cubic flatterners. + [smooth] Slightly optimize conic and cubic flatteners. * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move out some code from the main loop to speed it up. @@ -3621,7 +3621,7 @@ * src/base/ftstroke.c: Revised. * include/freetype/ftstroke.h: Updated. -2011-06-30 İsmail Dönmez <ismail@namtrac.org> +2011-06-30 İsmail Dönmez <ismail@namtrac.org> * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'. @@ -3680,7 +3680,7 @@ [autogen.sh] Reflect environment variable LIBTOOLIZE. -2011-06-18 Werner Lemberg <wl@gnu.org> +2011-06-18 Werner Lemberg <wl@gnu.org> Update license documentation. @@ -4000,7 +4000,7 @@ [autofit] Add bluezones for CJK Ideographs. - To remove extremas of vertical strokes of CJK Ideographs at + To remove extrema of vertical strokes of CJK Ideographs at low resolution and make the top and bottom horizontal stems aligned, bluezones for CJK Ideographs are calculated from sample glyphs. At present, vertical bluezones (bluezones @@ -4120,7 +4120,7 @@ [autofit] Add more Indic scripts with hanging baseline. * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu, - Sundanese, Meetei Mayak, Syloti Nagri and Sharada scripts are + Sundanese, Meetei Mayek, Syloti Nagri and Sharada scripts are added. 2011-04-21 Behdad Esfahbod <behdad@behdad.org> @@ -4756,7 +4756,7 @@ * src/bzip2/*: New files. * src/pcf/pcf.h: s/gzip_/comp_/. - * src/pcf/pcfdrvr.c: Include FT_BZIP2_H. + * src/pcf/pcfdrivr.c: Include FT_BZIP2_H. s/gzip_/comp_/. (PCF_Face_Init): Handle bzip2 compressed files. @@ -4768,7 +4768,7 @@ If we encounter a space in a string then the sbit buffer is NULL, height and width are 0s. So the check in ftc_snode_compare will - always pass for spaces (comparision with 255). Here the comments + always pass for spaces (comparison with 255). Here the comments above the condition are proper but the implementation is not. When we create an snode I think it is the proper way to initialize the width to 255 and then put a check for being equal to 255 in snode @@ -5420,7 +5420,7 @@ a Kaishu typeface paired with `HuaTianSongTi?' by Huatian Information Industry. -2010-08-17 Teijo Kinnunen <Teijo.Kinnunen@nuance.com> +2010-08-17 Teijo Kinnunen <Teijo.Kinnunen@nuance.com> [cache] Fix Savannah bug #30788. @@ -5548,7 +5548,7 @@ Add reference counters and to FT_Library and FT_Face objects. * include/freetype/freetype.h (FT_Reference_Face): New function. - * include/freetype/ftmodapi.h (FT_Rererence_Library): New function. + * include/freetype/ftmodapi.h (FT_Reference_Library): New function. * include/freetype/internal/ftobjs.h (FT_Face_InternalRec, FT_LibraryRec): New field `refcount'. @@ -6278,8 +6278,8 @@ Use real types instead of `void' for `pshinter' and `psnames' fields. * src/cff/cffload.c: Don't include PS cmaps service. - (cff_index_get_pointers): Add `pool' parameter which allows to - insert an extra NUL character for each String INDEX entry. + (cff_index_get_pointers): Add `pool' parameter which allows inserting + an extra NUL character for each String INDEX entry. (cff_index_get_name): Make it a local function. (cff_index_get_string): New function. (cff_subfont_load): Updated. diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog.25 b/Build/source/libs/freetype2/freetype-src/ChangeLog.25 index 0766f576b10..e85be5d30a0 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog.25 +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog.25 @@ -34,7 +34,7 @@ * builds/toplevel.mk (dist): Fix typos. -2014-12-24 Alexei Podtelezhnikov <apodtele@gmail.com> +2014-12-24 Alexei Podtelezhnikov <apodtele@gmail.com> [base] Formatting and nanooptimizations. @@ -245,7 +245,7 @@ All public FreeType enumeration and flag values are uppercase... * include/tttables.h (FT_Sfnt_Tag): Implement it. For backwards - compatilibity, retain the old values as macros. + compatibility, retain the old values as macros. * src/base/ftfstype.c (FT_Get_FSType_Flags), src/sfnt/sfdriver.c (get_sfnt_table): Updated. @@ -380,7 +380,7 @@ elements, use CSS descendants (of class `section') to format the data. - Also remove reduntant <p> and <br> elements, replacing them with + Also remove redundant <p> and <br> elements, replacing them with proper CSS. Globally reduce page width to 75%. @@ -549,7 +549,7 @@ * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix compiler warning. - Introdruced in previous change. Reported by Alexei. + Introduced in previous change. Reported by Alexei. 2014-11-26 Werner Lemberg <wl@gnu.org> @@ -579,7 +579,7 @@ 2014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> - * src/base/ftobj.c (Mac_Read_POST_Resource): Additional + * src/base/ftobjs.c (Mac_Read_POST_Resource): Additional overflow check in the summation of POST fragment lengths, suggested by Mateusz Jurczyk <mjurczyk@google.com>. @@ -945,7 +945,7 @@ The scaling between the hypotenuse and its CORDIC approximation is based on regression analysis. The smaller padding for `theta' is - justifed by its maximum error of less than 6. + justified by its maximum error of less than 6. * src/base/fttrigon.c (ft_trig_downscale): Borrow code from ./ftcalc.c (ft_multo64), change linear intercept. @@ -1430,7 +1430,7 @@ [base] Avoid undefined FT_MSB in `BBox_Cubic_Check'. * src/base/ftbbox.c (BBox_Cubic_Check): Update. - (update_cubic_max): Repalce with... + (update_cubic_max): Replace with... (cubic_peak): ... this, which now handles upscaling. 2014-08-11 Alexei Podtelezhnikov <apodtele@gmail.com> @@ -1780,7 +1780,7 @@ appearing in the GPOS table if we are processing the default coverage. -2014-04-13 David Weber <weber.aulendorf@googlemail.com> +2014-04-13 David Weber <weber.aulendorf@googlemail.com> [smooth] Fix stand-alone compilation. @@ -2444,7 +2444,7 @@ that the covered ranges are the same: Bengali, Devanagari, Gujarati, Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese, Syloti Nagri, Tamil, Telugu, and Tibetan. At the same time, remove - entries for Meetai Mayak and Sharada – the Unicode ranges were + entries for Meetei Mayek and Sharada – the Unicode ranges were incorrect (and nobody has complained about that), fonts are scarce for those scripts, and the Indic auto-hinter support is rudimentary anyways. @@ -2697,7 +2697,7 @@ [autofit] Introduce `coverages'. - Coverages are the interface to the HarfBuzz library to acces + Coverages are the interface to the HarfBuzz library to access OpenType features for handling glyphs not addressable by the cmap. Right now, compilation of HarfBuzz is only added to the development @@ -2896,11 +2896,11 @@ * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated. * src/autofit/afindic.c, src/autofit/afindic.h: Updated. * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated. - * src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated. + * src/autofit/aflatin2.c, src/autofit/aflatin2.h: Updated. * src/autofit/afpic.c: Updated. - * src/autofir/autofit.c: Include `afranges.c'. + * src/autofit/autofit.c: Include `afranges.c'. * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'. 2013-12-18 Werner Lemberg <wl@gnu.org> @@ -3240,7 +3240,7 @@ */*: Essentially do `s@/freetype/@/@' where appropriate. - * CMakeList.txt: Simplify. + * CMakeLists.txt: Simplify. * builds/unix/freetype-config.in, builds/unix/freetype2.in: For `--cflags', return a single directory. * builds/unix/install.mk (install): No longer try to remove `cache' @@ -3418,7 +3418,7 @@ * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/aflatin.c, src/autofit/aflatin.h, - src/autofit/atlatin2.c: Updated. + src/autofit/aflatin2.c: Updated. 2013-10-19 Werner Lemberg <wl@gnu.org> @@ -3999,7 +3999,7 @@ * builds/vms/ftconfig.h: Ditto. Make the differences to the master `ftconfig.h' file as small as - possible for easier maintainance. + possible for easier maintenance. 2013-08-05 Werner Lemberg <wl@gnu.org> @@ -4319,7 +4319,7 @@ * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen fields to FT_Short and FT_UShort, respectively. - (TT_SBitTableType): New enumeration. + (TT_SbitTableType): New enumeration. (TT_FaceRec): Add `sbit_table_type' field. * include/freetype/tttags.h (TTAG_sbix): New macro. @@ -4332,7 +4332,7 @@ * src/sfnt/ttsbit.c: Include `ttmtx.h'. (tt_face_load_eblc): Renamed to... (tt_face_load_sbit): This. - Handlic `sbix' bitmaps. + Handle `sbix' bitmaps. (tt_face_free_eblc): Renamed to... (tt_face_load_sbit): This. Updated. @@ -4615,7 +4615,7 @@ Fix Savannah bug #39269. * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in - case of reacollocation failures. + case of reallocation failures. 2013-06-18 Andrew Church <achurch+savannah@achurch.org> @@ -5098,7 +5098,7 @@ [truetype] Add framework for TrueType properties. - * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H. + * src/truetype/ttdriver.c: Include FT_SERVICE_PROPERTIES_H. (tt_property_set, tt_property_get): New functions, still empty. Define `tt_service_properties' service. Update `tt_services'. diff --git a/Build/source/libs/freetype2/freetype-src/Jamfile b/Build/source/libs/freetype2/freetype-src/Jamfile index 8c033fcc9c8..0d3ef2386ff 100644 --- a/Build/source/libs/freetype2/freetype-src/Jamfile +++ b/Build/source/libs/freetype2/freetype-src/Jamfile @@ -197,7 +197,7 @@ actions RefDoc { python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 - --title=FreeType-2.6.3 + --title=FreeType-2.6.4 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h diff --git a/Build/source/libs/freetype2/freetype-src/README b/Build/source/libs/freetype2/freetype-src/README index ff81cdf3b6d..09a203ab718 100644 --- a/Build/source/libs/freetype2/freetype-src/README +++ b/Build/source/libs/freetype2/freetype-src/README @@ -1,4 +1,4 @@ - FreeType 2.6.3 + FreeType 2.6.4 ============== Homepage: http://www.freetype.org @@ -24,9 +24,9 @@ and download one of the following files. - freetype-doc-2.6.3.tar.bz2 - freetype-doc-2.6.3.tar.gz - ftdoc263.zip + freetype-doc-2.6.4.tar.bz2 + freetype-doc-2.6.4.tar.gz + ftdoc264.zip To view the documentation online, go to diff --git a/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake b/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake index 9fb20c09367..378dbd895fa 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake +++ b/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake @@ -85,11 +85,6 @@ if (CMAKE_UNAME) DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}") endif (CMAKE_UNAME) -# force the compilers to gcc for iOS -include(CMakeForceCompiler) -CMAKE_FORCE_C_COMPILER(gcc gcc) -CMAKE_FORCE_CXX_COMPILER(g++ g++) - # skip the platform compiler checks for cross compiling set(CMAKE_CXX_COMPILER_WORKS TRUE) set(CMAKE_C_COMPILER_WORKS TRUE) diff --git a/Build/source/libs/freetype2/freetype-src/builds/unix/configure b/Build/source/libs/freetype2/freetype-src/builds/unix/configure index a20524dc622..6207f3d1514 100755 --- a/Build/source/libs/freetype2/freetype-src/builds/unix/configure +++ b/Build/source/libs/freetype2/freetype-src/builds/unix/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for FreeType 2.6.3. +# Generated by GNU Autoconf 2.69 for FreeType 2.6.4. # # Report bugs to <freetype@nongnu.org>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='FreeType' PACKAGE_TARNAME='freetype' -PACKAGE_VERSION='2.6.3' -PACKAGE_STRING='FreeType 2.6.3' +PACKAGE_VERSION='2.6.4' +PACKAGE_STRING='FreeType 2.6.4' PACKAGE_BUGREPORT='freetype@nongnu.org' PACKAGE_URL='' @@ -1328,7 +1328,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures FreeType 2.6.3 to adapt to many kinds of systems. +\`configure' configures FreeType 2.6.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1393,7 +1393,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of FreeType 2.6.3:";; + short | recursive ) echo "Configuration of FreeType 2.6.4:";; esac cat <<\_ACEOF @@ -1539,7 +1539,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -FreeType configure 2.6.3 +FreeType configure 2.6.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2137,7 +2137,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by FreeType $as_me 2.6.3, which was +It was created by FreeType $as_me 2.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2491,9 +2491,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -# Don't forget to update docs/VERSION.DLL! +# Don't forget to update `docs/VERSIONS.TXT'! -version_info='18:3:12' +version_info='18:4:12' ft_version=`echo $version_info | tr : .` @@ -12825,6 +12825,9 @@ if test "x$GCC" = xyes; then *-*-mingw*) XX_ANSIFLAGS="-pedantic" ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; *) GCC_VERSION=`$CC -dumpversion` GCC_MAJOR=`echo "$GCC_VERSION" | sed 's/\([^.][^.]*\).*/\1/'` @@ -14694,7 +14697,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by FreeType $as_me 2.6.3, which was +This file was extended by FreeType $as_me 2.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14760,7 +14763,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -FreeType config.status 2.6.3 +FreeType config.status 2.6.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac b/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac index b568e51e04e..5d6c86844f6 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac +++ b/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac @@ -11,13 +11,13 @@ # indicate that you have read the license and understand and accept it # fully. -AC_INIT([FreeType], [2.6.3], [freetype@nongnu.org], [freetype]) +AC_INIT([FreeType], [2.6.4], [freetype@nongnu.org], [freetype]) AC_CONFIG_SRCDIR([ftconfig.in]) -# Don't forget to update docs/VERSION.DLL! +# Don't forget to update `docs/VERSIONS.TXT'! -version_info='18:3:12' +version_info='18:4:12' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -235,6 +235,9 @@ if test "x$GCC" = xyes; then *-*-mingw*) XX_ANSIFLAGS="-pedantic" ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; *) GCC_VERSION=`$CC -dumpversion` GCC_MAJOR=`echo "$GCC_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'` diff --git a/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw b/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw index 1be10a3ca33..2d4308bdcb5 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw +++ b/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw @@ -15,9 +15,9 @@ AC_INIT([FreeType], [@VERSION@], [freetype@nongnu.org], [freetype]) AC_CONFIG_SRCDIR([ftconfig.in]) -# Don't forget to update docs/VERSION.DLL! +# Don't forget to update `docs/VERSIONS.TXT'! -version_info='18:3:12' +version_info='18:4:12' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -235,6 +235,9 @@ if test "x$GCC" = xyes; then *-*-mingw*) XX_ANSIFLAGS="-pedantic" ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; *) GCC_VERSION=`$CC -dumpversion` GCC_MAJOR=`echo "$GCC_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'` diff --git a/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in b/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in index 0083e05b041..df09e7eca33 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in +++ b/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in @@ -109,6 +109,6 @@ CCexe := $(CCraw_build) # used to compile `apinames' only LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \ -rpath $(libdir) -version-info $(version_info) \ $(LDFLAGS) -no-undefined \ - # -export-symbols $(EXPORTS_LIST) + -export-symbols $(EXPORTS_LIST) # EOF diff --git a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.sln b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.sln index 76e52d8e15a..ff45463884f 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.sln +++ b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.sln @@ -1,4 +1,3 @@ -
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
diff --git a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.vcproj b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.vcproj index 020d954f672..d2b14e4f70f 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.vcproj +++ b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/freetype.vcproj @@ -21,7 +21,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -41,7 +41,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -61,7 +61,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -81,7 +81,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -101,7 +101,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -121,7 +121,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -141,7 +141,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -161,7 +161,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -181,7 +181,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -201,7 +201,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -221,7 +221,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -241,7 +241,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -261,7 +261,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -281,7 +281,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -301,7 +301,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -321,7 +321,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -341,7 +341,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -361,7 +361,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -381,7 +381,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -401,7 +401,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -421,7 +421,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -441,7 +441,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -461,7 +461,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -481,7 +481,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -501,7 +501,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -521,7 +521,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -541,7 +541,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -561,7 +561,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -581,7 +581,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -601,7 +601,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -621,7 +621,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -641,7 +641,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -661,7 +661,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -681,7 +681,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -701,7 +701,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -721,7 +721,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -741,7 +741,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -758,7 +758,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
diff --git a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html index a477550f91f..8c40b61a055 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html +++ b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html @@ -21,14 +21,14 @@ the following targets: <li>PPC/SP WM6 (Windows Mobile 6)</li> </ul> -It compiles the following libraries from the FreeType 2.6.3 sources:</p> +It compiles the following libraries from the FreeType 2.6.4 sources:</p> <ul> <pre> - freetype263.lib - release build; single threaded - freetype263_D.lib - debug build; single threaded - freetype263MT.lib - release build; multi-threaded - freetype263MT_D.lib - debug build; multi-threaded</pre> + freetype264.lib - release build; single threaded + freetype264_D.lib - debug build; single threaded + freetype264MT.lib - release build; multi-threaded + freetype264MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.sln b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.sln index d8efd96f08d..23914323c9c 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.sln +++ b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.sln @@ -1,4 +1,3 @@ -
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
diff --git a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.vcproj b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.vcproj index 8a87e3c7180..4df524ee2e8 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.vcproj +++ b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/freetype.vcproj @@ -88,7 +88,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -177,7 +177,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -266,7 +266,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -355,7 +355,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -444,7 +444,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -533,7 +533,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -621,7 +621,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -709,7 +709,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -797,7 +797,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -885,7 +885,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -973,7 +973,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1061,7 +1061,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1149,7 +1149,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1236,7 +1236,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1323,7 +1323,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1410,7 +1410,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1497,7 +1497,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1584,7 +1584,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1668,7 +1668,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1753,7 +1753,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1838,7 +1838,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1923,7 +1923,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2008,7 +2008,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2093,7 +2093,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2178,7 +2178,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2263,7 +2263,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2348,7 +2348,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2433,7 +2433,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2518,7 +2518,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2603,7 +2603,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2689,7 +2689,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2775,7 +2775,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2861,7 +2861,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2947,7 +2947,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3033,7 +3033,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3119,7 +3119,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3205,7 +3205,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3279,7 +3279,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
diff --git a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html index 329c55672b5..1998e61df3c 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html +++ b/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html @@ -21,14 +21,14 @@ the following targets: <li>PPC/SP WM6 (Windows Mobile 6)</li> </ul> -It compiles the following libraries from the FreeType 2.6.3 sources:</p> +It compiles the following libraries from the FreeType 2.6.4 sources:</p> <ul> <pre> - freetype263.lib - release build; single threaded - freetype263_D.lib - debug build; single threaded - freetype263MT.lib - release build; multi-threaded - freetype263MT_D.lib - debug build; multi-threaded</pre> + freetype264.lib - release build; single threaded + freetype264_D.lib - debug build; single threaded + freetype264MT.lib - release build; multi-threaded + freetype264MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/freetype.vcproj b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/freetype.vcproj index e9310eca2d9..2cabce9735f 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/freetype.vcproj +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/freetype.vcproj @@ -16,7 +16,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype263.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype264.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -33,7 +33,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype263MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype264MT.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -50,7 +50,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype263ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype264ST.lib" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -67,7 +67,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype263_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype264_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -84,7 +84,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype263ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype264ST_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
@@ -101,7 +101,7 @@ <Tool Name="VCManagedResourceCompilerTool" />
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
<Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype263MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype264MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/index.html b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/index.html index bc6751e322c..d69d6264cc2 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/index.html +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2005/index.html @@ -11,14 +11,14 @@ <p>This directory contains project files for Visual C++, named <tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It -compiles the following libraries from the FreeType 2.6.3 sources:</p> +compiles the following libraries from the FreeType 2.6.4 sources:</p> <ul> <pre> - freetype263.lib - release build; single threaded - freetype263_D.lib - debug build; single threaded - freetype263MT.lib - release build; multi-threaded - freetype263MT_D.lib - debug build; multi-threaded</pre> + freetype264.lib - release build; single threaded + freetype264_D.lib - debug build; single threaded + freetype264MT.lib - release build; multi-threaded + freetype264MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/freetype.vcproj b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/freetype.vcproj index c90a08c5de0..06c25f08f80 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/freetype.vcproj +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/freetype.vcproj @@ -70,7 +70,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype263.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -145,7 +145,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype263MT.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -220,7 +220,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype263ST.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -292,7 +292,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype263_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -365,7 +365,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -439,7 +439,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\win32\vc2008\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/index.html b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/index.html index 1bc02cf4e34..8507c499653 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/index.html +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2008/index.html @@ -11,14 +11,14 @@ <p>This directory contains project files for Visual C++, named <tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It -compiles the following libraries from the FreeType 2.6.3 sources:</p> +compiles the following libraries from the FreeType 2.6.4 sources:</p> <ul> <pre> - freetype263.lib - release build; single threaded - freetype263_D.lib - debug build; single threaded - freetype263MT.lib - release build; multi-threaded - freetype263MT_D.lib - debug build; multi-threaded</pre> + freetype264.lib - release build; single threaded + freetype264_D.lib - debug build; single threaded + freetype264MT.lib - release build; multi-threaded + freetype264MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln index 3bd176a78e6..b209eddd2c4 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln @@ -1,4 +1,3 @@ -
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio Express 2012 for Windows Desktop
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj index 96f76cae8e9..9323f3a38b2 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
@@ -191,18 +191,18 @@ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'" />
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">freetype263d</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">freetype263d</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|Win32'">freetype263MTd</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|x64'">freetype263MTd</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|Win32'">freetype263STd</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|x64'">freetype263STd</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">freetype263</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">freetype263</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|Win32'">freetype263MT</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|x64'">freetype263MT</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'">freetype263ST</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'">freetype263ST</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">freetype264d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">freetype264d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|Win32'">freetype264MTd</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|x64'">freetype264MTd</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|Win32'">freetype264STd</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|x64'">freetype264STd</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">freetype264</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">freetype264</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|Win32'">freetype264MT</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|x64'">freetype264MT</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'">freetype264ST</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|x64'">freetype264ST</TargetName>
</PropertyGroup>
<Import Project="$(SolutionDir)\freetype.user.props" Condition="exists('$(SolutionDir)\freetype.user.props')" Label="UserProperties" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj.filters b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj.filters index 29cb5c906fb..0e947f4ba18 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj.filters +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.vcxproj.filters @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html index aaac979230a..15b95e89fcf 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html @@ -12,16 +12,16 @@ <p>This directory contains a project file for Visual C++ (VS.NET 2010 or newer), named <tt>freetype.vcxproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It compiles the following libraries from the -FreeType 2.6.3 sources:</p> +FreeType 2.6.4 sources:</p> <ul> <pre> - freetype263.lib - release build - freetype263d.lib - debug build - freetype263ST.lib - release build; single threaded - freetype263STd.lib - debug build; single threaded - freetype263MT.lib - release build; multi-threaded - freetype263MTd.lib - debug build; multi-threaded</pre> + freetype264.lib - release build + freetype264d.lib - debug build + freetype264ST.lib - release build; single threaded + freetype264STd.lib - debug build; single threaded + freetype264MT.lib - release build; multi-threaded + freetype264MTd.lib - debug build; multi-threaded</pre> </ul> <p>Both Win32 and x64 builds are supported.</p> diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.dsp b/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.dsp index 0ffc9ad1cf0..8fc0a9aec06 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.dsp +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
@@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
@@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype263_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263MT_D.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype264_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264MT_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
@@ -126,8 +126,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype263.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263MT.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype264.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264MT.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
@@ -151,8 +151,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype263.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype263ST.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype264.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype264ST.lib"
# SUBTRACT LIB32 /nologo
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
@@ -177,8 +177,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype263_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263ST_D.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype264_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264ST_D.lib"
!ENDIF
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.vcproj b/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.vcproj index 462223a6b2d..545c4bae49d 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.vcproj +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/freetype.vcproj @@ -69,7 +69,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -144,7 +144,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -219,7 +219,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -291,7 +291,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -364,7 +364,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -438,7 +438,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html b/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html index 34803f3a644..6b9b3733ce8 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html @@ -11,14 +11,14 @@ <p>This directory contains project files for Visual C++, named <tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It -compiles the following libraries from the FreeType 2.6.3 sources:</p> +compiles the following libraries from the FreeType 2.6.4 sources:</p> <ul> <pre> - freetype263.lib - release build; single threaded - freetype263_D.lib - debug build; single threaded - freetype263MT.lib - release build; multi-threaded - freetype263MT_D.lib - debug build; multi-threaded</pre> + freetype264.lib - release build; single threaded + freetype264_D.lib - debug build; single threaded + freetype264MT.lib - release build; multi-threaded + freetype264MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.dsp b/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.dsp index 0ffc9ad1cf0..8fc0a9aec06 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.dsp +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
@@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
@@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype263_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263MT_D.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype264_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264MT_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
@@ -126,8 +126,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype263.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263MT.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype264.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264MT.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
@@ -151,8 +151,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype263.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype263ST.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype264.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype264ST.lib"
# SUBTRACT LIB32 /nologo
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
@@ -177,8 +177,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype263_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype263ST_D.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype264_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype264ST_D.lib"
!ENDIF
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.vcproj b/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.vcproj index fa097bd3f13..6cc04a298da 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.vcproj +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/freetype.vcproj @@ -87,7 +87,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -162,7 +162,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -237,7 +237,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -309,7 +309,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -382,7 +382,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -456,7 +456,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -534,7 +534,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -619,7 +619,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -704,7 +704,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -785,7 +785,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -867,7 +867,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -950,7 +950,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1036,7 +1036,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1121,7 +1121,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1206,7 +1206,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1287,7 +1287,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1369,7 +1369,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1452,7 +1452,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1538,7 +1538,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1623,7 +1623,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1708,7 +1708,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1789,7 +1789,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1871,7 +1871,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1954,7 +1954,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2040,7 +2040,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2125,7 +2125,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2210,7 +2210,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -2291,7 +2291,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2373,7 +2373,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2456,7 +2456,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2542,7 +2542,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2627,7 +2627,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2712,7 +2712,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -2793,7 +2793,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2875,7 +2875,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2958,7 +2958,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3044,7 +3044,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263.lib"
+ OutputFile="..\..\..\objs\freetype264.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3129,7 +3129,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT.lib"
+ OutputFile="..\..\..\objs\freetype264MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3214,7 +3214,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST.lib"
+ OutputFile="..\..\..\objs\freetype264ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -3295,7 +3295,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263_D.lib"
+ OutputFile="..\..\..\objs\freetype264_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3377,7 +3377,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263ST_D.lib"
+ OutputFile="..\..\..\objs\freetype264ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3460,7 +3460,7 @@ />
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype263MT_D.lib"
+ OutputFile="..\..\..\objs\freetype264MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
diff --git a/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html b/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html index 5dabeb126d4..47854f69f43 100644 --- a/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html +++ b/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html @@ -21,14 +21,14 @@ the following targets: <li>PPC/SP WM6 (Windows Mobile 6)</li> </ul> -It compiles the following libraries from the FreeType 2.6.3 sources:</p> +It compiles the following libraries from the FreeType 2.6.4 sources:</p> <ul> <pre> - freetype263.lib - release build; single threaded - freetype263_D.lib - debug build; single threaded - freetype263MT.lib - release build; multi-threaded - freetype263MT_D.lib - debug build; multi-threaded</pre> + freetype264.lib - release build; single threaded + freetype264_D.lib - debug build; single threaded + freetype264MT.lib - release build; multi-threaded + freetype264MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/Build/source/libs/freetype2/freetype-src/devel/ftoption.h b/Build/source/libs/freetype2/freetype-src/devel/ftoption.h index b354efdcdb0..d20df81ed8b 100644 --- a/Build/source/libs/freetype2/freetype-src/devel/ftoption.h +++ b/Build/source/libs/freetype2/freetype-src/devel/ftoption.h @@ -586,23 +586,53 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ - /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ - /* replaces the native TrueType hinting mechanism when anything but */ - /* FT_RENDER_MODE_MONO is requested. */ + /* subpixel hinting support into the TrueType driver. This modifies the */ + /* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is */ + /* requested. */ /* */ - /* Enabling this causes the TrueType driver to ignore instructions under */ - /* certain conditions. This is done in accordance with the guide here, */ - /* with some minor differences: */ + /* In particular, it modifies the bytecode interpreter to interpret (or */ + /* not) instructions in a certain way so that all TrueType fonts look */ + /* like they do in a Windows ClearType (DirectWrite) environment. See */ + /* [1] for a technical overview on what this means. See `ttinterp.h' */ + /* for more details on the LEAN option. */ /* */ - /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* There are three options. */ /* */ - /* By undefining this, you only compile the code necessary to hint */ - /* TrueType glyphs with native TT hinting. */ + /* 1. This option is associated with the `Infinality' moniker. */ + /* Contributed by an individual nicknamed Infinality with the goal of */ + /* making TrueType fonts render better than on Windows. A high */ + /* amount of configurability and flexibility, down to rules for */ + /* single glyphs in fonts, but also very slow. Its experimental and */ + /* slow nature and the original developer losing interest meant that */ + /* this option was never enabled in default builds. */ /* */ - /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ - /* defined. */ + /* 2. The new default mode for the TrueType driver. The Infinality code */ + /* base was stripped to the bare minimum and all configurability */ + /* removed in the name of speed and simplicity. The configurability */ + /* was mainly aimed at legacy fonts like Arial, Times New Roman, or */ + /* Courier. Legacy fonts are fonts that modify vertical stems to */ + /* achieve clean black-and-white bitmaps. The new mode focuses on */ + /* applying a minimal set of rules to all fonts indiscriminately so */ + /* that modern and web fonts render well while legacy fonts render */ + /* okay. */ /* */ -#define TT_CONFIG_OPTION_SUBPIXEL_HINTING + /* 3. Compile both. */ + /* */ + /* By undefining these, you get rendering behavior like on Windows */ + /* without ClearType, i.e., Windows XP without ClearType enabled and */ + /* Win9x (interpreter version v35). Or not, depending on how much */ + /* hinting blood and testing tears the font designer put into a given */ + /* font. If you define one or both subpixel hinting options, you can */ + /* switch between between v35 and the ones you define. */ + /* */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ + /* */ + /* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) /*************************************************************************/ @@ -811,6 +841,14 @@ FT_BEGIN_HEADER */ #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #define TT_USE_BYTECODE_INTERPRETER + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1 +#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY +#endif + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2 +#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#endif #endif diff --git a/Build/source/libs/freetype2/freetype-src/docs/CHANGES b/Build/source/libs/freetype2/freetype-src/docs/CHANGES index ee2f21d1d6b..39f69221e5f 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/CHANGES +++ b/Build/source/libs/freetype2/freetype-src/docs/CHANGES @@ -1,4 +1,70 @@ +CHANGES BETWEEN 2.6.3 and 2.6.4 + + I. IMPORTANT CHANGES + + - A new subpixel hinting mode has been contributed by Nikolaus + Waxweiler, which is now the default rendering mode for TrueType + fonts. It implements (almost everything of) version 40 of the + bytecode engine. + + The existing code base in FreeType (the `Infinality code') was + stripped to the bare minimum and all configurability removed in + the name of speed and simplicity. The configurability was + mainly aimed at legacy fonts like Arial, Times New Roman, or + Courier. [Legacy fonts are fonts that modify vertical stems to + achieve clean black-and-white bitmaps.] The new mode focuses on + applying a minimal set of rules to all fonts indiscriminately so + that modern and web fonts render well while legacy fonts render + okay. + + Activation of the subpixel hinting support can be controlled + with the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration + option at compile time: If set to value 1, you get the old + Infinality mode (which was never the default due to its + slowness). Value 2 activates the new subpixel hinting mode, and + value 3 activates both. The default is value 2. + + At run time, you can select the subpixel hinting mode with the + `interpreter-version' property (provided you have compiled in + the corresponding hinting mode); see `ftttdrv.h' for more. + + - Support for the following scripts has been added to the + auto-hinter. + + Armenian, Cherokee, Ethiopic, Georgian, Gujarati, Gurmukhi, + Malayalam, Sinhala, Tamil + + + II. MISCELLANEOUS + + - Type 42 fonts as created by LilyPond are now supported. + + - Minor rendering improvments in the auto-hinter. + + - For experimental reasons, the old CFF engine now supports all + CFF operators except `random', including the deprecated Multiple + Masters instructions. This allows the display of fonts like + `ITCGaramondMM-It.otf' (without font variations, though). + + - Another round of fixes to improve handling of invalid fonts. + + - The `ftgrid' demo program now displays the rendered pixels also; + this can be switched off with the `b' key. Selection of various + LCD filtering modes can be done with the `L' key. + + - The demo programs have been extended to allow selection of all + available TrueType bytecode engines. + + - A very early beta version of a new, Qt based demo program called + `ftinspect' is part of the source code bundle; it will + eventually supersede the other demo programs. Currently, you + have to compile it manually with `qmake; make'; note that many + features are still missing. + + +====================================================================== + CHANGES BETWEEN 2.6.2 and 2.6.3 I. IMPORTANT CHANGES @@ -42,8 +108,8 @@ CHANGES BETWEEN 2.6.2 and 2.6.3 - The `ftgamma' demo program has been modernized; the gamma grid display has been moved from `ftview' to this program. - - It is now possible to cycle through the available LCD fitlering - modes. + - In `ftview', it is now possible to cycle through the available + LCD filtering modes. ====================================================================== @@ -3754,7 +3820,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES 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', + basic data types redefinitions (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. diff --git a/Build/source/libs/freetype2/freetype-src/docs/FTL.TXT b/Build/source/libs/freetype2/freetype-src/docs/FTL.TXT index bbaba33f47d..433ab060e37 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/FTL.TXT +++ b/Build/source/libs/freetype2/freetype-src/docs/FTL.TXT @@ -48,7 +48,7 @@ Introduction encourage you to use the following text: """ - Portions of this software are copyright © <year> The FreeType + Portions of this software are copyright © <year> The FreeType Project (www.freetype.org). All rights reserved. """ diff --git a/Build/source/libs/freetype2/freetype-src/docs/VERSION.DLL b/Build/source/libs/freetype2/freetype-src/docs/VERSIONS.TXT index 804c2f23684..3c851738d71 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/VERSION.DLL +++ b/Build/source/libs/freetype2/freetype-src/docs/VERSIONS.TXT @@ -52,6 +52,7 @@ on _most_ systems, but not all of them: release libtool so ------------------------------- + 2.6.4 18.4.12 6.12.4 2.6.3 18.3.12 6.12.3 2.6.2 18.2.12 6.12.2 2.6.1 18.1.12 6.12.1 @@ -116,4 +117,4 @@ file you indicate that you have read the license and understand and accept it fully. ---- end of VERSION.DLL --- +--- end of VERSIONS.TXT --- diff --git a/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1 b/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1 index 1720d476b3f..6dffcce327f 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1 +++ b/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1 @@ -1,4 +1,4 @@ -.TH FREETYPE-CONFIG 1 "February 2016" "FreeType 2.6.3" +.TH FREETYPE-CONFIG 1 "July 2016" "FreeType 2.6.4" . . .SH NAME diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-auto_hinter.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-auto_hinter.html index 77c6a1c9211..c97a93ab957 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-auto_hinter.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-auto_hinter.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="auto_hinter">The auto-hinter</h1> <h2>Synopsis</h2> @@ -246,8 +246,8 @@ U+0F00 - U+0FFF // Tibetan U+1900 - U+194F // Limbu U+1B80 - U+1BBF // Sundanese - U+1C80 - U+1CDF // Meetei Mayak U+A800 - U+A82F // Syloti Nagri + U+ABC0 - U+ABFF // Meetei Mayek U+11800 - U+118DF // Sharada </pre> <p>Note that currently Indic support is rudimentary only, missing blue zone support.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-base_interface.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-base_interface.html index 3602a3d5c59..d6b799f8d63 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-base_interface.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-base_interface.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="base_interface">Base Interface</h1> <h2>Synopsis</h2> @@ -326,10 +326,10 @@ <p>This encoding uses character codes from the PUA (Private Unicode Area) in the range U+F020-U+F0FF.</p> </td></tr> <tr><td class="val" id="FT_ENCODING_SJIS">FT_ENCODING_SJIS</td><td class="desc"> -<p>Corresponds to Japanese SJIS encoding. More info at at ‘<a href="http://en.wikipedia.org/wiki/Shift_JIS">http://en.wikipedia.org/wiki/Shift_JIS</a>’. See note on multi-byte encodings below.</p> +<p>Corresponds to Japanese SJIS encoding. More info at ‘<a href="http://en.wikipedia.org/wiki/Shift_JIS">http://en.wikipedia.org/wiki/Shift_JIS</a>’. See note on multi-byte encodings below.</p> </td></tr> <tr><td class="val" id="FT_ENCODING_GB2312">FT_ENCODING_GB2312</td><td class="desc"> -<p>Corresponds to an encoding system for Simplified Chinese as used used in mainland China.</p> +<p>Corresponds to an encoding system for Simplified Chinese as used in mainland China.</p> </td></tr> <tr><td class="val" id="FT_ENCODING_BIG5">FT_ENCODING_BIG5</td><td class="desc"> <p>Corresponds to an encoding system for Traditional Chinese as used in Taiwan and Hong Kong.</p> @@ -406,7 +406,7 @@ <h4>note</h4> <p>Since many 16-bit compilers don't like 32-bit enumerations, you should redefine this macro in case of problems to something like this:</p> <pre class="colored"> - #define FT_ENC_TAG( value, a, b, c, d ) value + #define FT_ENC_TAG( value, a, b, c, d ) value </pre> <p>to get a simple enumeration without assigning special numbers.</p> @@ -571,7 +571,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_HAS_HORIZONTAL</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_HORIZONTAL">FT_FACE_FLAG_HORIZONTAL</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_HORIZONTAL">FT_FACE_FLAG_HORIZONTAL</a> ) </pre> <p>A macro that returns true whenever a face object contains horizontal metrics (this is true for all font formats though).</p> @@ -587,7 +587,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_HAS_VERTICAL</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_VERTICAL">FT_FACE_FLAG_VERTICAL</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_VERTICAL">FT_FACE_FLAG_VERTICAL</a> ) </pre> <p>A macro that returns true whenever a face object contains real vertical metrics (and not only synthesized ones).</p> @@ -600,7 +600,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_HAS_KERNING</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_KERNING">FT_FACE_FLAG_KERNING</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_KERNING">FT_FACE_FLAG_KERNING</a> ) </pre> <p>A macro that returns true whenever a face object contains kerning data that can be accessed with <a href="ft2-base_interface.html#FT_Get_Kerning">FT_Get_Kerning</a>.</p> @@ -613,7 +613,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_HAS_FIXED_SIZES</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_FIXED_SIZES">FT_FACE_FLAG_FIXED_SIZES</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_FIXED_SIZES">FT_FACE_FLAG_FIXED_SIZES</a> ) </pre> <p>A macro that returns true whenever a face object contains some embedded bitmaps. See the ‘available_sizes’ field of the <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> structure.</p> @@ -626,7 +626,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_HAS_GLYPH_NAMES</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_GLYPH_NAMES">FT_FACE_FLAG_GLYPH_NAMES</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_GLYPH_NAMES">FT_FACE_FLAG_GLYPH_NAMES</a> ) </pre> <p>A macro that returns true whenever a face object contains some glyph names that can be accessed through <a href="ft2-base_interface.html#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a>.</p> @@ -639,7 +639,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_HAS_MULTIPLE_MASTERS</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_MULTIPLE_MASTERS">FT_FACE_FLAG_MULTIPLE_MASTERS</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_MULTIPLE_MASTERS">FT_FACE_FLAG_MULTIPLE_MASTERS</a> ) </pre> <p>A macro that returns true whenever a face object contains some multiple masters. The functions provided by <a href="ft2-header_file_macros.html#FT_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</a> are then available to choose the exact design you want.</p> @@ -652,7 +652,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_HAS_COLOR</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_COLOR">FT_FACE_FLAG_COLOR</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_COLOR">FT_FACE_FLAG_COLOR</a> ) </pre> <p>A macro that returns true whenever a face object contains tables for color glyphs.</p> @@ -665,7 +665,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_IS_SFNT</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_SFNT">FT_FACE_FLAG_SFNT</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_SFNT">FT_FACE_FLAG_SFNT</a> ) </pre> <p>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.</p> @@ -679,7 +679,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_IS_SCALABLE</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_SCALABLE">FT_FACE_FLAG_SCALABLE</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_SCALABLE">FT_FACE_FLAG_SCALABLE</a> ) </pre> <p>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.</p> @@ -692,7 +692,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_IS_FIXED_WIDTH</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_FIXED_WIDTH">FT_FACE_FLAG_FIXED_WIDTH</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_FIXED_WIDTH">FT_FACE_FLAG_FIXED_WIDTH</a> ) </pre> <p>A macro that returns true whenever a face object contains a font face that contains fixed-width (or ‘monospace’, ‘fixed-pitch’, etc.) glyphs.</p> @@ -705,7 +705,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_IS_CID_KEYED</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_CID_KEYED">FT_FACE_FLAG_CID_KEYED</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_CID_KEYED">FT_FACE_FLAG_CID_KEYED</a> ) </pre> <p>A macro that returns true whenever a face object contains a CID-keyed font. See the discussion of <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a> for more details.</p> @@ -719,7 +719,7 @@ <p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p> <pre> #define <b>FT_IS_TRICKY</b>( face ) \ - ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_TRICKY">FT_FACE_FLAG_TRICKY</a> ) + ( (face)->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_TRICKY">FT_FACE_FLAG_TRICKY</a> ) </pre> <p>A macro that returns true whenever a face represents a ‘tricky’ font. See the discussion of <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a> for more details.</p> @@ -935,27 +935,27 @@ <h4>note</h4> <p>Here is a small pseudo code fragment that shows how to use ‘lsb_delta’ and ‘rsb_delta’:</p> <pre class="colored"> - 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 + 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 </pre> <hr> @@ -1328,62 +1328,62 @@ <p>See the discussion of reference counters in the description of <a href="ft2-base_interface.html#FT_Reference_Face">FT_Reference_Face</a>.</p> <p>To loop over all faces, use code similar to the following snippet (omitting the error handling).</p> <pre class="colored"> - ... - FT_Face face; - FT_Long i, num_faces; - - - error = FT_Open_Face( library, args, -1, &face ); - if ( error ) { ... } - - num_faces = face->num_faces; - FT_Done_Face( face ); - - for ( i = 0; i < num_faces; i++ ) - { - ... - error = FT_Open_Face( library, args, i, &face ); - ... - FT_Done_Face( face ); - ... - } + ... + FT_Face face; + FT_Long i, num_faces; + + + error = FT_Open_Face( library, args, -1, &face ); + if ( error ) { ... } + + num_faces = face->num_faces; + FT_Done_Face( face ); + + for ( i = 0; i < num_faces; i++ ) + { + ... + error = FT_Open_Face( library, args, i, &face ); + ... + FT_Done_Face( face ); + ... + } </pre> <p>To loop over all valid values for ‘face_index’, use something similar to the following snippet, again without error handling. The code accesses all faces immediately (thus only a single call of ‘FT_Open_Face’ within the do-loop), with and without named instances.</p> <pre class="colored"> - ... - FT_Face face; - - FT_Long num_faces = 0; - FT_Long num_instances = 0; - - FT_Long face_idx = 0; - FT_Long instance_idx = 0; - - - do - { - FT_Long id = ( instance_idx << 16 ) + face_idx; - - - error = FT_Open_Face( library, args, id, &face ); - if ( error ) { ... } - - num_faces = face->num_faces; - num_instances = face->style_flags >> 16; - - ... - - FT_Done_Face( face ); - - if ( instance_idx < num_instances ) - instance_idx++; - else - { - face_idx++; - instance_idx = 0; - } - - } while ( face_idx < num_faces ) + ... + FT_Face face; + + FT_Long num_faces = 0; + FT_Long num_instances = 0; + + FT_Long face_idx = 0; + FT_Long instance_idx = 0; + + + do + { + FT_Long id = ( instance_idx << 16 ) + face_idx; + + + error = FT_Open_Face( library, args, id, &face ); + if ( error ) { ... } + + num_faces = face->num_faces; + num_instances = face->style_flags >> 16; + + ... + + FT_Done_Face( face ); + + if ( instance_idx < num_instances ) + instance_idx++; + else + { + face_idx++; + instance_idx = 0; + } + + } while ( face_idx < num_faces ) </pre> <hr> @@ -1439,7 +1439,7 @@ <h4>note</h4> <p>The stream type is determined by the contents of ‘flags’ that are tested in the following order by <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>:</p> -<p>If the <a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_MEMORY</a> 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 <i>after</i> the corresponding call to <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a>.</p> +<p>If the <a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_MEMORY</a> bit is set, assume that this is a memory file of ‘memory_size’ bytes, located at ‘memory_address’. The data are not copied, and the client is responsible for releasing and destroying them <i>after</i> the corresponding call to <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a>.</p> <p>Otherwise, if the <a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_STREAM</a> bit is set, assume that a custom input stream ‘stream’ is used.</p> <p>Otherwise, if the <a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PATHNAME</a> bit is set, assume that this is a normal file and use ‘pathname’ to open it.</p> <p>If the <a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_DRIVER</a> bit is set, <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a> only tries to open the file with the driver whose handler is in ‘driver’.</p> @@ -1725,7 +1725,7 @@ <p>The nominal size. The ‘units_per_EM’ field of <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> is used to determine both scaling values.</p> </td></tr> <tr><td class="val" id="FT_SIZE_REQUEST_TYPE_REAL_DIM">FT_SIZE_REQUEST_TYPE_REAL_DIM</td><td class="desc"> -<p>The real dimension. The sum of the the ‘ascender’ and (minus of) the ‘descender’ fields of <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> are used to determine both scaling values.</p> +<p>The real dimension. The sum of the ‘ascender’ and (minus of) the ‘descender’ fields of <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> are used to determine both scaling values.</p> </td></tr> <tr><td class="val" id="FT_SIZE_REQUEST_TYPE_BBOX">FT_SIZE_REQUEST_TYPE_BBOX</td><td class="desc"> <p>The font bounding box. The width and height of the ‘bbox’ field of <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> are used to determine the horizontal and vertical scaling value, respectively.</p> @@ -1870,6 +1870,7 @@ <h4>note</h4> <p>The loaded glyph may be transformed. See <a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a> for the details.</p> <p>For subsetted CID-keyed fonts, ‘FT_Err_Invalid_Argument’ is returned for invalid CID values (this is, for CID values that don't have a corresponding glyph in the font). See the discussion of the <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a> flag for more details.</p> +<p>If you receive ‘FT_Err_Glyph_Too_Big’, try getting the glyph outline at EM size, then scale it manually and fill it as a graphics operation.</p> <hr> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div> @@ -1935,17 +1936,17 @@ <h4>note</h4> <p>You should use this function with <a href="ft2-base_interface.html#FT_Get_Next_Char">FT_Get_Next_Char</a> to be able to parse all character codes available in a given charmap. The code should look like this:</p> <pre class="colored"> - 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 ); - } + 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 ); + } </pre> <p>Be aware that character codes can have values up to 0xFFFFFFFF; this might happen for non-Unicode or malformed cmaps. However, even with regular Unicode encoding, so-called ‘last resort fonts’ (using SFNT cmap format 13, see function <a href="ft2-truetype_tables.html#FT_Get_CMap_Format">FT_Get_CMap_Format</a>) normally have entries for all Unicode characters up to 0x1FFFFF, which can cause *a lot* of iterations.</p> <p>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.</p> @@ -2104,7 +2105,7 @@ <p>This is relevant because all our screens have a second problem: they are not linear. 1 + 1 is not 2. Twice the value does not result in twice the brightness. When a pixel is only 50% covered, the coverage map says 50% black, and this translates to a pixel value of 128 when you use 8 bits per channel (0-255). However, this does not translate to 50% brightness for that pixel on our sRGB and gamma 2.2 screens. Due to their non-linearity, they dwell longer in the darks and only a pixel value of about 186 results in 50% brightness – 128 ends up too dark on both bright and dark backgrounds. The net result is that dark text looks burnt-out, pixely and blotchy on bright background, bright text too frail on dark backgrounds, and colored text on colored background (for example, red on green) seems to have dark halos or ‘dirt’ around it. The situation is especially ugly for diagonal stems like in ‘w’ glyph shapes where the quality of FreeType's anti-aliasing depends on the correct display of grays. On high-DPI screens where smaller, fully black pixels reign supreme, this doesn't matter, but on our low-DPI screens with all the gray shades, it does. 0% and 100% brightness are the same things in linear and non-linear space, just all the shades in-between aren't.</p> <p>The blending function for placing text over a background is</p> <pre class="colored"> - dst = alpha * src + (1 - alpha) * dst , + dst = alpha * src + (1 - alpha) * dst , </pre> <p>which is known as the OVER operator.</p> <p>To correctly composite an antialiased pixel of a glyph onto a surface,</p> @@ -2341,7 +2342,7 @@ <p>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.</p> <p>The glyph name is truncated to fit within the buffer if it is too long. The returned string is always zero-terminated.</p> <p>Be aware that FreeType reorders glyph indices internally so that glyph index 0 always corresponds to the ‘missing glyph’ (called ‘.notdef’).</p> -<p>This function always returns an error if the config macro ‘FT_CONFIG_OPTION_NO_GLYPH_NAMES’ is not defined in ‘ftoptions.h’.</p> +<p>This function always returns an error if the config macro ‘FT_CONFIG_OPTION_NO_GLYPH_NAMES’ is not defined in ‘ftoption.h’.</p> <hr> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div> @@ -2646,7 +2647,7 @@ <h4>values</h4> <table class="fields"> <tr><td class="val" id="FT_FACE_FLAG_SCALABLE">FT_FACE_FLAG_SCALABLE</td><td class="desc"> -<p>Indicates that the face contains outline glyphs. This doesn't prevent bitmap strikes, i.e., a face can have both this and and <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_SIZES</a> set.</p> +<p>Indicates that the face contains outline glyphs. This doesn't prevent bitmap strikes, i.e., a face can have both this and <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_SIZES</a> set.</p> </td></tr> <tr><td class="val" id="FT_FACE_FLAG_FIXED_SIZES">FT_FACE_FLAG_FIXED_SIZES</td><td class="desc"> <p>Indicates that the face contains bitmap strikes. See also the ‘num_fixed_sizes’ and ‘available_sizes’ fields of <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a>.</p> @@ -2911,7 +2912,7 @@ <h4>note</h4> <p>You should use only <i>one</i> of the FT_LOAD_TARGET_XXX values in your ‘load_flags’. They can't be ORed.</p> -<p>If <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a> is also set, the glyph is rendered in the corresponding mode (i.e., the mode that matches the used algorithm best). An exeption is FT_LOAD_TARGET_MONO since it implies <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_MONOCHROME</a>.</p> +<p>If <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a> is also set, the glyph is rendered in the corresponding mode (i.e., the mode that matches the used algorithm best). An exception is FT_LOAD_TARGET_MONO since it implies <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_MONOCHROME</a>.</p> <p>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</p> <pre class="colored"> FT_Load_Glyph( face, glyph_index, diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-basic_types.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-basic_types.html index efed8debfcc..3c35f250eea 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-basic_types.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-basic_types.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="basic_types">Basic Data Types</h1> <h2>Synopsis</h2> @@ -483,8 +483,8 @@ <p>A simple structure used to store a 2x2 matrix. Coefficients are in 16.16 fixed-point format. The computation performed is:</p> <pre class="colored"> - x' = x*xx + y*xy - y' = x*yx + y*yy + x' = x*xx + y*xy + y' = x*yx + y*yy </pre> <h4>fields</h4> @@ -855,7 +855,7 @@ <h4>note</h4> <p>Since many 16-bit compilers don't like 32-bit enumerations, you should redefine this macro in case of problems to something like this:</p> <pre class="colored"> - #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value + #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value </pre> <p>to get a simple enumeration without assigning special numbers.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bdf_fonts.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bdf_fonts.html index 42179444a3d..f2c510dc6e7 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bdf_fonts.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bdf_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="bdf_fonts">BDF and PCF Files</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bitmap_handling.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bitmap_handling.html index 8ef57f63d06..d0deeec54a9 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bitmap_handling.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bitmap_handling.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="bitmap_handling">Bitmap Handling</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bzip2.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bzip2.html index fd8e9610acf..69e64acef71 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bzip2.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bzip2.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="bzip2">BZIP2 Streams</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cache_subsystem.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cache_subsystem.html index 6f9a93ba1c1..ce55255e593 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cache_subsystem.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cache_subsystem.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="cache_subsystem">Cache Sub-System</h1> <h2>Synopsis</h2> @@ -534,7 +534,7 @@ <p>The corresponding <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> object. 0 in case of failure.</p> </td></tr> <tr><td class="val" id="anode">anode</td><td class="desc"> -<p>Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).</p> +<p>Used to return the address of the corresponding cache node after incrementing its reference count (see note below).</p> </td></tr> </table> @@ -637,7 +637,7 @@ <p>A handle to a small bitmap descriptor.</p> </td></tr> <tr><td class="val" id="anode">anode</td><td class="desc"> -<p>Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).</p> +<p>Used to return the address of the corresponding cache node after incrementing its reference count (see note below).</p> </td></tr> </table> @@ -876,7 +876,7 @@ <p>The corresponding <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> object. 0 in case of failure.</p> </td></tr> <tr><td class="val" id="anode">anode</td><td class="desc"> -<p>Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).</p> +<p>Used to return the address of the corresponding cache node after incrementing its reference count (see note below).</p> </td></tr> </table> @@ -990,7 +990,7 @@ <p>A handle to a small bitmap descriptor.</p> </td></tr> <tr><td class="val" id="anode">anode</td><td class="desc"> -<p>Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).</p> +<p>Used to return the address of the corresponding cache node after incrementing its reference count (see note below).</p> </td></tr> </table> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cff_driver.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cff_driver.html index e6ee81a1f65..6f3e888c49b 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cff_driver.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cff_driver.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,12 +100,12 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="cff_driver">The CFF driver</h1> <h2>Synopsis</h2> <table class="synopsis"> -<tr><td><a href="#hinting-engine">hinting-engine</a></td><td> </td></tr> +<tr><td><a href="#hinting-engine(cff)">hinting-engine</a></td><td> </td></tr> <tr><td><a href="#no-stem-darkening(cff)">no-stem-darkening</a></td><td><a href="#FT_CFF_HINTING_XXX">FT_CFF_HINTING_XXX</a></td></tr> <tr><td><a href="#darkening-parameters(cff)">darkening-parameters</a></td><td></td></tr> </table> @@ -118,12 +118,12 @@ <p>There are two principles behind this approach.</p> <p>1) No hinting in the horizontal direction: Unlike ‘superhinted’ TrueType, which changes glyph widths to accommodate regular inter-glyph spacing, Adobe's approach is ‘faithful to the design’ in representing both the glyph width and the inter-glyph spacing designed for the font. This makes the screen display as close as it can be to the result one would get with infinite resolution, while preserving what is considered the key characteristics of each glyph. Note that the distances between unhinted and grid-fitted positions at small sizes are comparable to kerning values and thus would be noticeable (and distracting) while reading if hinting were applied.</p> <p>One of the reasons to not hint horizontally is antialiasing for LCD screens: The pixel geometry of modern displays supplies three vertical sub-pixels as the eye moves horizontally across each visible pixel. On devices where we can be certain this characteristic is present a rasterizer can take advantage of the sub-pixels to add increments of weight. In Western writing systems this turns out to be the more critical direction anyway; the weights and spacing of vertical stems (see above) are central to Armenian, Cyrillic, Greek, and Latin type designs. Even when the rasterizer uses greyscale antialiasing instead of color (a necessary compromise when one doesn't know the screen characteristics), the unhinted vertical features preserve the design's weight and spacing much better than aliased type would.</p> -<p>2) Aligment in the vertical direction: Weights and spacing along the y axis are less critical; what is much more important is the visual alignment of related features (like cap-height and x-height). The sense of alignment for these is enhanced by the sharpness of grid-fit edges, while the cruder vertical resolution (full pixels instead of 1/3 pixels) is less of a problem.</p> +<p>2) Alignment in the vertical direction: Weights and spacing along the y axis are less critical; what is much more important is the visual alignment of related features (like cap-height and x-height). The sense of alignment for these is enhanced by the sharpness of grid-fit edges, while the cruder vertical resolution (full pixels instead of 1/3 pixels) is less of a problem.</p> <p>On the technical side, horizontal alignment zones for ascender, x-height, and other important height values (traditionally called ‘blue zones’) as defined in the font are positioned independently, each being rounded to the nearest pixel edge, taking care of overshoot suppression at small sizes, stem darkening, and scaling.</p> <p>Hstems (this is, hint values defined in the font to help align horizontal features) that fall within a blue zone are said to be ‘captured’ and are aligned to that zone. Uncaptured stems are moved in one of four ways, top edge up or down, bottom edge up or down. Unless there are conflicting hstems, the smallest movement is taken to minimize distortion.</p> <div class="section"> -<h3 id="hinting-engine">hinting-engine</h3> +<h3 id="hinting-engine(cff)">hinting-engine</h3> <p>Thanks to Adobe, which contributed a new hinting (and parsing) engine, an application can select between ‘freetype’ and ‘adobe’ if compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration macro isn't defined, ‘hinting-engine’ does nothing.</p> <p>The default engine is ‘freetype’ if CFF_CONFIG_OPTION_OLD_ENGINE is defined, and ‘adobe’ otherwise.</p> @@ -207,7 +207,7 @@ #define <a href="ft2-cff_driver.html#FT_CFF_HINTING_ADOBE">FT_CFF_HINTING_ADOBE</a> 1 </pre> -<p>A list of constants used for the <a href="ft2-cff_driver.html#hinting-engine">hinting-engine</a> property to select the hinting engine for CFF fonts.</p> +<p>A list of constants used for the <a href="ft2-cff_driver.html#hinting-engine(cff)">hinting-engine</a> property to select the hinting engine for CFF fonts.</p> <h4>values</h4> <table class="fields"> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cid_fonts.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cid_fonts.html index c40274868e8..3330b76cf37 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cid_fonts.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cid_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="cid_fonts">CID Fonts</h1> <h2>Synopsis</h2> @@ -167,7 +167,7 @@ <a href="ft2-basic_types.html#FT_Bool">FT_Bool</a> *is_cid ); </pre> -<p>Retrieve the type of the input face, CID keyed or not. In constrast to the <a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a> macro this function returns successfully also for CID-keyed fonts in an SNFT wrapper.</p> +<p>Retrieve the type of the input face, CID keyed or not. In contrast to the <a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a> macro this function returns successfully also for CID-keyed fonts in an SFNT wrapper.</p> <h4>input</h4> <table class="fields"> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-computations.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-computations.html index a99ab2dc3f3..285d37faa07 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-computations.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-computations.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="computations">Computations</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_code_values.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_code_values.html index eaf52bbea3c..07fc29e836a 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_code_values.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_code_values.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="error_code_values">Error Code Values</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_enumerations.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_enumerations.html index c2d1ebda433..7af72539ae5 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_enumerations.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_enumerations.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="error_enumerations">Error Enumerations</h1> @@ -111,32 +111,32 @@ <p>Error definitions are set up with special macros that allow client applications to build a table of error message strings. The strings are not included in a normal build of FreeType&nbsp;2 to save space (most client applications do not use them).</p> <p>To do so, you have to define the following macros before including this file.</p> <pre class="colored"> - FT_ERROR_START_LIST + FT_ERROR_START_LIST </pre> <p>This macro is called before anything else to define the start of the error list. It is followed by several FT_ERROR_DEF calls.</p> <pre class="colored"> - FT_ERROR_DEF( e, v, s ) + FT_ERROR_DEF( e, v, s ) </pre> <p>This macro is called to define one single error. ‘e’ is the error code identifier (e.g., ‘Invalid_Argument’), ‘v’ is the error's numerical value, and ‘s’ is the corresponding error string.</p> <pre class="colored"> - FT_ERROR_END_LIST + FT_ERROR_END_LIST </pre> <p>This macro ends the list.</p> <p>Additionally, you have to undefine ‘FTERRORS_H_’ before #including this file.</p> <p>Here is a simple example.</p> <pre class="colored"> - #undef FTERRORS_H_ - #define FT_ERRORDEF( e, v, s ) { e, s }, - #define FT_ERROR_START_LIST { - #define FT_ERROR_END_LIST { 0, NULL } }; - - const struct - { - int err_code; - const char* err_msg; - } ft_errors[] = - - #include FT_ERRORS_H + #undef FTERRORS_H_ + #define FT_ERRORDEF( e, v, s ) { e, s }, + #define FT_ERROR_START_LIST { + #define FT_ERROR_END_LIST { 0, NULL } }; + + const struct + { + int err_code; + const char* err_msg; + } ft_errors[] = + + #include FT_ERRORS_H </pre> <p>Note that ‘FT_Err_Ok’ is <i>not</i> defined with ‘FT_ERRORDEF’ but with ‘FT_NOERRORDEF’; it is always zero.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-font_formats.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-font_formats.html index c1552f58e96..3b4a1764468 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-font_formats.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-font_formats.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="font_formats">Font Formats</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gasp_table.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gasp_table.html index 19d94ebc544..dc3959ddf70 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gasp_table.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gasp_table.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="gasp_table">Gasp Table</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_management.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_management.html index cf0fb0b8a16..30f789f60a4 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_management.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_management.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="glyph_management">Glyph Management</h1> <h2>Synopsis</h2> @@ -444,15 +444,15 @@ <p>If the font is tricky and the glyph has been loaded with <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_SCALE</a>, the resulting CBox is meaningless. To get reasonable values for the CBox it is necessary to load the glyph at a large ppem value (so that the hinting instructions can properly shift and scale the subglyphs), then extracting the CBox, which can be eventually converted back to font units.</p> <p>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:</p> <pre class="colored"> - width = bbox.xMax - bbox.xMin; - height = bbox.yMax - bbox.yMin; + width = bbox.xMax - bbox.xMin; + height = bbox.yMax - bbox.yMin; </pre> <p>Note also that for 26.6 coordinates, if ‘bbox_mode’ is set to <a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_GRIDFIT</a>, the coordinates will also be grid-fitted, which corresponds to:</p> <pre class="colored"> - bbox.xMin = FLOOR(bbox.xMin); - bbox.yMin = FLOOR(bbox.yMin); - bbox.xMax = CEILING(bbox.xMax); - bbox.yMax = CEILING(bbox.yMax); + bbox.xMin = FLOOR(bbox.xMin); + bbox.yMin = FLOOR(bbox.yMin); + bbox.xMax = CEILING(bbox.xMax); + bbox.yMax = CEILING(bbox.yMax); </pre> <p>To get the bbox in pixel coordinates, set ‘bbox_mode’ to <a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_TRUNCATE</a>.</p> <p>To get the bbox in grid-fitted pixel coordinates, set ‘bbox_mode’ to <a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_PIXELS</a>.</p> @@ -502,69 +502,69 @@ <p>The first parameter is a pointer to an <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> handle, that will be <i>replaced</i> by this function (with newly allocated data). Typically, you would use (omitting error handling):</p> <p></p> <pre class="colored"> - 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_NORMAL, - 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 ); + 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_NORMAL, + 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 ); </pre> <p></p> <p>Here another example, again without error handling:</p> <p></p> <pre class="colored"> - 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] ); + 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] ); </pre> <hr> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_stroker.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_stroker.html index eded39add16..06b59185f70 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_stroker.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_stroker.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="glyph_stroker">Glyph Stroker</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_variants.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_variants.html index 3d61543190f..01ff331234b 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_variants.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_variants.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="glyph_variants">Glyph Variants</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gx_validation.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gx_validation.html index ffc68008811..f2dfb018e37 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gx_validation.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gx_validation.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="gx_validation">TrueTypeGX/AAT Validation</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gzip.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gzip.html index 54eb0e61e14..4146419ba2e 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gzip.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gzip.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="gzip">GZIP Streams</h1> <h2>Synopsis</h2> @@ -182,7 +182,7 @@ <h4>inout</h4> <table class="fields"> <tr><td class="val" id="output_len">output_len</td><td class="desc"> -<p>Before calling the function, this is the the total size of the output buffer, which must be large enough to hold the entire uncompressed data (so the size of the uncompressed data must be known in advance). After calling the function, ‘output_len’ is the size of the used data in ‘output’.</p> +<p>Before calling the function, this is the total size of the output buffer, which must be large enough to hold the entire uncompressed data (so the size of the uncompressed data must be known in advance). After calling the function, ‘output_len’ is the size of the used data in ‘output’.</p> </td></tr> </table> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_file_macros.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_file_macros.html index 107174d5a41..d368af7cc77 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_file_macros.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_file_macros.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="header_file_macros">Header File Macros</h1> <h2>Synopsis</h2> @@ -135,9 +135,9 @@ <p>The following macros are defined to the name of specific FreeType 2 header files. They can be used directly in #include statements as in:</p> <pre class="colored"> - #include FT_FREETYPE_H - #include FT_MULTIPLE_MASTERS_H - #include FT_GLYPH_H + #include FT_FREETYPE_H + #include FT_MULTIPLE_MASTERS_H + #include FT_GLYPH_H </pre> <p>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’).</p> <p>The second reason is that it allows for more flexibility in the way FreeType 2 is installed on a given system.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_inclusion.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_inclusion.html index 87bd4a7293b..2d2f2c9848b 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_inclusion.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_inclusion.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,16 +100,16 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="header_inclusion">FreeType's header inclusion scheme</h1> <p>To be as flexible as possible (and for historical reasons), FreeType uses a very special inclusion scheme to load header files, for example</p> <pre class="colored"> - #include <ft2build.h> - - #include FT_FREETYPE_H - #include FT_OUTLINE_H + #include <ft2build.h> + + #include FT_FREETYPE_H + #include FT_OUTLINE_H </pre> <p>A compiler and its preprocessor only needs an include path to find the file ‘ft2build.h’; the exact locations and names of the other FreeType header files are hidden by preprocessor macro names, loaded by ‘ft2build.h’. The API documentation always gives the header macro name needed for a particular function.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-incremental.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-incremental.html index 3678734134d..7d0216e8a73 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-incremental.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-incremental.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="incremental">Incremental Loading</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-index.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-index.html index be34ed22a17..05a02fb61cd 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-index.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-index.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <table class="index"> <tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-base_interface.html#FT_Library">FT_Library</a></td><td><a href="ft2-header_file_macros.html#FT_SYNTHESIS_H">FT_SYNTHESIS_H</a></td></tr> @@ -216,7 +216,7 @@ <tr><td><a href="ft2-basic_types.html#FT_F26Dot6">FT_F26Dot6</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Embolden">FT_Outline_Embolden</a></td><td><a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</a></td></tr> <tr><td><a href="ft2-basic_types.html#FT_F2Dot14">FT_F2Dot14</a></td><td><a href="ft2-outline_processing.html#FT_Outline_EmboldenXY">FT_Outline_EmboldenXY</a></td><td><a href="ft2-auto_hinter.html#fallback-script">fallback-script</a></td></tr> <tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Funcs">FT_Outline_Funcs</a></td><td><a href="ft2-auto_hinter.html#glyph-to-script-map">glyph-to-script-map</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_COLOR</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a></td><td><a href="ft2-cff_driver.html#hinting-engine">hinting-engine</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_COLOR</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a></td><td><a href="ft2-cff_driver.html#hinting-engine(cff)">hinting-engine (cff)</a></td></tr> <tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_EXTERNAL_STREAM</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Bitmap">FT_Outline_Get_Bitmap</a></td><td><a href="ft2-auto_hinter.html#increase-x-height">increase-x-height</a></td></tr> <tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FAST_GLYPHS</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_CBox">FT_Outline_Get_CBox</a></td><td><a href="ft2-tt_driver.html#interpreter-version">interpreter-version</a></td></tr> <tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_SIZES</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Orientation">FT_Outline_Get_Orientation</a></td><td><a href="ft2-auto_hinter.html#no-stem-darkening(autofit)">no-stem-darkening (autofit)</a></td></tr> @@ -311,73 +311,73 @@ <tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_UNSCALED</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_BBOX</a></td><td><a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</a></td></tr> <tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_CELL</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_35</a></td></tr> <tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_NOMINAL</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_38</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_NONE</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_REAL_DIM</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_XXX</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_SCALES</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_10646</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_PLOTTER</a></td><td><a href="ft2-header_file_macros.html#FT_SIZES_H">FT_SIZES_H</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_7BIT_ASCII</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_8859_1</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a></td><td><a href="ft2-base_interface.html#FT_Size">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_XXX</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_Glyph_BBox_Mode</a></td><td><a href="ft2-base_interface.html#FT_Size_Internal">FT_Size_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-base_interface.html#FT_Size_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARMENIAN</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-base_interface.html#FT_Size_Request">FT_Size_Request</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BENGALI</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Get_CBox">FT_Glyph_Get_CBox</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BURMESE</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_DEVANAGARI</a></td></tr> -<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</a></td><td><a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEEZ</a></td></tr> -<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_StrokeBorder">FT_Glyph_StrokeBorder</a></td><td><a href="ft2-base_interface.html#FT_Slot_Internal">FT_Slot_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEORGIAN</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</a></td><td><a href="ft2-raster.html#FT_Span">FT_Span</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GREEK</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Transform">FT_Glyph_Transform</a></td><td><a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GUJARATI</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_LEFT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GURMUKHI</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_HEBREW</a></td></tr> -<tr><td><a href="ft2-bitmap_handling.html#FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a></td><td><a href="ft2-header_file_macros.html#FT_STROKER_H">FT_STROKER_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_JAPANESE</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_BUTT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KANNADA</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KHMER</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_GZIP_H">FT_GZIP_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_SQUARE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KOREAN</a></td></tr> -<tr><td><a href="ft2-gzip.html#FT_Gzip_Uncompress">FT_Gzip_Uncompress</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_BEVEL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_LAOTIAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_COLOR">FT_HAS_COLOR</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALAYALAM</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_FIXED</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALDIVIAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_VARIABLE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MONGOLIAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ORIYA</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_BOLD</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_ITALIC</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RSYMBOL</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_MULTIPLE_MASTERS">FT_HAS_MULTIPLE_MASTERS</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RUSSIAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td><a href="ft2-system_interface.html#FT_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SIMPLIFIED_CHINESE</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#FT_Has_PS_Glyph_Names">FT_Has_PS_Glyph_Names</a></td><td><a href="ft2-system_interface.html#FT_Stream_CloseFunc">FT_Stream_CloseFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINDHI</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</a></td><td><a href="ft2-system_interface.html#FT_Stream_IoFunc">FT_Stream_IoFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINHALESE</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_IMAGE_TAG">FT_IMAGE_TAG</a></td><td><a href="ft2-bzip2.html#FT_Stream_OpenBzip2">FT_Stream_OpenBzip2</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SLAVIC</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TAMIL</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental">FT_Incremental</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TELUGU</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_THAI</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TIBETAN</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TRADITIONAL_CHINESE</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_UNINTERP</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_VIETNAMESE</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_XXX</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_Metrics">FT_Incremental_Metrics</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_CubicTo">FT_Stroker_CubicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Done">FT_Stroker_Done</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_BIG_5</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_GB2312</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_JOHAB</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SJIS</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SYMBOL_CS</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Int64">FT_Int64</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetCounts">FT_Stroker_GetCounts</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UCS_4</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_Stroker_LineCap</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UNICODE_CS</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_WANSUNG</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineTo">FT_Stroker_LineTo</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_SFNT">FT_IS_SFNT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_New">FT_Stroker_New</a></td><td><a href="ft2-truetype_tables.html#TT_OS2">TT_OS2</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_TRICKY">FT_IS_TRICKY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ParseOutline">FT_Stroker_ParseOutline</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ADOBE</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Set">FT_Stroker_Set</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_2X2</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MICROSOFT</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_XXX</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY1</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_SCALE</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LIGHT</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_USE_MY_METRICS</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_NONE</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td><td><a href="ft2-auto_hinter.html#warping">warping</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XY_SCALE</a></td><td></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_NONE</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_REAL_DIM</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_40</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_SCALES</a></td><td><a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_XXX</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_PLOTTER</a></td><td><a href="ft2-header_file_macros.html#FT_SIZES_H">FT_SIZES_H</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_10646</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_7BIT_ASCII</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a></td><td><a href="ft2-base_interface.html#FT_Size">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_8859_1</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_Glyph_BBox_Mode</a></td><td><a href="ft2-base_interface.html#FT_Size_Internal">FT_Size_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_XXX</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-base_interface.html#FT_Size_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-base_interface.html#FT_Size_Request">FT_Size_Request</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARMENIAN</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Get_CBox">FT_Glyph_Get_CBox</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BENGALI</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BURMESE</a></td></tr> +<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</a></td><td><a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_DEVANAGARI</a></td></tr> +<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_StrokeBorder">FT_Glyph_StrokeBorder</a></td><td><a href="ft2-base_interface.html#FT_Slot_Internal">FT_Slot_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEEZ</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</a></td><td><a href="ft2-raster.html#FT_Span">FT_Span</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEORGIAN</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Transform">FT_Glyph_Transform</a></td><td><a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GREEK</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_LEFT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GUJARATI</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GURMUKHI</a></td></tr> +<tr><td><a href="ft2-bitmap_handling.html#FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a></td><td><a href="ft2-header_file_macros.html#FT_STROKER_H">FT_STROKER_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_HEBREW</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_BUTT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_JAPANESE</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KANNADA</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_GZIP_H">FT_GZIP_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_SQUARE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KHMER</a></td></tr> +<tr><td><a href="ft2-gzip.html#FT_Gzip_Uncompress">FT_Gzip_Uncompress</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_BEVEL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KOREAN</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_COLOR">FT_HAS_COLOR</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_LAOTIAN</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_FIXED</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALAYALAM</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER_VARIABLE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALDIVIAN</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MONGOLIAN</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_BOLD</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ORIYA</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_ITALIC</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_MULTIPLE_MASTERS">FT_HAS_MULTIPLE_MASTERS</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RSYMBOL</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td><a href="ft2-system_interface.html#FT_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RUSSIAN</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#FT_Has_PS_Glyph_Names">FT_Has_PS_Glyph_Names</a></td><td><a href="ft2-system_interface.html#FT_Stream_CloseFunc">FT_Stream_CloseFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SIMPLIFIED_CHINESE</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</a></td><td><a href="ft2-system_interface.html#FT_Stream_IoFunc">FT_Stream_IoFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINDHI</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_IMAGE_TAG">FT_IMAGE_TAG</a></td><td><a href="ft2-bzip2.html#FT_Stream_OpenBzip2">FT_Stream_OpenBzip2</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINHALESE</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SLAVIC</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental">FT_Incremental</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TAMIL</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TELUGU</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_THAI</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TIBETAN</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TRADITIONAL_CHINESE</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_UNINTERP</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_VIETNAMESE</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_Metrics">FT_Incremental_Metrics</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_CubicTo">FT_Stroker_CubicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_XXX</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Done">FT_Stroker_Done</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_BIG_5</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_GB2312</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_JOHAB</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SJIS</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Int64">FT_Int64</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetCounts">FT_Stroker_GetCounts</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SYMBOL_CS</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_Stroker_LineCap</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UCS_4</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UNICODE_CS</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineTo">FT_Stroker_LineTo</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_WANSUNG</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_SFNT">FT_IS_SFNT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_New">FT_Stroker_New</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_TRICKY">FT_IS_TRICKY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ParseOutline">FT_Stroker_ParseOutline</a></td><td><a href="ft2-truetype_tables.html#TT_OS2">TT_OS2</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Set">FT_Stroker_Set</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ADOBE</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_2X2</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MICROSOFT</a></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY1</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_SCALE</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_XXX</a></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LIGHT</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_USE_MY_METRICS</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_NONE</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XY_SCALE</a></td><td><a href="ft2-auto_hinter.html#warping">warping</a></td></tr> <tr><td><a href="ft2-header_file_macros.html#FT_LIST_H">FT_LIST_H</a></td><td><a href="ft2-base_interface.html#FT_SubGlyph">FT_SubGlyph</a></td><td></td></tr> </table> <hr> <table class="index-toc-link"><tr><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<div class="timestamp">generated on Mon Feb 8 23:35:23 2016</div></body> +<div class="timestamp">generated on Tue Jul 5 17:05:26 2016</div></body> </html> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lcd_filtering.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lcd_filtering.html index b7addc4f53a..00bfe363b1c 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lcd_filtering.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lcd_filtering.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="lcd_filtering">LCD Filtering</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-list_processing.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-list_processing.html index 3ad7fe5ae3d..efdf798da18 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-list_processing.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-list_processing.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="list_processing">List Processing</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lzw.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lzw.html index 24b05cffe64..724f98c8fde 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lzw.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lzw.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="lzw">LZW Streams</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-mac_specific.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-mac_specific.html index 667ad763ae4..8374afa8ab7 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-mac_specific.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-mac_specific.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="mac_specific">Mac Specific Interface</h1> <h2>Synopsis</h2> @@ -157,8 +157,8 @@ <h4>notes</h4> <p>This function can be used to create <a href="ft2-base_interface.html#FT_Face">FT_Face</a> objects from fonts that are installed in the system as follows.</p> <pre class="colored"> - fond = GetResource( 'FOND', fontName ); - error = FT_New_Face_From_FOND( library, fond, 0, &face ); + fond = GetResource( 'FOND', fontName ); + error = FT_New_Face_From_FOND( library, fond, 0, &face ); </pre> <hr> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-module_management.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-module_management.html index 8135420091c..dead6697a4c 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-module_management.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-module_management.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="module_management">Module Management</h1> <h2>Synopsis</h2> @@ -120,24 +120,24 @@ <p>The definitions below are used to manage modules within FreeType. Modules can be added, upgraded, and removed at runtime. Additionally, some module properties can be controlled also.</p> <p>Here is a list of possible values of the ‘module_name’ field in the <a href="ft2-module_management.html#FT_Module_Class">FT_Module_Class</a> structure.</p> <pre class="colored"> - autofitter - bdf - cff - gxvalid - otvalid - pcf - pfr - psaux - pshinter - psnames - raster1 - sfnt - smooth, smooth-lcd, smooth-lcdv - truetype - type1 - type42 - t1cid - winfonts + autofitter + bdf + cff + gxvalid + otvalid + pcf + pfr + psaux + pshinter + psnames + raster1 + sfnt + smooth, smooth-lcd, smooth-lcdv + truetype + type1 + type42 + t1cid + winfonts </pre> <p>Note that the FreeType Cache sub-system is not a FreeType module.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-multiple_masters.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-multiple_masters.html index 4227553273d..bf5a62e6365 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-multiple_masters.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-multiple_masters.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="multiple_masters">Multiple Masters</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-ot_validation.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-ot_validation.html index fe24b06eb02..996a2aeb180 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-ot_validation.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-ot_validation.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="ot_validation">OpenType Validation</h1> <h2>Synopsis</h2> @@ -205,12 +205,12 @@ #define <a href="ft2-ot_validation.html#FT_VALIDATE_JSTF">FT_VALIDATE_JSTF</a> 0x1000 #define <a href="ft2-ot_validation.html#FT_VALIDATE_MATH">FT_VALIDATE_MATH</a> 0x2000 -#define <a href="ft2-ot_validation.html#FT_VALIDATE_OT">FT_VALIDATE_OT</a> <a href="ft2-ot_validation.html#FT_VALIDATE_BASE">FT_VALIDATE_BASE</a> | \ - <a href="ft2-ot_validation.html#FT_VALIDATE_GDEF">FT_VALIDATE_GDEF</a> | \ - <a href="ft2-ot_validation.html#FT_VALIDATE_GPOS">FT_VALIDATE_GPOS</a> | \ - <a href="ft2-ot_validation.html#FT_VALIDATE_GSUB">FT_VALIDATE_GSUB</a> | \ - <a href="ft2-ot_validation.html#FT_VALIDATE_JSTF">FT_VALIDATE_JSTF</a> | \ - <a href="ft2-ot_validation.html#FT_VALIDATE_MATH">FT_VALIDATE_MATH</a> +#define <a href="ft2-ot_validation.html#FT_VALIDATE_OT">FT_VALIDATE_OT</a> ( <a href="ft2-ot_validation.html#FT_VALIDATE_BASE">FT_VALIDATE_BASE</a> | \ + <a href="ft2-ot_validation.html#FT_VALIDATE_GDEF">FT_VALIDATE_GDEF</a> | \ + <a href="ft2-ot_validation.html#FT_VALIDATE_GPOS">FT_VALIDATE_GPOS</a> | \ + <a href="ft2-ot_validation.html#FT_VALIDATE_GSUB">FT_VALIDATE_GSUB</a> | \ + <a href="ft2-ot_validation.html#FT_VALIDATE_JSTF">FT_VALIDATE_JSTF</a> | \ + <a href="ft2-ot_validation.html#FT_VALIDATE_MATH">FT_VALIDATE_MATH</a> ) </pre> <p>A list of bit-field constants used with <a href="ft2-ot_validation.html#FT_OpenType_Validate">FT_OpenType_Validate</a> to indicate which OpenType tables should be validated.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-outline_processing.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-outline_processing.html index 455acfcb5e4..986baf48c3f 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-outline_processing.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-outline_processing.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="outline_processing">Outline Processing</h1> <h2>Synopsis</h2> @@ -389,9 +389,9 @@ <p>If you need ‘better’ metrics values you should call <a href="ft2-outline_processing.html#FT_Outline_Get_CBox">FT_Outline_Get_CBox</a> or <a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a>.</p> <p>Example call:</p> <pre class="colored"> - FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); - if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) - FT_Outline_Embolden( &face->glyph->outline, strength ); + FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); + if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) + FT_Outline_Embolden( &face->glyph->outline, strength ); </pre> <p>To get meaningful results, font scaling values must be set with functions like <a href="ft2-base_interface.html#FT_Set_Char_Size">FT_Set_Char_Size</a> before calling FT_Render_Glyph.</p> @@ -688,8 +688,8 @@ <h4>note</h4> <p>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:</p> <pre class="colored"> - x' = (x << shift) - delta - y' = (x << shift) - delta + x' = (x << shift) - delta + y' = (x << shift) - delta </pre> <p>Set the values of ‘shift’ and ‘delta’ to 0 to get the original point coordinates.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-pfr_fonts.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-pfr_fonts.html index 74d6765a45c..4ba3a65986e 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-pfr_fonts.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-pfr_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="pfr_fonts">PFR Fonts</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-quick_advance.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-quick_advance.html index eb884b919c3..de31b7a7baf 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-quick_advance.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-quick_advance.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="quick_advance">Quick retrieval of advance values</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-raster.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-raster.html index 0bed325bfad..968e27018c1 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-raster.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-raster.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="raster">Scanline Converter</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sfnt_names.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sfnt_names.html index 0ef016f8ecb..a271b22a5c7 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sfnt_names.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sfnt_names.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="sfnt_names">SFNT Names</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sizes_management.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sizes_management.html index 7cb07596319..44f541d3e05 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sizes_management.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sizes_management.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="sizes_management">Size Management</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-system_interface.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-system_interface.html index f84b09aca42..6cfcd2a579c 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-system_interface.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-system_interface.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="system_interface">System Interface</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-toc.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-toc.html index f8ba0887614..55372f096ec 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-toc.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-toc.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1>Table of Contents</h1> <div class="section"> @@ -277,5 +277,5 @@ <hr> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td></tr></table> -<div class="timestamp">generated on Mon Feb 8 23:35:23 2016</div></body> +<div class="timestamp">generated on Tue Jul 5 17:05:26 2016</div></body> </html> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_engine.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_engine.html index 55210321689..bb5a2163591 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_engine.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_engine.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="truetype_engine">The TrueType Engine</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_tables.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_tables.html index 14140f4ec83..80923e4ea10 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_tables.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_tables.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="truetype_tables">TrueType Tables</h1> <h2>Synopsis</h2> @@ -610,7 +610,7 @@ <p>To access the font's <a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</a> structure.</p> </td></tr> <tr><td class="val" id="FT_SFNT_VHEA">FT_SFNT_VHEA</td><td class="desc"> -<p>To access the font's <a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a> struture.</p> +<p>To access the font's <a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a> structure.</p> </td></tr> <tr><td class="val" id="FT_SFNT_POST">FT_SFNT_POST</td><td class="desc"> <p>To access the font's <a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a> structure.</p> @@ -653,11 +653,11 @@ <p>This function is only useful to access SFNT tables that are loaded by the sfnt, truetype, and opentype drivers. See <a href="ft2-truetype_tables.html#FT_Sfnt_Tag">FT_Sfnt_Tag</a> for a list.</p> <p>Here an example how to access the ‘vhea’ table:</p> <pre class="colored"> - TT_VertHeader* vert_header; - - - vert_header = - (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); + TT_VertHeader* vert_header; + + + vert_header = + (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); </pre> <hr> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-tt_driver.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-tt_driver.html index 0fe990973f3..be70ed99bbd 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-tt_driver.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-tt_driver.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="tt_driver">The TrueType driver</h1> <h2>Synopsis</h2> @@ -129,27 +129,52 @@ <div class="section"> <h3 id="interpreter-version">interpreter-version</h3> - -<p>Currently, two versions are available, representing the bytecode interpreter with and without subpixel hinting support, respectively. The default is subpixel support if TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel support otherwise (since it isn't available then).</p> -<p>If subpixel hinting is on, many TrueType bytecode instructions behave differently compared to B/W or grayscale rendering (except if ‘native ClearType’ is selected by the font). The main idea is to render at a much increased horizontal resolution, then sampling down the created output to subpixel precision. However, many older fonts are not suited to this and must be specially taken care of by applying (hardcoded) font-specific tweaks.</p> -<p>Details on subpixel hinting and some of the necessary tweaks can be found in Greg Hitchcock's whitepaper at ‘<a href="http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx">http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx</a>’.</p> -<p>The following example code demonstrates how to activate subpixel hinting (omitting the error handling).</p> -<pre class="colored"> - FT_Library library; - FT_Face face; - FT_UInt interpreter_version = TT_INTERPRETER_VERSION_38; - - - FT_Init_FreeType( &library ); - - FT_Property_Set( library, "truetype", - "interpreter-version", - &interpreter_version ); +<p>Defined in FT_TRUETYPE_DRIVER_H (freetype/ftttdrv.h).</p> +<pre> + * Currently, three versions are available, two representing the + * bytecode interpreter with subpixel hinting support (old `Infinality' + * code and new stripped-down and higher performance `minimal' code) and + * one without, respectively. The default is subpixel support if + * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel support + * otherwise (since it isn't available then). + * + * If subpixel hinting is on, many TrueType bytecode instructions behave + * differently compared to B/W or grayscale rendering (except if `native + * ClearType' is selected by the font). Microsoft's main idea is to + * render at a much increased horizontal resolution, then sampling down + * the created output to subpixel precision. However, many older fonts + * are not suited to this and must be specially taken care of by + * applying (hardcoded) tweaks in Microsoft's interpreter. + * + * Details on subpixel hinting and some of the necessary tweaks can be + * found in Greg Hitchcock's whitepaper at + * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * Note that FreeType currently doesn't really `subpixel hint' (6x1, 6x2, + * or 6x5 supersampling) like discussed in the paper. Depending on the + * chosen interpreter, it simply ignores instructions on vertical stems + * to arrive at very similar results. + * + * The following example code demonstrates how to deactivate subpixel + * hinting (omitting the error handling). + * + * { + * <a href="ft2-base_interface.html#FT_Library">FT_Library</a> library; + * <a href="ft2-base_interface.html#FT_Face">FT_Face</a> face; + * <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> interpreter_version = <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_35">TT_INTERPRETER_VERSION_35</a>; + * + * + * <a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a>( &library ); + * + * <a href="ft2-module_management.html#FT_Property_Set">FT_Property_Set</a>( library, "truetype", + * "interpreter-version", + * &interpreter_version ); + * } + * + * @note: + * This property can be used with @<a href="ft2-module_management.html#FT_Property_Get">FT_Property_Get</a> also. + * + */ </pre> - -<h4>note</h4> -<p>This property can be used with <a href="ft2-module_management.html#FT_Property_Get">FT_Property_Get</a> also.</p> - <hr> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div> @@ -159,6 +184,7 @@ <pre> #define <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_35">TT_INTERPRETER_VERSION_35</a> 35 #define <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_38">TT_INTERPRETER_VERSION_38</a> 38 +#define <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_40">TT_INTERPRETER_VERSION_40</a> 40 </pre> <p>A list of constants used for the <a href="ft2-tt_driver.html#interpreter-version">interpreter-version</a> property to select the hinting engine for Truetype fonts.</p> @@ -170,13 +196,16 @@ <p>Version 35 corresponds to MS rasterizer v.1.7 as used e.g. in Windows 98; only grayscale and B/W rasterizing is supported.</p> </td></tr> <tr><td class="val" id="TT_INTERPRETER_VERSION_38">TT_INTERPRETER_VERSION_38</td><td class="desc"> -<p>Version 38 corresponds to MS rasterizer v.1.9; it is roughly equivalent to the hinting provided by DirectWrite ClearType (as can be found, for example, in the Internet Explorer 9 running on Windows 7).</p> +<p>Version 38 corresponds to MS rasterizer v.1.9; it is roughly equivalent to the hinting provided by DirectWrite ClearType (as can be found, for example, in the Internet Explorer 9 running on Windows 7). It is used in FreeType to select the ‘Infinality’ subpixel hinting code. The code may be removed in a future version.</p> +</td></tr> +<tr><td class="val" id="TT_INTERPRETER_VERSION_40">TT_INTERPRETER_VERSION_40</td><td class="desc"> +<p>Version 40 corresponds to MS rasterizer v.2.1; it is roughly equivalent to the hinting provided by DirectWrite ClearType (as can be found, for example, in Microsoft's Edge Browser on Windows 10). It is used in FreeType to select the ‘minimal’ subpixel hinting code, a stripped-down and higher performance version of the ‘Infinality’ code.</p> </td></tr> </table> <h4>note</h4> <p>This property controls the behaviour of the bytecode interpreter and thus how outlines get hinted. It does <b>not</b> control how glyph get rasterized! In particular, it does not control subpixel color filtering.</p> -<p>If FreeType has not been compiled with configuration option FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version 38 causes an ‘FT_Err_Unimplemented_Feature’ error.</p> +<p>If FreeType has not been compiled with the configuration option FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version 38 or 40 causes an ‘FT_Err_Unimplemented_Feature’ error.</p> <p>Depending on the graphics framework, Microsoft uses different bytecode and rendering engines. As a consequence, the version numbers returned by a call to the ‘GETINFO’ bytecode instruction are more convoluted than desired.</p> <p>Here are two tables that try to shed some light on the possible values for the MS rasterizer engine, together with the additional features introduced by it.</p> <pre class="colored"> @@ -218,7 +247,7 @@ <p>Color and Gray ClearType are the two available variants of ‘Y-direction ClearType’, meaning grayscale rasterization along the Y-direction; the name used in the TrueType specification for this feature is ‘symmetric smoothing’. ‘Classic ClearType’ is the original algorithm used before introducing a modified version in Win XP. Another name for v1.6's grayscale rendering is ‘font smoothing’, and ‘Color ClearType’ is sometimes also called ‘DWrite ClearType’. To differentiate between today's Color ClearType and the earlier ClearType variant with B/W rendering along the vertical axis, the latter is sometimes called ‘GDI ClearType’.</p> <p>‘Normal’ and ‘high’ sampling describe the (virtual) resolution to access the rasterized outline after the hinting process. ‘Normal’ means 1 sample per grid line (i.e., B/W). In the current Microsoft implementation, ‘high’ means an extra virtual resolution of 16x16 (or 16x1) grid lines per pixel for bytecode instructions like ‘MIRP’. After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid lines for color filtering if Color ClearType is activated.</p> <p>Note that ‘Gray ClearType’ is essentially the same as v1.6's grayscale rendering. However, the GETINFO instruction handles it differently: v1.6 returns bit 12 (hinting for grayscale), while v2.1 returns bits 13 (hinting for ClearType), 18 (symmetrical smoothing), and 19 (Gray ClearType). Also, this mode respects bits 2 and 3 for the version 1 gasp table exclusively (like Color ClearType), while v1.6 only respects the values of version 0 (bits 0 and 1).</p> -<p>FreeType doesn't provide all capabilities of the most recent ClearType incarnation, thus we identify our subpixel support as version 38.</p> +<p>Keep in mind that the features of the above interpreter versions might not map exactly to FreeType features or behavior because it is a fundamentally different library with different internals.</p> <hr> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-type1_tables.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-type1_tables.html index 7f31f26d6d7..36bdba4d354 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-type1_tables.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-type1_tables.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="type1_tables">Type 1 Tables</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-user_allocation.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-user_allocation.html index f2f32ee9b0d..ddc9c68f450 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-user_allocation.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-user_allocation.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="user_allocation">User allocation</h1> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-version.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-version.html index f77a62f80e3..883e8291bd3 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-version.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-version.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="version">FreeType Version</h1> <h2>Synopsis</h2> @@ -223,7 +223,7 @@ <pre> #define <a href="ft2-version.html#FREETYPE_MAJOR">FREETYPE_MAJOR</a> 2 #define <a href="ft2-version.html#FREETYPE_MINOR">FREETYPE_MINOR</a> 6 -#define <a href="ft2-version.html#FREETYPE_PATCH">FREETYPE_PATCH</a> 3 +#define <a href="ft2-version.html#FREETYPE_PATCH">FREETYPE_PATCH</a> 4 </pre> <p>These three macros identify the FreeType source code version. Use <a href="ft2-version.html#FT_Library_Version">FT_Library_Version</a> to access them at runtime.</p> diff --git a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-winfnt_fonts.html b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-winfnt_fonts.html index dc1c3e5d9ed..f7dad8c5fe0 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-winfnt_fonts.html +++ b/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-winfnt_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.6.3 API Reference</title> +<title>FreeType-2.6.4 API Reference</title> <style type="text/css"> a:link { color: #0000EF; } a:visited { color: #51188E; } @@ -100,7 +100,7 @@ <body> <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> -<h1>FreeType-2.6.3 API Reference</h1> +<h1>FreeType-2.6.4 API Reference</h1> <h1 id="winfnt_fonts">Window FNT Files</h1> <h2>Synopsis</h2> diff --git a/Build/source/libs/freetype2/freetype-src/docs/release b/Build/source/libs/freetype2/freetype-src/docs/release index 3d66762e054..fc03a50b271 100644 --- a/Build/source/libs/freetype2/freetype-src/docs/release +++ b/Build/source/libs/freetype2/freetype-src/docs/release @@ -13,7 +13,7 @@ How to prepare a new release . README: Update. -. docs/VERSION.DLL: Document changed `version_info'. +. docs/VERSIONS.TXT: Document changed `version_info'. . ChangeLog: Announce new release (both in the freetype2 and freetype2-demos modules). diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h index a8097feb0a6..7dd3f55e572 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h @@ -586,23 +586,53 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ - /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ - /* replaces the native TrueType hinting mechanism when anything but */ - /* FT_RENDER_MODE_MONO is requested. */ + /* subpixel hinting support into the TrueType driver. This modifies the */ + /* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is */ + /* requested. */ /* */ - /* Enabling this causes the TrueType driver to ignore instructions under */ - /* certain conditions. This is done in accordance with the guide here, */ - /* with some minor differences: */ + /* In particular, it modifies the bytecode interpreter to interpret (or */ + /* not) instructions in a certain way so that all TrueType fonts look */ + /* like they do in a Windows ClearType (DirectWrite) environment. See */ + /* [1] for a technical overview on what this means. See `ttinterp.h' */ + /* for more details on the LEAN option. */ /* */ - /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* There are three options. */ /* */ - /* By undefining this, you only compile the code necessary to hint */ - /* TrueType glyphs with native TT hinting. */ + /* 1. This option is associated with the `Infinality' moniker. */ + /* Contributed by an individual nicknamed Infinality with the goal of */ + /* making TrueType fonts render better than on Windows. A high */ + /* amount of configurability and flexibility, down to rules for */ + /* single glyphs in fonts, but also very slow. Its experimental and */ + /* slow nature and the original developer losing interest meant that */ + /* this option was never enabled in default builds. */ /* */ - /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ - /* defined. */ + /* 2. The new default mode for the TrueType driver. The Infinality code */ + /* base was stripped to the bare minimum and all configurability */ + /* removed in the name of speed and simplicity. The configurability */ + /* was mainly aimed at legacy fonts like Arial, Times New Roman, or */ + /* Courier. Legacy fonts are fonts that modify vertical stems to */ + /* achieve clean black-and-white bitmaps. The new mode focuses on */ + /* applying a minimal set of rules to all fonts indiscriminately so */ + /* that modern and web fonts render well while legacy fonts render */ + /* okay. */ /* */ -/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + /* 3. Compile both. */ + /* */ + /* By undefining these, you get rendering behavior like on Windows */ + /* without ClearType, i.e., Windows XP without ClearType enabled and */ + /* Win9x (interpreter version v35). Or not, depending on how much */ + /* hinting blood and testing tears the font designer put into a given */ + /* font. If you define one or both subpixel hinting options, you can */ + /* switch between between v35 and the ones you define. */ + /* */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ + /* */ + /* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */ /*************************************************************************/ @@ -811,6 +841,14 @@ FT_BEGIN_HEADER */ #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #define TT_USE_BYTECODE_INTERPRETER + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1 +#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY +#endif + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2 +#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#endif #endif diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h index 9daea56f7fc..562e255810b 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h @@ -63,6 +63,7 @@ #define FT_INT_MAX INT_MAX #define FT_INT_MIN INT_MIN #define FT_UINT_MAX UINT_MAX +#define FT_LONG_MIN LONG_MIN #define FT_LONG_MAX LONG_MAX #define FT_ULONG_MAX ULONG_MAX diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h b/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h index 4666d489361..7baf185ce1d 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h @@ -651,11 +651,11 @@ FT_BEGIN_HEADER /* */ /* FT_ENCODING_SJIS :: */ /* Corresponds to Japanese SJIS encoding. More info at */ - /* at `http://en.wikipedia.org/wiki/Shift_JIS'. */ + /* `http://en.wikipedia.org/wiki/Shift_JIS'. */ /* See note on multi-byte encodings below. */ /* */ /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ + /* Corresponds to an encoding system for Simplified Chinese as */ /* used in mainland China. */ /* */ /* FT_ENCODING_BIG5 :: */ @@ -1103,7 +1103,7 @@ FT_BEGIN_HEADER /* 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 set. */ /* */ /* FT_FACE_FLAG_FIXED_SIZES :: */ /* Indicates that the face contains bitmap strikes. See also the */ @@ -1222,7 +1222,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_HORIZONTAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) + ( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL ) /************************************************************************* @@ -1236,7 +1236,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_VERTICAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_VERTICAL ) + ( (face)->face_flags & FT_FACE_FLAG_VERTICAL ) /************************************************************************* @@ -1250,7 +1250,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_KERNING( face ) \ - ( face->face_flags & FT_FACE_FLAG_KERNING ) + ( (face)->face_flags & FT_FACE_FLAG_KERNING ) /************************************************************************* @@ -1265,7 +1265,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_SCALABLE( face ) \ - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) + ( (face)->face_flags & FT_FACE_FLAG_SCALABLE ) /************************************************************************* @@ -1284,7 +1284,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_SFNT( face ) \ - ( face->face_flags & FT_FACE_FLAG_SFNT ) + ( (face)->face_flags & FT_FACE_FLAG_SFNT ) /************************************************************************* @@ -1299,7 +1299,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_FIXED_WIDTH( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + ( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) /************************************************************************* @@ -1314,7 +1314,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_FIXED_SIZES( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + ( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES ) /************************************************************************* @@ -1340,7 +1340,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_GLYPH_NAMES( face ) \ - ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + ( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) /************************************************************************* @@ -1355,7 +1355,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_MULTIPLE_MASTERS( face ) \ - ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + ( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) /************************************************************************* @@ -1373,7 +1373,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_CID_KEYED( face ) \ - ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) + ( (face)->face_flags & FT_FACE_FLAG_CID_KEYED ) /************************************************************************* @@ -1387,7 +1387,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_TRICKY( face ) \ - ( face->face_flags & FT_FACE_FLAG_TRICKY ) + ( (face)->face_flags & FT_FACE_FLAG_TRICKY ) /************************************************************************* @@ -1401,7 +1401,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_COLOR( face ) \ - ( face->face_flags & FT_FACE_FLAG_COLOR ) + ( (face)->face_flags & FT_FACE_FLAG_COLOR ) /*************************************************************************/ @@ -1941,7 +1941,7 @@ FT_BEGIN_HEADER /* */ /* 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 */ + /* The data are not copied, and the client is responsible for */ /* releasing and destroying them _after_ the corresponding call to */ /* @FT_Done_Face. */ /* */ @@ -2339,9 +2339,9 @@ FT_BEGIN_HEADER /* 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. */ + /* The real dimension. The sum of 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 */ @@ -2578,6 +2578,10 @@ FT_BEGIN_HEADER /* don't have a corresponding glyph in the font). See the discussion */ /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ /* */ + /* If you receive `FT_Err_Glyph_Too_Big', try getting the glyph */ + /* outline at EM size, then scale it manually and fill it as a */ + /* graphics operation. */ + /* */ FT_EXPORT( FT_Error ) FT_Load_Glyph( FT_Face face, FT_UInt glyph_index, @@ -2855,7 +2859,7 @@ FT_BEGIN_HEADER * * If @FT_LOAD_RENDER is also set, the glyph is rendered in the * corresponding mode (i.e., the mode that matches the used algorithm - * best). An exeption is FT_LOAD_TARGET_MONO since it implies + * best). An exception is FT_LOAD_TARGET_MONO since it implies * @FT_LOAD_MONOCHROME. * * You can use a hinting algorithm that doesn't correspond to the same @@ -3273,7 +3277,7 @@ FT_BEGIN_HEADER /* `.notdef'). */ /* */ /* This function always returns an error if the config macro */ - /* `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoptions.h'. */ + /* `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoption.h'. */ /* */ FT_EXPORT( FT_Error ) FT_Get_Glyph_Name( FT_Face face, @@ -4172,7 +4176,7 @@ FT_BEGIN_HEADER */ #define FREETYPE_MAJOR 2 #define FREETYPE_MINOR 6 -#define FREETYPE_PATCH 3 +#define FREETYPE_PATCH 4 /*************************************************************************/ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h index 8052dd23dc4..40c8003c4aa 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h @@ -219,8 +219,8 @@ FT_BEGIN_HEADER * U+0F00 - U+0FFF // Tibetan * U+1900 - U+194F // Limbu * U+1B80 - U+1BBF // Sundanese - * U+1C80 - U+1CDF // Meetei Mayak * U+A800 - U+A82F // Syloti Nagri + * U+ABC0 - U+ABFF // Meetei Mayek * U+11800 - U+118DF // Sharada * } * diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h index 6c9f2c42b0a..883c88d5d20 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h @@ -749,7 +749,7 @@ FT_BEGIN_HEADER /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ - /* anode :: Used to return the address of of the corresponding cache */ + /* anode :: Used to return the address of the corresponding cache */ /* node after incrementing its reference count (see note */ /* below). */ /* */ @@ -802,7 +802,7 @@ FT_BEGIN_HEADER /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ - /* anode :: Used to return the address of of the corresponding */ + /* anode :: Used to return the address of the corresponding */ /* cache node after incrementing its reference count */ /* (see note below). */ /* */ @@ -957,7 +957,7 @@ FT_BEGIN_HEADER /* <Output> */ /* sbit :: A handle to a small bitmap descriptor. */ /* */ - /* anode :: Used to return the address of of the corresponding cache */ + /* anode :: Used to return the address of the corresponding cache */ /* node after incrementing its reference count (see note */ /* below). */ /* */ @@ -1012,7 +1012,7 @@ FT_BEGIN_HEADER /* <Output> */ /* sbit :: A handle to a small bitmap descriptor. */ /* */ - /* anode :: Used to return the address of of the corresponding */ + /* anode :: Used to return the address of the corresponding */ /* cache node after incrementing its reference count */ /* (see note below). */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h index 9dea980ab6d..ad34541fdb1 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h @@ -89,7 +89,7 @@ FT_BEGIN_HEADER * features preserve the design's weight and spacing much better than * aliased type would. * - * 2) Aligment in the vertical direction: Weights and spacing along the + * 2) Alignment in the vertical direction: Weights and spacing along the * y~axis are less critical; what is much more important is the visual * alignment of related features (like cap-height and x-height). The * sense of alignment for these is enhanced by the sharpness of grid-fit @@ -110,7 +110,7 @@ FT_BEGIN_HEADER * to minimize distortion. * * @order: - * hinting-engine + * hinting-engine[cff] * no-stem-darkening[cff] * darkening-parameters[cff] * @@ -120,7 +120,7 @@ FT_BEGIN_HEADER /************************************************************************** * * @property: - * hinting-engine + * hinting-engine[cff] * * @description: * Thanks to Adobe, which contributed a new hinting (and parsing) @@ -157,8 +157,8 @@ FT_BEGIN_HEADER * FT_CFF_HINTING_XXX * * @description: - * A list of constants used for the @hinting-engine property to select - * the hinting engine for CFF fonts. + * A list of constants used for the @hinting-engine[cff] property to + * select the hinting engine for CFF fonts. * * @values: * FT_CFF_HINTING_FREETYPE :: diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h index 140f2f87f76..e1bc9fe015c 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h @@ -97,8 +97,8 @@ FT_BEGIN_HEADER * * @description: * 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. + * contrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SFNT wrapper. * * @input: * face :: diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h index 9e658b0df16..3932ce68871 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h @@ -117,11 +117,11 @@ FT_BEGIN_HEADER * * @inout: * output_len :: - * Before calling the function, this is the the total size of the - * output buffer, which must be large enough to hold the entire - * uncompressed data (so the size of the uncompressed data must be - * known in advance). After calling the function, `output_len' is the - * size of the used data in `output'. + * Before calling the function, this is the total size of the output + * buffer, which must be large enough to hold the entire uncompressed + * data (so the size of the uncompressed data must be known in + * advance). After calling the function, `output_len' is the size of + * the used data in `output'. * * @return: * FreeType error code. 0~means success. diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h index 1d557c93f53..28b2704e80e 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h @@ -747,7 +747,7 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* A raster is a scan converter, in charge of rendering an outline into */ - /* a a bitmap. This section contains the public API for rasters. */ + /* a bitmap. This section contains the public API for rasters. */ /* */ /* Note that in FreeType 2, all rasters are now encapsulated within */ /* specific modules called `renderers'. See `ftrender.h' for more */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h index c678ef34477..3e6e18d8a62 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h @@ -106,12 +106,12 @@ FT_BEGIN_HEADER #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 +#define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH ) /********************************************************************** * diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h index 908ae07f0b7..a75f9580220 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h @@ -290,7 +290,7 @@ FT_BEGIN_HEADER * The stream size in bytes. * * In case of compressed streams where the size is unknown before - * actually doing the decompression, the value is set to 0x7FFFFFFF. + * actually doing the decompression, the value is set to 0x7FFFFFFF. * (Note that this size value can occur for normal streams also; it is * thus just a hint.) * diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h index 6c02e6576d4..0d868bc2590 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h @@ -138,31 +138,37 @@ FT_BEGIN_HEADER * interpreter-version * * @description: - * Currently, two versions are available, representing the bytecode - * interpreter with and without subpixel hinting support, - * respectively. The default is subpixel support if - * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel - * support otherwise (since it isn't available then). + + * Currently, three versions are available, two representing the + * bytecode interpreter with subpixel hinting support (old `Infinality' + * code and new stripped-down and higher performance `minimal' code) and + * one without, respectively. The default is subpixel support if + * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel support + * otherwise (since it isn't available then). * * If subpixel hinting is on, many TrueType bytecode instructions behave * differently compared to B/W or grayscale rendering (except if `native - * ClearType' is selected by the font). The main idea is to render at a - * much increased horizontal resolution, then sampling down the created - * output to subpixel precision. However, many older fonts are not - * suited to this and must be specially taken care of by applying - * (hardcoded) font-specific tweaks. + * ClearType' is selected by the font). Microsoft's main idea is to + * render at a much increased horizontal resolution, then sampling down + * the created output to subpixel precision. However, many older fonts + * are not suited to this and must be specially taken care of by + * applying (hardcoded) tweaks in Microsoft's interpreter. * * Details on subpixel hinting and some of the necessary tweaks can be * found in Greg Hitchcock's whitepaper at - * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * Note that FreeType currently doesn't really `subpixel hint' (6x1, 6x2, + * or 6x5 supersampling) like discussed in the paper. Depending on the + * chosen interpreter, it simply ignores instructions on vertical stems + * to arrive at very similar results. * - * The following example code demonstrates how to activate subpixel + * The following example code demonstrates how to deactivate subpixel * hinting (omitting the error handling). * * { * FT_Library library; * FT_Face face; - * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_38; + * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; * * * FT_Init_FreeType( &library ); @@ -197,9 +203,19 @@ FT_BEGIN_HEADER * * TT_INTERPRETER_VERSION_38 :: * Version~38 corresponds to MS rasterizer v.1.9; it is roughly - * equivalent to the hinting provided by DirectWrite ClearType (as - * can be found, for example, in the Internet Explorer~9 running on - * Windows~7). + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in the Internet Explorer~9 running on + * Windows~7). It is used in FreeType to select the `Infinality' + * subpixel hinting code. The code may be removed in a future + * version. + * + * TT_INTERPRETER_VERSION_40 :: + * Version~40 corresponds to MS rasterizer v.2.1; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in Microsoft's Edge Browser on Windows~10). + * It is used in FreeType to select the `minimal' subpixel hinting + * code, a stripped-down and higher performance version of the + * `Infinality' code. * * @note: * This property controls the behaviour of the bytecode interpreter @@ -207,9 +223,9 @@ FT_BEGIN_HEADER * get rasterized! In particular, it does not control subpixel color * filtering. * - * If FreeType has not been compiled with configuration option - * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 causes an - * `FT_Err_Unimplemented_Feature' error. + * If FreeType has not been compiled with the configuration option + * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 or~40 causes + * an `FT_Err_Unimplemented_Feature' error. * * Depending on the graphics framework, Microsoft uses different * bytecode and rendering engines. As a consequence, the version @@ -290,13 +306,14 @@ FT_BEGIN_HEADER * the version~1 gasp table exclusively (like Color ClearType), while * v1.6 only respects the values of version~0 (bits 0 and~1). * - * FreeType doesn't provide all capabilities of the most recent - * ClearType incarnation, thus we identify our subpixel support as - * version~38. + * Keep in mind that the features of the above interpreter versions + * might not map exactly to FreeType features or behavior because it is + * a fundamentally different library with different internals. * */ #define TT_INTERPRETER_VERSION_35 35 #define TT_INTERPRETER_VERSION_38 38 +#define TT_INTERPRETER_VERSION_40 40 /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h index 4b28e6a4764..3e1e66e9798 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h @@ -213,7 +213,7 @@ FT_BEGIN_HEADER /* And when it is no longer needed a `destroy' function needs to be */ /* called to release that allocation. */ /* */ - /* `fcinit.c' (ft_create_default_module_classes) already contains a */ + /* `ftinit.c' (ft_create_default_module_classes) already contains a */ /* mechanism to call these functions for the default modules */ /* described in `ftmodule.h'. */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h index 3157dafa6e2..8c06fc21a5e 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h @@ -65,13 +65,15 @@ FT_BEGIN_HEADER #ifdef __cplusplus - extern "C++" +extern "C++" +{ template <typename T> inline T* cplusplus_typeof( T*, void *v ) { return static_cast <T*> ( v ); } +} #define FT_ASSIGNP( p, val ) (p) = cplusplus_typeof( (p), (val) ) diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h index c37c07e7a4b..e3fa32083be 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h @@ -833,7 +833,7 @@ FT_BEGIN_HEADER /* filtering callback function. */ /* */ /* pic_container :: Contains global structs and tables, instead */ - /* of defining them globallly. */ + /* of defining them globally. */ /* */ /* refcount :: A counter initialized to~1 at the time an */ /* @FT_Library structure is created. */ @@ -971,8 +971,8 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* Used to initialize an instance of FT_Outline_Funcs struct. */ - /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ - /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is defined an init function will need */ + /* to be called with a pre-allocated structure to be filled. */ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ /* allocated in the global scope (or the scope where the macro */ /* is used). */ @@ -1030,8 +1030,8 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* Used to initialize an instance of FT_Raster_Funcs struct. */ - /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ - /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is defined an init function will need */ + /* to be called with a pre-allocated structure to be filled. */ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ /* allocated in the global scope (or the scope where the macro */ /* is used). */ @@ -1090,8 +1090,8 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* Used to initialize an instance of FT_Glyph_Class struct. */ - /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ - /* be called with a pre-allocated stcture to be filled. */ + /* When FT_CONFIG_OPTION_PIC is defined an init function will need */ + /* to be called with a pre-allocated structure to be filled. */ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ /* allocated in the global scope (or the scope where the macro */ /* is used). */ @@ -1164,11 +1164,11 @@ FT_BEGIN_HEADER /* <Description> */ /* Used to initialize an instance of FT_Renderer_Class struct. */ /* */ - /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion will need */ - /* to be called with a pointer where the allocated structure is */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function will */ + /* need to be called with a pointer where the allocated structure is */ /* returned. And when it is no longer needed a `destroy' function */ /* needs to be called to release that allocation. */ - /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* `ftinit.c' (ft_create_default_module_classes) already contains */ /* a mechanism to call these functions for the default modules */ /* described in `ftmodule.h'. */ /* */ @@ -1368,11 +1368,11 @@ FT_BEGIN_HEADER /* <Description> */ /* Used to initialize an instance of an FT_Module_Class struct. */ /* */ - /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion needs to */ - /* be called with a pointer where the allocated structure is */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs */ + /* to be called with a pointer where the allocated structure is */ /* returned. And when it is no longer needed a `destroy' function */ /* needs to be called to release that allocation. */ - /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* `ftinit.c' (ft_create_default_module_classes) already contains */ /* a mechanism to call these functions for the default modules */ /* described in `ftmodule.h'. */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h index 13a68fe5ba3..b923401e686 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h @@ -227,7 +227,7 @@ FT_BEGIN_HEADER /* sort_by_res_id :: */ /* A Boolean to sort the fragmented resource by their ids. */ /* The fragmented resources for `POST' resource should be sorted */ - /* to restore Type1 font properly. For `snft' resources, sorting */ + /* to restore Type1 font properly. For `sfnt' resources, sorting */ /* may induce a different order of the faces in comparison to that */ /* by QuickDraw API. */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h index 689afa9fc48..8c3c14c12a7 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h @@ -44,7 +44,6 @@ #define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h> #define FT_INTERNAL_POSTSCRIPT_HINTS_H <freetype/internal/pshints.h> -#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H <freetype/internal/psglobal.h> #define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h> diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h index 8643775066b..4110d50285e 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h @@ -185,7 +185,7 @@ FT_BEGIN_HEADER /* */ /* CompLength :: Compressed table length (in bytes). */ /* */ - /* OrigLength :: Unompressed table length (in bytes). */ + /* OrigLength :: Uncompressed table length (in bytes). */ /* */ /* CheckSum :: The table checksum. This value can be ignored. */ /* */ @@ -1386,12 +1386,12 @@ FT_BEGIN_HEADER FT_ULong horz_metrics_offset; FT_ULong vert_metrics_offset; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* since 2.4.12 */ FT_ULong sph_found_func_flags; /* special functions found */ /* for this face */ FT_Bool sph_compatibility_mode; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ } TT_FaceRec; diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h b/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h index dfe3bcb1c80..1c075dcf66a 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h @@ -587,7 +587,7 @@ FT_BEGIN_HEADER /* */ /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ /* */ - /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader struture. */ + /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure. */ /* */ /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.c b/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.c index 7d9646c3af3..95786ed6f2b 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.c +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.c @@ -32,12 +32,32 @@ '\0', '\xD9', '\x80', /* Ù€ */ '\0', + '\xD4', '\xB1', ' ', '\xD5', '\x84', ' ', '\xD5', '\x92', ' ', '\xD5', '\x93', ' ', '\xD4', '\xB2', ' ', '\xD4', '\xB3', ' ', '\xD4', '\xB4', ' ', '\xD5', '\x95', /* Ô± Õ„ Õ’ Õ“ Ô² Ô³ Ô´ Õ• */ + '\0', + '\xD5', '\x92', ' ', '\xD5', '\x88', ' ', '\xD5', '\x93', ' ', '\xD5', '\x83', ' ', '\xD5', '\x87', ' ', '\xD5', '\x8D', ' ', '\xD5', '\x8F', ' ', '\xD5', '\x95', /* Õ’ Õˆ Õ“ Õƒ Õ‡ Õ Õ Õ• */ + '\0', + '\xD5', '\xA5', ' ', '\xD5', '\xA7', ' ', '\xD5', '\xAB', ' ', '\xD5', '\xB4', ' ', '\xD5', '\xBE', ' ', '\xD6', '\x83', ' ', '\xD6', '\x86', ' ', '\xD6', '\x83', /* Õ¥ Õ§ Õ« Õ´ Õ¾ Öƒ Ö† Öƒ */ + '\0', + '\xD5', '\xA1', ' ', '\xD5', '\xB5', ' ', '\xD6', '\x82', ' ', '\xD5', '\xBD', ' ', '\xD5', '\xA3', ' ', '\xD5', '\xBB', ' ', '\xD6', '\x80', ' ', '\xD6', '\x85', /* Õ¡ Õµ Ö‚ Õ½ Õ£ Õ» Ö€ Ö… */ + '\0', + '\xD5', '\xB0', ' ', '\xD5', '\xB8', ' ', '\xD5', '\xB3', ' ', '\xD5', '\xA1', ' ', '\xD5', '\xA5', ' ', '\xD5', '\xAE', ' ', '\xD5', '\xBD', ' ', '\xD6', '\x85', /* Õ° Õ¸ Õ³ Õ¡ Õ¥ Õ® Õ½ Ö… */ + '\0', + '\xD5', '\xA2', ' ', '\xD5', '\xA8', ' ', '\xD5', '\xAB', ' ', '\xD5', '\xAC', ' ', '\xD5', '\xB2', ' ', '\xD5', '\xBA', ' ', '\xD6', '\x83', ' ', '\xD6', '\x81', /* Õ¢ Õ¨ Õ« Õ¬ Õ² Õº Öƒ Ö */ + '\0', '\xE0', '\xA6', '\x85', ' ', '\xE0', '\xA6', '\xA1', ' ', '\xE0', '\xA6', '\xA4', ' ', '\xE0', '\xA6', '\xA8', ' ', '\xE0', '\xA6', '\xAC', ' ', '\xE0', '\xA6', '\xAD', ' ', '\xE0', '\xA6', '\xB2', ' ', '\xE0', '\xA6', '\x95', /* অ ড ত ন ব ঠল ক */ '\0', '\xE0', '\xA6', '\x87', ' ', '\xE0', '\xA6', '\x9F', ' ', '\xE0', '\xA6', '\xA0', ' ', '\xE0', '\xA6', '\xBF', ' ', '\xE0', '\xA7', '\x80', ' ', '\xE0', '\xA7', '\x88', ' ', '\xE0', '\xA7', '\x97', /* ই ট ঠি ী ৈ ৗ */ '\0', '\xE0', '\xA6', '\x93', ' ', '\xE0', '\xA6', '\x8F', ' ', '\xE0', '\xA6', '\xA1', ' ', '\xE0', '\xA6', '\xA4', ' ', '\xE0', '\xA6', '\xA8', ' ', '\xE0', '\xA6', '\xAC', ' ', '\xE0', '\xA6', '\xB2', ' ', '\xE0', '\xA6', '\x95', /* ও ঠড ত ন ব ল ক */ '\0', + '\xE1', '\x8F', '\x86', ' ', '\xE1', '\x8E', '\xBB', ' ', '\xE1', '\x8E', '\xAC', ' ', '\xE1', '\x8F', '\x83', ' ', '\xE1', '\x8E', '\xA4', ' ', '\xE1', '\x8F', '\xA3', ' ', '\xE1', '\x8E', '\xA6', ' ', '\xE1', '\x8F', '\x95', /* ᆠᎻ Ꭼ რᎤ ᣠᎦ á• */ + '\0', + '\xEA', '\xAE', '\x92', ' ', '\xEA', '\xAE', '\xA4', ' ', '\xEA', '\xAE', '\xB6', ' ', '\xEA', '\xAD', '\xB4', ' ', '\xEA', '\xAD', '\xBE', ' ', '\xEA', '\xAE', '\x97', ' ', '\xEA', '\xAE', '\x9D', ' ', '\xEA', '\xAE', '\xBF', /* ê®’ ꮤ ꮶ ê´ ê¾ ê®— ê® ê®¿ */ + '\0', + '\xEA', '\xAE', '\x96', ' ', '\xEA', '\xAD', '\xBC', ' ', '\xEA', '\xAE', '\x93', ' ', '\xEA', '\xAE', '\xA0', ' ', '\xEA', '\xAE', '\xB3', ' ', '\xEA', '\xAD', '\xB6', ' ', '\xEA', '\xAE', '\xA5', ' ', '\xEA', '\xAE', '\xBB', /* ê®– ê¼ ê®“ ê® ê®³ ê¶ ê®¥ ê®» */ + '\0', + '\xE1', '\x8F', '\xB8', ' ', '\xEA', '\xAE', '\x90', ' ', '\xEA', '\xAD', '\xB9', ' ', '\xEA', '\xAD', '\xBB', /* á¸ ê® ê¹ ê» */ + '\0', '\xD0', '\x91', ' ', '\xD0', '\x92', ' ', '\xD0', '\x95', ' ', '\xD0', '\x9F', ' ', '\xD0', '\x97', ' ', '\xD0', '\x9E', ' ', '\xD0', '\xA1', ' ', '\xD0', '\xAD', /* Б Ð’ Е П З О С Ð */ '\0', '\xD0', '\x91', ' ', '\xD0', '\x92', ' ', '\xD0', '\x95', ' ', '\xD0', '\xA8', ' ', '\xD0', '\x97', ' ', '\xD0', '\x9E', ' ', '\xD0', '\xA1', ' ', '\xD0', '\xAD', /* Б Ð’ Е Ш З О С Ð */ @@ -54,6 +74,30 @@ '\0', '\xE0', '\xA5', '\x81', ' ', '\xE0', '\xA5', '\x83', /* ॠृ */ '\0', + '\xE1', '\x88', '\x80', ' ', '\xE1', '\x88', '\x83', ' ', '\xE1', '\x8B', '\x98', ' ', '\xE1', '\x8D', '\x90', ' ', '\xE1', '\x88', '\x9B', ' ', '\xE1', '\x89', '\xA0', ' ', '\xE1', '\x8B', '\x8B', ' ', '\xE1', '\x8B', '\x90', /* ሀ ሃ ዘ á ማ በዋ á‹ */ + '\0', + '\xE1', '\x88', '\x88', ' ', '\xE1', '\x88', '\x90', ' ', '\xE1', '\x89', '\xA0', ' ', '\xE1', '\x8B', '\x98', ' ', '\xE1', '\x88', '\x80', ' ', '\xE1', '\x88', '\xAA', ' ', '\xE1', '\x8B', '\x90', ' ', '\xE1', '\x8C', '\xA8', /* ለ ሠበዘ ሀ ሪ ዠጨ */ + '\0', + '\xE1', '\x83', '\x92', ' ', '\xE1', '\x83', '\x93', ' ', '\xE1', '\x83', '\x94', ' ', '\xE1', '\x83', '\x95', ' ', '\xE1', '\x83', '\x97', ' ', '\xE1', '\x83', '\x98', ' ', '\xE1', '\x83', '\x9D', ' ', '\xE1', '\x83', '\xA6', /* გ დ ე ვ თ ი რღ */ + '\0', + '\xE1', '\x83', '\x90', ' ', '\xE1', '\x83', '\x96', ' ', '\xE1', '\x83', '\x9B', ' ', '\xE1', '\x83', '\xA1', ' ', '\xE1', '\x83', '\xA8', ' ', '\xE1', '\x83', '\xAB', ' ', '\xE1', '\x83', '\xAE', ' ', '\xE1', '\x83', '\x9E', /* რზ მ ს შ ძ ხ პ */ + '\0', + '\xE1', '\x83', '\xA1', ' ', '\xE1', '\x83', '\xAE', ' ', '\xE1', '\x83', '\xA5', ' ', '\xE1', '\x83', '\x96', ' ', '\xE1', '\x83', '\x9B', ' ', '\xE1', '\x83', '\xA8', ' ', '\xE1', '\x83', '\xA9', ' ', '\xE1', '\x83', '\xAC', /* ს ხ ქ ზ მ შ ჩ წ */ + '\0', + '\xE1', '\x83', '\x94', ' ', '\xE1', '\x83', '\x95', ' ', '\xE1', '\x83', '\x9F', ' ', '\xE1', '\x83', '\xA2', ' ', '\xE1', '\x83', '\xA3', ' ', '\xE1', '\x83', '\xA4', ' ', '\xE1', '\x83', '\xA5', ' ', '\xE1', '\x83', '\xA7', /* ე ვ ჟ ტ უ ფ ქ ყ */ + '\0', + '\xE1', '\x82', '\xB1', ' ', '\xE1', '\x82', '\xA7', ' ', '\xE1', '\x82', '\xB9', ' ', '\xE1', '\x82', '\xBC', ' ', '\xE1', '\x82', '\xA4', ' ', '\xE1', '\x82', '\xA5', ' ', '\xE1', '\x82', '\xB3', ' ', '\xE1', '\x82', '\xBA', /* Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ á‚¥ Ⴓ Ⴚ */ + '\0', + '\xE1', '\x82', '\xA4', ' ', '\xE1', '\x82', '\xA5', ' ', '\xE1', '\x82', '\xA7', ' ', '\xE1', '\x82', '\xA8', ' ', '\xE1', '\x82', '\xA6', ' ', '\xE1', '\x82', '\xB1', ' ', '\xE1', '\x82', '\xAA', ' ', '\xE1', '\x82', '\xAB', /* Ⴄ á‚¥ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ á‚« */ + '\0', + '\xE2', '\xB4', '\x81', ' ', '\xE2', '\xB4', '\x97', ' ', '\xE2', '\xB4', '\x82', ' ', '\xE2', '\xB4', '\x84', ' ', '\xE2', '\xB4', '\x85', ' ', '\xE2', '\xB4', '\x87', ' ', '\xE2', '\xB4', '\x94', ' ', '\xE2', '\xB4', '\x96', /* â´ â´— â´‚ â´„ â´… â´‡ â´” â´– */ + '\0', + '\xE2', '\xB4', '\x88', ' ', '\xE2', '\xB4', '\x8C', ' ', '\xE2', '\xB4', '\x96', ' ', '\xE2', '\xB4', '\x8E', ' ', '\xE2', '\xB4', '\x83', ' ', '\xE2', '\xB4', '\x86', ' ', '\xE2', '\xB4', '\x8B', ' ', '\xE2', '\xB4', '\xA2', /* â´ˆ â´Œ â´– â´Ž â´ƒ â´† â´‹ â´¢ */ + '\0', + '\xE2', '\xB4', '\x90', ' ', '\xE2', '\xB4', '\x91', ' ', '\xE2', '\xB4', '\x93', ' ', '\xE2', '\xB4', '\x95', ' ', '\xE2', '\xB4', '\x99', ' ', '\xE2', '\xB4', '\x9B', ' ', '\xE2', '\xB4', '\xA1', ' ', '\xE2', '\xB4', '\xA3', /* â´ â´‘ â´“ â´• â´™ â´› â´¡ â´£ */ + '\0', + '\xE2', '\xB4', '\x84', ' ', '\xE2', '\xB4', '\x85', ' ', '\xE2', '\xB4', '\x94', ' ', '\xE2', '\xB4', '\x95', ' ', '\xE2', '\xB4', '\x81', ' ', '\xE2', '\xB4', '\x82', ' ', '\xE2', '\xB4', '\x98', ' ', '\xE2', '\xB4', '\x9D', /* â´„ â´… â´” â´• â´ â´‚ â´˜ â´ */ + '\0', '\xCE', '\x93', ' ', '\xCE', '\x92', ' ', '\xCE', '\x95', ' ', '\xCE', '\x96', ' ', '\xCE', '\x98', ' ', '\xCE', '\x9F', ' ', '\xCE', '\xA9', /* Γ Î’ Ε Ζ Θ Ο Ω */ '\0', '\xCE', '\x92', ' ', '\xCE', '\x94', ' ', '\xCE', '\x96', ' ', '\xCE', '\x9E', ' ', '\xCE', '\x98', ' ', '\xCE', '\x9F', /* Î’ Δ Ζ Ξ Θ Ο */ @@ -64,6 +108,26 @@ '\0', '\xCE', '\xB2', ' ', '\xCE', '\xB3', ' ', '\xCE', '\xB7', ' ', '\xCE', '\xBC', ' ', '\xCF', '\x81', ' ', '\xCF', '\x86', ' ', '\xCF', '\x87', ' ', '\xCF', '\x88', /* β γ η μ Ï Ï† χ ψ */ '\0', + '\xE0', '\xAA', '\xA4', ' ', '\xE0', '\xAA', '\xA8', ' ', '\xE0', '\xAA', '\x8B', ' ', '\xE0', '\xAA', '\x8C', ' ', '\xE0', '\xAA', '\x9B', ' ', '\xE0', '\xAA', '\x9F', ' ', '\xE0', '\xAA', '\xB0', ' ', '\xE0', '\xAB', '\xA6', /* ત ન ઋ ઌ છ ટ ર ૦ */ + '\0', + '\xE0', '\xAA', '\x96', ' ', '\xE0', '\xAA', '\x97', ' ', '\xE0', '\xAA', '\x98', ' ', '\xE0', '\xAA', '\x9E', ' ', '\xE0', '\xAA', '\x87', ' ', '\xE0', '\xAA', '\x88', ' ', '\xE0', '\xAA', '\xA0', ' ', '\xE0', '\xAA', '\x9C', /* ખ ગ ઘ ઞ ઇ ઈ ઠજ */ + '\0', + '\xE0', '\xAA', '\x88', ' ', '\xE0', '\xAA', '\x8A', ' ', '\xE0', '\xAA', '\xBF', ' ', '\xE0', '\xAB', '\x80', ' ', '\xE0', '\xAA', '\xB2', '\xE0', '\xAB', '\x80', ' ', '\xE0', '\xAA', '\xB6', '\xE0', '\xAB', '\x8D', '\xE0', '\xAA', '\x9A', '\xE0', '\xAA', '\xBF', ' ', '\xE0', '\xAA', '\x9C', '\xE0', '\xAA', '\xBF', ' ', '\xE0', '\xAA', '\xB8', '\xE0', '\xAB', '\x80', /* ઈ ઊ િ à«€ લી શà«àªšàª¿ જિ સી */ + '\0', + '\xE0', '\xAB', '\x81', ' ', '\xE0', '\xAB', '\x83', ' ', '\xE0', '\xAB', '\x84', ' ', '\xE0', '\xAA', '\x96', '\xE0', '\xAB', '\x81', ' ', '\xE0', '\xAA', '\x9B', '\xE0', '\xAB', '\x83', ' ', '\xE0', '\xAA', '\x9B', '\xE0', '\xAB', '\x84', /* ૠૃ à«„ ખૠછૃ છૄ */ + '\0', + '\xE0', '\xAB', '\xA6', ' ', '\xE0', '\xAB', '\xA7', ' ', '\xE0', '\xAB', '\xA8', ' ', '\xE0', '\xAB', '\xA9', ' ', '\xE0', '\xAB', '\xAD', /* ૦ ૧ ૨ à«© à« */ + '\0', + '\xE0', '\xA8', '\x95', ' ', '\xE0', '\xA8', '\x97', ' ', '\xE0', '\xA8', '\x99', ' ', '\xE0', '\xA8', '\x9A', ' ', '\xE0', '\xA8', '\x9C', ' ', '\xE0', '\xA8', '\xA4', ' ', '\xE0', '\xA8', '\xA7', ' ', '\xE0', '\xA8', '\xB8', /* ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ */ + '\0', + '\xE0', '\xA8', '\x95', ' ', '\xE0', '\xA8', '\x97', ' ', '\xE0', '\xA8', '\x99', ' ', '\xE0', '\xA8', '\x9A', ' ', '\xE0', '\xA8', '\x9C', ' ', '\xE0', '\xA8', '\xA4', ' ', '\xE0', '\xA8', '\xA7', ' ', '\xE0', '\xA8', '\xB8', /* ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ */ + '\0', + '\xE0', '\xA8', '\x87', ' ', '\xE0', '\xA8', '\x88', ' ', '\xE0', '\xA8', '\x89', ' ', '\xE0', '\xA8', '\x8F', ' ', '\xE0', '\xA8', '\x93', ' ', '\xE0', '\xA9', '\xB3', ' ', '\xE0', '\xA8', '\xBF', ' ', '\xE0', '\xA9', '\x80', /* ਇ ਈ ਉ ਠਓ ੳ ਿ à©€ */ + '\0', + '\xE0', '\xA8', '\x85', ' ', '\xE0', '\xA8', '\x8F', ' ', '\xE0', '\xA8', '\x93', ' ', '\xE0', '\xA8', '\x97', ' ', '\xE0', '\xA8', '\x9C', ' ', '\xE0', '\xA8', '\xA0', ' ', '\xE0', '\xA8', '\xB0', ' ', '\xE0', '\xA8', '\xB8', /* ਅ ਠਓ ਗ ਜ ਠਰ ਸ */ + '\0', + '\xE0', '\xA9', '\xA6', ' ', '\xE0', '\xA9', '\xA7', ' ', '\xE0', '\xA9', '\xA8', ' ', '\xE0', '\xA9', '\xA9', ' ', '\xE0', '\xA9', '\xAD', /* ੦ ੧ ੨ à©© à© */ + '\0', '\xD7', '\x91', ' ', '\xD7', '\x93', ' ', '\xD7', '\x94', ' ', '\xD7', '\x97', ' ', '\xD7', '\x9A', ' ', '\xD7', '\x9B', ' ', '\xD7', '\x9D', ' ', '\xD7', '\xA1', /* ב ד ×” ×— ך ×› × ×¡ */ '\0', '\xD7', '\x91', ' ', '\xD7', '\x98', ' ', '\xD7', '\x9B', ' ', '\xD7', '\x9D', ' ', '\xD7', '\xA1', ' ', '\xD7', '\xA6', /* ב ט ×› × ×¡ צ */ @@ -128,6 +192,10 @@ '\0', '\xE1', '\xB5', '\x96', ' ', '\xCA', '\xB8', ' ', '\xE1', '\xB5', '\x8D', /* áµ– ʸ áµ */ '\0', + '\xE0', '\xB4', '\x92', ' ', '\xE0', '\xB4', '\x9F', ' ', '\xE0', '\xB4', '\xA0', ' ', '\xE0', '\xB4', '\xB1', ' ', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xAA', ' ', '\xE0', '\xB4', '\x9A', '\xE0', '\xB5', '\x8D', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xAA', '\xE0', '\xB5', '\x8D', '\xE0', '\xB4', '\xAA', /* à´’ à´Ÿ à´ à´± à´š à´ª à´šàµà´š à´ªàµà´ª */ + '\0', + '\xE0', '\xB4', '\x9F', ' ', '\xE0', '\xB4', '\xA0', ' ', '\xE0', '\xB4', '\xA7', ' ', '\xE0', '\xB4', '\xB6', ' ', '\xE0', '\xB4', '\x98', ' ', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xA5', ' ', '\xE0', '\xB4', '\xB2', /* à´Ÿ à´ à´§ à´¶ à´˜ à´š à´¥ à´² */ + '\0', '\xE1', '\x80', '\x81', ' ', '\xE1', '\x80', '\x82', ' ', '\xE1', '\x80', '\x84', ' ', '\xE1', '\x80', '\x92', ' ', '\xE1', '\x80', '\x9D', ' ', '\xE1', '\x81', '\xA5', ' ', '\xE1', '\x81', '\x8A', ' ', '\xE1', '\x81', '\x8B', /* ဠဂ င ဒ ဠᥠአዠ*/ '\0', '\xE1', '\x80', '\x84', ' ', '\xE1', '\x80', '\x8E', ' ', '\xE1', '\x80', '\x92', ' ', '\xE1', '\x80', '\x95', ' ', '\xE1', '\x80', '\x97', ' ', '\xE1', '\x80', '\x9D', ' ', '\xE1', '\x81', '\x8A', ' ', '\xE1', '\x81', '\x8B', /* င ဎ ဒ ပ ဗ ဠአዠ*/ @@ -136,6 +204,16 @@ '\0', '\xE1', '\x80', '\x89', ' ', '\xE1', '\x80', '\x8A', ' ', '\xE1', '\x80', '\xA5', ' ', '\xE1', '\x80', '\xA9', ' ', '\xE1', '\x80', '\xA8', ' ', '\xE1', '\x81', '\x82', ' ', '\xE1', '\x81', '\x85', ' ', '\xE1', '\x81', '\x89', /* ဉ ည ဥ ဩ ဨ á‚ á… á‰ */ '\0', + '\xE0', '\xB6', '\x89', ' ', '\xE0', '\xB6', '\x9A', ' ', '\xE0', '\xB6', '\x9D', ' ', '\xE0', '\xB6', '\xB3', ' ', '\xE0', '\xB6', '\xB4', ' ', '\xE0', '\xB6', '\xBA', ' ', '\xE0', '\xB6', '\xBD', ' ', '\xE0', '\xB7', '\x86', /* ඉ ක චඳ ප ය ල à·† */ + '\0', + '\xE0', '\xB6', '\x91', ' ', '\xE0', '\xB6', '\x94', ' ', '\xE0', '\xB6', '\x9D', ' ', '\xE0', '\xB6', '\xA2', ' ', '\xE0', '\xB6', '\xA7', ' ', '\xE0', '\xB6', '\xAE', ' ', '\xE0', '\xB6', '\xB0', ' ', '\xE0', '\xB6', '\xBB', /* එ ඔ චජ ට ථ ධ ර */ + '\0', + '\xE0', '\xB6', '\xAF', ' ', '\xE0', '\xB6', '\xB3', ' ', '\xE0', '\xB6', '\x8B', ' ', '\xE0', '\xB6', '\xBD', ' ', '\xE0', '\xB6', '\xAD', '\xE0', '\xB7', '\x96', ' ', '\xE0', '\xB6', '\xAD', '\xE0', '\xB7', '\x94', ' ', '\xE0', '\xB6', '\xB6', '\xE0', '\xB7', '\x94', ' ', '\xE0', '\xB6', '\xAF', '\xE0', '\xB7', '\x94', /* ද ඳ උ ල à¶à·– à¶à·” බු දු */ + '\0', + '\xE0', '\xAE', '\x89', ' ', '\xE0', '\xAE', '\x92', ' ', '\xE0', '\xAE', '\x93', ' ', '\xE0', '\xAE', '\xB1', ' ', '\xE0', '\xAE', '\x88', ' ', '\xE0', '\xAE', '\x95', ' ', '\xE0', '\xAE', '\x99', ' ', '\xE0', '\xAE', '\x9A', /* உ à®’ ஓ à®± ஈ க à®™ ச */ + '\0', + '\xE0', '\xAE', '\x95', ' ', '\xE0', '\xAE', '\x9A', ' ', '\xE0', '\xAE', '\xB2', ' ', '\xE0', '\xAE', '\xB6', ' ', '\xE0', '\xAE', '\x89', ' ', '\xE0', '\xAE', '\x99', ' ', '\xE0', '\xAE', '\x9F', ' ', '\xE0', '\xAE', '\xAA', /* க ச ல ஶ உ à®™ ட ப */ + '\0', '\xE0', '\xB0', '\x87', ' ', '\xE0', '\xB0', '\x8C', ' ', '\xE0', '\xB0', '\x99', ' ', '\xE0', '\xB0', '\x9E', ' ', '\xE0', '\xB0', '\xA3', ' ', '\xE0', '\xB0', '\xB1', ' ', '\xE0', '\xB1', '\xAF', /* à°‡ à°Œ à°™ à°ž à°£ à°± ౯ */ '\0', '\xE0', '\xB0', '\x85', ' ', '\xE0', '\xB0', '\x95', ' ', '\xE0', '\xB0', '\x9A', ' ', '\xE0', '\xB0', '\xB0', ' ', '\xE0', '\xB0', '\xBD', ' ', '\xE0', '\xB1', '\xA8', ' ', '\xE0', '\xB1', '\xAC', /* à°… à°• à°š à°° à°½ ౨ ౬ */ @@ -207,13 +285,29 @@ { AF_BLUE_STRING_ARABIC_BOTTOM, 0 }, { AF_BLUE_STRING_ARABIC_JOIN, AF_BLUE_PROPERTY_LATIN_NEUTRAL }, { AF_BLUE_STRING_MAX, 0 }, - { AF_BLUE_STRING_BENGALI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | - AF_BLUE_PROPERTY_LATIN_NEUTRAL | - AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, - { AF_BLUE_STRING_BENGALI_BASE, 0 }, - { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM, 0 }, + { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_ARMENIAN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM, 0 }, + { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_BENGALI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_NEUTRAL | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_BENGALI_BASE, 0 }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_CHEROKEE_CAPITAL, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_CHEROKEE_CAPITAL, 0 }, + { AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_CHEROKEE_SMALL, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_CHEROKEE_SMALL, 0 }, + { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM, 0 }, { AF_BLUE_STRING_CYRILLIC_SMALL, AF_BLUE_PROPERTY_LATIN_TOP | @@ -229,6 +323,23 @@ { AF_BLUE_STRING_DEVANAGARI_BASE, 0 }, { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_ETHIOPIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0 }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM, 0 }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0 }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM, 0 }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_GREEK_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM, 0 }, { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, @@ -237,6 +348,21 @@ { AF_BLUE_STRING_GREEK_SMALL, 0 }, { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_GUJARATI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_GUJARATI_BOTTOM, 0 }, + { AF_BLUE_STRING_GUJARATI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GUJARATI_DESCENDER, 0 }, + { AF_BLUE_STRING_GUJARATI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_GURMUKHI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GURMUKHI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GURMUKHI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_NEUTRAL | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_GURMUKHI_BOTTOM, 0 }, + { AF_BLUE_STRING_GURMUKHI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_HEBREW_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_LONG }, { AF_BLUE_STRING_HEBREW_BOTTOM, 0 }, @@ -256,13 +382,13 @@ AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, - { AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP | - AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, - { AF_BLUE_STRING_LAO_BOTTOM, 0 }, - { AF_BLUE_STRING_LAO_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_LAO_DESCENDER, 0 }, - { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_LAO_BOTTOM, 0 }, + { AF_BLUE_STRING_LAO_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_LAO_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_LATIN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM, 0 }, { AF_BLUE_STRING_LATIN_SMALL_F_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, @@ -287,12 +413,23 @@ { AF_BLUE_STRING_LATIN_SUPS_SMALL, 0 }, { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_MALAYALAM_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_MYANMAR_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, { AF_BLUE_STRING_MYANMAR_BOTTOM, 0 }, { AF_BLUE_STRING_MYANMAR_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_MYANMAR_DESCENDER, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_SINHALA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_SINHALA_BOTTOM, 0 }, + { AF_BLUE_STRING_SINHALA_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_TAMIL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_TAMIL_BOTTOM, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_TELUGU_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_TELUGU_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.dat b/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.dat index 9a7757c22c0..0734ec71f00 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.dat +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.dat @@ -65,8 +65,8 @@ // values; this essentially means that the maximum values can easily be too // large. Given that the purpose of those values is to create local // fixed-size arrays at compile time for further processing of the blue zone -// data, this isn't a problem. Note the the final zero byte of a string is -// not counted. Note also that the count holds the number of UTF-8 encoded +// data, this isn't a problem. Note the final zero byte of a string is not +// counted. Note also that the count holds the number of UTF-8 encoded // characters, not bytes. @@ -86,6 +86,19 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_ARABIC_JOIN "Ù€" + AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP + "Ô± Õ„ Õ’ Õ“ Ô² Ô³ Ô´ Õ•" + AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM + "Õ’ Õˆ Õ“ Õƒ Õ‡ Õ Õ Õ•" + AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER + "Õ¥ Õ§ Õ« Õ´ Õ¾ Öƒ Ö† Öƒ" + AF_BLUE_STRING_ARMENIAN_SMALL_TOP + "Õ¡ Õµ Ö‚ Õ½ Õ£ Õ» Ö€ Ö…" + AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM + "Õ° Õ¸ Õ³ Õ¡ Õ¥ Õ® Õ½ Ö…" + AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER + "Õ¢ Õ¨ Õ« Õ¬ Õ² Õº Öƒ Ö" + AF_BLUE_STRING_BENGALI_BASE "অ ড ত ন ব ঠল ক" AF_BLUE_STRING_BENGALI_TOP @@ -93,6 +106,15 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_BENGALI_HEAD "ও ঠড ত ন ব ল ক" + AF_BLUE_STRING_CHEROKEE_CAPITAL + "ᆠᎻ Ꭼ რᎤ ᣠᎦ á•" + AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER + "ê®’ ꮤ ꮶ ê´ ê¾ ê®— ê® ê®¿" + AF_BLUE_STRING_CHEROKEE_SMALL + "ê®– ê¼ ê®“ ê® ê®³ ê¶ ê®¥ ê®»" + AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER + "á¸ ê® ê¹ ê»" + AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP "Б Ð’ Е П З О С Ð" AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM @@ -114,6 +136,34 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_DEVANAGARI_BOTTOM "ॠृ" + AF_BLUE_STRING_ETHIOPIC_TOP + "ሀ ሃ ዘ á ማ በዋ á‹" + AF_BLUE_STRING_ETHIOPIC_BOTTOM + "ለ ሠበዘ ሀ ሪ ዠጨ" + + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP + "გ დ ე ვ თ ი რღ" + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM + "რზ მ ს შ ძ ხ პ" + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER + "ს ხ ქ ზ მ შ ჩ წ" + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER + "ე ვ ჟ ტ უ ფ ქ ყ" + + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP + "Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ á‚¥ Ⴓ Ⴚ" + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM + "Ⴄ á‚¥ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ á‚«" + + AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP + "â´ â´— â´‚ â´„ â´… â´‡ â´” â´–" + AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM + "â´ˆ â´Œ â´– â´Ž â´ƒ â´† â´‹ â´¢" + AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER + "â´ â´‘ â´“ â´• â´™ â´› â´¡ â´£" + AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER + "â´„ â´… â´” â´• â´ â´‚ â´˜ â´" + AF_BLUE_STRING_GREEK_CAPITAL_TOP "Γ Î’ Ε Ζ Θ Ο Ω" AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM @@ -125,6 +175,28 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_GREEK_SMALL_DESCENDER "β γ η μ Ï Ï† χ ψ" + AF_BLUE_STRING_GUJARATI_TOP + "ત ન ઋ ઌ છ ટ ર ૦" + AF_BLUE_STRING_GUJARATI_BOTTOM + "ખ ગ ઘ ઞ ઇ ઈ ઠજ" + AF_BLUE_STRING_GUJARATI_ASCENDER + "ઈ ઊ િ à«€ લી શà«àªšàª¿ જિ સી" + AF_BLUE_STRING_GUJARATI_DESCENDER + "ૠૃ à«„ ખૠછૃ છૄ" + AF_BLUE_STRING_GUJARATI_DIGIT_TOP + "૦ ૧ ૨ à«© à«" + + AF_BLUE_STRING_GURMUKHI_BASE + "ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ" + AF_BLUE_STRING_GURMUKHI_HEAD + "ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ" + AF_BLUE_STRING_GURMUKHI_TOP + "ਇ ਈ ਉ ਠਓ ੳ ਿ à©€" + AF_BLUE_STRING_GURMUKHI_BOTTOM + "ਅ ਠਓ ਗ ਜ ਠਰ ਸ" + AF_BLUE_STRING_GURMUKHI_DIGIT_TOP + "੦ ੧ ੨ à©© à©" + AF_BLUE_STRING_HEBREW_TOP "ב ד ×” ×— ך ×› × ×¡" AF_BLUE_STRING_HEBREW_BOTTOM @@ -200,6 +272,11 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER "áµ– ʸ áµ" + AF_BLUE_STRING_MALAYALAM_TOP + "à´’ à´Ÿ à´ à´± à´š à´ª à´šàµà´š à´ªàµà´ª" + AF_BLUE_STRING_MALAYALAM_BOTTOM + "à´Ÿ à´ à´§ à´¶ à´˜ à´š à´¥ à´²" + AF_BLUE_STRING_MYANMAR_TOP "ဠဂ င ဒ ဠᥠአá‹" AF_BLUE_STRING_MYANMAR_BOTTOM @@ -209,6 +286,18 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_MYANMAR_DESCENDER "ဉ ည ဥ ဩ ဨ á‚ á… á‰" + AF_BLUE_STRING_SINHALA_TOP + "ඉ ක චඳ ප ය ල à·†" + AF_BLUE_STRING_SINHALA_BOTTOM + "එ ඔ චජ ට ථ ධ ර" + AF_BLUE_STRING_SINHALA_DESCENDER + "ද ඳ උ ල à¶à·– à¶à·” බු දු" + + AF_BLUE_STRING_TAMIL_TOP + "உ à®’ ஓ à®± ஈ க à®™ ச" + AF_BLUE_STRING_TAMIL_BOTTOM + "க ச ல ஶ உ à®™ ட ப" + AF_BLUE_STRING_TELUGU_TOP "à°‡ à°Œ à°™ à°ž à°£ à°± ౯" AF_BLUE_STRING_TELUGU_BOTTOM @@ -400,14 +489,34 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_ARABIC_JOIN, AF_BLUE_PROPERTY_LATIN_NEUTRAL } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_ARMN + { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM, 0 } + { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_ARMENIAN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM, 0 } + { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_BENG - { AF_BLUE_STRING_BENGALI_TOP, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | - AF_BLUE_PROPERTY_LATIN_NEUTRAL | - AF_BLUE_PROPERTY_LATIN_X_HEIGHT } - { AF_BLUE_STRING_BENGALI_BASE, 0 } - { AF_BLUE_STRING_MAX, 0 } + { AF_BLUE_STRING_BENGALI_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_NEUTRAL | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_BENGALI_BASE, 0 } + { AF_BLUE_STRING_MAX, 0 } + + AF_BLUE_STRINGSET_CHER + { AF_BLUE_STRING_CHEROKEE_CAPITAL, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_CHEROKEE_CAPITAL, 0 } + { AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_CHEROKEE_SMALL, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_CHEROKEE_SMALL, 0 } + { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } AF_BLUE_STRINGSET_CYRL { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } @@ -428,6 +537,30 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_ETHI + { AF_BLUE_STRING_ETHIOPIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0 } + { AF_BLUE_STRING_MAX, 0 } + + // blue zones for Mtavruli are missing (not yet defined in Unicode) + AF_BLUE_STRINGSET_GEOR + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM, 0 } + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } + + AF_BLUE_STRINGSET_GEOK + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0 } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM, 0 } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_GREK { AF_BLUE_STRING_GREEK_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM, 0 } @@ -438,6 +571,25 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_GUJR + { AF_BLUE_STRING_GUJARATI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_GUJARATI_BOTTOM, 0 } + { AF_BLUE_STRING_GUJARATI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GUJARATI_DESCENDER, 0 } + { AF_BLUE_STRING_GUJARATI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_MAX, 0 } + + AF_BLUE_STRINGSET_GURU + { AF_BLUE_STRING_GURMUKHI_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GURMUKHI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GURMUKHI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_NEUTRAL | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_GURMUKHI_BOTTOM, 0 } + { AF_BLUE_STRING_GURMUKHI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_HEBR { AF_BLUE_STRING_HEBREW_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_LONG } @@ -466,13 +618,13 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_MAX, 0 } AF_BLUE_STRINGSET_LAO - { AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP | - AF_BLUE_PROPERTY_LATIN_X_HEIGHT } - { AF_BLUE_STRING_LAO_BOTTOM, 0 } - { AF_BLUE_STRING_LAO_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_LAO_DESCENDER, 0 } - { AF_BLUE_STRING_MAX, 0 } + { AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_LAO_BOTTOM, 0 } + { AF_BLUE_STRING_LAO_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_LAO_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } AF_BLUE_STRINGSET_LATN { AF_BLUE_STRING_LATIN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } @@ -504,6 +656,11 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_MLYM + { AF_BLUE_STRING_MALAYALAM_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_MYMR { AF_BLUE_STRING_MYANMAR_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT } @@ -512,6 +669,20 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_MYANMAR_DESCENDER, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_NONE + { AF_BLUE_STRING_MAX, 0 } + + AF_BLUE_STRINGSET_SINH + { AF_BLUE_STRING_SINHALA_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_SINHALA_BOTTOM, 0 } + { AF_BLUE_STRING_SINHALA_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } + + AF_BLUE_STRINGSET_TAML + { AF_BLUE_STRING_TAMIL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_TAMIL_BOTTOM, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_TELU { AF_BLUE_STRING_TELUGU_TOP, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_TELUGU_BOTTOM, 0 } diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.h b/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.h index 75cd6c3fa0c..41f838e4577 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.h +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.h @@ -80,68 +80,107 @@ FT_BEGIN_HEADER AF_BLUE_STRING_ARABIC_TOP = 0, AF_BLUE_STRING_ARABIC_BOTTOM = 18, AF_BLUE_STRING_ARABIC_JOIN = 33, - AF_BLUE_STRING_BENGALI_BASE = 36, - AF_BLUE_STRING_BENGALI_TOP = 68, - AF_BLUE_STRING_BENGALI_HEAD = 96, - AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 128, - AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 152, - AF_BLUE_STRING_CYRILLIC_SMALL = 176, - AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 200, - AF_BLUE_STRING_DEVANAGARI_BASE = 209, - AF_BLUE_STRING_DEVANAGARI_TOP = 241, - AF_BLUE_STRING_DEVANAGARI_HEAD = 273, - AF_BLUE_STRING_DEVANAGARI_BOTTOM = 305, - AF_BLUE_STRING_GREEK_CAPITAL_TOP = 313, - AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 334, - AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 352, - AF_BLUE_STRING_GREEK_SMALL = 370, - AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 394, - AF_BLUE_STRING_HEBREW_TOP = 418, - AF_BLUE_STRING_HEBREW_BOTTOM = 442, - AF_BLUE_STRING_HEBREW_DESCENDER = 460, - AF_BLUE_STRING_KANNADA_TOP = 475, - AF_BLUE_STRING_KANNADA_BOTTOM = 519, - AF_BLUE_STRING_KHMER_TOP = 551, - AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 575, - AF_BLUE_STRING_KHMER_BOTTOM = 615, - AF_BLUE_STRING_KHMER_DESCENDER = 647, - AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 681, - AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 768, - AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 776, - AF_BLUE_STRING_LAO_TOP = 784, - AF_BLUE_STRING_LAO_BOTTOM = 816, - AF_BLUE_STRING_LAO_ASCENDER = 848, - AF_BLUE_STRING_LAO_LARGE_ASCENDER = 864, - AF_BLUE_STRING_LAO_DESCENDER = 876, - AF_BLUE_STRING_LATIN_CAPITAL_TOP = 900, - AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 916, - AF_BLUE_STRING_LATIN_SMALL_F_TOP = 932, - AF_BLUE_STRING_LATIN_SMALL = 946, - AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 960, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 970, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 990, - AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 1010, - AF_BLUE_STRING_LATIN_SUBS_SMALL = 1030, - AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 1066, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 1086, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 1117, - AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 1146, - AF_BLUE_STRING_LATIN_SUPS_SMALL = 1172, - AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 1197, - AF_BLUE_STRING_MYANMAR_TOP = 1208, - AF_BLUE_STRING_MYANMAR_BOTTOM = 1240, - AF_BLUE_STRING_MYANMAR_ASCENDER = 1272, - AF_BLUE_STRING_MYANMAR_DESCENDER = 1300, - AF_BLUE_STRING_TELUGU_TOP = 1332, - AF_BLUE_STRING_TELUGU_BOTTOM = 1360, - AF_BLUE_STRING_THAI_TOP = 1388, - AF_BLUE_STRING_THAI_BOTTOM = 1412, - AF_BLUE_STRING_THAI_ASCENDER = 1440, - AF_BLUE_STRING_THAI_LARGE_ASCENDER = 1452, - AF_BLUE_STRING_THAI_DESCENDER = 1464, - AF_BLUE_STRING_THAI_LARGE_DESCENDER = 1480, - AF_BLUE_STRING_THAI_DIGIT_TOP = 1488, - af_blue_1_1 = 1499, + AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP = 36, + AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM = 60, + AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER = 84, + AF_BLUE_STRING_ARMENIAN_SMALL_TOP = 108, + AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM = 132, + AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER = 156, + AF_BLUE_STRING_BENGALI_BASE = 180, + AF_BLUE_STRING_BENGALI_TOP = 212, + AF_BLUE_STRING_BENGALI_HEAD = 240, + AF_BLUE_STRING_CHEROKEE_CAPITAL = 272, + AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 304, + AF_BLUE_STRING_CHEROKEE_SMALL = 336, + AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 368, + AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 384, + AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 408, + AF_BLUE_STRING_CYRILLIC_SMALL = 432, + AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 456, + AF_BLUE_STRING_DEVANAGARI_BASE = 465, + AF_BLUE_STRING_DEVANAGARI_TOP = 497, + AF_BLUE_STRING_DEVANAGARI_HEAD = 529, + AF_BLUE_STRING_DEVANAGARI_BOTTOM = 561, + AF_BLUE_STRING_ETHIOPIC_TOP = 569, + AF_BLUE_STRING_ETHIOPIC_BOTTOM = 601, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 633, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 665, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 697, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 729, + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 761, + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 793, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 825, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 857, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 889, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 921, + AF_BLUE_STRING_GREEK_CAPITAL_TOP = 953, + AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 974, + AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 992, + AF_BLUE_STRING_GREEK_SMALL = 1010, + AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 1034, + AF_BLUE_STRING_GUJARATI_TOP = 1058, + AF_BLUE_STRING_GUJARATI_BOTTOM = 1090, + AF_BLUE_STRING_GUJARATI_ASCENDER = 1122, + AF_BLUE_STRING_GUJARATI_DESCENDER = 1172, + AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 1205, + AF_BLUE_STRING_GURMUKHI_BASE = 1225, + AF_BLUE_STRING_GURMUKHI_HEAD = 1257, + AF_BLUE_STRING_GURMUKHI_TOP = 1289, + AF_BLUE_STRING_GURMUKHI_BOTTOM = 1321, + AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 1353, + AF_BLUE_STRING_HEBREW_TOP = 1373, + AF_BLUE_STRING_HEBREW_BOTTOM = 1397, + AF_BLUE_STRING_HEBREW_DESCENDER = 1415, + AF_BLUE_STRING_KANNADA_TOP = 1430, + AF_BLUE_STRING_KANNADA_BOTTOM = 1474, + AF_BLUE_STRING_KHMER_TOP = 1506, + AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 1530, + AF_BLUE_STRING_KHMER_BOTTOM = 1570, + AF_BLUE_STRING_KHMER_DESCENDER = 1602, + AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 1636, + AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 1723, + AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 1731, + AF_BLUE_STRING_LAO_TOP = 1739, + AF_BLUE_STRING_LAO_BOTTOM = 1771, + AF_BLUE_STRING_LAO_ASCENDER = 1803, + AF_BLUE_STRING_LAO_LARGE_ASCENDER = 1819, + AF_BLUE_STRING_LAO_DESCENDER = 1831, + AF_BLUE_STRING_LATIN_CAPITAL_TOP = 1855, + AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 1871, + AF_BLUE_STRING_LATIN_SMALL_F_TOP = 1887, + AF_BLUE_STRING_LATIN_SMALL = 1901, + AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 1915, + AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 1925, + AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 1945, + AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 1965, + AF_BLUE_STRING_LATIN_SUBS_SMALL = 1985, + AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 2021, + AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 2041, + AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 2072, + AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 2101, + AF_BLUE_STRING_LATIN_SUPS_SMALL = 2127, + AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 2152, + AF_BLUE_STRING_MALAYALAM_TOP = 2163, + AF_BLUE_STRING_MALAYALAM_BOTTOM = 2207, + AF_BLUE_STRING_MYANMAR_TOP = 2239, + AF_BLUE_STRING_MYANMAR_BOTTOM = 2271, + AF_BLUE_STRING_MYANMAR_ASCENDER = 2303, + AF_BLUE_STRING_MYANMAR_DESCENDER = 2331, + AF_BLUE_STRING_SINHALA_TOP = 2363, + AF_BLUE_STRING_SINHALA_BOTTOM = 2395, + AF_BLUE_STRING_SINHALA_DESCENDER = 2427, + AF_BLUE_STRING_TAMIL_TOP = 2471, + AF_BLUE_STRING_TAMIL_BOTTOM = 2503, + AF_BLUE_STRING_TELUGU_TOP = 2535, + AF_BLUE_STRING_TELUGU_BOTTOM = 2563, + AF_BLUE_STRING_THAI_TOP = 2591, + AF_BLUE_STRING_THAI_BOTTOM = 2615, + AF_BLUE_STRING_THAI_ASCENDER = 2643, + AF_BLUE_STRING_THAI_LARGE_ASCENDER = 2655, + AF_BLUE_STRING_THAI_DESCENDER = 2667, + AF_BLUE_STRING_THAI_LARGE_DESCENDER = 2683, + AF_BLUE_STRING_THAI_DIGIT_TOP = 2691, + af_blue_1_1 = 2702, #ifdef AF_CONFIG_OPTION_CJK AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1, AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203, @@ -201,22 +240,33 @@ FT_BEGIN_HEADER typedef enum AF_Blue_Stringset_ { AF_BLUE_STRINGSET_ARAB = 0, - AF_BLUE_STRINGSET_BENG = 4, - AF_BLUE_STRINGSET_CYRL = 9, - AF_BLUE_STRINGSET_DEVA = 15, - AF_BLUE_STRINGSET_GREK = 21, - AF_BLUE_STRINGSET_HEBR = 28, - AF_BLUE_STRINGSET_KNDA = 32, - AF_BLUE_STRINGSET_KHMR = 35, - AF_BLUE_STRINGSET_KHMS = 41, - AF_BLUE_STRINGSET_LAO = 44, - AF_BLUE_STRINGSET_LATN = 50, - AF_BLUE_STRINGSET_LATB = 57, - AF_BLUE_STRINGSET_LATP = 64, - AF_BLUE_STRINGSET_MYMR = 71, - AF_BLUE_STRINGSET_TELU = 76, - AF_BLUE_STRINGSET_THAI = 79, - af_blue_2_1 = 87, + AF_BLUE_STRINGSET_ARMN = 4, + AF_BLUE_STRINGSET_BENG = 11, + AF_BLUE_STRINGSET_CHER = 16, + AF_BLUE_STRINGSET_CYRL = 23, + AF_BLUE_STRINGSET_DEVA = 29, + AF_BLUE_STRINGSET_ETHI = 35, + AF_BLUE_STRINGSET_GEOR = 38, + AF_BLUE_STRINGSET_GEOK = 43, + AF_BLUE_STRINGSET_GREK = 50, + AF_BLUE_STRINGSET_GUJR = 57, + AF_BLUE_STRINGSET_GURU = 63, + AF_BLUE_STRINGSET_HEBR = 69, + AF_BLUE_STRINGSET_KNDA = 73, + AF_BLUE_STRINGSET_KHMR = 76, + AF_BLUE_STRINGSET_KHMS = 82, + AF_BLUE_STRINGSET_LAO = 85, + AF_BLUE_STRINGSET_LATN = 91, + AF_BLUE_STRINGSET_LATB = 98, + AF_BLUE_STRINGSET_LATP = 105, + AF_BLUE_STRINGSET_MLYM = 112, + AF_BLUE_STRINGSET_MYMR = 115, + AF_BLUE_STRINGSET_NONE = 120, + AF_BLUE_STRINGSET_SINH = 121, + AF_BLUE_STRINGSET_TAML = 125, + AF_BLUE_STRINGSET_TELU = 128, + AF_BLUE_STRINGSET_THAI = 131, + af_blue_2_1 = 139, #ifdef AF_CONFIG_OPTION_CJK AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0, af_blue_2_1_1 = af_blue_2_1 + 2, diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afcjk.c b/Build/source/libs/freetype2/freetype-src/src/autofit/afcjk.c index 4ba5d22e8be..4823c1d7f88 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afcjk.c +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afcjk.c @@ -966,15 +966,12 @@ if ( seg2 ) { - seg2->num_linked++; if ( seg2->link != seg1 ) { seg1->link = NULL; if ( seg2->score < dist_threshold || seg1->score < seg2->score * 4 ) seg1->serif = seg2->link; - else - seg2->num_linked--; } } } @@ -1528,7 +1525,7 @@ } if ( dist < 54 ) - dist += ( 54 - dist ) / 2 ; + dist += ( 54 - dist ) / 2; else if ( dist < 3 * 64 ) { FT_Pos delta; diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.c b/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.c index 9ed058f6430..6c3d032d1c7 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.c +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.c @@ -314,7 +314,7 @@ AF_DUMP(( "Table of points:\n" )); if ( hints->num_points ) - AF_DUMP(( " index hedge hseg vedge vseg flags" + AF_DUMP(( " index hedge hseg vedge vseg flags " " xorg yorg xscale yscale xfit yfit" )); else AF_DUMP(( " (none)\n" )); @@ -335,7 +335,7 @@ contour++; } - AF_DUMP(( " %5d %5s %5s %5s %5s %s " + AF_DUMP(( " %5d %5s %5s %5s %5s %s" " %5d %5d %7.2f %7.2f %7.2f %7.2f\n", point_idx, af_print_idx( buf1, @@ -344,8 +344,11 @@ af_print_idx( buf3, af_get_edge_index( hints, segment_idx_0, 0 ) ), af_print_idx( buf4, segment_idx_0 ), - ( point->flags & AF_FLAG_WEAK_INTERPOLATION ) ? "weak" - : " -- ", + ( point->flags & AF_FLAG_NEAR ) + ? " near " + : ( point->flags & AF_FLAG_WEAK_INTERPOLATION ) + ? " weak " + : "strong", point->fx, point->fy, @@ -813,18 +816,26 @@ AF_Point point; AF_Point point_limit = points + hints->num_points; + /* value 20 in `near_limit' is heuristic */ + FT_UInt units_per_em = hints->metrics->scaler.face->units_per_EM; + FT_Int near_limit = 20 * units_per_em / 2048; + /* compute coordinates & Bezier flags, next and prev */ { FT_Vector* vec = outline->points; char* tag = outline->tags; - AF_Point end = points + outline->contours[0]; + FT_Short endpoint = outline->contours[0]; + AF_Point end = points + endpoint; AF_Point prev = end; FT_Int contour_index = 0; for ( point = points; point < point_limit; point++, vec++, tag++ ) { + FT_Pos out_x, out_y; + + point->in_dir = (FT_Char)AF_DIR_NONE; point->out_dir = (FT_Char)AF_DIR_NONE; @@ -833,6 +844,9 @@ point->ox = point->x = FT_MulFix( vec->x, x_scale ) + x_delta; point->oy = point->y = FT_MulFix( vec->y, y_scale ) + y_delta; + end->fx = (FT_Short)outline->points[endpoint].x; + end->fy = (FT_Short)outline->points[endpoint].y; + switch ( FT_CURVE_TAG( *tag ) ) { case FT_CURVE_TAG_CONIC: @@ -845,6 +859,12 @@ point->flags = AF_FLAG_NONE; } + out_x = point->fx - prev->fx; + out_y = point->fy - prev->fy; + + if ( FT_ABS( out_x ) + FT_ABS( out_y ) < near_limit ) + prev->flags |= AF_FLAG_NEAR; + point->prev = prev; prev->next = point; prev = point; @@ -853,8 +873,9 @@ { if ( ++contour_index < outline->n_contours ) { - end = points + outline->contours[contour_index]; - prev = end; + endpoint = outline->contours[contour_index]; + end = points + endpoint; + prev = end; } } } @@ -880,17 +901,15 @@ * Compute directions of `in' and `out' vectors. * * Note that distances between points that are very near to each - * other are accumulated. In other words, the auto-hinter + * other are accumulated. In other words, the auto-hinter either * prepends the small vectors between near points to the first - * non-near vector. All intermediate points are tagged as - * weak; the directions are adjusted also to be equal to the - * accumulated one. + * non-near vector, or the sum of small vector lengths exceeds a + * threshold, thus `grouping' the small vectors. All intermediate + * points are tagged as weak; the directions are adjusted also to + * be equal to the accumulated one. */ - /* value 20 in `near_limit' is heuristic */ - FT_UInt units_per_em = hints->metrics->scaler.face->units_per_EM; - FT_Int near_limit = 20 * units_per_em / 2048; - FT_Int near_limit2 = 2 * near_limit - 1; + FT_Int near_limit2 = 2 * near_limit - 1; AF_Point* contour; AF_Point* contour_limit = hints->contours + hints->num_contours; @@ -937,7 +956,7 @@ /* now loop over all points of the contour to get */ /* `in' and `out' vector directions */ - curr = first; + curr = first; /* * We abuse the `u' and `v' fields to store index deltas to the @@ -960,7 +979,7 @@ point = next; - next = point->next; + next = point->next; out_x += next->fx - point->fx; out_y += next->fy - point->fy; diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.h b/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.h index 45635652dbf..5142e6ed217 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.h +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.h @@ -221,6 +221,9 @@ FT_BEGIN_HEADER /* candidates for weak interpolation have this flag set */ #define AF_FLAG_WEAK_INTERPOLATION ( 1U << 4 ) + /* the distance to the next point is very small */ +#define AF_FLAG_NEAR ( 1U << 5 ) + /* edge hint flags */ #define AF_EDGE_NORMAL 0 @@ -266,7 +269,6 @@ FT_BEGIN_HEADER AF_Segment link; /* (stem) link segment */ AF_Segment serif; /* primary segment for serifs */ - FT_Pos num_linked; /* number of linked segments */ FT_Pos score; /* used during stem matching */ FT_Pos len; /* used during stem matching */ @@ -289,7 +291,6 @@ FT_BEGIN_HEADER AF_Width blue_edge; /* non-NULL if this is a blue edge */ AF_Edge link; /* link edge */ AF_Edge serif; /* primary edge for serifs */ - FT_Short num_linked; /* number of linked edges */ FT_Int score; /* used during stem matching */ AF_Segment first; /* first segment in edge */ diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin.c b/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin.c index 8a45116b5d7..7ccf3f6e370 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin.c +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin.c @@ -1436,19 +1436,36 @@ /* do each contour separately */ for ( ; contour < contour_limit; contour++ ) { - AF_Point point = contour[0]; - AF_Point last = point->prev; - int on_edge = 0; - FT_Pos min_pos = 32000; /* minimum segment pos != min_coord */ - FT_Pos max_pos = -32000; /* maximum segment pos != max_coord */ - FT_Pos min_on_pos = 32000; - FT_Pos max_on_pos = -32000; - FT_Bool passed; + AF_Point point = contour[0]; + AF_Point last = point->prev; + int on_edge = 0; + + /* we call values measured along a segment (point->v) */ + /* `coordinates', and values orthogonal to it (point->u) */ + /* `positions' */ + FT_Pos min_pos = 32000; + FT_Pos max_pos = -32000; + FT_Pos min_coord = 32000; + FT_Pos max_coord = -32000; + FT_UShort min_flags = AF_FLAG_NONE; + FT_UShort max_flags = AF_FLAG_NONE; + FT_Pos min_on_coord = 32000; + FT_Pos max_on_coord = -32000; + + FT_Bool passed; + + AF_Segment prev_segment = NULL; + + FT_Pos prev_min_pos = min_pos; + FT_Pos prev_max_pos = max_pos; + FT_Pos prev_min_coord = min_coord; + FT_Pos prev_max_coord = max_coord; + FT_UShort prev_min_flags = min_flags; + FT_UShort prev_max_flags = max_flags; + FT_Pos prev_min_on_coord = min_on_coord; + FT_Pos prev_max_on_coord = max_on_coord; - if ( point == last ) /* skip singletons -- just in case */ - continue; - if ( FT_ABS( last->out_dir ) == major_dir && FT_ABS( point->out_dir ) == major_dir ) { @@ -1478,51 +1495,181 @@ if ( on_edge ) { + /* get minimum and maximum position */ u = point->u; if ( u < min_pos ) min_pos = u; if ( u > max_pos ) max_pos = u; - /* get minimum and maximum coordinate of on points */ + /* get minimum and maximum coordinate together with flags */ + v = point->v; + if ( v < min_coord ) + { + min_coord = v; + min_flags = point->flags; + } + if ( v > max_coord ) + { + max_coord = v; + max_flags = point->flags; + } + + /* get minimum and maximum coordinate of `on' points */ if ( !( point->flags & AF_FLAG_CONTROL ) ) { v = point->v; - if ( v < min_on_pos ) - min_on_pos = v; - if ( v > max_on_pos ) - max_on_pos = v; + if ( v < min_on_coord ) + min_on_coord = v; + if ( v > max_on_coord ) + max_on_coord = v; } if ( point->out_dir != segment_dir || point == last ) { - /* we are just leaving an edge; record a new segment! */ - segment->last = point; - segment->pos = (FT_Short)( ( min_pos + max_pos ) >> 1 ); - - /* a segment is round if either its first or last point */ - /* is a control point, and the length of the on points */ - /* inbetween doesn't exceed a heuristic limit */ - if ( ( segment->first->flags | point->flags ) & AF_FLAG_CONTROL && - ( max_on_pos - min_on_pos ) < flat_threshold ) - segment->flags |= AF_EDGE_ROUND; + /* check whether the new segment's start point is identical to */ + /* the previous segment's end point; for example, this might */ + /* happen for spikes */ - /* compute segment size */ - min_pos = max_pos = point->v; + if ( !prev_segment || segment->first != prev_segment->last ) + { + /* points are different: we are just leaving an edge, thus */ + /* record a new segment */ + + segment->last = point; + segment->pos = (FT_Short)( ( min_pos + max_pos ) >> 1 ); + + /* a segment is round if either its first or last point */ + /* is a control point, and the length of the on points */ + /* inbetween doesn't exceed a heuristic limit */ + if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL && + ( max_on_coord - min_on_coord ) < flat_threshold ) + segment->flags |= AF_EDGE_ROUND; + + segment->min_coord = (FT_Short)min_coord; + segment->max_coord = (FT_Short)max_coord; + segment->height = segment->max_coord - segment->min_coord; + + prev_segment = segment; + prev_min_pos = min_pos; + prev_max_pos = max_pos; + prev_min_coord = min_coord; + prev_max_coord = max_coord; + prev_min_flags = min_flags; + prev_max_flags = max_flags; + prev_min_on_coord = min_on_coord; + prev_max_on_coord = max_on_coord; + } + else + { + /* points are the same: we don't create a new segment but */ + /* merge the current segment with the previous one */ - v = segment->first->v; - if ( v < min_pos ) - min_pos = v; - if ( v > max_pos ) - max_pos = v; + if ( prev_segment->last->in_dir == point->in_dir ) + { + /* we have identical directions (this can happen for */ + /* degenerate outlines that move zig-zag along the main */ + /* axis without changing the coordinate value of the other */ + /* axis, and where the segments have just been merged): */ + /* unify segments */ - segment->min_coord = (FT_Short)min_pos; - segment->max_coord = (FT_Short)max_pos; - segment->height = (FT_Short)( segment->max_coord - - segment->min_coord ); + /* update constraints */ + + if ( prev_min_pos < min_pos ) + min_pos = prev_min_pos; + if ( prev_max_pos > max_pos ) + max_pos = prev_max_pos; + + if ( prev_min_coord < min_coord ) + { + min_coord = prev_min_coord; + min_flags = prev_min_flags; + } + if ( prev_max_coord > max_coord ) + { + max_coord = prev_max_coord; + max_flags = prev_max_flags; + } + + if ( prev_min_on_coord < min_on_coord ) + min_on_coord = prev_min_on_coord; + if ( prev_max_on_coord > max_on_coord ) + max_on_coord = prev_max_on_coord; + + prev_segment->last = point; + prev_segment->pos = (FT_Short)( ( min_pos + + max_pos ) >> 1 ); + + if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL && + ( max_on_coord - min_on_coord ) < flat_threshold ) + prev_segment->flags |= AF_EDGE_ROUND; + else + prev_segment->flags &= ~AF_EDGE_ROUND; + + prev_segment->min_coord = (FT_Short)min_coord; + prev_segment->max_coord = (FT_Short)max_coord; + prev_segment->height = prev_segment->max_coord - + prev_segment->min_coord; + } + else + { + /* we have different directions; use the properties of the */ + /* longer segment and discard the other one */ + + if ( FT_ABS( prev_max_coord - prev_min_coord ) > + FT_ABS( max_coord - min_coord ) ) + { + /* discard current segment */ + + if ( min_pos < prev_min_pos ) + prev_min_pos = min_pos; + if ( max_pos > prev_max_pos ) + prev_max_pos = max_pos; + + prev_segment->last = point; + prev_segment->pos = (FT_Short)( ( prev_min_pos + + prev_max_pos ) >> 1 ); + } + else + { + /* discard previous segment */ + + if ( prev_min_pos < min_pos ) + min_pos = prev_min_pos; + if ( prev_max_pos > max_pos ) + max_pos = prev_max_pos; + + segment->last = point; + segment->pos = (FT_Short)( ( min_pos + max_pos ) >> 1 ); + + if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL && + ( max_on_coord - min_on_coord ) < flat_threshold ) + segment->flags |= AF_EDGE_ROUND; + + segment->min_coord = (FT_Short)min_coord; + segment->max_coord = (FT_Short)max_coord; + segment->height = segment->max_coord - + segment->min_coord; + + *prev_segment = *segment; + + prev_min_pos = min_pos; + prev_max_pos = max_pos; + prev_min_coord = min_coord; + prev_max_coord = max_coord; + prev_min_flags = min_flags; + prev_max_flags = max_flags; + prev_min_on_coord = min_on_coord; + prev_max_on_coord = max_on_coord; + } + } + + axis->num_segments--; + } on_edge = 0; segment = NULL; + /* fall through */ } } @@ -1535,7 +1682,12 @@ passed = 1; } - if ( !on_edge && FT_ABS( point->out_dir ) == major_dir ) + /* if we are not on an edge, check whether the major direction */ + /* coincides with the current point's `out' direction, or */ + /* whether we have a single-point contour */ + if ( !on_edge && + ( FT_ABS( point->out_dir ) == major_dir || + point == point->prev ) ) { /* this is the start of a new segment! */ segment_dir = (AF_Direction)point->out_dir; @@ -1551,17 +1703,42 @@ segment->first = point; segment->last = point; - min_pos = max_pos = point->u; + /* `af_axis_hints_new_segment' reallocates memory, */ + /* thus we have to refresh the `prev_segment' pointer */ + if ( prev_segment ) + prev_segment = segment - 1; + + min_pos = max_pos = point->u; + min_coord = max_coord = point->v; + min_flags = max_flags = point->flags; if ( point->flags & AF_FLAG_CONTROL ) { - min_on_pos = 32000; - max_on_pos = -32000; + min_on_coord = 32000; + max_on_coord = -32000; } else - min_on_pos = max_on_pos = point->v; + min_on_coord = max_on_coord = point->v; on_edge = 1; + + if ( point == point->prev ) + { + /* we have a one-point segment: this is a one-point */ + /* contour with `in' and `out' direction set to */ + /* AF_DIR_NONE */ + segment->pos = (FT_Short)min_pos; + + if (point->flags & AF_FLAG_CONTROL) + segment->flags |= AF_EDGE_ROUND; + + segment->min_coord = (FT_Short)point->v; + segment->max_coord = (FT_Short)point->v; + segment->height = 0; + + on_edge = 0; + segment = NULL; + } } point = point->next; @@ -1845,7 +2022,10 @@ FT_Int ee; - if ( seg->height < segment_length_threshold ) + /* ignore too short segments and, in this loop, */ + /* one-point segments without a direction */ + if ( seg->height < segment_length_threshold || + seg->dir == AF_DIR_NONE ) continue; /* A special case for serif edges: If they are smaller than */ @@ -1907,6 +2087,44 @@ } } + /* we loop again over all segments to catch one-point segments */ + /* without a direction: if possible, link them to existing edges */ + for ( seg = segments; seg < segment_limit; seg++ ) + { + AF_Edge found = NULL; + FT_Int ee; + + + if ( seg->dir != AF_DIR_NONE ) + continue; + + /* look for an edge corresponding to the segment */ + for ( ee = 0; ee < axis->num_edges; ee++ ) + { + AF_Edge edge = axis->edges + ee; + FT_Pos dist; + + + dist = seg->pos - edge->fpos; + if ( dist < 0 ) + dist = -dist; + + if ( dist < edge_distance_threshold ) + { + found = edge; + break; + } + } + + /* one-point segments without a match are ignored */ + if ( found ) + { + seg->edge_next = found->first; + found->last->edge_next = seg; + found->last = seg; + } + } + /******************************************************************/ /* */ @@ -2347,6 +2565,7 @@ af_latin_compute_stem_width( AF_GlyphHints hints, AF_Dimension dim, FT_Pos width, + FT_Pos base_delta, FT_UInt base_flags, FT_UInt stem_flags ) { @@ -2424,7 +2643,39 @@ dist += delta; } else - dist = ( dist + 32 ) & ~63; + { + /* A stem's end position depends on two values: the start */ + /* position and the stem length. The former gets usually */ + /* rounded to the grid, while the latter gets rounded also if it */ + /* exceeds a certain length (see below in this function). This */ + /* `double rounding' can lead to a great difference to the */ + /* original, unhinted position; this normally doesn't matter for */ + /* large PPEM values, but for small sizes it can easily make */ + /* outlines collide. For this reason, we adjust the stem length */ + /* by a small amount depending on the PPEM value in case the */ + /* former and latter rounding both point into the same */ + /* direction. */ + + FT_Pos bdelta = 0; + + + if ( ( ( width > 0 ) && ( base_delta > 0 ) ) || + ( ( width < 0 ) && ( base_delta < 0 ) ) ) + { + FT_UInt ppem = metrics->root.scaler.face->size->metrics.x_ppem; + + + if ( ppem < 10 ) + bdelta = base_delta; + else if ( ppem < 30 ) + bdelta = ( base_delta * (FT_Pos)( 30 - ppem ) ) / 20; + + if ( bdelta < 0 ) + bdelta = -bdelta; + } + + dist = ( dist - bdelta + 32 ) & ~63; + } } } else @@ -2513,11 +2764,17 @@ AF_Edge base_edge, AF_Edge stem_edge ) { - FT_Pos dist = stem_edge->opos - base_edge->opos; + FT_Pos dist, base_delta; + FT_Pos fitted_width; + + + dist = stem_edge->opos - base_edge->opos; + base_delta = base_edge->pos - base_edge->opos; - FT_Pos fitted_width = af_latin_compute_stem_width( hints, dim, dist, - base_edge->flags, - stem_edge->flags ); + fitted_width = af_latin_compute_stem_width( hints, dim, + dist, base_delta, + base_edge->flags, + stem_edge->flags ); stem_edge->pos = base_edge->pos + fitted_width; @@ -2721,7 +2978,8 @@ org_len = edge2->opos - edge->opos; - cur_len = af_latin_compute_stem_width( hints, dim, org_len, + cur_len = af_latin_compute_stem_width( hints, dim, + org_len, 0, edge->flags, edge2->flags ); @@ -2790,7 +3048,8 @@ org_len = edge2->opos - edge->opos; org_center = org_pos + ( org_len >> 1 ); - cur_len = af_latin_compute_stem_width( hints, dim, org_len, + cur_len = af_latin_compute_stem_width( hints, dim, + org_len, 0, edge->flags, edge2->flags ); @@ -2850,7 +3109,8 @@ org_len = edge2->opos - edge->opos; org_center = org_pos + ( org_len >> 1 ); - cur_len = af_latin_compute_stem_width( hints, dim, org_len, + cur_len = af_latin_compute_stem_width( hints, dim, + org_len, 0, edge->flags, edge2->flags ); @@ -2885,14 +3145,21 @@ ( top_to_bottom_hinting ? ( edge->pos > edge[-1].pos ) : ( edge->pos < edge[-1].pos ) ) ) { + /* don't move if stem would (almost) disappear otherwise; */ + /* the ad-hoc value 16 corresponds to 1/4px */ + if ( edge->link && FT_ABS( edge->link->pos - edge[-1].pos ) > 16 ) + { #ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", - edge - edges, edge->pos / 64.0, edge[-1].pos / 64.0 )); + FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", + edge - edges, + edge->pos / 64.0, + edge[-1].pos / 64.0 )); - num_actions++; + num_actions++; #endif - edge->pos = edge[-1].pos; + edge->pos = edge[-1].pos; + } } } } @@ -3048,13 +3315,20 @@ ( top_to_bottom_hinting ? ( edge->pos > edge[-1].pos ) : ( edge->pos < edge[-1].pos ) ) ) { + /* don't move if stem would (almost) disappear otherwise; */ + /* the ad-hoc value 16 corresponds to 1/4px */ + if ( edge->link && FT_ABS( edge->link->pos - edge[-1].pos ) > 16 ) + { #ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", - edge - edges, edge->pos / 64.0, edge[-1].pos / 64.0 )); + FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", + edge - edges, + edge->pos / 64.0, + edge[-1].pos / 64.0 )); - num_actions++; + num_actions++; #endif - edge->pos = edge[-1].pos; + edge->pos = edge[-1].pos; + } } if ( edge + 1 < edge_limit && @@ -3062,14 +3336,21 @@ ( top_to_bottom_hinting ? ( edge->pos < edge[1].pos ) : ( edge->pos > edge[1].pos ) ) ) { + /* don't move if stem would (almost) disappear otherwise; */ + /* the ad-hoc value 16 corresponds to 1/4px */ + if ( edge->link && FT_ABS( edge->link->pos - edge[-1].pos ) > 16 ) + { #ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", - edge - edges, edge->pos / 64.0, edge[1].pos / 64.0 )); + FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", + edge - edges, + edge->pos / 64.0, + edge[1].pos / 64.0 )); - num_actions++; + num_actions++; #endif - edge->pos = edge[1].pos; + edge->pos = edge[1].pos; + } } } } diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.c b/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.c index 1fab85e8d0f..5db4a41141a 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.c +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.c @@ -1,3 +1,8 @@ +/* ATTENTION: This file doesn't compile. It is only here as a reference */ +/* of an alternative latin hinting algorithm that was always */ +/* marked as experimental. */ + + /***************************************************************************/ /* */ /* aflatin2.c */ diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.h b/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.h index c17a6a2a34e..f83f704289a 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.h +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin2.h @@ -1,3 +1,8 @@ +/* ATTENTION: This file doesn't compile. It is only here as a reference */ +/* of an alternative latin hinting algorithm that was always */ +/* marked as experimental. */ + + /***************************************************************************/ /* */ /* aflatin2.h */ diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afranges.c b/Build/source/libs/freetype2/freetype-src/src/autofit/afranges.c index 4e81e782856..732f3d16297 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afranges.c +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afranges.c @@ -58,72 +58,101 @@ const AF_Script_UniRangeRec af_arab_uniranges[] = { - AF_UNIRANGE_REC( 0x0600UL, 0x06FFUL ), /* Arabic */ - AF_UNIRANGE_REC( 0x0750UL, 0x07FFUL ), /* Arabic Supplement */ - AF_UNIRANGE_REC( 0x08A0UL, 0x08FFUL ), /* Arabic Extended-A */ - AF_UNIRANGE_REC( 0xFB50UL, 0xFDFFUL ), /* Arabic Presentation Forms-A */ - AF_UNIRANGE_REC( 0xFE70UL, 0xFEFFUL ), /* Arabic Presentation Forms-B */ - AF_UNIRANGE_REC( 0x1EE00UL, 0x1EEFFUL ), /* Arabic Mathematical Alphabetic Symbols */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0600, 0x06FF ), /* Arabic */ + AF_UNIRANGE_REC( 0x0750, 0x07FF ), /* Arabic Supplement */ + AF_UNIRANGE_REC( 0x08A0, 0x08FF ), /* Arabic Extended-A */ + AF_UNIRANGE_REC( 0xFB50, 0xFDFF ), /* Arabic Presentation Forms-A */ + AF_UNIRANGE_REC( 0xFE70, 0xFEFF ), /* Arabic Presentation Forms-B */ + AF_UNIRANGE_REC( 0x1EE00, 0x1EEFF ), /* Arabic Mathematical Alphabetic Symbols */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_arab_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0600UL, 0x0605UL ), - AF_UNIRANGE_REC( 0x0610UL, 0x061AUL ), - AF_UNIRANGE_REC( 0x064BUL, 0x065FUL ), - AF_UNIRANGE_REC( 0x0670UL, 0x0670UL ), - AF_UNIRANGE_REC( 0x06D6UL, 0x06DCUL ), - AF_UNIRANGE_REC( 0x06DFUL, 0x06E4UL ), - AF_UNIRANGE_REC( 0x06E7UL, 0x06E8UL ), - AF_UNIRANGE_REC( 0x06EAUL, 0x06EDUL ), - AF_UNIRANGE_REC( 0x08E3UL, 0x08FFUL ), - AF_UNIRANGE_REC( 0xFBB2UL, 0xFBC1UL ), - AF_UNIRANGE_REC( 0xFE70UL, 0xFE70UL ), - AF_UNIRANGE_REC( 0xFE72UL, 0xFE72UL ), - AF_UNIRANGE_REC( 0xFE74UL, 0xFE74UL ), - AF_UNIRANGE_REC( 0xFE76UL, 0xFE76UL ), - AF_UNIRANGE_REC( 0xFE78UL, 0xFE78UL ), - AF_UNIRANGE_REC( 0xFE7AUL, 0xFE7AUL ), - AF_UNIRANGE_REC( 0xFE7CUL, 0xFE7CUL ), - AF_UNIRANGE_REC( 0xFE7EUL, 0xFE7EUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0600, 0x0605 ), + AF_UNIRANGE_REC( 0x0610, 0x061A ), + AF_UNIRANGE_REC( 0x064B, 0x065F ), + AF_UNIRANGE_REC( 0x0670, 0x0670 ), + AF_UNIRANGE_REC( 0x06D6, 0x06DC ), + AF_UNIRANGE_REC( 0x06DF, 0x06E4 ), + AF_UNIRANGE_REC( 0x06E7, 0x06E8 ), + AF_UNIRANGE_REC( 0x06EA, 0x06ED ), + AF_UNIRANGE_REC( 0x08D4, 0x08E1 ), + AF_UNIRANGE_REC( 0x08E3, 0x08FF ), + AF_UNIRANGE_REC( 0xFBB2, 0xFBC1 ), + AF_UNIRANGE_REC( 0xFE70, 0xFE70 ), + AF_UNIRANGE_REC( 0xFE72, 0xFE72 ), + AF_UNIRANGE_REC( 0xFE74, 0xFE74 ), + AF_UNIRANGE_REC( 0xFE76, 0xFE76 ), + AF_UNIRANGE_REC( 0xFE78, 0xFE78 ), + AF_UNIRANGE_REC( 0xFE7A, 0xFE7A ), + AF_UNIRANGE_REC( 0xFE7C, 0xFE7C ), + AF_UNIRANGE_REC( 0xFE7E, 0xFE7E ), + AF_UNIRANGE_REC( 0, 0 ) + }; + + + const AF_Script_UniRangeRec af_armn_uniranges[] = + { + AF_UNIRANGE_REC( 0x0530, 0x058F ), /* Armenian */ + AF_UNIRANGE_REC( 0xFB13, 0xFB17 ), /* Alphab. Present. Forms (Armenian) */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_armn_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0x0559, 0x055F ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_beng_uniranges[] = { - AF_UNIRANGE_REC( 0x0980UL, 0x09FFUL ), /* Bengali */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0980, 0x09FF ), /* Bengali */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_beng_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0981UL, 0x0981UL ), - AF_UNIRANGE_REC( 0x09BCUL, 0x09BCUL ), - AF_UNIRANGE_REC( 0x09C1UL, 0x09C4UL ), - AF_UNIRANGE_REC( 0x09CDUL, 0x09CDUL ), - AF_UNIRANGE_REC( 0x09E2UL, 0x09E3UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0981, 0x0981 ), + AF_UNIRANGE_REC( 0x09BC, 0x09BC ), + AF_UNIRANGE_REC( 0x09C1, 0x09C4 ), + AF_UNIRANGE_REC( 0x09CD, 0x09CD ), + AF_UNIRANGE_REC( 0x09E2, 0x09E3 ), + AF_UNIRANGE_REC( 0, 0 ) + }; + + + const AF_Script_UniRangeRec af_cher_uniranges[] = + { + AF_UNIRANGE_REC( 0x13A0, 0x13FF ), /* Cherokee */ + AF_UNIRANGE_REC( 0xAB70, 0xABBF ), /* Cherokee Supplement */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_cher_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_cyrl_uniranges[] = { - AF_UNIRANGE_REC( 0x0400UL, 0x04FFUL ), /* Cyrillic */ - AF_UNIRANGE_REC( 0x0500UL, 0x052FUL ), /* Cyrillic Supplement */ - AF_UNIRANGE_REC( 0x2DE0UL, 0x2DFFUL ), /* Cyrillic Extended-A */ - AF_UNIRANGE_REC( 0xA640UL, 0xA69FUL ), /* Cyrillic Extended-B */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0400, 0x04FF ), /* Cyrillic */ + AF_UNIRANGE_REC( 0x0500, 0x052F ), /* Cyrillic Supplement */ + AF_UNIRANGE_REC( 0x2DE0, 0x2DFF ), /* Cyrillic Extended-A */ + AF_UNIRANGE_REC( 0xA640, 0xA69F ), /* Cyrillic Extended-B */ + AF_UNIRANGE_REC( 0x1C80, 0x1C8F ), /* Cyrillic Extended-C */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_cyrl_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0483UL, 0x0489UL ), - AF_UNIRANGE_REC( 0x2DE0UL, 0x2DFFUL ), - AF_UNIRANGE_REC( 0xA66FUL, 0xA67FUL ), - AF_UNIRANGE_REC( 0xA69EUL, 0xA69FUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0483, 0x0489 ), + AF_UNIRANGE_REC( 0x2DE0, 0x2DFF ), + AF_UNIRANGE_REC( 0xA66F, 0xA67F ), + AF_UNIRANGE_REC( 0xA69E, 0xA69F ), + AF_UNIRANGE_REC( 0, 0 ) }; @@ -133,457 +162,503 @@ const AF_Script_UniRangeRec af_deva_uniranges[] = { - AF_UNIRANGE_REC( 0x0900UL, 0x093BUL ), /* Devanagari */ + AF_UNIRANGE_REC( 0x0900, 0x093B ), /* Devanagari */ /* omitting U+093C nukta */ - AF_UNIRANGE_REC( 0x093DUL, 0x0950UL ), /* ... continued */ + AF_UNIRANGE_REC( 0x093D, 0x0950 ), /* ... continued */ /* omitting U+0951 udatta, U+0952 anudatta */ - AF_UNIRANGE_REC( 0x0953UL, 0x0963UL ), /* ... continued */ + AF_UNIRANGE_REC( 0x0953, 0x0963 ), /* ... continued */ /* omitting U+0964 danda, U+0965 double danda */ - AF_UNIRANGE_REC( 0x0966UL, 0x097FUL ), /* ... continued */ - AF_UNIRANGE_REC( 0x20B9UL, 0x20B9UL ), /* (new) Rupee sign */ - AF_UNIRANGE_REC( 0xA8E0UL, 0xA8FFUL ), /* Devanagari Extended */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0966, 0x097F ), /* ... continued */ + AF_UNIRANGE_REC( 0x20B9, 0x20B9 ), /* (new) Rupee sign */ + AF_UNIRANGE_REC( 0xA8E0, 0xA8FF ), /* Devanagari Extended */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_deva_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0900UL, 0x0902UL ), - AF_UNIRANGE_REC( 0x093AUL, 0x093AUL ), - AF_UNIRANGE_REC( 0x0941UL, 0x0948UL ), - AF_UNIRANGE_REC( 0x094DUL, 0x094DUL ), - AF_UNIRANGE_REC( 0x0953UL, 0x0957UL ), - AF_UNIRANGE_REC( 0x0962UL, 0x0963UL ), - AF_UNIRANGE_REC( 0xA8E0UL, 0xA8F1UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0900, 0x0902 ), + AF_UNIRANGE_REC( 0x093A, 0x093A ), + AF_UNIRANGE_REC( 0x0941, 0x0948 ), + AF_UNIRANGE_REC( 0x094D, 0x094D ), + AF_UNIRANGE_REC( 0x0953, 0x0957 ), + AF_UNIRANGE_REC( 0x0962, 0x0963 ), + AF_UNIRANGE_REC( 0xA8E0, 0xA8F1 ), + AF_UNIRANGE_REC( 0, 0 ) + }; + + + const AF_Script_UniRangeRec af_ethi_uniranges[] = + { + AF_UNIRANGE_REC( 0x1200, 0x137F ), /* Ethiopic */ + AF_UNIRANGE_REC( 0x1380, 0x139F ), /* Ethiopic Supplement */ + AF_UNIRANGE_REC( 0x2D80, 0x2DDF ), /* Ethiopic Extended */ + AF_UNIRANGE_REC( 0xAB00, 0xAB2F ), /* Ethiopic Extended-A */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_ethi_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0x135D, 0x135F ), + AF_UNIRANGE_REC( 0, 0 ) + }; + + + const AF_Script_UniRangeRec af_geor_uniranges[] = + { + AF_UNIRANGE_REC( 0x10D0, 0x10FF ), /* Georgian (Mkhedruli) */ +#if 0 + /* the following range is proposed for inclusion in Unicode */ + AF_UNIRANGE_REC( 0x1C90, 0x1CBF ), /* Georgian (Mtavruli) */ +#endif + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_geor_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0, 0 ) + }; + + + const AF_Script_UniRangeRec af_geok_uniranges[] = + { + /* Khutsuri */ + AF_UNIRANGE_REC( 0x10A0, 0x10CD ), /* Georgian (Asomtavruli) */ + AF_UNIRANGE_REC( 0x2D00, 0x2D2D ), /* Georgian (Nuskhuri) */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_geok_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_grek_uniranges[] = { - AF_UNIRANGE_REC( 0x0370UL, 0x03FFUL ), /* Greek and Coptic */ - AF_UNIRANGE_REC( 0x1F00UL, 0x1FFFUL ), /* Greek Extended */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0370, 0x03FF ), /* Greek and Coptic */ + AF_UNIRANGE_REC( 0x1F00, 0x1FFF ), /* Greek Extended */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_grek_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x037AUL, 0x037AUL ), - AF_UNIRANGE_REC( 0x0384UL, 0x0385UL ), - AF_UNIRANGE_REC( 0x1FBDUL, 0x1FC1UL ), - AF_UNIRANGE_REC( 0x1FCDUL, 0x1FCFUL ), - AF_UNIRANGE_REC( 0x1FDDUL, 0x1FDFUL ), - AF_UNIRANGE_REC( 0x1FEDUL, 0x1FEFUL ), - AF_UNIRANGE_REC( 0x1FFDUL, 0x1FFEUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x037A, 0x037A ), + AF_UNIRANGE_REC( 0x0384, 0x0385 ), + AF_UNIRANGE_REC( 0x1FBD, 0x1FC1 ), + AF_UNIRANGE_REC( 0x1FCD, 0x1FCF ), + AF_UNIRANGE_REC( 0x1FDD, 0x1FDF ), + AF_UNIRANGE_REC( 0x1FED, 0x1FEF ), + AF_UNIRANGE_REC( 0x1FFD, 0x1FFE ), + AF_UNIRANGE_REC( 0, 0 ) + }; + + + const AF_Script_UniRangeRec af_gujr_uniranges[] = + { + AF_UNIRANGE_REC( 0x0A80, 0x0AFF ), /* Gujarati */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_gujr_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0x0A81, 0x0A82 ), + AF_UNIRANGE_REC( 0x0ABC, 0x0ABC ), + AF_UNIRANGE_REC( 0x0AC1, 0x0AC8 ), + AF_UNIRANGE_REC( 0x0ACD, 0x0ACD ), + AF_UNIRANGE_REC( 0x0AE2, 0x0AE3 ), + AF_UNIRANGE_REC( 0, 0 ) + }; + + + const AF_Script_UniRangeRec af_guru_uniranges[] = + { + AF_UNIRANGE_REC( 0x0A00, 0x0A7F ), /* Gurmukhi */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_guru_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0x0A01, 0x0A02 ), + AF_UNIRANGE_REC( 0x0A3C, 0x0A3C ), + AF_UNIRANGE_REC( 0x0A41, 0x0A51 ), + AF_UNIRANGE_REC( 0x0A70, 0x0A71 ), + AF_UNIRANGE_REC( 0x0A75, 0x0A75 ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_hebr_uniranges[] = { - AF_UNIRANGE_REC( 0x0590UL, 0x05FFUL ), /* Hebrew */ - AF_UNIRANGE_REC( 0xFB1DUL, 0xFB4FUL ), /* Alphab. Present. Forms (Hebrew) */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0590, 0x05FF ), /* Hebrew */ + AF_UNIRANGE_REC( 0xFB1D, 0xFB4F ), /* Alphab. Present. Forms (Hebrew) */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_hebr_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0591UL, 0x05BFUL ), - AF_UNIRANGE_REC( 0x05C1UL, 0x05C2UL ), - AF_UNIRANGE_REC( 0x05C4UL, 0x05C5UL ), - AF_UNIRANGE_REC( 0x05C7UL, 0x05C7UL ), - AF_UNIRANGE_REC( 0xFB1EUL, 0xFB1EUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0591, 0x05BF ), + AF_UNIRANGE_REC( 0x05C1, 0x05C2 ), + AF_UNIRANGE_REC( 0x05C4, 0x05C5 ), + AF_UNIRANGE_REC( 0x05C7, 0x05C7 ), + AF_UNIRANGE_REC( 0xFB1E, 0xFB1E ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_knda_uniranges[] = { - AF_UNIRANGE_REC( 0x0C80UL, 0x0CFFUL ), /* Kannada */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0C80, 0x0CFF ), /* Kannada */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_knda_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0C81UL, 0x0C81UL ), - AF_UNIRANGE_REC( 0x0CBCUL, 0x0CBCUL ), - AF_UNIRANGE_REC( 0x0CBFUL, 0x0CBFUL ), - AF_UNIRANGE_REC( 0x0CC6UL, 0x0CC6UL ), - AF_UNIRANGE_REC( 0x0CCCUL, 0x0CCDUL ), - AF_UNIRANGE_REC( 0x0CE2UL, 0x0CE3UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0C81, 0x0C81 ), + AF_UNIRANGE_REC( 0x0CBC, 0x0CBC ), + AF_UNIRANGE_REC( 0x0CBF, 0x0CBF ), + AF_UNIRANGE_REC( 0x0CC6, 0x0CC6 ), + AF_UNIRANGE_REC( 0x0CCC, 0x0CCD ), + AF_UNIRANGE_REC( 0x0CE2, 0x0CE3 ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_khmr_uniranges[] = { - AF_UNIRANGE_REC( 0x1780UL, 0x17FFUL ), /* Khmer */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1780, 0x17FF ), /* Khmer */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_khmr_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x17B7UL, 0x17BDUL ), - AF_UNIRANGE_REC( 0x17C6UL, 0x17C6UL ), - AF_UNIRANGE_REC( 0x17C9UL, 0x17D3UL ), - AF_UNIRANGE_REC( 0x17DDUL, 0x17DDUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x17B7, 0x17BD ), + AF_UNIRANGE_REC( 0x17C6, 0x17C6 ), + AF_UNIRANGE_REC( 0x17C9, 0x17D3 ), + AF_UNIRANGE_REC( 0x17DD, 0x17DD ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_khms_uniranges[] = { - AF_UNIRANGE_REC( 0x19E0UL, 0x19FFUL ), /* Khmer Symbols */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x19E0, 0x19FF ), /* Khmer Symbols */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_khms_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_lao_uniranges[] = { - AF_UNIRANGE_REC( 0x0E80UL, 0x0EFFUL ), /* Lao */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0E80, 0x0EFF ), /* Lao */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_lao_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0EB1UL, 0x0EB1UL ), - AF_UNIRANGE_REC( 0x0EB4UL, 0x0EBCUL ), - AF_UNIRANGE_REC( 0x0EC8UL, 0x0ECDUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0EB1, 0x0EB1 ), + AF_UNIRANGE_REC( 0x0EB4, 0x0EBC ), + AF_UNIRANGE_REC( 0x0EC8, 0x0ECD ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_latn_uniranges[] = { - AF_UNIRANGE_REC( 0x0020UL, 0x007FUL ), /* Basic Latin (no control chars) */ - AF_UNIRANGE_REC( 0x00A0UL, 0x00A9UL ), /* Latin-1 Supplement (no control chars) */ - AF_UNIRANGE_REC( 0x00ABUL, 0x00B1UL ), /* ... continued */ - AF_UNIRANGE_REC( 0x00B4UL, 0x00B8UL ), /* ... continued */ - AF_UNIRANGE_REC( 0x00BBUL, 0x00FFUL ), /* ... continued */ - AF_UNIRANGE_REC( 0x0100UL, 0x017FUL ), /* Latin Extended-A */ - AF_UNIRANGE_REC( 0x0180UL, 0x024FUL ), /* Latin Extended-B */ - AF_UNIRANGE_REC( 0x0250UL, 0x02AFUL ), /* IPA Extensions */ - AF_UNIRANGE_REC( 0x02B9UL, 0x02DFUL ), /* Spacing Modifier Letters */ - AF_UNIRANGE_REC( 0x02E5UL, 0x02FFUL ), /* ... continued */ - AF_UNIRANGE_REC( 0x0300UL, 0x036FUL ), /* Combining Diacritical Marks */ - AF_UNIRANGE_REC( 0x1AB0UL, 0x1ABEUL ), /* Combining Diacritical Marks Extended */ - AF_UNIRANGE_REC( 0x1D00UL, 0x1D2BUL ), /* Phonetic Extensions */ - AF_UNIRANGE_REC( 0x1D6BUL, 0x1D77UL ), /* ... continued */ - AF_UNIRANGE_REC( 0x1D79UL, 0x1D7FUL ), /* ... continued */ - AF_UNIRANGE_REC( 0x1D80UL, 0x1D9AUL ), /* Phonetic Extensions Supplement */ - AF_UNIRANGE_REC( 0x1DC0UL, 0x1DFFUL ), /* Combining Diacritical Marks Supplement */ - AF_UNIRANGE_REC( 0x1E00UL, 0x1EFFUL ), /* Latin Extended Additional */ - AF_UNIRANGE_REC( 0x2000UL, 0x206FUL ), /* General Punctuation */ - AF_UNIRANGE_REC( 0x20A0UL, 0x20B8UL ), /* Currency Symbols ... */ - AF_UNIRANGE_REC( 0x20BAUL, 0x20CFUL ), /* ... except new Rupee sign */ - AF_UNIRANGE_REC( 0x2150UL, 0x218FUL ), /* Number Forms */ - AF_UNIRANGE_REC( 0x2C60UL, 0x2C7BUL ), /* Latin Extended-C */ - AF_UNIRANGE_REC( 0x2C7EUL, 0x2C7FUL ), /* ... continued */ - AF_UNIRANGE_REC( 0x2E00UL, 0x2E7FUL ), /* Supplemental Punctuation */ - AF_UNIRANGE_REC( 0xA720UL, 0xA76FUL ), /* Latin Extended-D */ - AF_UNIRANGE_REC( 0xA771UL, 0xA7F7UL ), /* ... continued */ - AF_UNIRANGE_REC( 0xA7FAUL, 0xA7FFUL ), /* ... continued */ - AF_UNIRANGE_REC( 0xAB30UL, 0xAB5BUL ), /* Latin Extended-E */ - AF_UNIRANGE_REC( 0xAB60UL, 0xAB6FUL ), /* ... continued */ - AF_UNIRANGE_REC( 0xFB00UL, 0xFB06UL ), /* Alphab. Present. Forms (Latin Ligs) */ - AF_UNIRANGE_REC( 0x1D400UL, 0x1D7FFUL ), /* Mathematical Alphanumeric Symbols */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0020, 0x007F ), /* Basic Latin (no control chars) */ + AF_UNIRANGE_REC( 0x00A0, 0x00A9 ), /* Latin-1 Supplement (no control chars) */ + AF_UNIRANGE_REC( 0x00AB, 0x00B1 ), /* ... continued */ + AF_UNIRANGE_REC( 0x00B4, 0x00B8 ), /* ... continued */ + AF_UNIRANGE_REC( 0x00BB, 0x00FF ), /* ... continued */ + AF_UNIRANGE_REC( 0x0100, 0x017F ), /* Latin Extended-A */ + AF_UNIRANGE_REC( 0x0180, 0x024F ), /* Latin Extended-B */ + AF_UNIRANGE_REC( 0x0250, 0x02AF ), /* IPA Extensions */ + AF_UNIRANGE_REC( 0x02B9, 0x02DF ), /* Spacing Modifier Letters */ + AF_UNIRANGE_REC( 0x02E5, 0x02FF ), /* ... continued */ + AF_UNIRANGE_REC( 0x0300, 0x036F ), /* Combining Diacritical Marks */ + AF_UNIRANGE_REC( 0x1AB0, 0x1ABE ), /* Combining Diacritical Marks Extended */ + AF_UNIRANGE_REC( 0x1D00, 0x1D2B ), /* Phonetic Extensions */ + AF_UNIRANGE_REC( 0x1D6B, 0x1D77 ), /* ... continued */ + AF_UNIRANGE_REC( 0x1D79, 0x1D7F ), /* ... continued */ + AF_UNIRANGE_REC( 0x1D80, 0x1D9A ), /* Phonetic Extensions Supplement */ + AF_UNIRANGE_REC( 0x1DC0, 0x1DFF ), /* Combining Diacritical Marks Supplement */ + AF_UNIRANGE_REC( 0x1E00, 0x1EFF ), /* Latin Extended Additional */ + AF_UNIRANGE_REC( 0x2000, 0x206F ), /* General Punctuation */ + AF_UNIRANGE_REC( 0x20A0, 0x20B8 ), /* Currency Symbols ... */ + AF_UNIRANGE_REC( 0x20BA, 0x20CF ), /* ... except new Rupee sign */ + AF_UNIRANGE_REC( 0x2150, 0x218F ), /* Number Forms */ + AF_UNIRANGE_REC( 0x2C60, 0x2C7B ), /* Latin Extended-C */ + AF_UNIRANGE_REC( 0x2C7E, 0x2C7F ), /* ... continued */ + AF_UNIRANGE_REC( 0x2E00, 0x2E7F ), /* Supplemental Punctuation */ + AF_UNIRANGE_REC( 0xA720, 0xA76F ), /* Latin Extended-D */ + AF_UNIRANGE_REC( 0xA771, 0xA7F7 ), /* ... continued */ + AF_UNIRANGE_REC( 0xA7FA, 0xA7FF ), /* ... continued */ + AF_UNIRANGE_REC( 0xAB30, 0xAB5B ), /* Latin Extended-E */ + AF_UNIRANGE_REC( 0xAB60, 0xAB6F ), /* ... continued */ + AF_UNIRANGE_REC( 0xFB00, 0xFB06 ), /* Alphab. Present. Forms (Latin Ligs) */ + AF_UNIRANGE_REC( 0x1D400, 0x1D7FF ), /* Mathematical Alphanumeric Symbols */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_latn_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x005EUL, 0x0060UL ), - AF_UNIRANGE_REC( 0x007EUL, 0x007EUL ), - AF_UNIRANGE_REC( 0x00A8UL, 0x00A9UL ), - AF_UNIRANGE_REC( 0x00AEUL, 0x00B0UL ), - AF_UNIRANGE_REC( 0x00B4UL, 0x00B4UL ), - AF_UNIRANGE_REC( 0x00B8UL, 0x00B8UL ), - AF_UNIRANGE_REC( 0x00BCUL, 0x00BEUL ), - AF_UNIRANGE_REC( 0x02B9UL, 0x02DFUL ), - AF_UNIRANGE_REC( 0x02E5UL, 0x02FFUL ), - AF_UNIRANGE_REC( 0x0300UL, 0x036FUL ), - AF_UNIRANGE_REC( 0x1AB0UL, 0x1ABEUL ), - AF_UNIRANGE_REC( 0x1DC0UL, 0x1DFFUL ), - AF_UNIRANGE_REC( 0x2017UL, 0x2017UL ), - AF_UNIRANGE_REC( 0x203EUL, 0x203EUL ), - AF_UNIRANGE_REC( 0xA788UL, 0xA788UL ), - AF_UNIRANGE_REC( 0xA7F8UL, 0xA7FAUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x005E, 0x0060 ), + AF_UNIRANGE_REC( 0x007E, 0x007E ), + AF_UNIRANGE_REC( 0x00A8, 0x00A9 ), + AF_UNIRANGE_REC( 0x00AE, 0x00B0 ), + AF_UNIRANGE_REC( 0x00B4, 0x00B4 ), + AF_UNIRANGE_REC( 0x00B8, 0x00B8 ), + AF_UNIRANGE_REC( 0x00BC, 0x00BE ), + AF_UNIRANGE_REC( 0x02B9, 0x02DF ), + AF_UNIRANGE_REC( 0x02E5, 0x02FF ), + AF_UNIRANGE_REC( 0x0300, 0x036F ), + AF_UNIRANGE_REC( 0x1AB0, 0x1ABE ), + AF_UNIRANGE_REC( 0x1DC0, 0x1DFF ), + AF_UNIRANGE_REC( 0x2017, 0x2017 ), + AF_UNIRANGE_REC( 0x203E, 0x203E ), + AF_UNIRANGE_REC( 0xA788, 0xA788 ), + AF_UNIRANGE_REC( 0xA7F8, 0xA7FA ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_latb_uniranges[] = { - AF_UNIRANGE_REC( 0x1D62UL, 0x1D6AUL ), /* some small subscript letters */ - AF_UNIRANGE_REC( 0x2080UL, 0x209CUL ), /* subscript digits and letters */ - AF_UNIRANGE_REC( 0x2C7CUL, 0x2C7CUL ), /* latin subscript small letter j */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1D62, 0x1D6A ), /* some small subscript letters */ + AF_UNIRANGE_REC( 0x2080, 0x209C ), /* subscript digits and letters */ + AF_UNIRANGE_REC( 0x2C7C, 0x2C7C ), /* latin subscript small letter j */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_latb_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_latp_uniranges[] = { - AF_UNIRANGE_REC( 0x00AAUL, 0x00AAUL ), /* feminine ordinal indicator */ - AF_UNIRANGE_REC( 0x00B2UL, 0x00B3UL ), /* superscript two and three */ - AF_UNIRANGE_REC( 0x00B9UL, 0x00BAUL ), /* superscript one, masc. ord. indic. */ - AF_UNIRANGE_REC( 0x02B0UL, 0x02B8UL ), /* some latin superscript mod. letters */ - AF_UNIRANGE_REC( 0x02E0UL, 0x02E4UL ), /* some IPA modifier letters */ - AF_UNIRANGE_REC( 0x1D2CUL, 0x1D61UL ), /* latin superscript modifier letters */ - AF_UNIRANGE_REC( 0x1D78UL, 0x1D78UL ), /* modifier letter cyrillic en */ - AF_UNIRANGE_REC( 0x1D9BUL, 0x1DBFUL ), /* more modifier letters */ - AF_UNIRANGE_REC( 0x2070UL, 0x207FUL ), /* superscript digits and letters */ - AF_UNIRANGE_REC( 0x2C7DUL, 0x2C7DUL ), /* modifier letter capital v */ - AF_UNIRANGE_REC( 0xA770UL, 0xA770UL ), /* modifier letter us */ - AF_UNIRANGE_REC( 0xA7F8UL, 0xA7F9UL ), /* more modifier letters */ - AF_UNIRANGE_REC( 0xAB5CUL, 0xAB5FUL ), /* more modifier letters */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x00AA, 0x00AA ), /* feminine ordinal indicator */ + AF_UNIRANGE_REC( 0x00B2, 0x00B3 ), /* superscript two and three */ + AF_UNIRANGE_REC( 0x00B9, 0x00BA ), /* superscript one, masc. ord. indic. */ + AF_UNIRANGE_REC( 0x02B0, 0x02B8 ), /* some latin superscript mod. letters */ + AF_UNIRANGE_REC( 0x02E0, 0x02E4 ), /* some IPA modifier letters */ + AF_UNIRANGE_REC( 0x1D2C, 0x1D61 ), /* latin superscript modifier letters */ + AF_UNIRANGE_REC( 0x1D78, 0x1D78 ), /* modifier letter cyrillic en */ + AF_UNIRANGE_REC( 0x1D9B, 0x1DBF ), /* more modifier letters */ + AF_UNIRANGE_REC( 0x2070, 0x207F ), /* superscript digits and letters */ + AF_UNIRANGE_REC( 0x2C7D, 0x2C7D ), /* modifier letter capital v */ + AF_UNIRANGE_REC( 0xA770, 0xA770 ), /* modifier letter us */ + AF_UNIRANGE_REC( 0xA7F8, 0xA7F9 ), /* more modifier letters */ + AF_UNIRANGE_REC( 0xAB5C, 0xAB5F ), /* more modifier letters */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_latp_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_mymr_uniranges[] = + const AF_Script_UniRangeRec af_mlym_uniranges[] = { - AF_UNIRANGE_REC( 0x1000UL, 0x109FUL ), /* Myanmar */ - AF_UNIRANGE_REC( 0xA9E0UL, 0xA9FFUL ), /* Myanmar Extended-B */ - AF_UNIRANGE_REC( 0xAA60UL, 0xAA7FUL ), /* Myanmar Extended-A */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0D00, 0x0D7F ), /* Malayalam */ + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_mymr_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_mlym_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x102DUL, 0x1030UL ), - AF_UNIRANGE_REC( 0x1032UL, 0x1037UL ), - AF_UNIRANGE_REC( 0x103AUL, 0x103AUL ), - AF_UNIRANGE_REC( 0x103DUL, 0x103EUL ), - AF_UNIRANGE_REC( 0x1058UL, 0x1059UL ), - AF_UNIRANGE_REC( 0x105EUL, 0x1060UL ), - AF_UNIRANGE_REC( 0x1071UL, 0x1074UL ), - AF_UNIRANGE_REC( 0x1082UL, 0x1082UL ), - AF_UNIRANGE_REC( 0x1085UL, 0x1086UL ), - AF_UNIRANGE_REC( 0x108DUL, 0x108DUL ), - AF_UNIRANGE_REC( 0xA9E5UL, 0xA9E5UL ), - AF_UNIRANGE_REC( 0xAA7CUL, 0xAA7CUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0D01, 0x0D01 ), + AF_UNIRANGE_REC( 0x0D4D, 0x0D4E ), + AF_UNIRANGE_REC( 0x0D62, 0x0D63 ), + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_none_uniranges[] = + const AF_Script_UniRangeRec af_mymr_uniranges[] = { - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1000, 0x109F ), /* Myanmar */ + AF_UNIRANGE_REC( 0xA9E0, 0xA9FF ), /* Myanmar Extended-B */ + AF_UNIRANGE_REC( 0xAA60, 0xAA7F ), /* Myanmar Extended-A */ + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_none_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_mymr_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x102D, 0x1030 ), + AF_UNIRANGE_REC( 0x1032, 0x1037 ), + AF_UNIRANGE_REC( 0x103A, 0x103A ), + AF_UNIRANGE_REC( 0x103D, 0x103E ), + AF_UNIRANGE_REC( 0x1058, 0x1059 ), + AF_UNIRANGE_REC( 0x105E, 0x1060 ), + AF_UNIRANGE_REC( 0x1071, 0x1074 ), + AF_UNIRANGE_REC( 0x1082, 0x1082 ), + AF_UNIRANGE_REC( 0x1085, 0x1086 ), + AF_UNIRANGE_REC( 0x108D, 0x108D ), + AF_UNIRANGE_REC( 0xA9E5, 0xA9E5 ), + AF_UNIRANGE_REC( 0xAA7C, 0xAA7C ), + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_telu_uniranges[] = + const AF_Script_UniRangeRec af_none_uniranges[] = { - AF_UNIRANGE_REC( 0x0C00UL, 0x0C7FUL ), /* Telugu */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_telu_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_none_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0C00UL, 0x0C00UL ), - AF_UNIRANGE_REC( 0x0C3EUL, 0x0C40UL ), - AF_UNIRANGE_REC( 0x0C46UL, 0x0C56UL ), - AF_UNIRANGE_REC( 0x0C62UL, 0x0C63UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_thai_uniranges[] = + const AF_Script_UniRangeRec af_sinh_uniranges[] = { - AF_UNIRANGE_REC( 0x0E00UL, 0x0E7FUL ), /* Thai */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0D80, 0x0DFF ), /* Sinhala */ + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_thai_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_sinh_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0E31UL, 0x0E31UL ), - AF_UNIRANGE_REC( 0x0E34UL, 0x0E3AUL ), - AF_UNIRANGE_REC( 0x0E47UL, 0x0E4EUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0DCA, 0x0DCA ), + AF_UNIRANGE_REC( 0x0DD2, 0x0DD6 ), + AF_UNIRANGE_REC( 0, 0 ) }; -#ifdef AF_CONFIG_OPTION_INDIC - - const AF_Script_UniRangeRec af_gujr_uniranges[] = + const AF_Script_UniRangeRec af_taml_uniranges[] = { - AF_UNIRANGE_REC( 0x0A80UL, 0x0AFFUL ), /* Gujarati */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0B80, 0x0BFF ), /* Tamil */ + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_gujr_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_taml_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0A81UL, 0x0A82UL ), - AF_UNIRANGE_REC( 0x0ABCUL, 0x0ABCUL ), - AF_UNIRANGE_REC( 0x0AC1UL, 0x0AC8UL ), - AF_UNIRANGE_REC( 0x0ACDUL, 0x0ACDUL ), - AF_UNIRANGE_REC( 0x0AE2UL, 0x0AE3UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0B82, 0x0B82 ), + AF_UNIRANGE_REC( 0x0BC0, 0x0BC2 ), + AF_UNIRANGE_REC( 0x0BCD, 0x0BCD ), + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_guru_uniranges[] = + const AF_Script_UniRangeRec af_telu_uniranges[] = { - AF_UNIRANGE_REC( 0x0A00UL, 0x0A7FUL ), /* Gurmukhi */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0C00, 0x0C7F ), /* Telugu */ + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_guru_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_telu_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0A01UL, 0x0A02UL ), - AF_UNIRANGE_REC( 0x0A3CUL, 0x0A3EUL ), - AF_UNIRANGE_REC( 0x0A41UL, 0x0A51UL ), - AF_UNIRANGE_REC( 0x0A70UL, 0x0A71UL ), - AF_UNIRANGE_REC( 0x0A75UL, 0x0A75UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0C00, 0x0C00 ), + AF_UNIRANGE_REC( 0x0C3E, 0x0C40 ), + AF_UNIRANGE_REC( 0x0C46, 0x0C56 ), + AF_UNIRANGE_REC( 0x0C62, 0x0C63 ), + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_limb_uniranges[] = + const AF_Script_UniRangeRec af_thai_uniranges[] = { - AF_UNIRANGE_REC( 0x1900UL, 0x194FUL ), /* Limbu */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0E00, 0x0E7F ), /* Thai */ + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_limb_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_thai_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x1920UL, 0x1922UL ), - AF_UNIRANGE_REC( 0x1927UL, 0x1934UL ), - AF_UNIRANGE_REC( 0x1937UL, 0x193BUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0E31, 0x0E31 ), + AF_UNIRANGE_REC( 0x0E34, 0x0E3A ), + AF_UNIRANGE_REC( 0x0E47, 0x0E4E ), + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_mlym_uniranges[] = +#ifdef AF_CONFIG_OPTION_INDIC + + const AF_Script_UniRangeRec af_limb_uniranges[] = { - AF_UNIRANGE_REC( 0x0D00UL, 0x0D7FUL ), /* Malayalam */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1900, 0x194F ), /* Limbu */ + AF_UNIRANGE_REC( 0, 0 ) }; - const AF_Script_UniRangeRec af_mlym_nonbase_uniranges[] = + const AF_Script_UniRangeRec af_limb_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0D01UL, 0x0D01UL ), - AF_UNIRANGE_REC( 0x0D4DUL, 0x0D4EUL ), - AF_UNIRANGE_REC( 0x0D62UL, 0x0D63UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1920, 0x1922 ), + AF_UNIRANGE_REC( 0x1927, 0x1934 ), + AF_UNIRANGE_REC( 0x1937, 0x193B ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_orya_uniranges[] = { - AF_UNIRANGE_REC( 0x0B00UL, 0x0B7FUL ), /* Oriya */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0B00, 0x0B7F ), /* Oriya */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_orya_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0B01UL, 0x0B02UL ), - AF_UNIRANGE_REC( 0x0B3CUL, 0x0B3CUL ), - AF_UNIRANGE_REC( 0x0B3FUL, 0x0B3FUL ), - AF_UNIRANGE_REC( 0x0B41UL, 0x0B44UL ), - AF_UNIRANGE_REC( 0x0B4DUL, 0x0B56UL ), - AF_UNIRANGE_REC( 0x0B62UL, 0x0B63UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - - const AF_Script_UniRangeRec af_sinh_uniranges[] = - { - AF_UNIRANGE_REC( 0x0D80UL, 0x0DFFUL ), /* Sinhala */ - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - const AF_Script_UniRangeRec af_sinh_nonbase_uniranges[] = - { - AF_UNIRANGE_REC( 0x0DCAUL, 0x0DCAUL ), - AF_UNIRANGE_REC( 0x0DD2UL, 0x0DD6UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0B01, 0x0B02 ), + AF_UNIRANGE_REC( 0x0B3C, 0x0B3C ), + AF_UNIRANGE_REC( 0x0B3F, 0x0B3F ), + AF_UNIRANGE_REC( 0x0B41, 0x0B44 ), + AF_UNIRANGE_REC( 0x0B4D, 0x0B56 ), + AF_UNIRANGE_REC( 0x0B62, 0x0B63 ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_sund_uniranges[] = { - AF_UNIRANGE_REC( 0x1B80UL, 0x1BBFUL ), /* Sundanese */ - AF_UNIRANGE_REC( 0x1CC0UL, 0x1CCFUL ), /* Sundanese Supplement */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1B80, 0x1BBF ), /* Sundanese */ + AF_UNIRANGE_REC( 0x1CC0, 0x1CCF ), /* Sundanese Supplement */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_sund_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x1B80UL, 0x1B82UL ), - AF_UNIRANGE_REC( 0x1BA1UL, 0x1BADUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1B80, 0x1B82 ), + AF_UNIRANGE_REC( 0x1BA1, 0x1BAD ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_sylo_uniranges[] = { - AF_UNIRANGE_REC( 0xA800UL, 0xA82FUL ), /* Syloti Nagri */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0xA800, 0xA82F ), /* Syloti Nagri */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_sylo_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0xA802UL, 0xA802UL ), - AF_UNIRANGE_REC( 0xA806UL, 0xA806UL ), - AF_UNIRANGE_REC( 0xA80BUL, 0xA80BUL ), - AF_UNIRANGE_REC( 0xA825UL, 0xA826UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - - const AF_Script_UniRangeRec af_taml_uniranges[] = - { - AF_UNIRANGE_REC( 0x0B80UL, 0x0BFFUL ), /* Tamil */ - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - const AF_Script_UniRangeRec af_taml_nonbase_uniranges[] = - { - AF_UNIRANGE_REC( 0x0B82UL, 0x0B82UL ), - AF_UNIRANGE_REC( 0x0BC0UL, 0x0BC2UL ), - AF_UNIRANGE_REC( 0x0BCDUL, 0x0BCDUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0xA802, 0xA802 ), + AF_UNIRANGE_REC( 0xA806, 0xA806 ), + AF_UNIRANGE_REC( 0xA80B, 0xA80B ), + AF_UNIRANGE_REC( 0xA825, 0xA826 ), + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_tibt_uniranges[] = { - AF_UNIRANGE_REC( 0x0F00UL, 0x0FFFUL ), /* Tibetan */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0F00, 0x0FFF ), /* Tibetan */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_tibt_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x0F18UL, 0x0F19UL ), - AF_UNIRANGE_REC( 0x0F35UL, 0x0F35UL ), - AF_UNIRANGE_REC( 0x0F37UL, 0x0F37UL ), - AF_UNIRANGE_REC( 0x0F39UL, 0x0F39UL ), - AF_UNIRANGE_REC( 0x0F3EUL, 0x0F3FUL ), - AF_UNIRANGE_REC( 0x0F71UL, 0x0F7EUL ), - AF_UNIRANGE_REC( 0x0F80UL, 0x0F84UL ), - AF_UNIRANGE_REC( 0x0F86UL, 0x0F87UL ), - AF_UNIRANGE_REC( 0x0F8DUL, 0x0FBCUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x0F18, 0x0F19 ), + AF_UNIRANGE_REC( 0x0F35, 0x0F35 ), + AF_UNIRANGE_REC( 0x0F37, 0x0F37 ), + AF_UNIRANGE_REC( 0x0F39, 0x0F39 ), + AF_UNIRANGE_REC( 0x0F3E, 0x0F3F ), + AF_UNIRANGE_REC( 0x0F71, 0x0F7E ), + AF_UNIRANGE_REC( 0x0F80, 0x0F84 ), + AF_UNIRANGE_REC( 0x0F86, 0x0F87 ), + AF_UNIRANGE_REC( 0x0F8D, 0x0FBC ), + AF_UNIRANGE_REC( 0, 0 ) }; #endif /* !AF_CONFIG_OPTION_INDIC */ @@ -594,44 +669,44 @@ const AF_Script_UniRangeRec af_hani_uniranges[] = { - AF_UNIRANGE_REC( 0x1100UL, 0x11FFUL ), /* Hangul Jamo */ - AF_UNIRANGE_REC( 0x2E80UL, 0x2EFFUL ), /* CJK Radicals Supplement */ - AF_UNIRANGE_REC( 0x2F00UL, 0x2FDFUL ), /* Kangxi Radicals */ - AF_UNIRANGE_REC( 0x2FF0UL, 0x2FFFUL ), /* Ideographic Description Characters */ - AF_UNIRANGE_REC( 0x3000UL, 0x303FUL ), /* CJK Symbols and Punctuation */ - AF_UNIRANGE_REC( 0x3040UL, 0x309FUL ), /* Hiragana */ - AF_UNIRANGE_REC( 0x30A0UL, 0x30FFUL ), /* Katakana */ - AF_UNIRANGE_REC( 0x3100UL, 0x312FUL ), /* Bopomofo */ - AF_UNIRANGE_REC( 0x3130UL, 0x318FUL ), /* Hangul Compatibility Jamo */ - AF_UNIRANGE_REC( 0x3190UL, 0x319FUL ), /* Kanbun */ - AF_UNIRANGE_REC( 0x31A0UL, 0x31BFUL ), /* Bopomofo Extended */ - AF_UNIRANGE_REC( 0x31C0UL, 0x31EFUL ), /* CJK Strokes */ - AF_UNIRANGE_REC( 0x31F0UL, 0x31FFUL ), /* Katakana Phonetic Extensions */ - AF_UNIRANGE_REC( 0x3300UL, 0x33FFUL ), /* CJK Compatibility */ - AF_UNIRANGE_REC( 0x3400UL, 0x4DBFUL ), /* CJK Unified Ideographs Extension A */ - AF_UNIRANGE_REC( 0x4DC0UL, 0x4DFFUL ), /* Yijing Hexagram Symbols */ - AF_UNIRANGE_REC( 0x4E00UL, 0x9FFFUL ), /* CJK Unified Ideographs */ - AF_UNIRANGE_REC( 0xA960UL, 0xA97FUL ), /* Hangul Jamo Extended-A */ - AF_UNIRANGE_REC( 0xAC00UL, 0xD7AFUL ), /* Hangul Syllables */ - AF_UNIRANGE_REC( 0xD7B0UL, 0xD7FFUL ), /* Hangul Jamo Extended-B */ - AF_UNIRANGE_REC( 0xF900UL, 0xFAFFUL ), /* CJK Compatibility Ideographs */ - AF_UNIRANGE_REC( 0xFE10UL, 0xFE1FUL ), /* Vertical forms */ - AF_UNIRANGE_REC( 0xFE30UL, 0xFE4FUL ), /* CJK Compatibility Forms */ - AF_UNIRANGE_REC( 0xFF00UL, 0xFFEFUL ), /* Halfwidth and Fullwidth Forms */ - AF_UNIRANGE_REC( 0x1B000UL, 0x1B0FFUL ), /* Kana Supplement */ - AF_UNIRANGE_REC( 0x1D300UL, 0x1D35FUL ), /* Tai Xuan Hing Symbols */ - AF_UNIRANGE_REC( 0x20000UL, 0x2A6DFUL ), /* CJK Unified Ideographs Extension B */ - AF_UNIRANGE_REC( 0x2A700UL, 0x2B73FUL ), /* CJK Unified Ideographs Extension C */ - AF_UNIRANGE_REC( 0x2B740UL, 0x2B81FUL ), /* CJK Unified Ideographs Extension D */ - AF_UNIRANGE_REC( 0x2F800UL, 0x2FA1FUL ), /* CJK Compatibility Ideographs Supplement */ - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x1100, 0x11FF ), /* Hangul Jamo */ + AF_UNIRANGE_REC( 0x2E80, 0x2EFF ), /* CJK Radicals Supplement */ + AF_UNIRANGE_REC( 0x2F00, 0x2FDF ), /* Kangxi Radicals */ + AF_UNIRANGE_REC( 0x2FF0, 0x2FFF ), /* Ideographic Description Characters */ + AF_UNIRANGE_REC( 0x3000, 0x303F ), /* CJK Symbols and Punctuation */ + AF_UNIRANGE_REC( 0x3040, 0x309F ), /* Hiragana */ + AF_UNIRANGE_REC( 0x30A0, 0x30FF ), /* Katakana */ + AF_UNIRANGE_REC( 0x3100, 0x312F ), /* Bopomofo */ + AF_UNIRANGE_REC( 0x3130, 0x318F ), /* Hangul Compatibility Jamo */ + AF_UNIRANGE_REC( 0x3190, 0x319F ), /* Kanbun */ + AF_UNIRANGE_REC( 0x31A0, 0x31BF ), /* Bopomofo Extended */ + AF_UNIRANGE_REC( 0x31C0, 0x31EF ), /* CJK Strokes */ + AF_UNIRANGE_REC( 0x31F0, 0x31FF ), /* Katakana Phonetic Extensions */ + AF_UNIRANGE_REC( 0x3300, 0x33FF ), /* CJK Compatibility */ + AF_UNIRANGE_REC( 0x3400, 0x4DBF ), /* CJK Unified Ideographs Extension A */ + AF_UNIRANGE_REC( 0x4DC0, 0x4DFF ), /* Yijing Hexagram Symbols */ + AF_UNIRANGE_REC( 0x4E00, 0x9FFF ), /* CJK Unified Ideographs */ + AF_UNIRANGE_REC( 0xA960, 0xA97F ), /* Hangul Jamo Extended-A */ + AF_UNIRANGE_REC( 0xAC00, 0xD7AF ), /* Hangul Syllables */ + AF_UNIRANGE_REC( 0xD7B0, 0xD7FF ), /* Hangul Jamo Extended-B */ + AF_UNIRANGE_REC( 0xF900, 0xFAFF ), /* CJK Compatibility Ideographs */ + AF_UNIRANGE_REC( 0xFE10, 0xFE1F ), /* Vertical forms */ + AF_UNIRANGE_REC( 0xFE30, 0xFE4F ), /* CJK Compatibility Forms */ + AF_UNIRANGE_REC( 0xFF00, 0xFFEF ), /* Halfwidth and Fullwidth Forms */ + AF_UNIRANGE_REC( 0x1B000, 0x1B0FF ), /* Kana Supplement */ + AF_UNIRANGE_REC( 0x1D300, 0x1D35F ), /* Tai Xuan Hing Symbols */ + AF_UNIRANGE_REC( 0x20000, 0x2A6DF ), /* CJK Unified Ideographs Extension B */ + AF_UNIRANGE_REC( 0x2A700, 0x2B73F ), /* CJK Unified Ideographs Extension C */ + AF_UNIRANGE_REC( 0x2B740, 0x2B81F ), /* CJK Unified Ideographs Extension D */ + AF_UNIRANGE_REC( 0x2F800, 0x2FA1F ), /* CJK Compatibility Ideographs Supplement */ + AF_UNIRANGE_REC( 0, 0 ) }; const AF_Script_UniRangeRec af_hani_nonbase_uniranges[] = { - AF_UNIRANGE_REC( 0x302AUL, 0x302FUL ), - AF_UNIRANGE_REC( 0x3190UL, 0x319FUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) + AF_UNIRANGE_REC( 0x302A, 0x302F ), + AF_UNIRANGE_REC( 0x3190, 0x319F ), + AF_UNIRANGE_REC( 0, 0 ) }; #endif /* !AF_CONFIG_OPTION_CJK */ diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afscript.h b/Build/source/libs/freetype2/freetype-src/src/autofit/afscript.h index 9bbb6f3b4f5..33c30129816 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afscript.h +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afscript.h @@ -36,12 +36,24 @@ HINTING_BOTTOM_TO_TOP, "\xD9\x84 \xD8\xAD \xD9\x80" ) /* Ù„ Ø Ù€ */ + SCRIPT( armn, ARMN, + "Armenian", + HB_SCRIPT_ARMENIAN, + HINTING_BOTTOM_TO_TOP, + "\xD6\x85 \xD5\x95" ) /* Ö… Õ• */ + /* there are no simple forms for letters; we thus use two digit shapes */ SCRIPT( beng, BENG, "Bengali", HB_SCRIPT_BENGALI, HINTING_TOP_TO_BOTTOM, - "\xE0\xA7\xA6 \xE0\xA7\xAA" ) /* ০ ৪*/ + "\xE0\xA7\xA6 \xE0\xA7\xAA" ) /* ০ ৪ */ + + SCRIPT( cher, CHER, + "Cherokee", + HB_SCRIPT_CHEROKEE, + HINTING_BOTTOM_TO_TOP, + "\xE1\x8E\xA4 \xE1\x8F\x85 \xEA\xAE\x95" ) /* Ꭴ á… ê®• */ SCRIPT( cyrl, CYRL, "Cyrillic", @@ -55,12 +67,42 @@ HINTING_TOP_TO_BOTTOM, "\xE0\xA4\xA0 \xE0\xA4\xB5 \xE0\xA4\x9F" ) /* ठव ट */ + SCRIPT( ethi, ETHI, + "Ethiopic", + HB_SCRIPT_ETHIOPIC, + HINTING_BOTTOM_TO_TOP, + "\xE1\x8B\x90" ) /* á‹ */ + + SCRIPT( geor, GEOR, + "Georgian (Mkhedruli)", + HB_SCRIPT_GEORGIAN, + HINTING_BOTTOM_TO_TOP, + "\xE1\x83\x98 \xE1\x83\x94 \xE1\x83\x90" ) /* ი ე რ*/ + + SCRIPT( geok, GEOK, + "Georgian (Khutsuri)", + HB_SCRIPT_INVALID, + HINTING_BOTTOM_TO_TOP, + "\xE1\x82\xB6 \xE1\x82\xB1 \xE2\xB4\x99" ) /* Ⴖ Ⴑ â´™ */ + SCRIPT( grek, GREK, "Greek", HB_SCRIPT_GREEK, HINTING_BOTTOM_TO_TOP, "\xCE\xBF \xCE\x9F" ) /* ο Ο */ + SCRIPT( gujr, GUJR, + "Gujarati", + HB_SCRIPT_GUJARATI, + HINTING_BOTTOM_TO_TOP, + "\xE0\xAA\x9F \xE0\xAB\xA6" ) /* ટ ૦ */ + + SCRIPT( guru, GURU, + "Gurmukhi", + HB_SCRIPT_GURMUKHI, + HINTING_TOP_TO_BOTTOM, + "\xE0\xA8\xA0 \xE0\xA8\xB0 \xE0\xA9\xA6" ) /* ਠਰ ੦ */ + SCRIPT( hebr, HEBR, "Hebrew", HB_SCRIPT_HEBREW, @@ -111,6 +153,12 @@ HINTING_BOTTOM_TO_TOP, "\xE1\xB5\x92 \xE1\xB4\xBC \xE2\x81\xB0" ) /* áµ’ á´¼ â° */ + SCRIPT( mlym, MLYM, + "Malayalam", + HB_SCRIPT_MALAYALAM, + HINTING_BOTTOM_TO_TOP, + "\xE0\xB4\xA0 \xE0\xB4\xB1" ) /* à´ à´± */ + SCRIPT( mymr, MYMR, "Myanmar", HB_SCRIPT_MYANMAR, @@ -123,6 +171,19 @@ HINTING_BOTTOM_TO_TOP, "" ) + SCRIPT( sinh, SINH, + "Sinhala", + HB_SCRIPT_SINHALA, + HINTING_BOTTOM_TO_TOP, + "\xE0\xB6\xA7" ) /* ට */ + + /* only digit zero has a simple (round) shape in the Tamil script */ + SCRIPT( taml, TAML, + "Tamil", + HB_SCRIPT_TAMIL, + HINTING_BOTTOM_TO_TOP, + "\xE0\xAF\xA6" ) /* ௦ */ + /* there are no simple forms for letters; we thus use two digit shapes */ SCRIPT( telu, TELU, "Telugu", @@ -138,42 +199,18 @@ #ifdef AF_CONFIG_OPTION_INDIC - SCRIPT( gujr, GUJR, - "Gujarati", - HB_SCRIPT_GUJARATI, - HINTING_BOTTOM_TO_TOP, - "o" ) /* XXX */ - - SCRIPT( guru, GURU, - "Gurmukhi", - HB_SCRIPT_GURMUKHI, - HINTING_BOTTOM_TO_TOP, - "o" ) /* XXX */ - SCRIPT( limb, LIMB, "Limbu", HB_SCRIPT_LIMBU, HINTING_BOTTOM_TO_TOP, "o" ) /* XXX */ - SCRIPT( mlym, MLYM, - "Malayalam", - HB_SCRIPT_MALAYALAM, - HINTING_BOTTOM_TO_TOP, - "o" ) /* XXX */ - SCRIPT( orya, ORYA, "Oriya", HB_SCRIPT_ORIYA, HINTING_BOTTOM_TO_TOP, "o" ) /* XXX */ - SCRIPT( sinh, SINH, - "Sinhala", - HB_SCRIPT_SINHALA, - HINTING_BOTTOM_TO_TOP, - "o" ) /* XXX */ - SCRIPT( sund, SUND, "Sundanese", HB_SCRIPT_SUNDANESE, @@ -186,12 +223,6 @@ HINTING_BOTTOM_TO_TOP, "o" ) /* XXX */ - SCRIPT( taml, TAML, - "Tamil", - HB_SCRIPT_TAMIL, - HINTING_BOTTOM_TO_TOP, - "o" ) /* XXX */ - SCRIPT( tibt, TIBT, "Tibetan", HB_SCRIPT_TIBETAN, diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/afstyles.h b/Build/source/libs/freetype2/freetype-src/src/autofit/afstyles.h index 9c57258475e..e83a95bb593 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/afstyles.h +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/afstyles.h @@ -52,10 +52,10 @@ #undef META_STYLE_LATIN #define META_STYLE_LATIN( s, S, ds ) \ STYLE_LATIN( s, S, c2cp, C2CP, ds, \ - "petite capticals from capitals", \ + "petite capitals from capitals", \ PETITE_CAPITALS_FROM_CAPITALS ) \ STYLE_LATIN( s, S, c2sc, C2SC, ds, \ - "small capticals from capitals", \ + "small capitals from capitals", \ SMALL_CAPITALS_FROM_CAPITALS ) \ STYLE_LATIN( s, S, ordn, ORDN, ds, \ "ordinals", \ @@ -90,6 +90,13 @@ AF_BLUE_STRINGSET_ARAB, AF_COVERAGE_DEFAULT ) + STYLE( armn_dflt, ARMN_DFLT, + "Armenian default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_ARMN, + AF_BLUE_STRINGSET_ARMN, + AF_COVERAGE_DEFAULT ) + STYLE( beng_dflt, BENG_DFLT, "Bengali default style", AF_WRITING_SYSTEM_LATIN, @@ -97,6 +104,13 @@ AF_BLUE_STRINGSET_BENG, AF_COVERAGE_DEFAULT ) + STYLE( cher_dflt, CHER_DFLT, + "Cherokee default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_CHER, + AF_BLUE_STRINGSET_CHER, + AF_COVERAGE_DEFAULT ) + META_STYLE_LATIN( cyrl, CYRL, "Cyrillic" ) STYLE( deva_dflt, DEVA_DFLT, @@ -106,8 +120,43 @@ AF_BLUE_STRINGSET_DEVA, AF_COVERAGE_DEFAULT ) + STYLE( ethi_dflt, ETHI_DFLT, + "Ethiopic default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_ETHI, + AF_BLUE_STRINGSET_ETHI, + AF_COVERAGE_DEFAULT ) + + STYLE( geor_dflt, GEOR_DFLT, + "Georgian (Mkhedruli) default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_GEOR, + AF_BLUE_STRINGSET_GEOR, + AF_COVERAGE_DEFAULT ) + + STYLE( geok_dflt, GEOK_DFLT, + "Georgian (Khutsuri) default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_GEOK, + AF_BLUE_STRINGSET_GEOK, + AF_COVERAGE_DEFAULT ) + META_STYLE_LATIN( grek, GREK, "Greek" ) + STYLE( gujr_dflt, GUJR_DFLT, + "Gujarati default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_GUJR, + AF_BLUE_STRINGSET_GUJR, + AF_COVERAGE_DEFAULT ) + + STYLE( guru_dflt, GURU_DFLT, + "Gurmukhi default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_GURU, + AF_BLUE_STRINGSET_GURU, + AF_COVERAGE_DEFAULT ) + STYLE( hebr_dflt, HEBR_DFLT, "Hebrew default style", AF_WRITING_SYSTEM_LATIN, @@ -168,6 +217,13 @@ AF_COVERAGE_DEFAULT ) #endif + STYLE( mlym_dflt, MLYM_DFLT, + "Malayalam default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_MLYM, + AF_BLUE_STRINGSET_MLYM, + AF_COVERAGE_DEFAULT ) + STYLE( mymr_dflt, MYMR_DFLT, "Myanmar default style", AF_WRITING_SYSTEM_LATIN, @@ -179,7 +235,21 @@ "no style", AF_WRITING_SYSTEM_DUMMY, AF_SCRIPT_NONE, - (AF_Blue_Stringset)0, + AF_BLUE_STRINGSET_NONE, + AF_COVERAGE_DEFAULT ) + + STYLE( sinh_dflt, SINH_DFLT, + "Sinhala default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_SINH, + AF_BLUE_STRINGSET_SINH, + AF_COVERAGE_DEFAULT ) + + STYLE( taml_dflt, TAML_DFLT, + "Tamil default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_TAML, + AF_BLUE_STRINGSET_TAML, AF_COVERAGE_DEFAULT ) STYLE( telu_dflt, TELU_DFLT, @@ -208,15 +278,10 @@ (AF_Blue_Stringset)0, \ AF_COVERAGE_DEFAULT ) - STYLE_DEFAULT_INDIC( gujr, GUJR, "Gujarati" ) - STYLE_DEFAULT_INDIC( guru, GURU, "Gurmukhi" ) STYLE_DEFAULT_INDIC( limb, LIMB, "Limbu" ) - STYLE_DEFAULT_INDIC( mlym, MLYM, "Malayalam" ) STYLE_DEFAULT_INDIC( orya, ORYA, "Oriya" ) - STYLE_DEFAULT_INDIC( sinh, SINH, "Sinhala" ) STYLE_DEFAULT_INDIC( sund, SUND, "Sundanese" ) STYLE_DEFAULT_INDIC( sylo, SYLO, "Syloti Nagri" ) - STYLE_DEFAULT_INDIC( taml, TAML, "Tamil" ) STYLE_DEFAULT_INDIC( tibt, TIBT, "Tibetan" ) #endif /* AF_CONFIG_OPTION_INDIC */ diff --git a/Build/source/libs/freetype2/freetype-src/src/autofit/aftypes.h b/Build/source/libs/freetype2/freetype-src/src/autofit/aftypes.h index eae6e11783c..ef62043c8a4 100644 --- a/Build/source/libs/freetype2/freetype-src/src/autofit/aftypes.h +++ b/Build/source/libs/freetype2/freetype-src/src/autofit/aftypes.h @@ -22,7 +22,7 @@ * Its main feature is the ability to differentiate between different * writing systems and scripts in order to apply specific rules. * - * The code has also been compartmentized into several entities that + * The code has also been compartmentalized into several entities that * should make algorithmic experimentation easier than with the old * code. * diff --git a/Build/source/libs/freetype2/freetype-src/src/base/ftadvanc.c b/Build/source/libs/freetype2/freetype-src/src/base/ftadvanc.c index 2bfbe8a237f..9e2ab89845b 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/ftadvanc.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/ftadvanc.c @@ -159,8 +159,8 @@ /* scale from 26.6 to 16.16 */ padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT ) - ? face->glyph->advance.y << 10 - : face->glyph->advance.x << 10; + ? face->glyph->advance.y * 1024 + : face->glyph->advance.x * 1024; } return error; diff --git a/Build/source/libs/freetype2/freetype-src/src/base/ftbitmap.c b/Build/source/libs/freetype2/freetype-src/src/base/ftbitmap.c index 8cc3a1730e0..24fead3e158 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/ftbitmap.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/ftbitmap.c @@ -351,7 +351,7 @@ } /* for each row */ - for ( y = 0; y < bitmap->rows ; y++ ) + for ( y = 0; y < bitmap->rows; y++ ) { /* * Horizontally: diff --git a/Build/source/libs/freetype2/freetype-src/src/base/fthash.c b/Build/source/libs/freetype2/freetype-src/src/base/fthash.c index 779f795101b..21bc8dd5b42 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/fthash.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/fthash.c @@ -41,6 +41,7 @@ #include <ft2build.h> #include FT_INTERNAL_HASH_H +#include FT_INTERNAL_MEMORY_H #define INITIAL_HT_SIZE 241 diff --git a/Build/source/libs/freetype2/freetype-src/src/base/ftmac.c b/Build/source/libs/freetype2/freetype-src/src/base/ftmac.c index 5cfa012e716..e97fdbfc227 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/ftmac.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/ftmac.c @@ -228,7 +228,7 @@ if ( !fontName || !face_index ) - return FT_THROW( Invalid_Argument) ; + return FT_THROW( Invalid_Argument); err = FT_GetFileRef_From_Mac_ATS_Name( fontName, &ref, face_index ); if ( err ) diff --git a/Build/source/libs/freetype2/freetype-src/src/base/ftobjs.c b/Build/source/libs/freetype2/freetype-src/src/base/ftobjs.c index fa053471b9c..c2dc6183b04 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/ftobjs.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/ftobjs.c @@ -1418,7 +1418,7 @@ /* Type 1 and CID-keyed font drivers should recognize sfnt-wrapped */ /* format too. Here, since we can't expect that the TrueType font */ - /* driver is loaded unconditially, we must parse the font by */ + /* driver is loaded unconditionally, we must parse the font by */ /* ourselves. We are only interested in the name of the table and */ /* the offset. */ @@ -1483,6 +1483,7 @@ if ( face_index >= 0 && pstable_index == face_index ) return FT_Err_Ok; } + return FT_THROW( Table_Missing ); } @@ -1520,6 +1521,19 @@ if ( error ) goto Exit; + if ( offset > stream->size ) + { + FT_TRACE2(( "open_face_PS_from_sfnt_stream: invalid table offset\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + else if ( length > stream->size - offset ) + { + FT_TRACE2(( "open_face_PS_from_sfnt_stream: invalid table length\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + error = FT_Stream_Seek( stream, pos + offset ); if ( error ) goto Exit; @@ -1528,7 +1542,8 @@ goto Exit; error = FT_Stream_Read( stream, (FT_Byte *)sfnt_ps, length ); - if ( error ) { + if ( error ) + { FT_FREE( sfnt_ps ); goto Exit; } @@ -1776,8 +1791,8 @@ FT_Long face_index_in_resource = 0; - if ( face_index == -1 ) - face_index = 0; + if ( face_index < 0 ) + face_index = -face_index - 1; if ( face_index >= resource_cnt ) return FT_THROW( Cannot_Open_Resource ); @@ -4308,7 +4323,7 @@ { FT_Error error; FT_Memory memory; - FT_Module module; + FT_Module module = NULL; FT_UInt nn; diff --git a/Build/source/libs/freetype2/freetype-src/src/base/ftoutln.c b/Build/source/libs/freetype2/freetype-src/src/base/ftoutln.c index fa2d2cf6504..fc28225c6a4 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/ftoutln.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/ftoutln.c @@ -42,7 +42,7 @@ static - const FT_Outline null_outline = { 0, 0, 0, 0, 0, 0 }; + const FT_Outline null_outline = { 0, 0, NULL, NULL, NULL, 0 }; /* documentation is in ftoutln.h */ diff --git a/Build/source/libs/freetype2/freetype-src/src/base/ftrfork.c b/Build/source/libs/freetype2/freetype-src/src/base/ftrfork.c index 4d3de46a37c..4660c971cfa 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/ftrfork.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/ftrfork.c @@ -403,7 +403,7 @@ errors[i] = FT_Err_Ok; if ( errors[i] ) - continue ; + continue; errors[i] = (FT_RACCESS_GUESS_TABLE_GET[i].func)( library, stream, base_name, diff --git a/Build/source/libs/freetype2/freetype-src/src/base/ftstream.c b/Build/source/libs/freetype2/freetype-src/src/base/ftstream.c index 8b5bad8f609..bb512a7ccbf 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/ftstream.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/ftstream.c @@ -778,7 +778,7 @@ case ft_frame_short_be: case ft_frame_ushort_be: /* read a 2-byte big-endian short */ - value = FT_NEXT_USHORT( cursor) ; + value = FT_NEXT_USHORT( cursor ); sign_shift = 16; break; diff --git a/Build/source/libs/freetype2/freetype-src/src/base/md5.c b/Build/source/libs/freetype2/freetype-src/src/base/md5.c index 52d96accd30..b235e17a568 100644 --- a/Build/source/libs/freetype2/freetype-src/src/base/md5.c +++ b/Build/source/libs/freetype2/freetype-src/src/base/md5.c @@ -63,12 +63,19 @@ (a) += (b); /* - * SET reads 4 input bytes in little-endian byte order and stores them - * in a properly aligned word in host byte order. + * SET reads 4 input bytes in little-endian byte order and stores them in a + * properly aligned word in host byte order. * - * The check for little-endian architectures that tolerate unaligned - * memory accesses is just an optimization. Nothing will break if it - * doesn't work. + * The check for little-endian architectures that tolerate unaligned memory + * accesses is just an optimization. Nothing will break if it fails to detect + * a suitable architecture. + * + * Unfortunately, this optimization may be a C strict aliasing rules violation + * if the caller's data buffer has effective type that cannot be aliased by + * MD5_u32plus. In practice, this problem may occur if these MD5 routines are + * inlined into a calling function, or with future and dangerously advanced + * link-time optimizations. For the time being, keeping these MD5 routines in + * their own translation unit avoids the problem. */ #if defined(__i386__) || defined(__x86_64__) || defined(__vax__) #define SET(n) \ @@ -87,8 +94,8 @@ #endif /* - * This processes one or more 64-byte data blocks, but does NOT update - * the bit counters. There are no alignment requirements. + * This processes one or more 64-byte data blocks, but does NOT update the bit + * counters. There are no alignment requirements. */ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size) { @@ -242,6 +249,12 @@ void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size) memcpy(ctx->buffer, data, size); } +#define OUT(dst, src) \ + (dst)[0] = (unsigned char)(src); \ + (dst)[1] = (unsigned char)((src) >> 8); \ + (dst)[2] = (unsigned char)((src) >> 16); \ + (dst)[3] = (unsigned char)((src) >> 24); + void MD5_Final(unsigned char *result, MD5_CTX *ctx) { unsigned long used, available; @@ -262,33 +275,15 @@ void MD5_Final(unsigned char *result, MD5_CTX *ctx) memset(&ctx->buffer[used], 0, available - 8); ctx->lo <<= 3; - ctx->buffer[56] = ctx->lo; - ctx->buffer[57] = ctx->lo >> 8; - ctx->buffer[58] = ctx->lo >> 16; - ctx->buffer[59] = ctx->lo >> 24; - ctx->buffer[60] = ctx->hi; - ctx->buffer[61] = ctx->hi >> 8; - ctx->buffer[62] = ctx->hi >> 16; - ctx->buffer[63] = ctx->hi >> 24; + OUT(&ctx->buffer[56], ctx->lo) + OUT(&ctx->buffer[60], ctx->hi) body(ctx, ctx->buffer, 64); - result[0] = ctx->a; - result[1] = ctx->a >> 8; - result[2] = ctx->a >> 16; - result[3] = ctx->a >> 24; - result[4] = ctx->b; - result[5] = ctx->b >> 8; - result[6] = ctx->b >> 16; - result[7] = ctx->b >> 24; - result[8] = ctx->c; - result[9] = ctx->c >> 8; - result[10] = ctx->c >> 16; - result[11] = ctx->c >> 24; - result[12] = ctx->d; - result[13] = ctx->d >> 8; - result[14] = ctx->d >> 16; - result[15] = ctx->d >> 24; + OUT(&result[0], ctx->a) + OUT(&result[4], ctx->b) + OUT(&result[8], ctx->c) + OUT(&result[12], ctx->d) memset(ctx, 0, sizeof(*ctx)); } diff --git a/Build/source/libs/freetype2/freetype-src/src/bdf/bdflib.c b/Build/source/libs/freetype2/freetype-src/src/bdf/bdflib.c index 4baa9ca918c..e1dce954ff1 100644 --- a/Build/source/libs/freetype2/freetype-src/src/bdf/bdflib.c +++ b/Build/source/libs/freetype2/freetype-src/src/bdf/bdflib.c @@ -1127,7 +1127,7 @@ propid = ft_hash_str_lookup( name, &(font->proptbl) ); } - /* Allocate another property if this is overflow. */ + /* Allocate another property if this is overflowing. */ if ( font->props_used == font->props_size ) { if ( font->props_size == 0 ) @@ -1976,8 +1976,18 @@ error = _bdf_list_split( &p->list, (char *)" +", line, linelen ); if ( error ) goto Exit; + /* at this point, `p->font' can't be NULL */ p->cnt = p->font->props_size = _bdf_atoul( p->list.field[1] ); + /* We need at least 4 bytes per property. */ + if ( p->cnt > p->size / 4 ) + { + p->font->props_size = 0; + + FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG5, lineno, "STARTPROPERTIES" )); + error = FT_THROW( Invalid_Argument ); + goto Exit; + } if ( FT_NEW_ARRAY( p->font->props, p->cnt ) ) { diff --git a/Build/source/libs/freetype2/freetype-src/src/cache/ftccache.h b/Build/source/libs/freetype2/freetype-src/src/cache/ftccache.h index efe830d3272..1b1295951f0 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cache/ftccache.h +++ b/Build/source/libs/freetype2/freetype-src/src/cache/ftccache.h @@ -325,7 +325,7 @@ FT_BEGIN_HEADER break; \ \ _try_done = FTC_Manager_FlushN( _try_manager, _try_count ); \ - if ( _try_done > 0 && ( list_changed ) ) \ + if ( _try_done > 0 && ( list_changed != NULL ) ) \ *(FT_Bool*)( list_changed ) = TRUE; \ \ if ( _try_done == 0 ) \ diff --git a/Build/source/libs/freetype2/freetype-src/src/cache/ftccmap.c b/Build/source/libs/freetype2/freetype-src/src/cache/ftccmap.c index 52fb3c79f45..41a0ce97dd7 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cache/ftccmap.c +++ b/Build/source/libs/freetype2/freetype-src/src/cache/ftccmap.c @@ -259,9 +259,6 @@ return 0; } - if ( !face_id ) - return 0; - query.face_id = face_id; query.cmap_index = (FT_UInt)cmap_index; query.char_code = char_code; diff --git a/Build/source/libs/freetype2/freetype-src/src/cache/ftcmanag.c b/Build/source/libs/freetype2/freetype-src/src/cache/ftcmanag.c index 1f44d80ca3a..661a32af5b0 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cache/ftcmanag.c +++ b/Build/source/libs/freetype2/freetype-src/src/cache/ftcmanag.c @@ -314,7 +314,7 @@ FTC_MruNode mrunode; - if ( !aface || !face_id ) + if ( !aface ) return FT_THROW( Invalid_Argument ); *aface = NULL; @@ -672,7 +672,7 @@ FT_UInt nn; - if ( !manager || !face_id ) + if ( !manager ) return; /* this will remove all FTC_SizeNode that correspond to diff --git a/Build/source/libs/freetype2/freetype-src/src/cache/ftcmru.h b/Build/source/libs/freetype2/freetype-src/src/cache/ftcmru.h index ea78a32a5f7..ae3c4ce23aa 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cache/ftcmru.h +++ b/Build/source/libs/freetype2/freetype-src/src/cache/ftcmru.h @@ -185,7 +185,7 @@ FT_BEGIN_HEADER } \ _node = _node->next; \ \ - } while ( _node != _first) ; \ + } while ( _node != _first); \ } \ \ error = FTC_MruList_New( (list), (key), (FTC_MruNode*)(void*)&(node) ); \ diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cf2error.h b/Build/source/libs/freetype2/freetype-src/src/cff/cf2error.h index d9f8c669f81..512edd1d21e 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cf2error.h +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cf2error.h @@ -70,7 +70,7 @@ FT_BEGIN_HEADER * Upon a function call if the error code is anything other than * `FT_Err_Ok', which is guaranteed to be zero, we * will return without altering that error. This will allow the - * error to propogate and be handled at the appropriate location in + * error to propagate and be handled at the appropriate location in * the code. * * This allows a style of code where the error code is initialized diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cf2hints.h b/Build/source/libs/freetype2/freetype-src/src/cff/cf2hints.h index 290f57072cf..a8984542a01 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cf2hints.h +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cf2hints.h @@ -220,7 +220,7 @@ FT_BEGIN_HEADER /* character space miter limit threshold */ CF2_Fixed miterLimit; - /* vertical/horzizontal snap distance in character space */ + /* vertical/horizontal snap distance in character space */ CF2_Fixed snapThreshold; FT_Vector offsetStart0; /* first and second points of first */ diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cffdrivr.c b/Build/source/libs/freetype2/freetype-src/src/cff/cffdrivr.c index 7a820940da0..950a9605c38 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cffdrivr.c +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cffdrivr.c @@ -701,12 +701,14 @@ FT_UInt* hinting_engine = (FT_UInt*)value; -#ifndef CFF_CONFIG_OPTION_OLD_ENGINE - if ( *hinting_engine != FT_CFF_HINTING_ADOBE ) - error = FT_ERR( Unimplemented_Feature ); - else + if ( *hinting_engine == FT_CFF_HINTING_ADOBE +#ifdef CFF_CONFIG_OPTION_OLD_ENGINE + || *hinting_engine == FT_CFF_HINTING_FREETYPE #endif + ) driver->hinting_engine = *hinting_engine; + else + error = FT_ERR( Unimplemented_Feature ); return error; } diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.c b/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.c index df57d67e57f..752c18ed92b 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.c +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.c @@ -680,7 +680,7 @@ #endif /* FT_CONFIG_OPTION_INCREMENTAL */ { - CFF_Font cff = (CFF_Font)(face->extra.data); + CFF_Font cff = (CFF_Font)(face->extra.data); return cff_index_access_element( &cff->charstrings_index, glyph_index, @@ -826,7 +826,7 @@ /* the seac operator must not be nested */ decoder->seac = TRUE; error = cff_decoder_parse_charstrings( decoder, charstring, - charstring_len ); + charstring_len, 0 ); decoder->seac = FALSE; cff_free_glyph_data( face, &charstring, charstring_len ); @@ -856,7 +856,7 @@ /* the seac operator must not be nested */ decoder->seac = TRUE; error = cff_decoder_parse_charstrings( decoder, charstring, - charstring_len ); + charstring_len, 0 ); decoder->seac = FALSE; cff_free_glyph_data( face, &charstring, charstring_len ); @@ -895,13 +895,17 @@ /* */ /* charstring_len :: The length in bytes of the charstring stream. */ /* */ + /* in_dict :: Set to 1 if function is called from top or */ + /* private DICT (needed for Multiple Master CFFs). */ + /* */ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ FT_LOCAL_DEF( FT_Error ) cff_decoder_parse_charstrings( CFF_Decoder* decoder, FT_Byte* charstring_base, - FT_ULong charstring_len ) + FT_ULong charstring_len, + FT_Bool in_dict ) { FT_Error error; CFF_Decoder_Zone* zone; @@ -913,6 +917,10 @@ FT_Fixed* stack; FT_Int charstring_type = decoder->cff->top_font.font_dict.charstring_type; + FT_UShort num_designs = + decoder->cff->top_font.font_dict.num_designs; + FT_UShort num_axes = + decoder->cff->top_font.font_dict.num_axes; T2_Hints_Funcs hinter; @@ -1241,6 +1249,44 @@ if ( op == cff_op_unknown ) continue; + /* in Multiple Master CFFs, T2 charstrings can appear in */ + /* dictionaries, but some operators are prohibited */ + if ( in_dict ) + { + switch ( op ) + { + case cff_op_hstem: + case cff_op_vstem: + case cff_op_vmoveto: + case cff_op_rlineto: + case cff_op_hlineto: + case cff_op_vlineto: + case cff_op_rrcurveto: + case cff_op_hstemhm: + case cff_op_hintmask: + case cff_op_cntrmask: + case cff_op_rmoveto: + case cff_op_hmoveto: + case cff_op_vstemhm: + case cff_op_rcurveline: + case cff_op_rlinecurve: + case cff_op_vvcurveto: + case cff_op_hhcurveto: + case cff_op_vhcurveto: + case cff_op_hvcurveto: + case cff_op_hflex: + case cff_op_flex: + case cff_op_hflex1: + case cff_op_flex1: + case cff_op_callsubr: + case cff_op_callgsubr: + goto MM_Error; + + default: + break; + } + } + /* check arguments */ req_args = cff_argument_counts[op]; if ( req_args & CFF_COUNT_CHECK_WIDTH ) @@ -1278,7 +1324,9 @@ case cff_op_endchar: /* If there is a width specified for endchar, we either have */ /* 1 argument or 5 arguments. We like to argue. */ - set_width_ok = ( num_args == 5 ) || ( num_args == 1 ); + set_width_ok = in_dict + ? 0 + : ( ( num_args == 5 ) || ( num_args == 1 ) ); break; default: @@ -1971,6 +2019,10 @@ return error; case cff_op_endchar: + /* in dictionaries, `endchar' simply indicates end of data */ + if ( in_dict ) + return error; + FT_TRACE4(( " endchar\n" )); /* We are going to emulate the seac operator. */ @@ -2198,6 +2250,10 @@ FT_TRACE4(( " put\n" )); + /* the Type2 specification before version 16-March-2000 */ + /* didn't give a hard-coded size limit of the temporary */ + /* storage array; instead, an argument of the */ + /* `MultipleMaster' operator set the size */ if ( idx >= 0 && idx < CFF_MAX_TRANS_ELEMENTS ) decoder->buildchar[idx] = val; } @@ -2222,23 +2278,66 @@ case cff_op_store: /* this operator was removed from the Type2 specification */ /* in version 16-March-2000 */ - FT_TRACE4(( " store\n")); - goto Unimplemented; + /* since we currently don't handle interpolation of multiple */ + /* master fonts, this is a no-op */ + FT_TRACE4(( " store\n")); + break; case cff_op_load: /* this operator was removed from the Type2 specification */ /* in version 16-March-2000 */ - FT_TRACE4(( " load\n" )); + { + FT_Int reg_idx = (FT_Int)args[0]; + FT_Int idx = (FT_Int)args[1]; + FT_Int count = (FT_Int)args[2]; + + + FT_TRACE4(( " load\n" )); + + /* since we currently don't handle interpolation of multiple */ + /* master fonts, we store a vector [1 0 0 ...] in the */ + /* temporary storage array regardless of the Registry index */ + if ( reg_idx >= 0 && reg_idx <= 2 && + idx >= 0 && idx < CFF_MAX_TRANS_ELEMENTS && + count >= 0 && count <= num_axes ) + { + FT_Int end, i; + - goto Unimplemented; + end = FT_MIN( idx + count, CFF_MAX_TRANS_ELEMENTS ); + + if ( idx < end ) + decoder->buildchar[idx] = 1 << 16; + + for ( i = idx + 1; i < end; i++ ) + decoder->buildchar[i] = 0; + } + } + break; case cff_op_blend: /* this operator was removed from the Type2 specification */ /* in version 16-March-2000 */ - FT_TRACE4(( " blend\n" )); + { + FT_Int num_results = (FT_Int)( args[0] >> 16 ); + + + FT_TRACE4(( " blend\n" )); + + if ( num_results < 0 ) + goto Syntax_Error; + + if ( num_results * (FT_Int)num_designs > num_args ) + goto Stack_Underflow; - goto Unimplemented; + /* since we currently don't handle interpolation of multiple */ + /* master fonts, return the `num_results' values of the */ + /* first master */ + args -= num_results * ( num_designs - 1 ); + num_args -= num_results * ( num_designs - 1 ); + } + break; case cff_op_dotsection: /* this operator is deprecated and ignored by the parser */ @@ -2511,7 +2610,6 @@ break; default: - Unimplemented: FT_ERROR(( "Unimplemented opcode: %d", ip[-1] )); if ( ip[-1] == 12 ) @@ -2535,6 +2633,11 @@ Fail: return error; + MM_Error: + FT_TRACE4(( "cff_decoder_parse_charstrings:" + " invalid opcode found in top DICT charstring\n")); + return FT_THROW( Invalid_File_Format ); + Syntax_Error: FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error\n" )); return FT_THROW( Invalid_File_Format ); @@ -2608,7 +2711,8 @@ if ( !error ) error = cff_decoder_parse_charstrings( &decoder, charstring, - charstring_len ); + charstring_len, + 0 ); cff_free_glyph_data( face, &charstring, &charstring_len ); } @@ -2859,7 +2963,8 @@ if ( driver->hinting_engine == FT_CFF_HINTING_FREETYPE ) error = cff_decoder_parse_charstrings( &decoder, charstring, - charstring_len ); + charstring_len, + 0 ); else #endif { diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.h b/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.h index 2257307eee5..b875fbed907 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.h +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.h @@ -227,7 +227,8 @@ FT_BEGIN_HEADER FT_LOCAL( FT_Error ) cff_decoder_parse_charstrings( CFF_Decoder* decoder, FT_Byte* charstring_base, - FT_ULong charstring_len ); + FT_ULong charstring_len, + FT_Bool in_dict ); #endif FT_LOCAL( FT_Error ) diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cffload.c b/Build/source/libs/freetype2/freetype-src/src/cff/cffload.c index 42cc37e1aa1..3d1bda97b94 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cffload.c +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cffload.c @@ -382,13 +382,15 @@ static FT_Error cff_index_get_pointers( CFF_Index idx, FT_Byte*** table, - FT_Byte** pool ) + FT_Byte** pool, + FT_ULong* pool_size ) { FT_Error error = FT_Err_Ok; FT_Memory memory = idx->stream->memory; FT_Byte** t = NULL; FT_Byte* new_bytes = NULL; + FT_ULong new_size; *table = NULL; @@ -400,10 +402,11 @@ goto Exit; } - if ( idx->count > 0 && - !FT_NEW_ARRAY( t, idx->count + 1 ) && - ( !pool || !FT_ALLOC( new_bytes, - idx->data_size + idx->count ) ) ) + new_size = idx->data_size + idx->count; + + if ( idx->count > 0 && + !FT_NEW_ARRAY( t, idx->count + 1 ) && + ( !pool || !FT_ALLOC( new_bytes, new_size ) ) ) { FT_ULong n, cur_offset; FT_ULong extra = 0; @@ -459,6 +462,8 @@ if ( pool ) *pool = new_bytes; + if ( pool_size ) + *pool_size = new_size; } Exit: @@ -809,7 +814,7 @@ /* When multiple GIDs map to the same CID, we choose the lowest */ /* GID. This is not described in any spec, but it matches the */ /* behaviour of recent Acroread versions. */ - for ( j = (FT_Long)num_glyphs - 1; j >= 0 ; j-- ) + for ( j = (FT_Long)num_glyphs - 1; j >= 0; j-- ) charset->cids[charset->sids[j]] = (FT_UShort)j; charset->max_cid = max_cid; @@ -871,8 +876,8 @@ FT_UShort glyph_sid; - /* If the the offset is greater than 2, we have to parse the */ - /* charset table. */ + /* If the offset is greater than 2, we have to parse the charset */ + /* table. */ if ( offset > 2 ) { FT_UInt j; @@ -1316,7 +1321,12 @@ CFF_Private priv = &font->private_dict; - cff_parser_init( &parser, CFF_CODE_TOPDICT, &font->font_dict, library ); + cff_parser_init( &parser, + CFF_CODE_TOPDICT, + &font->font_dict, + library, + 0, + 0 ); /* set defaults */ FT_MEM_ZERO( top, sizeof ( *top ) ); @@ -1370,7 +1380,12 @@ priv->expansion_factor = (FT_Fixed)( 0.06 * 0x10000L ); priv->blue_scale = (FT_Fixed)( 0.039625 * 0x10000L * 1000 ); - cff_parser_init( &parser, CFF_CODE_PRIVATE, priv, library ); + cff_parser_init( &parser, + CFF_CODE_PRIVATE, + priv, + library, + top->num_designs, + top->num_axes ); if ( FT_STREAM_SEEK( base_offset + font->font_dict.private_offset ) || FT_FRAME_ENTER( font->font_dict.private_size ) ) @@ -1400,7 +1415,7 @@ goto Exit; error = cff_index_get_pointers( &font->local_subrs_index, - &font->local_subrs, NULL ); + &font->local_subrs, NULL, NULL ); if ( error ) goto Exit; } @@ -1478,16 +1493,17 @@ /* read the name, top dict, string and global subrs index */ if ( FT_SET_ERROR( cff_index_init( &font->name_index, - stream, 0 ) ) || + stream, 0 ) ) || FT_SET_ERROR( cff_index_init( &font->font_dict_index, - stream, 0 ) ) || + stream, 0 ) ) || FT_SET_ERROR( cff_index_init( &string_index, - stream, 1 ) ) || + stream, 1 ) ) || FT_SET_ERROR( cff_index_init( &font->global_subrs_index, - stream, 1 ) ) || + stream, 1 ) ) || FT_SET_ERROR( cff_index_get_pointers( &string_index, &font->strings, - &font->string_pool ) ) ) + &font->string_pool, + &font->string_pool_size ) ) ) goto Exit; font->num_strings = string_index.count; @@ -1614,7 +1630,7 @@ font->num_glyphs = font->charstrings_index.count; error = cff_index_get_pointers( &font->global_subrs_index, - &font->global_subrs, NULL ); + &font->global_subrs, NULL, NULL ); if ( error ) goto Exit; diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cffobjs.c b/Build/source/libs/freetype2/freetype-src/src/cff/cffobjs.c index e22ae82bcf1..0f0769677ff 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cffobjs.c +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cffobjs.c @@ -625,11 +625,44 @@ FT_TRACE4(( "SIDs\n" )); /* dump string index, including default strings for convenience */ - for ( idx = 0; idx < cff->num_strings + 390; idx++ ) + for ( idx = 0; idx <= 390; idx++ ) { s = cff_index_get_sid_string( cff, idx ); if ( s ) - FT_TRACE4((" %5d %s\n", idx, s )); + FT_TRACE4(( " %5d %s\n", idx, s )); + } + + /* In Multiple Master CFFs, two SIDs hold the Normalize Design */ + /* Vector (NDV) and Convert Design Vector (CDV) charstrings, */ + /* which may contain NULL bytes in the middle of the data, too. */ + /* We thus access `cff->strings' directly. */ + for ( idx = 1; idx < cff->num_strings; idx++ ) + { + FT_Byte* s1 = cff->strings[idx - 1]; + FT_Byte* s2 = cff->strings[idx]; + FT_PtrDist s1len = s2 - s1 - 1; /* without the final NULL byte */ + FT_PtrDist l; + + + FT_TRACE4(( " %5d ", idx + 390 )); + for ( l = 0; l < s1len; l++ ) + FT_TRACE4(( "%c", s1[l] )); + FT_TRACE4(( "\n" )); + } + + /* print last element */ + if ( cff->num_strings ) + { + FT_Byte* s1 = cff->strings[cff->num_strings - 1]; + FT_Byte* s2 = cff->string_pool + cff->string_pool_size; + FT_PtrDist s1len = s2 - s1 - 1; + FT_PtrDist l; + + + FT_TRACE4(( " %5d ", cff->num_strings + 390 )); + for ( l = 0; l < s1len; l++ ) + FT_TRACE4(( "%c", s1[l] )); + FT_TRACE4(( "\n" )); } } #endif /* FT_DEBUG_LEVEL_TRACE */ @@ -637,10 +670,11 @@ if ( !dict->has_font_matrix ) dict->units_per_em = pure_cff ? 1000 : face->root.units_per_EM; - /* Normalize the font matrix so that `matrix->yy' is 1; the */ - /* scaling is done with `units_per_em' then (at this point, */ - /* it already contains the scaling factor, but without */ - /* normalization of the matrix). */ + /* Normalize the font matrix so that `matrix->yy' is 1; if */ + /* it is zero, we use `matrix->yx' instead. The scaling is */ + /* done with `units_per_em' then (at this point, it already */ + /* contains the scaling factor, but without normalization */ + /* of the matrix). */ /* */ /* Note that the offsets must be expressed in integer font */ /* units. */ @@ -649,9 +683,12 @@ FT_Matrix* matrix = &dict->font_matrix; FT_Vector* offset = &dict->font_offset; FT_ULong* upm = &dict->units_per_em; - FT_Fixed temp = FT_ABS( matrix->yy ); + FT_Fixed temp; + temp = matrix->yy ? FT_ABS( matrix->yy ) + : FT_ABS( matrix->yx ); + if ( temp != 0x10000L ) { *upm = (FT_ULong)FT_DivFix( (FT_Long)*upm, temp ); @@ -719,7 +756,10 @@ matrix = &sub->font_matrix; offset = &sub->font_offset; upm = &sub->units_per_em; - temp = FT_ABS( matrix->yy ); + + temp = matrix->yy ? FT_ABS( matrix->yy ) + : FT_ABS( matrix->yx ); + if ( temp != 0x10000L ) { diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.c b/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.c index acbdc5a821d..a4f986b67cc 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.c +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.c @@ -23,6 +23,7 @@ #include "cfferrs.h" #include "cffpic.h" +#include "cffgload.h" /*************************************************************************/ @@ -39,7 +40,9 @@ cff_parser_init( CFF_Parser parser, FT_UInt code, void* object, - FT_Library library) + FT_Library library, + FT_UShort num_designs, + FT_UShort num_axes ) { FT_MEM_ZERO( parser, sizeof ( *parser ) ); @@ -47,6 +50,8 @@ parser->object_code = code; parser->object = object; parser->library = library; + parser->num_designs = num_designs; + parser->num_axes = num_axes; } @@ -516,7 +521,11 @@ if ( parser->top >= parser->stack + 6 ) { - FT_Long scaling; + FT_Fixed values[6]; + FT_Long scalings[6]; + + FT_Long min_scaling, max_scaling; + int i; error = FT_Err_Ok; @@ -525,22 +534,36 @@ /* We expect a well-formed font matrix, this is, the matrix elements */ /* `xx' and `yy' are of approximately the same magnitude. To avoid */ - /* loss of precision, we use the magnitude of element `xx' to scale */ - /* all other elements. The scaling factor is then contained in the */ - /* `units_per_em' value. */ + /* loss of precision, we use the magnitude of the largest matrix */ + /* element to scale all other elements. The scaling factor is then */ + /* contained in the `units_per_em' value. */ - matrix->xx = cff_parse_fixed_dynamic( data++, &scaling ); + max_scaling = FT_LONG_MIN; + min_scaling = FT_LONG_MAX; - scaling = -scaling; + for ( i = 0; i < 6; i++ ) + { + values[i] = cff_parse_fixed_dynamic( data++, &scalings[i] ); + if ( values[i] ) + { + if ( scalings[i] > max_scaling ) + max_scaling = scalings[i]; + if ( scalings[i] < min_scaling ) + min_scaling = scalings[i]; + } + } - if ( scaling < 0 || scaling > 9 ) + if ( max_scaling < -9 || + max_scaling > 0 || + ( max_scaling - min_scaling ) < 0 || + ( max_scaling - min_scaling ) > 9 ) { /* Return default matrix in case of unlikely values. */ FT_TRACE1(( "cff_parse_font_matrix:" - " strange scaling value for xx element (%d),\n" + " strange scaling values (minimum %d, maximum %d),\n" " " - " using default matrix\n", scaling )); + " using default matrix\n", min_scaling, max_scaling )); matrix->xx = 0x10000L; matrix->yx = 0; @@ -553,13 +576,42 @@ goto Exit; } - matrix->yx = cff_parse_fixed_scaled( data++, scaling ); - matrix->xy = cff_parse_fixed_scaled( data++, scaling ); - matrix->yy = cff_parse_fixed_scaled( data++, scaling ); - offset->x = cff_parse_fixed_scaled( data++, scaling ); - offset->y = cff_parse_fixed_scaled( data, scaling ); + for ( i = 0; i < 6; i++ ) + { + FT_Fixed value = values[i]; + FT_Long divisor, half_divisor; + + + if ( !value ) + continue; + + divisor = power_tens[max_scaling - scalings[i]]; + half_divisor = divisor >> 1; + + if ( value < 0 ) + { + if ( FT_LONG_MIN + half_divisor < value ) + values[i] = ( value - half_divisor ) / divisor; + else + values[i] = FT_LONG_MIN / divisor; + } + else + { + if ( FT_LONG_MAX - half_divisor > value ) + values[i] = ( value + half_divisor ) / divisor; + else + values[i] = FT_LONG_MAX / divisor; + } + } + + matrix->xx = values[0]; + matrix->yx = values[1]; + matrix->xy = values[2]; + matrix->yy = values[3]; + offset->x = values[4]; + offset->y = values[5]; - *upm = (FT_ULong)power_tens[scaling]; + *upm = (FT_ULong)power_tens[-max_scaling]; FT_TRACE4(( " [%f %f %f %f %f %f]\n", (double)matrix->xx / *upm / 65536, @@ -649,6 +701,56 @@ } + /* The `MultipleMaster' operator comes before any */ + /* top DICT operators that contain T2 charstrings. */ + + static FT_Error + cff_parse_multiple_master( CFF_Parser parser ) + { + CFF_FontRecDict dict = (CFF_FontRecDict)parser->object; + FT_Error error; + + +#ifdef FT_DEBUG_LEVEL_TRACE + /* beautify tracing message */ + if ( ft_trace_levels[FT_COMPONENT] < 4 ) + FT_TRACE1(( "Multiple Master CFFs not supported yet," + " handling first master design only\n" )); + else + FT_TRACE1(( " (not supported yet," + " handling first master design only)\n" )); +#endif + + error = FT_ERR( Stack_Underflow ); + + /* currently, we handle only the first argument */ + if ( parser->top >= parser->stack + 5 ) + { + FT_Long num_designs = cff_parse_num( parser->stack ); + + + if ( num_designs > 16 || num_designs < 2 ) + { + FT_ERROR(( "cff_parse_multiple_master:" + " Invalid number of designs\n" )); + error = FT_THROW( Invalid_File_Format ); + } + else + { + dict->num_designs = (FT_UShort)num_designs; + dict->num_axes = (FT_UShort)( parser->top - parser->stack - 4 ); + + parser->num_designs = dict->num_designs; + parser->num_axes = dict->num_axes; + + error = FT_Err_Ok; + } + } + + return error; + } + + static FT_Error cff_parse_cid_ros( CFF_Parser parser ) { @@ -972,7 +1074,7 @@ if ( parser->top - parser->stack >= CFF_MAX_STACK_DEPTH ) goto Stack_Overflow; - *parser->top ++ = p; + *parser->top++ = p; /* now, skip it */ if ( v == 30 ) @@ -1001,6 +1103,136 @@ else if ( v > 246 ) p += 1; } +#ifdef CFF_CONFIG_OPTION_OLD_ENGINE + else if ( v == 31 ) + { + /* a Type 2 charstring */ + + CFF_Decoder decoder; + CFF_FontRec cff_rec; + FT_Byte* charstring_base; + FT_ULong charstring_len; + + FT_Fixed* stack; + FT_Byte* q; + + + charstring_base = ++p; + + /* search `endchar' operator */ + for (;;) + { + if ( p >= limit ) + goto Exit; + if ( *p == 14 ) + break; + p++; + } + + charstring_len = (FT_ULong)( p - charstring_base ) + 1; + + /* construct CFF_Decoder object */ + FT_MEM_ZERO( &decoder, sizeof ( decoder ) ); + FT_MEM_ZERO( &cff_rec, sizeof ( cff_rec ) ); + + cff_rec.top_font.font_dict.num_designs = parser->num_designs; + cff_rec.top_font.font_dict.num_axes = parser->num_axes; + decoder.cff = &cff_rec; + + error = cff_decoder_parse_charstrings( &decoder, + charstring_base, + charstring_len, + 1 ); + + /* Now copy the stack data in the temporary decoder object, */ + /* converting it back to charstring number representations */ + /* (this is ugly, I know). */ + /* */ + /* We overwrite the original top DICT charstring under the */ + /* assumption that the charstring representation of the result */ + /* of `cff_decoder_parse_charstrings' is shorter, which should */ + /* be always true. */ + + q = charstring_base - 1; + stack = decoder.stack; + + while ( stack < decoder.top ) + { + FT_ULong num; + FT_Bool neg; + + + if ( parser->top - parser->stack >= CFF_MAX_STACK_DEPTH ) + goto Stack_Overflow; + + *parser->top++ = q; + + if ( *stack < 0 ) + { + num = (FT_ULong)-*stack; + neg = 1; + } + else + { + num = (FT_ULong)*stack; + neg = 0; + } + + if ( num & 0xFFFFU ) + { + if ( neg ) + num = (FT_ULong)-num; + + *q++ = 255; + *q++ = ( num & 0xFF000000U ) >> 24; + *q++ = ( num & 0x00FF0000U ) >> 16; + *q++ = ( num & 0x0000FF00U ) >> 8; + *q++ = num & 0x000000FFU; + } + else + { + num >>= 16; + + if ( neg ) + { + if ( num <= 107 ) + *q++ = (FT_Byte)( 139 - num ); + else if ( num <= 1131 ) + { + *q++ = (FT_Byte)( ( ( num - 108 ) >> 8 ) + 251 ); + *q++ = (FT_Byte)( ( num - 108 ) & 0xFF ); + } + else + { + num = (FT_ULong)-num; + + *q++ = 28; + *q++ = (FT_Byte)( num >> 8 ); + *q++ = (FT_Byte)( num & 0xFF ); + } + } + else + { + if ( num <= 107 ) + *q++ = (FT_Byte)( num + 139 ); + else if ( num <= 1131 ) + { + *q++ = (FT_Byte)( ( ( num - 108 ) >> 8 ) + 247 ); + *q++ = (FT_Byte)( ( num - 108 ) & 0xFF ); + } + else + { + *q++ = 28; + *q++ = (FT_Byte)( num >> 8 ); + *q++ = (FT_Byte)( num & 0xFF ); + } + } + } + + stack++; + } + } +#endif /* CFF_CONFIG_OPTION_OLD_ENGINE */ else { /* This is not a number, hence it's an operator. Compute its code */ diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.h b/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.h index bb9425ac71c..a95970edcb0 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.h +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.h @@ -36,16 +36,19 @@ FT_BEGIN_HEADER typedef struct CFF_ParserRec_ { - FT_Library library; - FT_Byte* start; - FT_Byte* limit; - FT_Byte* cursor; + FT_Library library; + FT_Byte* start; + FT_Byte* limit; + FT_Byte* cursor; - FT_Byte* stack[CFF_MAX_STACK_DEPTH + 1]; - FT_Byte** top; + FT_Byte* stack[CFF_MAX_STACK_DEPTH + 1]; + FT_Byte** top; - FT_UInt object_code; - void* object; + FT_UInt object_code; + void* object; + + FT_UShort num_designs; /* a copy of `CFF_FontRecDict->num_designs' */ + FT_UShort num_axes; /* a copy of `CFF_FontRecDict->num_axes' */ } CFF_ParserRec, *CFF_Parser; @@ -54,7 +57,9 @@ FT_BEGIN_HEADER cff_parser_init( CFF_Parser parser, FT_UInt code, void* object, - FT_Library library); + FT_Library library, + FT_UShort num_designs, + FT_UShort num_axes ); FT_LOCAL( FT_Error ) cff_parser_run( CFF_Parser parser, diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cfftoken.h b/Build/source/libs/freetype2/freetype-src/src/cff/cfftoken.h index 44b65805b50..22637c780bc 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cfftoken.h +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cfftoken.h @@ -38,6 +38,9 @@ CFF_FIELD_NUM ( 13, unique_id, "UniqueID" ) CFF_FIELD_CALLBACK( 5, font_bbox, "FontBBox" ) CFF_FIELD_NUM ( 0x108, stroke_width, "StrokeWidth" ) +#if 0 + CFF_FIELD_DELTA ( 14, xuid, 16, "XUID" ) +#endif CFF_FIELD_NUM ( 15, charset_offset, "charset" ) CFF_FIELD_NUM ( 16, encoding_offset, "Encoding" ) CFF_FIELD_NUM ( 17, charstrings_offset, "CharStrings" ) @@ -48,8 +51,13 @@ #if 0 CFF_FIELD_STRING ( 0x116, base_font_name, "BaseFontName" ) CFF_FIELD_DELTA ( 0x117, base_font_blend, 16, "BaseFontBlend" ) +#endif + + /* the next two operators were removed from the Type2 specification */ + /* in version 16-March-2000 */ CFF_FIELD_CALLBACK( 0x118, multiple_master, "MultipleMaster" ) - CFF_FIELD_CALLBACK( 0x119, blend_axis_types, "BlendAxisTypes" ) +#if 0 + CFF_FIELD_CALLBACK( 0x11A, blend_axis_types, "BlendAxisTypes" ) #endif CFF_FIELD_CALLBACK( 0x11E, cid_ros, "ROS" ) diff --git a/Build/source/libs/freetype2/freetype-src/src/cff/cfftypes.h b/Build/source/libs/freetype2/freetype-src/src/cff/cfftypes.h index 80f13fe2ca6..4426c7e4f15 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cff/cfftypes.h +++ b/Build/source/libs/freetype2/freetype-src/src/cff/cfftypes.h @@ -145,6 +145,12 @@ FT_BEGIN_HEADER FT_ULong cid_fd_select_offset; FT_UInt cid_font_name; + /* the next fields come from the data of the deprecated */ + /* `MultipleMaster' operator; they are needed to parse the (also */ + /* deprecated) `blend' operator in Type 2 charstrings */ + FT_UShort num_designs; + FT_UShort num_axes; + } CFF_FontRecDictRec, *CFF_FontRecDict; @@ -250,6 +256,7 @@ FT_BEGIN_HEADER FT_UInt num_strings; FT_Byte** strings; FT_Byte* string_pool; + FT_ULong string_pool_size; CFF_SubFontRec top_font; FT_UInt num_subfonts; diff --git a/Build/source/libs/freetype2/freetype-src/src/cid/cidparse.c b/Build/source/libs/freetype2/freetype-src/src/cid/cidparse.c index f1c39f6d08a..73aca2ac6a7 100644 --- a/Build/source/libs/freetype2/freetype-src/src/cid/cidparse.c +++ b/Build/source/libs/freetype2/freetype-src/src/cid/cidparse.c @@ -47,6 +47,12 @@ /*************************************************************************/ +#define STARTDATA "StartData" +#define STARTDATA_LEN ( sizeof ( STARTDATA ) - 1 ) +#define SFNTS "/sfnts" +#define SFNTS_LEN ( sizeof ( SFNTS ) - 1 ) + + FT_LOCAL_DEF( FT_Error ) cid_parser_new( CID_Parser* parser, FT_Stream stream, @@ -85,9 +91,29 @@ /* now, read the rest of the file until we find */ /* `StartData' or `/sfnts' */ { - FT_Byte buffer[256 + 10]; - FT_ULong read_len = 256 + 10; - FT_Byte* p = buffer; + /* + * The algorithm is as follows (omitting the case with less than 256 + * bytes to fill for simplicity). + * + * 1. Fill the buffer with 256 + STARTDATA_LEN bytes. + * + * 2. Search for the STARTDATA and SFNTS strings at positions + * buffer[0], buffer[1], ..., + * buffer[255 + STARTDATA_LEN - SFNTS_LEN]. + * + * 3. Move the last STARTDATA_LEN bytes to buffer[0]. + * + * 4. Fill the buffer with 256 bytes, starting at STARTDATA_LEN. + * + * 5. Repeat with step 2. + * + */ + FT_Byte buffer[256 + STARTDATA_LEN + 1]; + + /* values for the first loop */ + FT_ULong read_len = 256 + STARTDATA_LEN; + FT_ULong read_offset = 0; + FT_Byte* p = buffer; for ( offset = FT_STREAM_POS(); ; offset += 256 ) @@ -96,40 +122,48 @@ stream_len = stream->size - FT_STREAM_POS(); - if ( stream_len == 0 ) - { - FT_TRACE2(( "cid_parser_new: no `StartData' keyword found\n" )); - error = FT_THROW( Invalid_File_Format ); - goto Exit; - } read_len = FT_MIN( read_len, stream_len ); if ( FT_STREAM_READ( p, read_len ) ) goto Exit; - if ( read_len < 256 ) - p[read_len] = '\0'; + /* ensure that we do not compare with data beyond the buffer */ + p[read_len] = '\0'; - limit = p + read_len - 10; + limit = p + read_len - SFNTS_LEN; for ( p = buffer; p < limit; p++ ) { - if ( p[0] == 'S' && ft_strncmp( (char*)p, "StartData", 9 ) == 0 ) + if ( p[0] == 'S' && + ft_strncmp( (char*)p, STARTDATA, STARTDATA_LEN ) == 0 ) { /* save offset of binary data after `StartData' */ - offset += (FT_ULong)( p - buffer + 10 ); + offset += (FT_ULong)( p - buffer ) + STARTDATA_LEN; goto Found; } - else if ( p[1] == 's' && ft_strncmp( (char*)p, "/sfnts", 6 ) == 0 ) + else if ( p[1] == 's' && + ft_strncmp( (char*)p, SFNTS, SFNTS_LEN ) == 0 ) { - offset += (FT_ULong)( p - buffer + 7 ); + offset += (FT_ULong)( p - buffer ) + SFNTS_LEN; goto Found; } } - FT_MEM_MOVE( buffer, p, 10 ); - read_len = 256; - p = buffer + 10; + if ( read_offset + read_len < STARTDATA_LEN ) + { + FT_TRACE2(( "cid_parser_new: no `StartData' keyword found\n" )); + error = FT_THROW( Invalid_File_Format ); + goto Exit; + } + + FT_MEM_MOVE( buffer, + buffer + read_offset + read_len - STARTDATA_LEN, + STARTDATA_LEN ); + + /* values for the next loop */ + read_len = 256; + read_offset = STARTDATA_LEN; + p = buffer + read_offset; } } @@ -165,7 +199,7 @@ limit = parser->root.limit; cur = parser->root.cursor; - while ( cur < limit ) + while ( cur < limit - SFNTS_LEN ) { if ( parser->root.error ) { @@ -173,7 +207,9 @@ goto Exit; } - if ( cur[0] == 'S' && ft_strncmp( (char*)cur, "StartData", 9 ) == 0 ) + if ( cur[0] == 'S' && + cur < limit - STARTDATA_LEN && + ft_strncmp( (char*)cur, STARTDATA, STARTDATA_LEN ) == 0 ) { if ( ft_strncmp( (char*)arg1, "(Hex)", 5 ) == 0 ) { @@ -191,7 +227,8 @@ goto Exit; } - else if ( cur[1] == 's' && ft_strncmp( (char*)cur, "/sfnts", 6 ) == 0 ) + else if ( cur[1] == 's' && + ft_strncmp( (char*)cur, SFNTS, SFNTS_LEN ) == 0 ) { FT_TRACE2(( "cid_parser_new: cannot handle Type 11 fonts\n" )); error = FT_THROW( Unknown_File_Format ); @@ -216,6 +253,12 @@ } +#undef STARTDATA +#undef STARTDATA_LEN +#undef SFNTS +#undef SFNTS_LEN + + FT_LOCAL_DEF( void ) cid_parser_done( CID_Parser* parser ) { diff --git a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.c b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.c index 2606e57ddac..4b5e41539a0 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.c +++ b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.c @@ -900,7 +900,7 @@ for ( i = 0; i < nnames; i++ ) { if ( FT_Get_Sfnt_Name( gxvalid->face, i, &name ) != FT_Err_Ok ) - continue ; + continue; if ( name.name_id == name_index ) goto Out; @@ -1472,7 +1472,7 @@ if ( ( p + ( maxEntry + 1 ) * entrySize ) > limit ) FT_INVALID_TOO_SHORT; - for (entry = 0; entry <= maxEntry ; entry++ ) + for (entry = 0; entry <= maxEntry; entry++ ) { FT_UShort newState_idx; FT_UShort flags; diff --git a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.h b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.h index d49c4b486ac..9470c8412b9 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.h +++ b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.h @@ -338,7 +338,7 @@ FT_BEGIN_HEADER \ \ for ( b = p; b < (FT_Bytes)p + len; b++ ) \ - FT_TRACE1(("\\x%02x", *b)) ; \ + FT_TRACE1(("\\x%02x", *b)); \ } \ FT_END_STMNT @@ -350,9 +350,9 @@ FT_BEGIN_HEADER \ for ( b = p; b < (FT_Bytes)p + len; b++ ) \ if ( 0x40 < *b && *b < 0x7E ) \ - FT_TRACE1(("%c", *b)) ; \ + FT_TRACE1(("%c", *b)); \ else \ - FT_TRACE1(("\\x%02x", *b)) ; \ + FT_TRACE1(("\\x%02x", *b)); \ } \ FT_END_STMNT diff --git a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvjust.c b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvjust.c index fc8db0d9c98..20d29bfbc81 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvjust.c +++ b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvjust.c @@ -152,7 +152,7 @@ FT_Bytes limit, GXV_Validator gxvalid ) { - FT_Bytes p = table ; + FT_Bytes p = table; FT_Bytes wdc_end = table + GXV_JUST_DATA( wdc_offset_max ); FT_UInt i; diff --git a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvkern.c b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvkern.c index 97ff3bfe951..ee1ab36f70f 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvkern.c +++ b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvkern.c @@ -693,7 +693,7 @@ GXV_NAME_ENTER( "validating coverage" ); - GXV_TRACE(( "interprete coverage 0x%04x by Apple style\n", coverage )); + GXV_TRACE(( "interpret coverage 0x%04x by Apple style\n", coverage )); if ( KERN_IS_NEW( gxvalid ) ) { @@ -728,7 +728,7 @@ } } - GXV_TRACE(( "cannot interprete coverage, broken kern subtable\n" )); + GXV_TRACE(( "cannot interpret coverage, broken kern subtable\n" )); Exit: GXV_EXIT; diff --git a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvlcar.c b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvlcar.c index d600fa31419..d31b6410bd9 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvlcar.c +++ b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvlcar.c @@ -114,7 +114,7 @@ +------ lcar --------------------+ | | | +===============+ | - | | looup header | | + | | lookup header | | | +===============+ | | | BinSrchHeader | | | +===============+ | diff --git a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort1.c b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort1.c index 24fed63c0a9..fd761d0692e 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort1.c +++ b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort1.c @@ -192,7 +192,7 @@ GXV_NAME_ENTER( "validating contents of substitutionTable" ); - for ( i = 0; i < num_gids ; i ++ ) + for ( i = 0; i < num_gids; i++ ) { FT_UShort dst_gid; diff --git a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvtrak.c b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvtrak.c index 8accdfbb795..0f07c04e2ae 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvtrak.c +++ b/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvtrak.c @@ -111,7 +111,7 @@ GXV_LIMIT_CHECK( nTracks * ( 4 + 2 + 2 ) ); - for ( i = 0; i < nTracks; i ++ ) + for ( i = 0; i < nTracks; i++ ) { p = table + i * ( 4 + 2 + 2 ); track = FT_NEXT_LONG( p ); @@ -125,7 +125,7 @@ gxv_sfntName_validate( nameIndex, 256, 32767, gxvalid ); - for ( j = i; j < nTracks; j ++ ) + for ( j = i; j < nTracks; j++ ) { p = table + j * ( 4 + 2 + 2 ); t = FT_NEXT_LONG( p ); diff --git a/Build/source/libs/freetype2/freetype-src/src/gzip/ftgzip.c b/Build/source/libs/freetype2/freetype-src/src/gzip/ftgzip.c index 9c1f183fd5a..9cab80eb59f 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gzip/ftgzip.c +++ b/Build/source/libs/freetype2/freetype-src/src/gzip/ftgzip.c @@ -59,7 +59,7 @@ /* original ZLib. */ #ifndef USE_ZLIB_ZCALLOC -#define MY_ZCALLOC /* prevent all zcalloc() & zfree() in zutils.c */ +#define MY_ZCALLOC /* prevent all zcalloc() & zfree() in zutil.c */ #endif #include "zlib.h" diff --git a/Build/source/libs/freetype2/freetype-src/src/gzip/zlib.h b/Build/source/libs/freetype2/freetype-src/src/gzip/zlib.h index 50d0d3f146d..d361ff482d3 100644 --- a/Build/source/libs/freetype2/freetype-src/src/gzip/zlib.h +++ b/Build/source/libs/freetype2/freetype-src/src/gzip/zlib.h @@ -560,7 +560,7 @@ ZEXTERN(int) inflateInit2 OF((z_streamp strm, inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the success - case, the application may save the current current value of total_in which + case, the application may save the current value of total_in which indicates where valid compressed data was found. In the error case, the application may repeatedly call inflateSync, providing more input each time, until success or end of the input data. diff --git a/Build/source/libs/freetype2/freetype-src/src/otvalid/otvmath.c b/Build/source/libs/freetype2/freetype-src/src/otvalid/otvmath.c index 6c46178bfb8..6c785b6fdab 100644 --- a/Build/source/libs/freetype2/freetype-src/src/otvalid/otvmath.c +++ b/Build/source/libs/freetype2/freetype-src/src/otvalid/otvmath.c @@ -88,7 +88,7 @@ FT_Int isItalic ) { FT_Bytes p = table; - FT_UInt i, cnt, table_size ; + FT_UInt i, cnt, table_size; OTV_OPTIONAL_TABLE( Coverage ); OTV_OPTIONAL_TABLE( DeviceTableOffset ); diff --git a/Build/source/libs/freetype2/freetype-src/src/pcf/pcfread.c b/Build/source/libs/freetype2/freetype-src/src/pcf/pcfread.c index fca677f4fb5..a86b45d6bfc 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pcf/pcfread.c +++ b/Build/source/libs/freetype2/freetype-src/src/pcf/pcfread.c @@ -442,7 +442,7 @@ THE SOFTWARE. int i; - for ( i = 0 ; i < face->nprops && !found; i++ ) + for ( i = 0; i < face->nprops && !found; i++ ) { if ( !ft_strcmp( properties[i].name, prop ) ) found = 1; @@ -849,7 +849,7 @@ THE SOFTWARE. int firstCol, lastCol; int firstRow, lastRow; FT_ULong nencoding; - int encodingOffset; + FT_UShort encodingOffset; int i, j; FT_ULong k; PCF_Encoding encoding = NULL; @@ -921,15 +921,19 @@ THE SOFTWARE. { for ( j = firstCol; j <= lastCol; j++ ) { + /* X11's reference implementation uses the equivalent to */ + /* `FT_GET_SHORT', however PCF fonts with more than 32768 */ + /* characters (e.g. `unifont.pcf') clearly show that an */ + /* unsigned value is needed. */ if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - encodingOffset = FT_GET_SHORT(); + encodingOffset = FT_GET_USHORT(); else - encodingOffset = FT_GET_SHORT_LE(); + encodingOffset = FT_GET_USHORT_LE(); - if ( encodingOffset > -1 ) + if ( encodingOffset != 0xFFFFU ) { encoding[k].enc = i * 256 + j; - encoding[k].glyph = (FT_UShort)encodingOffset; + encoding[k].glyph = encodingOffset; FT_TRACE5(( " code %d (0x%04X): idx %d\n", encoding[k].enc, encoding[k].enc, encoding[k].glyph )); diff --git a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrgload.c b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrgload.c index 1dbbf95da02..f9cd1f63bbe 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrgload.c +++ b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrgload.c @@ -336,7 +336,7 @@ /* XXX: we ignore the secondary stroke and edge definitions */ /* since we don't support native PFR hinting */ /* */ - if ( flags & PFR_GLYPH_EXTRA_ITEMS ) + if ( flags & PFR_GLYPH_SINGLE_EXTRA_ITEMS ) { error = pfr_extra_items_skip( &p, limit ); if ( error ) @@ -579,7 +579,7 @@ /* ignore extra items when present */ /* */ - if ( flags & PFR_GLYPH_EXTRA_ITEMS ) + if ( flags & PFR_GLYPH_COMPOUND_EXTRA_ITEMS ) { error = pfr_extra_items_skip( &p, limit ); if ( error ) diff --git a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrload.c b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrload.c index ca1f37f64b4..e509e70b5d8 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrload.c +++ b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrload.c @@ -299,9 +299,15 @@ FT_READ_USHORT( count ) ) goto Exit; - /* check maximum value and a rough minimum size */ + /* check maximum value and a rough minimum size: */ + /* - no more than 13106 log fonts */ + /* - we need 5 bytes for a log header record */ + /* - we need at least 18 bytes for a log font record */ + /* - the overall size is at least 95 bytes plus the */ + /* log header and log font records */ if ( count > ( ( 1 << 16 ) - 2 ) / 5 || - 2 + count * 5 >= stream->size - section_offset ) + 2 + count * 5 >= stream->size - section_offset || + 95 + count * ( 5 + 18 ) >= stream->size ) { FT_ERROR(( "pfr_log_font_count:" " invalid number of logical fonts\n" )); @@ -377,7 +383,7 @@ if ( flags & PFR_LOG_2BYTE_STROKE ) local++; - if ( (flags & PFR_LINE_JOIN_MASK) == PFR_LINE_JOIN_MITER ) + if ( ( flags & PFR_LINE_JOIN_MASK ) == PFR_LINE_JOIN_MITER ) local += 3; } if ( flags & PFR_LOG_BOLD ) @@ -609,7 +615,7 @@ Too_Short: error = FT_THROW( Invalid_Table ); - FT_ERROR(( "pfr_exta_item_load_stem_snaps:" + FT_ERROR(( "pfr_extra_item_load_stem_snaps:" " invalid stem snaps table\n" )); goto Exit; } @@ -737,12 +743,14 @@ FT_UInt n, ok; + if ( *astring ) + FT_FREE( *astring ); + if ( len > 0 && p[len - 1] == 0 ) len--; - /* check that each character is ASCII for making sure not to - load garbage - */ + /* check that each character is ASCII */ + /* for making sure not to load garbage */ ok = ( len > 0 ); for ( n = 0; n < len; n++ ) if ( p[n] < 32 || p[n] > 127 ) @@ -759,6 +767,7 @@ FT_MEM_COPY( result, p, len ); result[len] = 0; } + Exit: *astring = result; return error; diff --git a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrobjs.c b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrobjs.c index 81b1312fe4b..769a3b61649 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrobjs.c +++ b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrobjs.c @@ -524,8 +524,8 @@ FT_UInt probe = power * size; FT_UInt extra = count - power; FT_Byte* base = stream->cursor; - FT_Bool twobytes = FT_BOOL( item->flags & 1 ); - FT_Bool twobyte_adj = FT_BOOL( item->flags & 2 ); + FT_Bool twobytes = FT_BOOL( item->flags & PFR_KERN_2BYTE_CHAR ); + FT_Bool twobyte_adj = FT_BOOL( item->flags & PFR_KERN_2BYTE_ADJ ); FT_Byte* p; FT_UInt32 cpair; diff --git a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrsbit.c b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrsbit.c index 22f6096fc74..144f50c0b33 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrsbit.c +++ b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrsbit.c @@ -277,49 +277,99 @@ pfr_lookup_bitmap_data( FT_Byte* base, FT_Byte* limit, FT_UInt count, - FT_UInt flags, + FT_UInt* flags, FT_UInt char_code, FT_ULong* found_offset, FT_ULong* found_size ) { - FT_UInt left, right, char_len; - FT_Bool two = FT_BOOL( flags & 1 ); + FT_UInt min, max, char_len; + FT_Bool two = FT_BOOL( *flags & PFR_BITMAP_2BYTE_CHARCODE ); FT_Byte* buff; char_len = 4; - if ( two ) char_len += 1; - if ( flags & 2 ) char_len += 1; - if ( flags & 4 ) char_len += 1; + if ( two ) + char_len += 1; + if ( *flags & PFR_BITMAP_2BYTE_SIZE ) + char_len += 1; + if ( *flags & PFR_BITMAP_3BYTE_OFFSET ) + char_len += 1; + + if ( !( *flags & PFR_BITMAP_CHARCODES_VALIDATED ) ) + { + FT_Byte* p; + FT_Byte* lim; + FT_UInt code; + FT_Long prev_code; - left = 0; - right = count; - while ( left < right ) - { - FT_UInt middle, code; + *flags |= PFR_BITMAP_VALID_CHARCODES; + prev_code = -1; + lim = base + count * char_len; + if ( lim > limit ) + { + FT_TRACE0(( "pfr_lookup_bitmap_data:" + " number of bitmap records too large,\n" + " " + " thus ignoring all bitmaps in this strike\n" )); + *flags &= ~PFR_BITMAP_VALID_CHARCODES; + } + else + { + /* check whether records are sorted by code */ + for ( p = base; p < lim; p += char_len ) + { + if ( two ) + code = FT_PEEK_USHORT( p ); + else + code = *p; - middle = ( left + right ) >> 1; - buff = base + middle * char_len; + if ( (FT_Long)code <= prev_code ) + { + FT_TRACE0(( "pfr_lookup_bitmap_data:" + " bitmap records are not sorted,\n" + " " + " thus ignoring all bitmaps in this strike\n" )); + *flags &= ~PFR_BITMAP_VALID_CHARCODES; + break; + } - /* check that we are not outside of the table -- */ - /* this is possible with broken fonts... */ - if ( buff + char_len > limit ) - goto Fail; + prev_code = code; + } + } + + *flags |= PFR_BITMAP_CHARCODES_VALIDATED; + } + + /* ignore bitmaps in case table is not valid */ + /* (this might be sanitized, but PFR is dead...) */ + if ( !( *flags & PFR_BITMAP_VALID_CHARCODES ) ) + goto Fail; + + min = 0; + max = count; + + /* binary search */ + while ( min < max ) + { + FT_UInt mid, code; + + + mid = ( min + max ) >> 1; + buff = base + mid * char_len; if ( two ) code = PFR_NEXT_USHORT( buff ); else code = PFR_NEXT_BYTE( buff ); - if ( code == char_code ) - goto Found_It; - - if ( code < char_code ) - left = middle; + if ( char_code < code ) + max = mid; + else if ( char_code > code ) + min = mid + 1; else - right = middle; + goto Found_It; } Fail: @@ -329,12 +379,12 @@ return; Found_It: - if ( flags & 2 ) + if ( *flags & PFR_BITMAP_2BYTE_SIZE ) *found_size = PFR_NEXT_USHORT( buff ); else *found_size = PFR_NEXT_BYTE( buff ); - if ( flags & 4 ) + if ( *flags & PFR_BITMAP_3BYTE_OFFSET ) *found_offset = PFR_NEXT_ULONG( buff ); else *found_offset = PFR_NEXT_USHORT( buff ); @@ -357,7 +407,6 @@ { FT_Error error = FT_Err_Ok; FT_Byte flags; - FT_Char c; FT_Byte b; FT_Byte* p = *pdata; FT_Long xpos, ypos, advance; @@ -377,9 +426,9 @@ { case 0: PFR_CHECK( 1 ); - c = PFR_NEXT_INT8( p ); - xpos = c >> 4; - ypos = ( (FT_Char)( c << 4 ) ) >> 4; + b = PFR_NEXT_BYTE( p ); + xpos = (FT_Char)b >> 4; + ypos = ( (FT_Char)( b << 4 ) ) >> 4; break; case 1: @@ -445,7 +494,7 @@ case 1: PFR_CHECK( 1 ); - advance = PFR_NEXT_INT8( p ) << 8; + advance = PFR_NEXT_INT8( p ) * 256; break; case 2: @@ -571,9 +620,12 @@ char_len = 4; - if ( strike->flags & 1 ) char_len += 1; - if ( strike->flags & 2 ) char_len += 1; - if ( strike->flags & 4 ) char_len += 1; + if ( strike->flags & PFR_BITMAP_2BYTE_CHARCODE ) + char_len += 1; + if ( strike->flags & PFR_BITMAP_2BYTE_SIZE ) + char_len += 1; + if ( strike->flags & PFR_BITMAP_3BYTE_OFFSET ) + char_len += 1; /* access data directly in the frame to speed lookups */ if ( FT_STREAM_SEEK( phys->bct_offset + strike->bct_offset ) || @@ -583,7 +635,7 @@ pfr_lookup_bitmap_data( stream->cursor, stream->limit, strike->num_bitmaps, - strike->flags, + &strike->flags, character->char_code, &gps_offset, &gps_size ); @@ -630,6 +682,8 @@ &xpos, &ypos, &xsize, &ysize, &advance, &format ); + if ( error ) + goto Exit1; /* * Before allocating the target bitmap, we check whether the given @@ -675,7 +729,7 @@ { if ( FT_ERR_EQ( error, Invalid_Table ) ) FT_ERROR(( "pfr_slot_load_bitmap: invalid bitmap dimensions\n" )); - goto Exit; + goto Exit1; } /* @@ -710,8 +764,8 @@ /* XXX: needs casts to fit FT_Glyph_Metrics.{width|height} */ glyph->root.metrics.width = (FT_Pos)xsize << 6; glyph->root.metrics.height = (FT_Pos)ysize << 6; - glyph->root.metrics.horiBearingX = xpos << 6; - glyph->root.metrics.horiBearingY = ypos << 6; + glyph->root.metrics.horiBearingX = xpos * 64; + glyph->root.metrics.horiBearingY = ypos * 64; glyph->root.metrics.horiAdvance = FT_PIX_ROUND( ( advance >> 2 ) ); glyph->root.metrics.vertBearingX = - glyph->root.metrics.width >> 1; glyph->root.metrics.vertBearingY = 0; @@ -732,11 +786,13 @@ p, stream->limit, format, - FT_BOOL(face->header.color_flags & 2), + FT_BOOL( face->header.color_flags & + PFR_FLAG_INVERT_BITMAP ), &glyph->root.bitmap ); } } + Exit1: FT_FRAME_EXIT(); } diff --git a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrtypes.h b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrtypes.h index 592acbd7db5..bd6c2cd30c9 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pfr/pfrtypes.h +++ b/Build/source/libs/freetype2/freetype-src/src/pfr/pfrtypes.h @@ -69,12 +69,8 @@ FT_BEGIN_HEADER /* used in `color_flags' field of the PFR_Header */ - typedef enum PFR_HeaderFlags_ - { - PFR_FLAG_BLACK_PIXEL = 1, - PFR_FLAG_INVERT_BITMAP = 2 - - } PFR_HeaderFlags; +#define PFR_FLAG_BLACK_PIXEL 0x01U +#define PFR_FLAG_INVERT_BITMAP 0x02U /************************************************************************/ @@ -96,36 +92,27 @@ FT_BEGIN_HEADER } PFR_LogFontRec, *PFR_LogFont; - typedef enum PFR_LogFlags_ - { - PFR_LOG_EXTRA_ITEMS = 0x40, - PFR_LOG_2BYTE_BOLD = 0x20, - PFR_LOG_BOLD = 0x10, - PFR_LOG_2BYTE_STROKE = 8, - PFR_LOG_STROKE = 4, - PFR_LINE_JOIN_MASK = 3 +#define PFR_LINE_JOIN_MITER 0x00U +#define PFR_LINE_JOIN_ROUND 0x01U +#define PFR_LINE_JOIN_BEVEL 0x02U +#define PFR_LINE_JOIN_MASK ( PFR_LINE_JOIN_ROUND | PFR_LINE_JOIN_BEVEL ) - } PFR_LogFlags; - - - typedef enum PFR_LineJoinFlags_ - { - PFR_LINE_JOIN_MITER = 0, - PFR_LINE_JOIN_ROUND = 1, - PFR_LINE_JOIN_BEVEL = 2 - - } PFR_LineJoinFlags; +#define PFR_LOG_STROKE 0x04U +#define PFR_LOG_2BYTE_STROKE 0x08U +#define PFR_LOG_BOLD 0x10U +#define PFR_LOG_2BYTE_BOLD 0x20U +#define PFR_LOG_EXTRA_ITEMS 0x40U /************************************************************************/ - typedef enum PFR_BitmapFlags_ - { - PFR_BITMAP_3BYTE_OFFSET = 4, - PFR_BITMAP_2BYTE_SIZE = 2, - PFR_BITMAP_2BYTE_CHARCODE = 1 +#define PFR_BITMAP_2BYTE_CHARCODE 0x01U +#define PFR_BITMAP_2BYTE_SIZE 0x02U +#define PFR_BITMAP_3BYTE_OFFSET 0x04U - } PFR_BitmapFlags; + /*not part of the specification but used for implementation */ +#define PFR_BITMAP_CHARCODES_VALIDATED 0x40U +#define PFR_BITMAP_VALID_CHARCODES 0x80U typedef struct PFR_BitmapCharRec_ @@ -137,15 +124,11 @@ FT_BEGIN_HEADER } PFR_BitmapCharRec, *PFR_BitmapChar; - typedef enum PFR_StrikeFlags_ - { - PFR_STRIKE_2BYTE_COUNT = 0x10, - PFR_STRIKE_3BYTE_OFFSET = 0x08, - PFR_STRIKE_3BYTE_SIZE = 0x04, - PFR_STRIKE_2BYTE_YPPM = 0x02, - PFR_STRIKE_2BYTE_XPPM = 0x01 - - } PFR_StrikeFlags; +#define PFR_STRIKE_2BYTE_XPPM 0x01U +#define PFR_STRIKE_2BYTE_YPPM 0x02U +#define PFR_STRIKE_3BYTE_SIZE 0x04U +#define PFR_STRIKE_3BYTE_OFFSET 0x08U +#define PFR_STRIKE_2BYTE_COUNT 0x10U typedef struct PFR_StrikeRec_ @@ -266,38 +249,29 @@ FT_BEGIN_HEADER } PFR_PhyFontRec, *PFR_PhyFont; - typedef enum PFR_PhyFlags_ - { - PFR_PHY_EXTRA_ITEMS = 0x80, - PFR_PHY_3BYTE_GPS_OFFSET = 0x20, - PFR_PHY_2BYTE_GPS_SIZE = 0x10, - PFR_PHY_ASCII_CODE = 0x08, - PFR_PHY_PROPORTIONAL = 0x04, - PFR_PHY_2BYTE_CHARCODE = 0x02, - PFR_PHY_VERTICAL = 0x01 - - } PFR_PhyFlags; +#define PFR_PHY_VERTICAL 0x01U +#define PFR_PHY_2BYTE_CHARCODE 0x02U +#define PFR_PHY_PROPORTIONAL 0x04U +#define PFR_PHY_ASCII_CODE 0x08U +#define PFR_PHY_2BYTE_GPS_SIZE 0x10U +#define PFR_PHY_3BYTE_GPS_OFFSET 0x20U +#define PFR_PHY_EXTRA_ITEMS 0x80U - typedef enum PFR_KernFlags_ - { - PFR_KERN_2BYTE_CHAR = 0x01, - PFR_KERN_2BYTE_ADJ = 0x02 - - } PFR_KernFlags; +#define PFR_KERN_2BYTE_CHAR 0x01U +#define PFR_KERN_2BYTE_ADJ 0x02U /************************************************************************/ - typedef enum PFR_GlyphFlags_ - { - PFR_GLYPH_IS_COMPOUND = 0x80, - PFR_GLYPH_EXTRA_ITEMS = 0x08, - PFR_GLYPH_1BYTE_XYCOUNT = 0x04, - PFR_GLYPH_XCOUNT = 0x02, - PFR_GLYPH_YCOUNT = 0x01 +#define PFR_GLYPH_YCOUNT 0x01U +#define PFR_GLYPH_XCOUNT 0x02U +#define PFR_GLYPH_1BYTE_XYCOUNT 0x04U + +#define PFR_GLYPH_SINGLE_EXTRA_ITEMS 0x08U +#define PFR_GLYPH_COMPOUND_EXTRA_ITEMS 0x40U - } PFR_GlyphFlags; +#define PFR_GLYPH_IS_COMPOUND 0x80U /* controlled coordinate */ @@ -321,14 +295,10 @@ FT_BEGIN_HEADER } PFR_SubGlyphRec, *PFR_SubGlyph; - typedef enum PFR_SubgGlyphFlags_ - { - PFR_SUBGLYPH_3BYTE_OFFSET = 0x80, - PFR_SUBGLYPH_2BYTE_SIZE = 0x40, - PFR_SUBGLYPH_YSCALE = 0x20, - PFR_SUBGLYPH_XSCALE = 0x10 - - } PFR_SubGlyphFlags; +#define PFR_SUBGLYPH_XSCALE 0x10U +#define PFR_SUBGLYPH_YSCALE 0x20U +#define PFR_SUBGLYPH_2BYTE_SIZE 0x40U +#define PFR_SUBGLYPH_3BYTE_OFFSET 0x80U typedef struct PFR_GlyphRec_ diff --git a/Build/source/libs/freetype2/freetype-src/src/psaux/psobjs.c b/Build/source/libs/freetype2/freetype-src/src/psaux/psobjs.c index 70f8fdd5c33..f208b5fc632 100644 --- a/Build/source/libs/freetype2/freetype-src/src/psaux/psobjs.c +++ b/Build/source/libs/freetype2/freetype-src/src/psaux/psobjs.c @@ -1087,9 +1087,9 @@ for ( ; count > 0; count--, idx++ ) { - FT_Byte* q = (FT_Byte*)objects[idx] + field->offset; + FT_Byte* q = (FT_Byte*)objects[idx] + field->offset; FT_Long val; - FT_String* string; + FT_String* string = NULL; skip_spaces( &cur, limit ); @@ -1217,7 +1217,7 @@ case T1_FIELD_TYPE_MM_BBOX: { FT_Memory memory = parser->memory; - FT_Fixed* temp; + FT_Fixed* temp = NULL; FT_Int result; FT_UInt i; diff --git a/Build/source/libs/freetype2/freetype-src/src/pshinter/pshalgo.c b/Build/source/libs/freetype2/freetype-src/src/pshinter/pshalgo.c index 86181cd547b..8f131be759f 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pshinter/pshalgo.c +++ b/Build/source/libs/freetype2/freetype-src/src/pshinter/pshalgo.c @@ -779,7 +779,7 @@ * It turns out though that minimizing the total number of lit * pixels is also important, so position C), with one edge * aligned with a pixel boundary is actually preferable - * to A). There are also more possibile positions for C) than + * to A). There are also more possible positions for C) than * for A) or B), so it involves less distortion of the overall * character shape. */ @@ -802,7 +802,7 @@ } /* We choose between B) and C) above based on the amount - * of fractinal stem width; for small amounts, choose + * of fractional stem width; for small amounts, choose * C) always, for large amounts, B) always, and inbetween, * pick whichever one involves less stem movement. */ diff --git a/Build/source/libs/freetype2/freetype-src/src/pshinter/pshglob.c b/Build/source/libs/freetype2/freetype-src/src/pshinter/pshglob.c index be71fc5ceb8..2ac5ef15584 100644 --- a/Build/source/libs/freetype2/freetype-src/src/pshinter/pshglob.c +++ b/Build/source/libs/freetype2/freetype-src/src/pshinter/pshglob.c @@ -80,7 +80,7 @@ #if 0 - /* org_width is is font units, result in device pixels, 26.6 format */ + /* org_width is in font units, result in device pixels, 26.6 format */ FT_LOCAL_DEF( FT_Pos ) psh_dimension_snap_width( PSH_Dimension dimension, FT_Int org_width ) diff --git a/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c b/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c index d6c5ded38f3..0fa2f2687f6 100644 --- a/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c +++ b/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c @@ -179,8 +179,6 @@ #define FT_ERR_XCAT( x, y ) x ## y #define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) -#define FT_MAX( a, b ) ( (a) > (b) ? (a) : (b) ) - /* This macro is used to indicate that a function parameter is unused. */ /* Its purpose is simply to reduce compiler warnings. Note also that */ /* simply defining it as `(void)x' doesn't avoid warnings with certain */ @@ -459,6 +457,12 @@ #define IS_TOP_OVERSHOOT( x ) \ (Bool)( x - FLOOR( x ) >= ras.precision_half ) +#if FT_RENDER_POOL_SIZE > 2048 +#define FT_MAX_BLACK_POOL ( FT_RENDER_POOL_SIZE / sizeof ( Long ) ) +#else +#define FT_MAX_BLACK_POOL ( 2048 / sizeof ( Long ) ) +#endif + /* The most used variables are positioned at the top of the structure. */ /* Thus, their offset can be coded with less opcodes, resulting in a */ /* smaller executable. */ @@ -3106,9 +3110,9 @@ static void - ft_black_reset( black_PRaster raster, - char* pool_base, - Long pool_size ) + ft_black_reset( FT_Raster raster, + PByte pool_base, + ULong pool_size ) { FT_UNUSED( raster ); FT_UNUSED( pool_base ); @@ -3117,20 +3121,20 @@ static int - ft_black_set_mode( black_PRaster raster, - ULong mode, - const char* palette ) + ft_black_set_mode( FT_Raster raster, + ULong mode, + void* args ) { FT_UNUSED( raster ); FT_UNUSED( mode ); - FT_UNUSED( palette ); + FT_UNUSED( args ); return 0; } static int - ft_black_render( black_PRaster raster, + ft_black_render( FT_Raster raster, const FT_Raster_Params* params ) { const FT_Outline* outline = (const FT_Outline*)params->source; @@ -3138,7 +3142,7 @@ black_TWorker worker[1]; - Long buffer[FT_MAX( FT_RENDER_POOL_SIZE, 2048 ) / sizeof ( Long )]; + Long buffer[FT_MAX_BLACK_POOL]; if ( !raster ) @@ -3175,6 +3179,20 @@ if ( !target_map->buffer ) return FT_THROW( Invalid ); + /* reject too large outline coordinates */ + { + FT_Vector* vec = outline->points; + FT_Vector* limit = vec + outline->n_points; + + + for ( ; vec < limit; vec++ ) + { + if ( vec->x < -0x1000000L || vec->x > 0x1000000L || + vec->y < -0x1000000L || vec->y > 0x1000000L ) + return FT_THROW( Invalid ); + } + } + ras.outline = *outline; ras.target = *target_map; diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c index 2cf2ee2a6f3..2e8c1ecde6f 100644 --- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c +++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c @@ -949,6 +949,10 @@ instance_size * num_instances > fvar_len ) num_instances = 0; + /* we don't support Multiple Master CFFs yet */ + if ( !face->goto_table( face, TTAG_CFF, stream, 0 ) ) + num_instances = 0; + /* we support at most 2^15 - 1 instances */ if ( num_instances >= ( 1U << 15 ) - 1 ) { diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c index 92ec52396ca..01255a887ee 100644 --- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c +++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c @@ -1245,7 +1245,7 @@ mid = max + 1; /* search in segments before the current segment */ - for ( i = max ; i > 0; i-- ) + for ( i = max; i > 0; i-- ) { FT_UInt prev_end; FT_Byte* old_p; @@ -3104,7 +3104,7 @@ if ( char_code < start ) max = mid; - else if ( char_code > start+cnt ) + else if ( char_code > start + cnt ) min = mid + 1; else return TRUE; diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c index f228f628e60..3277f1ec4fe 100644 --- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c +++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c @@ -2,7 +2,7 @@ /* */ /* ttpost.c */ /* */ -/* Postcript name table processing for TrueType and OpenType fonts */ +/* PostScript name table processing for TrueType and OpenType fonts */ /* (body). */ /* */ /* Copyright 1996-2016 by */ diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h index 93762b045b7..ede45fd84c9 100644 --- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h +++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h @@ -2,7 +2,7 @@ /* */ /* ttpost.h */ /* */ -/* Postcript name table processing for TrueType and OpenType fonts */ +/* PostScript name table processing for TrueType and OpenType fonts */ /* (specification). */ /* */ /* Copyright 1996-2016 by */ diff --git a/Build/source/libs/freetype2/freetype-src/src/smooth/ftgrays.c b/Build/source/libs/freetype2/freetype-src/src/smooth/ftgrays.c index dac332dec12..f0e380e4085 100644 --- a/Build/source/libs/freetype2/freetype-src/src/smooth/ftgrays.c +++ b/Build/source/libs/freetype2/freetype-src/src/smooth/ftgrays.c @@ -106,6 +106,7 @@ #define FT_BEGIN_STMNT do { #define FT_END_STMNT } while ( 0 ) +#define FT_MIN( a, b ) ( (a) < (b) ? (a) : (b) ) #define FT_MAX( a, b ) ( (a) > (b) ? (a) : (b) ) #define FT_ABS( a ) ( (a) < 0 ? -(a) : (a) ) @@ -302,7 +303,7 @@ typedef ptrdiff_t FT_PtrDist; #else /* FT_STATIC_RASTER */ -#define RAS_ARG /* empty */ +#define RAS_ARG void #define RAS_ARG_ /* empty */ #define RAS_VAR /* empty */ #define RAS_VAR_ /* empty */ @@ -318,19 +319,19 @@ typedef ptrdiff_t FT_PtrDist; #undef TRUNC #undef SCALED -#define ONE_PIXEL ( 1L << PIXEL_BITS ) +#define ONE_PIXEL ( 1 << PIXEL_BITS ) #define TRUNC( x ) ( (TCoord)( (x) >> PIXEL_BITS ) ) -#define SUBPIXELS( x ) ( (TPos)(x) << PIXEL_BITS ) +#define SUBPIXELS( x ) ( (TPos)(x) * ONE_PIXEL ) #define FLOOR( x ) ( (x) & -ONE_PIXEL ) #define CEILING( x ) ( ( (x) + ONE_PIXEL - 1 ) & -ONE_PIXEL ) #define ROUND( x ) ( ( (x) + ONE_PIXEL / 2 ) & -ONE_PIXEL ) #if PIXEL_BITS >= 6 -#define UPSCALE( x ) ( (x) << ( PIXEL_BITS - 6 ) ) +#define UPSCALE( x ) ( (x) * ( ONE_PIXEL >> 6 ) ) #define DOWNSCALE( x ) ( (x) >> ( PIXEL_BITS - 6 ) ) #else #define UPSCALE( x ) ( (x) >> ( 6 - PIXEL_BITS ) ) -#define DOWNSCALE( x ) ( (x) << ( 6 - PIXEL_BITS ) ) +#define DOWNSCALE( x ) ( (x) * ( 64 >> PIXEL_BITS ) ) #endif @@ -369,7 +370,7 @@ typedef ptrdiff_t FT_PtrDist; /* These macros speed up repetitive divisions by replacing them */ - /* with multiplications and right shifts. */ + /* with multiplications and right shifts. */ #define FT_UDIVPREP( b ) \ long b ## _r = (long)( FT_ULONG_MAX >> PIXEL_BITS ) / ( b ) #define FT_UDIV( a, b ) \ @@ -386,38 +387,16 @@ typedef ptrdiff_t FT_PtrDist; /* need to define them to "float" or "double" when experimenting with */ /* new algorithms */ - typedef long TCoord; /* integer scanline/pixel coordinate */ typedef long TPos; /* sub-pixel coordinate */ - - /* determine the type used to store cell areas. This normally takes at */ - /* least PIXEL_BITS*2 + 1 bits. On 16-bit systems, we need to use */ - /* `long' instead of `int', otherwise bad things happen */ - -#if PIXEL_BITS <= 7 - - typedef int TArea; - -#else /* PIXEL_BITS >= 8 */ - - /* approximately determine the size of integers using an ANSI-C header */ -#if FT_UINT_MAX == 0xFFFFU - typedef long TArea; -#else - typedef int TArea; -#endif - -#endif /* PIXEL_BITS >= 8 */ - - - /* maximum number of gray spans in a call to the span callback */ -#define FT_MAX_GRAY_SPANS 32 + typedef int TCoord; /* integer scanline/pixel coordinate */ + typedef int TArea; /* cell areas, coordinate products */ typedef struct TCell_* PCell; typedef struct TCell_ { - TPos x; /* same with gray_TWorker.ex */ + TCoord x; /* same with gray_TWorker.ex */ TCoord cover; /* same with gray_TWorker.cover */ TArea area; PCell next; @@ -425,6 +404,17 @@ typedef ptrdiff_t FT_PtrDist; } TCell; + /* maximum number of gray spans in a call to the span callback */ +#define FT_MAX_GRAY_SPANS 32 + + /* maximum number of gray cells in the buffer */ +#if FT_RENDER_POOL_SIZE > 2048 +#define FT_MAX_GRAY_POOL ( FT_RENDER_POOL_SIZE / sizeof ( TCell ) ) +#else +#define FT_MAX_GRAY_POOL ( 2048 / sizeof ( TCell ) ) +#endif + + #if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ /* We disable the warning `structure was padded due to */ /* __declspec(align())' in order to compile cleanly with */ @@ -438,9 +428,9 @@ typedef ptrdiff_t FT_PtrDist; ft_jmp_buf jump_buffer; TCoord ex, ey; - TPos min_ex, max_ex; - TPos min_ey, max_ey; - TPos count_ex, count_ey; + TCoord min_ex, max_ex; + TCoord min_ey, max_ey; + TCoord count_ex, count_ey; TArea area; TCoord cover; @@ -452,12 +442,8 @@ typedef ptrdiff_t FT_PtrDist; TPos x, y; - FT_Vector bez_stack[32 * 3 + 1]; - int lev_stack[32]; - FT_Outline outline; FT_Bitmap target; - FT_BBox clip_box; FT_Span gray_spans[FT_MAX_GRAY_SPANS]; int num_gray_spans; @@ -466,14 +452,7 @@ typedef ptrdiff_t FT_PtrDist; void* render_span_data; int span_y; - int band_size; - int band_shoot; - - void* buffer; - long buffer_size; - PCell* ycells; - TPos ycount; } gray_TWorker, *gray_PWorker; @@ -496,71 +475,32 @@ typedef ptrdiff_t FT_PtrDist; } gray_TRaster, *gray_PRaster; +#ifdef FT_DEBUG_LEVEL_TRACE - /*************************************************************************/ - /* */ - /* Initialize the cells table. */ - /* */ - static void - gray_init_cells( RAS_ARG_ void* buffer, - long byte_size ) - { - ras.buffer = buffer; - ras.buffer_size = byte_size; - - ras.ycells = (PCell*) buffer; - ras.cells = NULL; - ras.max_cells = 0; - ras.num_cells = 0; - ras.area = 0; - ras.cover = 0; - ras.invalid = 1; - } - - - /*************************************************************************/ - /* */ - /* Compute the outline bounding box. */ - /* */ + /* to be called while in the debugger -- */ + /* this function causes a compiler warning since it is unused otherwise */ static void - gray_compute_cbox( RAS_ARG ) + gray_dump_cells( RAS_ARG ) { - FT_Outline* outline = &ras.outline; - FT_Vector* vec = outline->points; - FT_Vector* limit = vec + outline->n_points; + int yindex; - if ( outline->n_points <= 0 ) + for ( yindex = 0; yindex < ras.count_ey; yindex++ ) { - ras.min_ex = ras.max_ex = 0; - ras.min_ey = ras.max_ey = 0; - return; - } - - ras.min_ex = ras.max_ex = vec->x; - ras.min_ey = ras.max_ey = vec->y; - - vec++; + PCell cell; - for ( ; vec < limit; vec++ ) - { - TPos x = vec->x; - TPos y = vec->y; + printf( "%3d:", yindex ); - if ( x < ras.min_ex ) ras.min_ex = x; - if ( x > ras.max_ex ) ras.max_ex = x; - if ( y < ras.min_ey ) ras.min_ey = y; - if ( y > ras.max_ey ) ras.max_ey = y; + for ( cell = ras.ycells[yindex]; cell != NULL; cell = cell->next ) + printf( " (%3d, c:%4d, a:%6d)", + cell->x, cell->cover, cell->area ); + printf( "\n" ); } - - /* truncate the bounding box to integer pixels */ - ras.min_ex = ras.min_ex >> 6; - ras.min_ey = ras.min_ey >> 6; - ras.max_ex = ( ras.max_ex + 63 ) >> 6; - ras.max_ey = ( ras.max_ey + 63 ) >> 6; } +#endif /* FT_DEBUG_LEVEL_TRACE */ + /*************************************************************************/ /* */ @@ -570,7 +510,7 @@ typedef ptrdiff_t FT_PtrDist; gray_find_cell( RAS_ARG ) { PCell *pcell, cell; - TPos x = ras.ex; + TCoord x = ras.ex; if ( x > ras.count_ex ) @@ -675,10 +615,10 @@ typedef ptrdiff_t FT_PtrDist; TCoord ey ) { if ( ex > ras.max_ex ) - ex = (TCoord)( ras.max_ex ); + ex = ras.max_ex; if ( ex < ras.min_ex ) - ex = (TCoord)( ras.min_ex - 1 ); + ex = ras.min_ex - 1; ras.area = 0; ras.cover = 0; @@ -689,7 +629,7 @@ typedef ptrdiff_t FT_PtrDist; gray_set_cell( RAS_VAR_ ex, ey ); } -#if 0 +#ifndef FT_LONG64 /*************************************************************************/ /* */ @@ -702,17 +642,13 @@ typedef ptrdiff_t FT_PtrDist; TPos x2, TCoord y2 ) { - TCoord ex1, ex2, fx1, fx2, delta, mod; - long p, first, dx; + TCoord ex1, ex2, fx1, fx2, first, delta, mod; + TPos p, dx; int incr; - dx = x2 - x1; - ex1 = TRUNC( x1 ); ex2 = TRUNC( x2 ); - fx1 = (TCoord)( x1 - SUBPIXELS( ex1 ) ); - fx2 = (TCoord)( x2 - SUBPIXELS( ex2 ) ); /* trivial case. Happens often */ if ( y1 == y2 ) @@ -721,6 +657,9 @@ typedef ptrdiff_t FT_PtrDist; return; } + fx1 = (TCoord)( x1 - SUBPIXELS( ex1 ) ); + fx2 = (TCoord)( x2 - SUBPIXELS( ex2 ) ); + /* everything is located in a single cell. That is easy! */ /* */ if ( ex1 == ex2 ) @@ -737,6 +676,7 @@ typedef ptrdiff_t FT_PtrDist; p = ( ONE_PIXEL - fx1 ) * ( y2 - y1 ); first = ONE_PIXEL; incr = 1; + dx = x2 - x1; if ( dx < 0 ) { @@ -797,25 +737,22 @@ typedef ptrdiff_t FT_PtrDist; gray_render_line( RAS_ARG_ TPos to_x, TPos to_y ) { - TCoord ey1, ey2, fy1, fy2, mod; - TPos dx, dy, x, x2; - long p, first; - int delta, rem, lift, incr; + TCoord ey1, ey2, fy1, fy2, first, delta, mod; + TPos p, dx, dy, x, x2; + int incr; ey1 = TRUNC( ras.y ); ey2 = TRUNC( to_y ); /* if (ey2 >= ras.max_ey) ey2 = ras.max_ey-1; */ - fy1 = (TCoord)( ras.y - SUBPIXELS( ey1 ) ); - fy2 = (TCoord)( to_y - SUBPIXELS( ey2 ) ); - - dx = to_x - ras.x; - dy = to_y - ras.y; /* perform vertical clipping */ if ( ( ey1 >= ras.max_ey && ey2 >= ras.max_ey ) || ( ey1 < ras.min_ey && ey2 < ras.min_ey ) ) goto End; + fy1 = (TCoord)( ras.y - SUBPIXELS( ey1 ) ); + fy2 = (TCoord)( to_y - SUBPIXELS( ey2 ) ); + /* everything is on a single scanline */ if ( ey1 == ey2 ) { @@ -823,6 +760,9 @@ typedef ptrdiff_t FT_PtrDist; goto End; } + dx = to_x - ras.x; + dy = to_y - ras.y; + /* vertical line - avoid calling gray_render_scanline */ incr = 1; @@ -840,14 +780,14 @@ typedef ptrdiff_t FT_PtrDist; incr = -1; } - delta = (int)( first - fy1 ); + delta = first - fy1; ras.area += (TArea)two_fx * delta; ras.cover += delta; ey1 += incr; gray_set_cell( RAS_VAR_ ex, ey1 ); - delta = (int)( first + first - ONE_PIXEL ); + delta = first + first - ONE_PIXEL; area = (TArea)two_fx * delta; while ( ey1 != ey2 ) { @@ -858,7 +798,7 @@ typedef ptrdiff_t FT_PtrDist; gray_set_cell( RAS_VAR_ ex, ey1 ); } - delta = (int)( fy2 - ONE_PIXEL + first ); + delta = fy2 - ONE_PIXEL + first; ras.area += (TArea)two_fx * delta; ras.cover += delta; @@ -878,19 +818,22 @@ typedef ptrdiff_t FT_PtrDist; dy = -dy; } - FT_DIV_MOD( int, p, dy, delta, mod ); + FT_DIV_MOD( TCoord, p, dy, delta, mod ); x = ras.x + delta; - gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, (TCoord)first ); + gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, first ); ey1 += incr; gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 ); if ( ey1 != ey2 ) { - p = ONE_PIXEL * dx; - FT_DIV_MOD( int, p, dy, lift, rem ); - mod -= (int)dy; + TCoord lift, rem; + + + p = ONE_PIXEL * dx; + FT_DIV_MOD( TCoord, p, dy, lift, rem ); + mod -= (TCoord)dy; do { @@ -898,14 +841,14 @@ typedef ptrdiff_t FT_PtrDist; mod += rem; if ( mod >= 0 ) { - mod -= (int)dy; + mod -= (TCoord)dy; delta++; } x2 = x + delta; - gray_render_scanline( RAS_VAR_ ey1, x, - (TCoord)( ONE_PIXEL - first ), x2, - (TCoord)first ); + gray_render_scanline( RAS_VAR_ ey1, + x, ONE_PIXEL - first, + x2, first ); x = x2; ey1 += incr; @@ -913,9 +856,9 @@ typedef ptrdiff_t FT_PtrDist; } while ( ey1 != ey2 ); } - gray_render_scanline( RAS_VAR_ ey1, x, - (TCoord)( ONE_PIXEL - first ), to_x, - fy2 ); + gray_render_scanline( RAS_VAR_ ey1, + x, ONE_PIXEL - first, + to_x, fy2 ); End: ras.x = to_x; @@ -936,8 +879,6 @@ typedef ptrdiff_t FT_PtrDist; TCoord ex1, ex2, ey1, ey2; - ex1 = TRUNC( ras.x ); - ex2 = TRUNC( to_x ); ey1 = TRUNC( ras.y ); ey2 = TRUNC( to_y ); @@ -946,12 +887,15 @@ typedef ptrdiff_t FT_PtrDist; ( ey1 < ras.min_ey && ey2 < ras.min_ey ) ) goto End; - dx = to_x - ras.x; - dy = to_y - ras.y; + ex1 = TRUNC( ras.x ); + ex2 = TRUNC( to_x ); fx1 = ras.x - SUBPIXELS( ex1 ); fy1 = ras.y - SUBPIXELS( ey1 ); + dx = to_x - ras.x; + dy = to_y - ras.y; + if ( ex1 == ex2 && ey1 == ey2 ) /* inside one cell */ ; else if ( dy == 0 ) /* ex1 != ex2 */ /* any horizontal line */ @@ -984,7 +928,7 @@ typedef ptrdiff_t FT_PtrDist; } else /* any other line */ { - TArea prod = dx * fy1 - dy * fx1; + TPos prod = dx * fy1 - dy * fx1; FT_UDIVPREP( dx ); FT_UDIVPREP( dy ); @@ -1084,73 +1028,64 @@ typedef ptrdiff_t FT_PtrDist; gray_render_conic( RAS_ARG_ const FT_Vector* control, const FT_Vector* to ) { + FT_Vector bez_stack[16 * 2 + 1]; /* enough to accommodate bisections */ + FT_Vector* arc = bez_stack; TPos dx, dy; - TPos min, max, y; - int top, level; - int* levels; - FT_Vector* arc; - + int draw, split; - levels = ras.lev_stack; - arc = ras.bez_stack; arc[0].x = UPSCALE( to->x ); arc[0].y = UPSCALE( to->y ); arc[1].x = UPSCALE( control->x ); arc[1].y = UPSCALE( control->y ); arc[2].x = ras.x; arc[2].y = ras.y; - top = 0; + + /* short-cut the arc that crosses the current band */ + if ( ( TRUNC( arc[0].y ) >= ras.max_ey && + TRUNC( arc[1].y ) >= ras.max_ey && + TRUNC( arc[2].y ) >= ras.max_ey ) || + ( TRUNC( arc[0].y ) < ras.min_ey && + TRUNC( arc[1].y ) < ras.min_ey && + TRUNC( arc[2].y ) < ras.min_ey ) ) + { + ras.x = arc[0].x; + ras.y = arc[0].y; + return; + } dx = FT_ABS( arc[2].x + arc[0].x - 2 * arc[1].x ); dy = FT_ABS( arc[2].y + arc[0].y - 2 * arc[1].y ); if ( dx < dy ) dx = dy; - if ( dx < ONE_PIXEL / 4 ) - goto Draw; - - /* short-cut the arc that crosses the current band */ - min = max = arc[0].y; - - y = arc[1].y; - if ( y < min ) min = y; - if ( y > max ) max = y; - - y = arc[2].y; - if ( y < min ) min = y; - if ( y > max ) max = y; - - if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < ras.min_ey ) - goto Draw; - - level = 0; - do + /* We can calculate the number of necessary bisections because */ + /* each bisection predictably reduces deviation exactly 4-fold. */ + /* Even 32-bit deviation would vanish after 16 bisections. */ + draw = 1; + while ( dx > ONE_PIXEL / 4 ) { - dx >>= 2; - level++; - } while ( dx > ONE_PIXEL / 4 ); - - levels[0] = level; + dx >>= 2; + draw <<= 1; + } + /* We use decrement counter to count the total number of segments */ + /* to draw starting from 2^level. Before each draw we split as */ + /* many times as there are trailing zeros in the counter. */ do { - level = levels[top]; - if ( level > 0 ) + split = 1; + while ( ( draw & split ) == 0 ) { gray_split_conic( arc ); arc += 2; - top++; - levels[top] = levels[top - 1] = level - 1; - continue; + split <<= 1; } - Draw: gray_render_line( RAS_VAR_ arc[0].x, arc[0].y ); - top--; arc -= 2; - } while ( top >= 0 ); + } while ( --draw ); } @@ -1187,11 +1122,13 @@ typedef ptrdiff_t FT_PtrDist; const FT_Vector* control2, const FT_Vector* to ) { - FT_Vector* arc; - TPos min, max, y; + FT_Vector bez_stack[16 * 3 + 1]; /* enough to accommodate bisections */ + FT_Vector* arc = bez_stack; + TPos dx, dy, dx_, dy_; + TPos dx1, dy1, dx2, dy2; + TPos L, s, s_limit; - arc = ras.bez_stack; arc[0].x = UPSCALE( to->x ); arc[0].y = UPSCALE( to->y ); arc[1].x = UPSCALE( control2->x ); @@ -1201,29 +1138,20 @@ typedef ptrdiff_t FT_PtrDist; arc[3].x = ras.x; arc[3].y = ras.y; - /* Short-cut the arc that crosses the current band. */ - min = max = arc[0].y; - - y = arc[1].y; - if ( y < min ) - min = y; - if ( y > max ) - max = y; - - y = arc[2].y; - if ( y < min ) - min = y; - if ( y > max ) - max = y; - - y = arc[3].y; - if ( y < min ) - min = y; - if ( y > max ) - max = y; - - if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < ras.min_ey ) - goto Draw; + /* short-cut the arc that crosses the current band */ + if ( ( TRUNC( arc[0].y ) >= ras.max_ey && + TRUNC( arc[1].y ) >= ras.max_ey && + TRUNC( arc[2].y ) >= ras.max_ey && + TRUNC( arc[3].y ) >= ras.max_ey ) || + ( TRUNC( arc[0].y ) < ras.min_ey && + TRUNC( arc[1].y ) < ras.min_ey && + TRUNC( arc[2].y ) < ras.min_ey && + TRUNC( arc[3].y ) < ras.min_ey ) ) + { + ras.x = arc[0].x; + ras.y = arc[0].y; + return; + } for (;;) { @@ -1232,64 +1160,53 @@ typedef ptrdiff_t FT_PtrDist; /* F. Hain, at */ /* http://www.cis.southalabama.edu/~hain/general/Publications/Bezier/Camera-ready%20CISST02%202.pdf */ - { - TPos dx, dy, dx_, dy_; - TPos dx1, dy1, dx2, dy2; - TPos L, s, s_limit; + /* dx and dy are x and y components of the P0-P3 chord vector. */ + dx = dx_ = arc[3].x - arc[0].x; + dy = dy_ = arc[3].y - arc[0].y; + L = FT_HYPOT( dx_, dy_ ); - /* dx and dy are x and y components of the P0-P3 chord vector. */ - dx = dx_ = arc[3].x - arc[0].x; - dy = dy_ = arc[3].y - arc[0].y; + /* Avoid possible arithmetic overflow below by splitting. */ + if ( L > 32767 ) + goto Split; - L = FT_HYPOT( dx_, dy_ ); + /* Max deviation may be as much as (s/L) * 3/4 (if Hain's v = 1). */ + s_limit = L * (TPos)( ONE_PIXEL / 6 ); - /* Avoid possible arithmetic overflow below by splitting. */ - if ( L > 32767 ) - goto Split; + /* s is L * the perpendicular distance from P1 to the line P0-P3. */ + dx1 = arc[1].x - arc[0].x; + dy1 = arc[1].y - arc[0].y; + s = FT_ABS( dy * dx1 - dx * dy1 ); - /* Max deviation may be as much as (s/L) * 3/4 (if Hain's v = 1). */ - s_limit = L * (TPos)( ONE_PIXEL / 6 ); + if ( s > s_limit ) + goto Split; - /* s is L * the perpendicular distance from P1 to the line P0-P3. */ - dx1 = arc[1].x - arc[0].x; - dy1 = arc[1].y - arc[0].y; - s = FT_ABS( dy * dx1 - dx * dy1 ); + /* s is L * the perpendicular distance from P2 to the line P0-P3. */ + dx2 = arc[2].x - arc[0].x; + dy2 = arc[2].y - arc[0].y; + s = FT_ABS( dy * dx2 - dx * dy2 ); - if ( s > s_limit ) - goto Split; + if ( s > s_limit ) + goto Split; - /* s is L * the perpendicular distance from P2 to the line P0-P3. */ - dx2 = arc[2].x - arc[0].x; - dy2 = arc[2].y - arc[0].y; - s = FT_ABS( dy * dx2 - dx * dy2 ); + /* Split super curvy segments where the off points are so far + from the chord that the angles P0-P1-P3 or P0-P2-P3 become + acute as detected by appropriate dot products. */ + if ( dx1 * ( dx1 - dx ) + dy1 * ( dy1 - dy ) > 0 || + dx2 * ( dx2 - dx ) + dy2 * ( dy2 - dy ) > 0 ) + goto Split; - if ( s > s_limit ) - goto Split; + gray_render_line( RAS_VAR_ arc[0].x, arc[0].y ); - /* Split super curvy segments where the off points are so far - from the chord that the angles P0-P1-P3 or P0-P2-P3 become - acute as detected by appropriate dot products. */ - if ( dx1 * ( dx1 - dx ) + dy1 * ( dy1 - dy ) > 0 || - dx2 * ( dx2 - dx ) + dy2 * ( dy2 - dy ) > 0 ) - goto Split; + if ( arc == bez_stack ) + return; - /* No reason to split. */ - goto Draw; - } + arc -= 3; + continue; Split: gray_split_cubic( arc ); arc += 3; - continue; - - Draw: - gray_render_line( RAS_VAR_ arc[0].x, arc[0].y ); - - if ( arc == ras.bez_stack ) - return; - - arc -= 3; } } @@ -1311,8 +1228,8 @@ typedef ptrdiff_t FT_PtrDist; gray_start_cell( RAS_VAR_ TRUNC( x ), TRUNC( y ) ); - worker->x = x; - worker->y = y; + ras.x = x; + ras.y = y; return 0; } @@ -1369,29 +1286,25 @@ typedef ptrdiff_t FT_PtrDist; if ( coverage ) { + unsigned char* q = p + spans->x; + + /* For small-spans it is faster to do it by ourselves than * calling `memset'. This is mainly due to the cost of the * function call. */ - if ( spans->len >= 8 ) - FT_MEM_SET( p + spans->x, (unsigned char)coverage, spans->len ); - else + switch ( spans->len ) { - unsigned char* q = p + spans->x; - - - switch ( spans->len ) - { - case 7: *q++ = (unsigned char)coverage; - case 6: *q++ = (unsigned char)coverage; - case 5: *q++ = (unsigned char)coverage; - case 4: *q++ = (unsigned char)coverage; - case 3: *q++ = (unsigned char)coverage; - case 2: *q++ = (unsigned char)coverage; - case 1: *q = (unsigned char)coverage; - default: - ; - } + case 7: *q++ = coverage; + case 6: *q++ = coverage; + case 5: *q++ = coverage; + case 4: *q++ = coverage; + case 3: *q++ = coverage; + case 2: *q++ = coverage; + case 1: *q = coverage; + case 0: break; + default: + FT_MEM_SET( q, coverage, spans->len ); } } } @@ -1401,7 +1314,7 @@ typedef ptrdiff_t FT_PtrDist; static void gray_hline( RAS_ARG_ TCoord x, TCoord y, - TPos area, + TArea area, TCoord acount ) { int coverage; @@ -1433,16 +1346,8 @@ typedef ptrdiff_t FT_PtrDist; coverage = 255; } - y += (TCoord)ras.min_ey; - x += (TCoord)ras.min_ex; - - /* FT_Span.x is a 16-bit short, so limit our coordinates appropriately */ - if ( x >= 32767 ) - x = 32767; - - /* FT_Span.y is an integer, so limit our coordinates appropriately */ - if ( y >= FT_INT_MAX ) - y = FT_INT_MAX; + y += ras.min_ey; + x += ras.min_ex; if ( coverage ) { @@ -1453,10 +1358,10 @@ typedef ptrdiff_t FT_PtrDist; /* see whether we can add this span to the current list */ count = ras.num_gray_spans; span = ras.gray_spans + count - 1; - if ( count > 0 && - ras.span_y == y && - (int)span->x + span->len == (int)x && - span->coverage == coverage ) + if ( span->coverage == coverage && + span->x + span->len == x && + ras.span_y == y && + count > 0 ) { span->len = (unsigned short)( span->len + acount ); return; @@ -1503,48 +1408,21 @@ typedef ptrdiff_t FT_PtrDist; } -#ifdef FT_DEBUG_LEVEL_TRACE - - /* to be called while in the debugger -- */ - /* this function causes a compiler warning since it is unused otherwise */ - static void - gray_dump_cells( RAS_ARG ) - { - int yindex; - - - for ( yindex = 0; yindex < ras.ycount; yindex++ ) - { - PCell cell; - - - printf( "%3d:", yindex ); - - for ( cell = ras.ycells[yindex]; cell != NULL; cell = cell->next ) - printf( " (%3ld, c:%4ld, a:%6d)", cell->x, cell->cover, cell->area ); - printf( "\n" ); - } - } - -#endif /* FT_DEBUG_LEVEL_TRACE */ - - static void - gray_sweep( RAS_ARG_ const FT_Bitmap* target ) + gray_sweep( RAS_ARG ) { int yindex; - FT_UNUSED( target ); - if ( ras.num_cells == 0 ) return; ras.num_gray_spans = 0; + ras.span_y = 0; FT_TRACE7(( "gray_sweep: start\n" )); - for ( yindex = 0; yindex < ras.ycount; yindex++ ) + for ( yindex = 0; yindex < ras.count_ey; yindex++ ) { PCell cell = ras.ycells[yindex]; TCoord cover = 0; @@ -1553,15 +1431,15 @@ typedef ptrdiff_t FT_PtrDist; for ( ; cell != NULL; cell = cell->next ) { - TPos area; + TArea area; if ( cell->x > x && cover != 0 ) - gray_hline( RAS_VAR_ x, yindex, cover * ( ONE_PIXEL * 2 ), + gray_hline( RAS_VAR_ x, yindex, (TArea)cover * ( ONE_PIXEL * 2 ), cell->x - x ); cover += cell->cover; - area = cover * ( ONE_PIXEL * 2 ) - cell->area; + area = (TArea)cover * ( ONE_PIXEL * 2 ) - cell->area; if ( area != 0 && cell->x >= 0 ) gray_hline( RAS_VAR_ cell->x, yindex, area, 1 ); @@ -1570,7 +1448,7 @@ typedef ptrdiff_t FT_PtrDist; } if ( cover != 0 ) - gray_hline( RAS_VAR_ x, yindex, cover * ( ONE_PIXEL * 2 ), + gray_hline( RAS_VAR_ x, yindex, (TArea)cover * ( ONE_PIXEL * 2 ), ras.count_ex - x ); } @@ -1605,7 +1483,7 @@ typedef ptrdiff_t FT_PtrDist; /*************************************************************************/ /* */ - /* The following function should only compile in stand-alone mode, */ + /* The following functions should only compile in stand-alone mode, */ /* i.e., when building this component without the rest of FreeType. */ /* */ /*************************************************************************/ @@ -1883,12 +1761,87 @@ typedef ptrdiff_t FT_PtrDist; return FT_THROW( Invalid_Outline ); } + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_CBox */ + /* */ + /* <Description> */ + /* 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 */ + /* that 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. */ + /* */ + /* <Note> */ + /* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */ + /* */ + + static void + FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ) + { + TPos xMin, yMin, xMax, yMax; + + + if ( outline && acbox ) + { + if ( outline->n_points == 0 ) + { + xMin = 0; + yMin = 0; + xMax = 0; + yMax = 0; + } + else + { + FT_Vector* vec = outline->points; + FT_Vector* limit = vec + outline->n_points; + + + xMin = xMax = vec->x; + yMin = yMax = vec->y; + vec++; + + for ( ; vec < limit; vec++ ) + { + TPos x, y; + + + x = vec->x; + if ( x < xMin ) xMin = x; + if ( x > xMax ) xMax = x; + + y = vec->y; + if ( y < yMin ) yMin = y; + if ( y > yMax ) yMax = y; + } + } + acbox->xMin = xMin; + acbox->xMax = xMax; + acbox->yMin = yMin; + acbox->yMax = yMax; + } + } + #endif /* STANDALONE_ */ typedef struct gray_TBand_ { - TPos min, max; + TCoord min, max; } gray_TBand; @@ -1920,10 +1873,18 @@ typedef ptrdiff_t FT_PtrDist; error = FT_Outline_Decompose( &ras.outline, &func_interface, &ras ); if ( !ras.invalid ) gray_record_cell( RAS_VAR ); + + FT_TRACE7(( "band [%d..%d]: %d cells\n", + ras.min_ey, ras.max_ey, ras.num_cells )); } else + { error = FT_THROW( Memory_Overflow ); + FT_TRACE7(( "band [%d..%d]: to be bisected\n", + ras.min_ey, ras.max_ey )); + } + return error; } @@ -1931,47 +1892,27 @@ typedef ptrdiff_t FT_PtrDist; static int gray_convert_glyph( RAS_ARG ) { - gray_TBand bands[40]; - gray_TBand* volatile band; - int volatile n, num_bands; - TPos volatile min, max, max_y; - FT_BBox* clip; - - - /* Set up state in the raster object */ - gray_compute_cbox( RAS_VAR ); - - /* clip to target bitmap, exit if nothing to do */ - clip = &ras.clip_box; - - if ( ras.max_ex <= clip->xMin || ras.min_ex >= clip->xMax || - ras.max_ey <= clip->yMin || ras.min_ey >= clip->yMax ) - return 0; - - if ( ras.min_ex < clip->xMin ) ras.min_ex = clip->xMin; - if ( ras.min_ey < clip->yMin ) ras.min_ey = clip->yMin; + TCell buffer[FT_MAX_GRAY_POOL]; + const int band_size = FT_MAX_GRAY_POOL / 8; + gray_TBand bands[32]; + gray_TBand* band; + int n, num_bands; + TCoord min, max, max_y; - if ( ras.max_ex > clip->xMax ) ras.max_ex = clip->xMax; - if ( ras.max_ey > clip->yMax ) ras.max_ey = clip->yMax; - - ras.count_ex = ras.max_ex - ras.min_ex; - ras.count_ey = ras.max_ey - ras.min_ey; /* set up vertical bands */ - num_bands = (int)( ( ras.max_ey - ras.min_ey ) / ras.band_size ); + num_bands = (int)( ( ras.max_ey - ras.min_ey ) / band_size ); if ( num_bands == 0 ) num_bands = 1; if ( num_bands >= 39 ) num_bands = 39; - ras.band_shoot = 0; - min = ras.min_ey; max_y = ras.max_ey; for ( n = 0; n < num_bands; n++, min = max ) { - max = min + ras.band_size; + max = min + band_size; if ( n == num_bands - 1 || max > max_y ) max = max_y; @@ -1981,37 +1922,28 @@ typedef ptrdiff_t FT_PtrDist; do { - TPos bottom, top, middle; - int error; - - { - PCell cells_max; - int yindex; - long cell_start, cell_end, cell_mod; + TCoord bottom, top, middle; + int error; - ras.ycells = (PCell*)ras.buffer; - ras.ycount = band->max - band->min; + /* memory management */ + { + size_t ycount = (size_t)( band->max - band->min ); + size_t cell_start; - cell_start = (long)sizeof ( PCell ) * ras.ycount; - cell_mod = cell_start % (long)sizeof ( TCell ); - if ( cell_mod > 0 ) - cell_start += (long)sizeof ( TCell ) - cell_mod; - cell_end = ras.buffer_size; - cell_end -= cell_end % (long)sizeof ( TCell ); + cell_start = ( ycount * sizeof ( PCell ) + sizeof ( TCell ) - 1 ) / + sizeof ( TCell ); - cells_max = (PCell)( (char*)ras.buffer + cell_end ); - ras.cells = (PCell)( (char*)ras.buffer + cell_start ); - if ( ras.cells >= cells_max ) + if ( FT_MAX_GRAY_POOL - cell_start < 2 ) goto ReduceBands; - ras.max_cells = cells_max - ras.cells; - if ( ras.max_cells < 2 ) - goto ReduceBands; + ras.cells = buffer + cell_start; + ras.max_cells = (FT_PtrDist)( FT_MAX_GRAY_POOL - cell_start ); - for ( yindex = 0; yindex < ras.ycount; yindex++ ) - ras.ycells[yindex] = NULL; + ras.ycells = (PCell*)buffer; + while ( ycount ) + ras.ycells[--ycount] = NULL; } ras.num_cells = 0; @@ -2024,7 +1956,7 @@ typedef ptrdiff_t FT_PtrDist; if ( !error ) { - gray_sweep( RAS_VAR_ &ras.target ); + gray_sweep( RAS_VAR ); band--; continue; } @@ -2041,15 +1973,10 @@ typedef ptrdiff_t FT_PtrDist; /* be some problems. */ if ( middle == bottom ) { -#ifdef FT_DEBUG_LEVEL_TRACE FT_TRACE7(( "gray_convert_glyph: rotten glyph\n" )); -#endif return 1; } - if ( bottom-top >= ras.band_size ) - ras.band_shoot++; - band[1].min = bottom; band[1].max = middle; band[0].min = middle; @@ -2058,27 +1985,20 @@ typedef ptrdiff_t FT_PtrDist; } while ( band >= bands ); } - if ( ras.band_shoot > 8 && ras.band_size > 16 ) - ras.band_size = ras.band_size / 2; - return 0; } static int - gray_raster_render( gray_PRaster raster, + gray_raster_render( FT_Raster raster, const FT_Raster_Params* params ) { const FT_Outline* outline = (const FT_Outline*)params->source; const FT_Bitmap* target_map = params->target; + FT_BBox cbox, clip; gray_TWorker worker[1]; - TCell buffer[FT_MAX( FT_RENDER_POOL_SIZE, 2048 ) / sizeof ( TCell )]; - long buffer_size = sizeof ( buffer ); - int band_size = (int)( buffer_size / - (long)( sizeof ( TCell ) * 8 ) ); - if ( !raster ) return FT_THROW( Invalid_Argument ); @@ -2115,33 +2035,51 @@ typedef ptrdiff_t FT_PtrDist; if ( !( params->flags & FT_RASTER_FLAG_AA ) ) return FT_THROW( Invalid_Mode ); + FT_Outline_Get_CBox( outline, &cbox ); + + /* reject too large outline coordinates */ + if ( cbox.xMin < -0x1000000L || cbox.xMax > 0x1000000L || + cbox.yMin < -0x1000000L || cbox.yMax > 0x1000000L ) + return FT_THROW( Invalid_Outline ); + + /* truncate the bounding box to integer pixels */ + cbox.xMin = cbox.xMin >> 6; + cbox.yMin = cbox.yMin >> 6; + cbox.xMax = ( cbox.xMax + 63 ) >> 6; + cbox.yMax = ( cbox.yMax + 63 ) >> 6; + /* compute clipping box */ if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) ) { /* compute clip box from target pixmap */ - ras.clip_box.xMin = 0; - ras.clip_box.yMin = 0; - ras.clip_box.xMax = (FT_Pos)target_map->width; - ras.clip_box.yMax = (FT_Pos)target_map->rows; + clip.xMin = 0; + clip.yMin = 0; + clip.xMax = (FT_Pos)target_map->width; + clip.yMax = (FT_Pos)target_map->rows; } else if ( params->flags & FT_RASTER_FLAG_CLIP ) - ras.clip_box = params->clip_box; + clip = params->clip_box; else { - ras.clip_box.xMin = -32768L; - ras.clip_box.yMin = -32768L; - ras.clip_box.xMax = 32767L; - ras.clip_box.yMax = 32767L; + clip.xMin = -32768L; + clip.yMin = -32768L; + clip.xMax = 32767L; + clip.yMax = 32767L; } - gray_init_cells( RAS_VAR_ buffer, buffer_size ); + /* clip to target bitmap, exit if nothing to do */ + ras.min_ex = FT_MAX( cbox.xMin, clip.xMin ); + ras.min_ey = FT_MAX( cbox.yMin, clip.yMin ); + ras.max_ex = FT_MIN( cbox.xMax, clip.xMax ); + ras.max_ey = FT_MIN( cbox.yMax, clip.yMax ); + + if ( ras.max_ex <= ras.min_ex || ras.max_ey <= ras.min_ey ) + return 0; + + ras.count_ex = ras.max_ex - ras.min_ex; + ras.count_ey = ras.max_ey - ras.min_ey; ras.outline = *outline; - ras.num_cells = 0; - ras.invalid = 1; - ras.band_size = band_size; - ras.num_gray_spans = 0; - ras.span_y = 0; if ( params->flags & FT_RASTER_FLAG_DIRECT ) { @@ -2221,9 +2159,9 @@ typedef ptrdiff_t FT_PtrDist; static void - gray_raster_reset( FT_Raster raster, - char* pool_base, - long pool_size ) + gray_raster_reset( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ) { FT_UNUSED( raster ); FT_UNUSED( pool_base ); diff --git a/Build/source/libs/freetype2/freetype-src/src/tools/docmaker/tohtml.py b/Build/source/libs/freetype2/freetype-src/src/tools/docmaker/tohtml.py index 8da10b8a52c..9b28780e960 100644 --- a/Build/source/libs/freetype2/freetype-src/src/tools/docmaker/tohtml.py +++ b/Build/source/libs/freetype2/freetype-src/src/tools/docmaker/tohtml.py @@ -390,7 +390,7 @@ class HtmlFormatter( Formatter ): """Convert a code sequence to HTML.""" line = code_header + '\n' for l in lines: - line = line + html_quote( l ) + '\n' + line = line + html_quote( l ).rstrip() + '\n' return line + code_footer diff --git a/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/ftfuzzer.cc b/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/ftfuzzer.cc index 7df7abcddc2..39f2b393240 100644 --- a/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/ftfuzzer.cc +++ b/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/ftfuzzer.cc @@ -161,7 +161,7 @@ variations->axis[i].def ) / 2; if ( FT_Set_Var_Design_Coordinates( face, - coords.size(), + FT_UInt( coords.size() ), coords.data() ) ) return; } @@ -248,7 +248,7 @@ // loop over all bitmap stroke sizes // and an arbitrary size for outlines - for ( long fixed_sizes_index = 0; + for ( int fixed_sizes_index = 0; fixed_sizes_index < face->num_fixed_sizes + 1; fixed_sizes_index++ ) { diff --git a/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/rasterfuzzer.cc b/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/rasterfuzzer.cc new file mode 100644 index 00000000000..05187b0be80 --- /dev/null +++ b/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/rasterfuzzer.cc @@ -0,0 +1,129 @@ +// rasterfuzzer.cc +// +// A fuzzing function to test FreeType's rasterizers with libFuzzer. +// +// Copyright 2016 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. + + +#include <stdint.h> + +#include <vector> + + + using namespace std; + + +#include <ft2build.h> + +#include FT_FREETYPE_H +#include FT_IMAGE_H +#include FT_OUTLINE_H + + + static FT_Library library; + static int InitResult; + + + struct FT_Global { + FT_Global() { + InitResult = FT_Init_FreeType( &library ); + } + ~FT_Global() { + FT_Done_FreeType( library ); + } + }; + + FT_Global global_ft; + + + extern "C" int + LLVMFuzzerTestOneInput( const uint8_t* data, + size_t size_ ) + { + unsigned char pixels[4]; + + FT_Bitmap bitmap_mono = { + 1, // rows + 1, // width + 4, // pitch + pixels, // buffer + 2, // num_grays + FT_PIXEL_MODE_MONO, // pixel_mode + 0, // palette_mode + NULL // palette + }; + + FT_Bitmap bitmap_gray = { + 1, // rows + 1, // width + 4, // pitch + pixels, // buffer + 256, // num_grays + FT_PIXEL_MODE_GRAY, // pixel_mode + 0, // palette_mode + NULL // palette + }; + + const size_t vsize = sizeof ( FT_Vector ); + const size_t tsize = sizeof ( char ); + + // we use the input data for both points and tags + short n_points = short( size_ / ( vsize + tsize ) ); + if ( n_points <= 2 ) + return 0; + + FT_Vector* points = reinterpret_cast<FT_Vector*>( + const_cast<uint8_t*>( + data ) ); + char* tags = reinterpret_cast<char*>( + const_cast<uint8_t*>( + data + size_t( n_points ) * vsize ) ); + + // to reduce the number of invalid outlines that are immediately + // rejected in `FT_Outline_Render', limit values to 2^18 pixels + // (i.e., 2^24 bits) + for ( short i = 0; i < n_points; i++ ) + { + if ( points[i].x == LONG_MIN ) + points[i].x = 0; + else if ( points[i].x < 0 ) + points[i].x = -( -points[i].x & 0xFFFFFF ) - 1; + else + points[i].x = ( points[i].x & 0xFFFFFF ) + 1; + + if ( points[i].y == LONG_MIN ) + points[i].y = 0; + else if ( points[i].y < 0 ) + points[i].y = -( -points[i].y & 0xFFFFFF ) - 1; + else + points[i].y = ( points[i].y & 0xFFFFFF ) + 1; + } + + short contours[1]; + contours[0] = n_points - 1; + + FT_Outline outline = + { + 1, // n_contours + n_points, // n_points + points, // points + tags, // tags + contours, // contours + FT_OUTLINE_NONE // flags + }; + + FT_Outline_Get_Bitmap( library, &outline, &bitmap_mono ); + FT_Outline_Get_Bitmap( library, &outline, &bitmap_gray ); + + return 0; + } + + +// END diff --git a/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/runinput.cc b/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/runinput.cc index 8fa75ad6a96..d5f9f1587db 100644 --- a/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/runinput.cc +++ b/Build/source/libs/freetype2/freetype-src/src/tools/ftfuzzer/runinput.cc @@ -1,6 +1,6 @@ // runinput.cc // -// A `main' function for `ftfuzzer.cc'. +// A `main' function for fuzzers like `ftfuzzer.cc'. // // Copyright 2015-2016 by // David Turner, Robert Wilhelm, and Werner Lemberg. diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttdriver.c b/Build/source/libs/freetype2/freetype-src/src/truetype/ttdriver.c index bbebabdadb2..c9d4081efe3 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttdriver.c +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttdriver.c @@ -72,12 +72,17 @@ FT_UInt* interpreter_version = (FT_UInt*)value; -#ifndef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( *interpreter_version != TT_INTERPRETER_VERSION_35 ) - error = FT_ERR( Unimplemented_Feature ); - else + if ( *interpreter_version == TT_INTERPRETER_VERSION_35 +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + || *interpreter_version == TT_INTERPRETER_VERSION_38 +#endif +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + || *interpreter_version == TT_INTERPRETER_VERSION_40 #endif + ) driver->interpreter_version = *interpreter_version; + else + error = FT_ERR( Unimplemented_Feature ); return error; } diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttgload.c b/Build/source/libs/freetype2/freetype-src/src/truetype/ttgload.c index 4ab6603a2bf..8be9b6ae65d 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttgload.c +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttgload.c @@ -122,7 +122,7 @@ FT_UInt glyph_index ) { TT_Face face = loader->face; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face ); #endif @@ -153,7 +153,7 @@ loader->top_bearing = top_bearing; loader->vadvance = advance_height; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 && loader->exec ) { @@ -165,7 +165,7 @@ /* backwards compatibility mode on and off. */ sph_set_tweaks( loader, glyph_index ); } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ if ( !loader->linear_def ) { @@ -427,7 +427,8 @@ load->glyph->control_len = n_ins; load->glyph->control_data = load->exec->glyphIns; - FT_MEM_COPY( load->exec->glyphIns, p, (FT_Long)n_ins ); + if ( n_ins ) + FT_MEM_COPY( load->exec->glyphIns, p, (FT_Long)n_ins ); } #endif /* TT_USE_BYTECODE_INTERPRETER */ @@ -732,7 +733,8 @@ TT_Hint_Glyph( TT_Loader loader, FT_Bool is_composite ) { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \ + defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL TT_Face face = loader->face; TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face ); #endif @@ -815,13 +817,23 @@ #endif - /* save glyph phantom points */ - loader->pp1 = zone->cur[zone->n_points - 4]; - loader->pp2 = zone->cur[zone->n_points - 3]; - loader->pp3 = zone->cur[zone->n_points - 2]; - loader->pp4 = zone->cur[zone->n_points - 1]; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* Save possibly modified glyph phantom points unless in v40 backwards */ + /* compatibility mode, where no movement on the x axis means no reason */ + /* to change bearings or advance widths. */ + if ( !( driver->interpreter_version == TT_INTERPRETER_VERSION_40 && + !loader->exec->backwards_compatibility ) ) + { +#endif + loader->pp1 = zone->cur[zone->n_points - 4]; + loader->pp2 = zone->cur[zone->n_points - 3]; + loader->pp3 = zone->cur[zone->n_points - 2]; + loader->pp4 = zone->cur[zone->n_points - 1]; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + } +#endif -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 ) { if ( loader->exec->sph_tweak_flags & SPH_TWEAK_DEEMBOLDEN ) @@ -830,7 +842,7 @@ else if ( loader->exec->sph_tweak_flags & SPH_TWEAK_EMBOLDEN ) FT_Outline_EmboldenXY( &loader->gloader->current.outline, 24, 0 ); } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ return FT_Err_Ok; } @@ -896,7 +908,7 @@ } { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY TT_Face face = loader->face; TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face ); @@ -915,7 +927,7 @@ FT_Bool do_scale = FALSE; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 ) { @@ -946,7 +958,7 @@ } else -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ { /* scale the glyph */ @@ -1077,7 +1089,7 @@ : -subglyph->transform.yx; int c = subglyph->transform.xy > 0 ? subglyph->transform.xy : -subglyph->transform.xy; - int d = subglyph->transform.yy > 0 ? subglyph->transform.yy + int d = subglyph->transform.yy > 0 ? subglyph->transform.yy : -subglyph->transform.yy; int m = a > b ? a : b; int n = c > d ? c : d; @@ -1323,49 +1335,71 @@ * (3) for everything else. * */ + static void + tt_loader_set_pp( TT_Loader loader ) + { + FT_Bool subpixel_hinting = 0; + FT_Bool grayscale = 0; + FT_Bool use_aw_2 = 0; + #ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING + TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( loader->face ); +#endif + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 ) + { + subpixel_hinting = loader->exec ? loader->exec->subpixel_hinting + : 0; + grayscale = loader->exec ? loader->exec->grayscale + : 0; + } +#endif +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 ) + { + subpixel_hinting = loader->exec ? loader->exec->subpixel_hinting_lean + : 0; + grayscale = loader->exec ? loader->exec->grayscale_cleartype + : 0; + } +#endif + + use_aw_2 = (FT_Bool)( subpixel_hinting && grayscale ); + + loader->pp1.x = loader->bbox.xMin - loader->left_bearing; + loader->pp1.y = 0; + loader->pp2.x = loader->pp1.x + loader->advance; + loader->pp2.y = 0; + + loader->pp3.x = use_aw_2 ? loader->advance / 2 : 0; + loader->pp3.y = loader->bbox.yMax + loader->top_bearing; + loader->pp4.x = use_aw_2 ? loader->advance / 2 : 0; + loader->pp4.y = loader->pp3.y - loader->vadvance; + } + + + /* a utility function to retrieve i-th node from given FT_List */ + static FT_ListNode + ft_list_get_node_at( FT_List list, + FT_UInt index ) + { + FT_ListNode cur; + -#define TT_LOADER_SET_PP( loader ) \ - do \ - { \ - FT_Bool subpixel_hinting_ = loader->exec \ - ? loader->exec->subpixel_hinting \ - : 0; \ - FT_Bool grayscale_ = loader->exec \ - ? loader->exec->grayscale \ - : 0; \ - FT_Bool use_aw_2_ = (FT_Bool)( subpixel_hinting_ && \ - grayscale_ ); \ - \ - \ - (loader)->pp1.x = (loader)->bbox.xMin - (loader)->left_bearing; \ - (loader)->pp1.y = 0; \ - (loader)->pp2.x = (loader)->pp1.x + (loader)->advance; \ - (loader)->pp2.y = 0; \ - \ - (loader)->pp3.x = use_aw_2_ ? (loader)->advance / 2 : 0; \ - (loader)->pp3.y = (loader)->bbox.yMax + (loader)->top_bearing; \ - (loader)->pp4.x = use_aw_2_ ? (loader)->advance / 2 : 0; \ - (loader)->pp4.y = (loader)->pp3.y - (loader)->vadvance; \ - } while ( 0 ) - -#else /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ - -#define TT_LOADER_SET_PP( loader ) \ - do \ - { \ - (loader)->pp1.x = (loader)->bbox.xMin - (loader)->left_bearing; \ - (loader)->pp1.y = 0; \ - (loader)->pp2.x = (loader)->pp1.x + (loader)->advance; \ - (loader)->pp2.y = 0; \ - \ - (loader)->pp3.x = 0; \ - (loader)->pp3.y = (loader)->bbox.yMax + (loader)->top_bearing; \ - (loader)->pp4.x = 0; \ - (loader)->pp4.y = (loader)->pp3.y - (loader)->vadvance; \ - } while ( 0 ) - -#endif /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + if ( !list ) + return NULL; + + for ( cur = list->head; cur; cur = cur->next ) + { + if ( !index ) + return cur; + + index--; + } + + return NULL; + } /*************************************************************************/ @@ -1523,7 +1557,7 @@ /* must initialize points before (possibly) overriding */ /* glyph metrics from the incremental interface */ - TT_LOADER_SET_PP( loader ); + tt_loader_set_pp( loader ); #ifdef FT_CONFIG_OPTION_INCREMENTAL tt_get_metrics_incr_overrides( loader, glyph_index ); @@ -1598,7 +1632,7 @@ /* must initialize phantom points before (possibly) overriding */ /* glyph metrics from the incremental interface */ - TT_LOADER_SET_PP( loader ); + tt_loader_set_pp( loader ); #ifdef FT_CONFIG_OPTION_INCREMENTAL tt_get_metrics_incr_overrides( loader, glyph_index ); @@ -1640,6 +1674,8 @@ FT_UInt start_contour; FT_ULong ins_pos; /* position of composite instructions, if any */ + FT_ListNode node, node2; + /* * We store the glyph index directly in the `node->data' pointer, @@ -1648,6 +1684,12 @@ * pointers with a width of at least 32 bits. */ + + /* clear the nodes filled by sibling chains */ + node = ft_list_get_node_at( &loader->composites, recurse_count ); + for ( node2 = node; node2; node2 = node2->next ) + node2->data = (void*)ULONG_MAX; + /* check whether we already have a composite glyph with this index */ if ( FT_List_Find( &loader->composites, (void*)(unsigned long)glyph_index ) ) @@ -1657,11 +1699,12 @@ error = FT_THROW( Invalid_Composite ); goto Exit; } - else - { - FT_ListNode node = NULL; + else if ( node ) + node->data = (void*)(unsigned long)glyph_index; + else + { if ( FT_NEW( node ) ) goto Exit; node->data = (void*)(unsigned long)glyph_index; @@ -1703,6 +1746,10 @@ outline.n_points = (short)( gloader->current.num_subglyphs + 4 ); outline.n_contours = outline.n_points; + outline.points = NULL; + outline.tags = NULL; + outline.contours = NULL; + if ( FT_NEW_ARRAY( points, outline.n_points ) || FT_NEW_ARRAY( tags, outline.n_points ) || FT_NEW_ARRAY( contours, outline.n_points ) ) @@ -1942,7 +1989,8 @@ FT_UInt glyph_index ) { TT_Face face = loader->face; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \ + defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face ); #endif @@ -1969,11 +2017,18 @@ glyph->metrics.horiBearingY = bbox.yMax; glyph->metrics.horiAdvance = loader->pp2.x - loader->pp1.x; - /* adjust advance width to the value contained in the hdmx table */ - /* unless FT_LOAD_COMPUTE_METRICS is set */ - if ( !face->postscript.isFixedPitch && - IS_HINTED( loader->load_flags ) && - !( loader->load_flags & FT_LOAD_COMPUTE_METRICS ) ) + /* Adjust advance width to the value contained in the hdmx table */ + /* unless FT_LOAD_COMPUTE_METRICS is set or backwards compatibility */ + /* mode of the v40 interpreter is active. See `ttinterp.h' for */ + /* details on backwards compatibility mode. */ + if ( +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + !( driver->interpreter_version == TT_INTERPRETER_VERSION_40 && + ( loader->exec && loader->exec->backwards_compatibility ) ) && +#endif + !face->postscript.isFixedPitch && + IS_HINTED( loader->load_flags ) && + !( loader->load_flags & FT_LOAD_COMPUTE_METRICS ) ) { FT_Byte* widthp; @@ -1982,7 +2037,7 @@ size->root.metrics.x_ppem, glyph_index ); -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 ) { @@ -2000,7 +2055,7 @@ } else -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ { if ( widthp ) @@ -2189,6 +2244,10 @@ #ifdef TT_USE_BYTECODE_INTERPRETER FT_Bool pedantic = FT_BOOL( load_flags & FT_LOAD_PEDANTIC ); #endif +#if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \ + defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( (TT_Face)glyph->face ); +#endif face = (TT_Face)glyph->face; @@ -2202,11 +2261,13 @@ if ( IS_HINTED( load_flags ) && !glyf_table_only ) { TT_ExecContext exec; - FT_Bool grayscale; - -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face ); + FT_Bool grayscale = TRUE; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + FT_Bool subpixel_hinting_lean; + FT_Bool grayscale_cleartype; +#endif +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY FT_Bool subpixel_hinting = FALSE; #if 0 @@ -2218,7 +2279,7 @@ FT_Bool subpixel_positioned; FT_Bool gray_cleartype; #endif -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ FT_Bool reexecute = FALSE; @@ -2239,7 +2300,26 @@ if ( !exec ) return FT_THROW( Could_Not_Find_Context ); -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 ) + { + subpixel_hinting_lean = TRUE; + grayscale_cleartype = !FT_BOOL( load_flags & + FT_LOAD_TARGET_LCD || + load_flags & + FT_LOAD_TARGET_LCD_V ); + exec->vertical_lcd_lean = FT_BOOL( load_flags & + FT_LOAD_TARGET_LCD_V ); + } + else + { + subpixel_hinting_lean = FALSE; + grayscale_cleartype = FALSE; + exec->vertical_lcd_lean = FALSE; + } +#endif + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 ) { @@ -2296,18 +2376,23 @@ } else -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ - { +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 ) + grayscale = FT_BOOL( !subpixel_hinting_lean && + FT_LOAD_TARGET_MODE( load_flags ) != + FT_RENDER_MODE_MONO ); + else +#endif grayscale = FT_BOOL( FT_LOAD_TARGET_MODE( load_flags ) != - FT_RENDER_MODE_MONO ); - } + FT_RENDER_MODE_MONO ); error = TT_Load_Context( exec, face, size ); if ( error ) return error; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 ) { @@ -2335,9 +2420,37 @@ } else -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ { + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 ) + { + /* a change from mono to subpixel rendering (and vice versa) */ + /* requires a re-execution of the CVT program */ + if ( subpixel_hinting_lean != exec->subpixel_hinting_lean ) + { + FT_TRACE4(( "tt_loader_init: subpixel hinting change," + " re-executing `prep' table\n" )); + + exec->subpixel_hinting_lean = subpixel_hinting_lean; + reexecute = TRUE; + } + + /* a change from colored to grayscale subpixel rendering (and */ + /* vice versa) requires a re-execution of the CVT program */ + if ( grayscale_cleartype != exec->grayscale_cleartype ) + { + FT_TRACE4(( "tt_loader_init: grayscale subpixel hinting change," + " re-executing `prep' table\n" )); + + exec->grayscale_cleartype = grayscale_cleartype; + reexecute = TRUE; + } + } +#endif + /* a change from mono to grayscale rendering (and vice versa) */ /* requires a re-execution of the CVT program */ if ( grayscale != exec->grayscale ) @@ -2370,10 +2483,11 @@ if ( exec->GS.instruct_control & 2 ) exec->GS = tt_default_graphics_state; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* check whether we have a font hinted for ClearType -- */ /* note that this flag can also be modified in a glyph's bytecode */ - if ( exec->GS.instruct_control & 4 ) + if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 && + exec->GS.instruct_control & 4 ) exec->ignore_x_mode = 0; #endif diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttgxvar.c b/Build/source/libs/freetype2/freetype-src/src/truetype/ttgxvar.c index 5f760a27e8f..9a02c5a8c14 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttgxvar.c +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttgxvar.c @@ -551,7 +551,7 @@ for ( i = 0; i < blend->tuplecount; i++ ) { FT_TRACE5(( " [ " )); - for ( j = 0 ; j < (FT_UInt)gvar_head.axisCount; j++ ) + for ( j = 0; j < (FT_UInt)gvar_head.axisCount; j++ ) { blend->tuplecoords[i * gvar_head.axisCount + j] = FT_GET_SHORT() * 4; /* convert to FT_Fixed */ @@ -613,6 +613,11 @@ { FT_TRACE6(( " axis coordinate %d (%.4f):\n", i, blend->normalizedcoords[i] / 65536.0 )); + if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) ) + FT_TRACE6(( " intermediate coordinates %d (%.4f, %.4f):\n", + i, + im_start_coords[i] / 65536.0, + im_end_coords[i] / 65536.0 )); /* It's not clear why (for intermediate tuples) we don't need */ /* to check against start/end -- the documentation says we don't. */ @@ -625,62 +630,74 @@ continue; } - else if ( blend->normalizedcoords[i] == 0 ) + if ( blend->normalizedcoords[i] == 0 ) { FT_TRACE6(( " axis coordinate is zero, stop\n" )); apply = 0; break; } - else if ( ( blend->normalizedcoords[i] < 0 && tuple_coords[i] > 0 ) || - ( blend->normalizedcoords[i] > 0 && tuple_coords[i] < 0 ) ) + if ( blend->normalizedcoords[i] == tuple_coords[i] ) { - FT_TRACE6(( " tuple coordinate value %.4f is exceeded, stop\n", + FT_TRACE6(( " tuple coordinate value %.4f fits perfectly\n", tuple_coords[i] / 65536.0 )); - apply = 0; - break; + /* `apply' does not change */ + continue; } - else if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) ) + if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) ) { - FT_TRACE6(( " tuple coordinate value %.4f fits\n", - tuple_coords[i] / 65536.0 )); /* not an intermediate tuple */ - apply = FT_MulFix( apply, - blend->normalizedcoords[i] > 0 - ? blend->normalizedcoords[i] - : -blend->normalizedcoords[i] ); - } - else if ( blend->normalizedcoords[i] < im_start_coords[i] || - blend->normalizedcoords[i] > im_end_coords[i] ) - { - FT_TRACE6(( " intermediate tuple range [%.4f;%.4f] is exceeded," - " stop\n", - im_start_coords[i] / 65536.0, - im_end_coords[i] / 65536.0 )); - apply = 0; - break; - } + if ( blend->normalizedcoords[i] < FT_MIN( 0, tuple_coords[i] ) || + blend->normalizedcoords[i] > FT_MAX( 0, tuple_coords[i] ) ) + { + FT_TRACE6(( " tuple coordinate value %.4f is exceeded, stop\n", + tuple_coords[i] / 65536.0 )); + apply = 0; + break; + } - else if ( blend->normalizedcoords[i] < tuple_coords[i] ) - { - FT_TRACE6(( " intermediate tuple range [%.4f;%.4f] fits\n", - im_start_coords[i] / 65536.0, - im_end_coords[i] / 65536.0 )); + FT_TRACE6(( " tuple coordinate value %.4f fits\n", + tuple_coords[i] / 65536.0 )); apply = FT_MulDiv( apply, - blend->normalizedcoords[i] - im_start_coords[i], - tuple_coords[i] - im_start_coords[i] ); + blend->normalizedcoords[i], + tuple_coords[i] ); } - else { - FT_TRACE6(( " intermediate tuple range [%.4f;%.4f] fits\n", - im_start_coords[i] / 65536.0, - im_end_coords[i] / 65536.0 )); - apply = FT_MulDiv( apply, - im_end_coords[i] - blend->normalizedcoords[i], - im_end_coords[i] - tuple_coords[i] ); + /* intermediate tuple */ + + if ( blend->normalizedcoords[i] < im_start_coords[i] || + blend->normalizedcoords[i] > im_end_coords[i] ) + { + FT_TRACE6(( " intermediate tuple range [%.4f;%.4f] is exceeded," + " stop\n", + im_start_coords[i] / 65536.0, + im_end_coords[i] / 65536.0 )); + apply = 0; + break; + } + + else if ( blend->normalizedcoords[i] < tuple_coords[i] ) + { + FT_TRACE6(( " intermediate tuple range [%.4f;%.4f] fits\n", + im_start_coords[i] / 65536.0, + im_end_coords[i] / 65536.0 )); + apply = FT_MulDiv( apply, + blend->normalizedcoords[i] - im_start_coords[i], + tuple_coords[i] - im_start_coords[i] ); + } + + else + { + FT_TRACE6(( " intermediate tuple range [%.4f;%.4f] fits\n", + im_start_coords[i] / 65536.0, + im_end_coords[i] / 65536.0 )); + apply = FT_MulDiv( apply, + im_end_coords[i] - blend->normalizedcoords[i], + im_end_coords[i] - tuple_coords[i] ); + } } } diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.c b/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.c index ccbb1d76264..2e3f9ef9d72 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.c +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.c @@ -45,10 +45,21 @@ #define FT_COMPONENT trace_ttinterp -#define SUBPIXEL_HINTING \ +#define NO_SUBPIXEL_HINTING \ + ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \ + TT_INTERPRETER_VERSION_35 ) + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY +#define SUBPIXEL_HINTING_INFINALITY \ ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \ TT_INTERPRETER_VERSION_38 ) +#endif +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#define SUBPIXEL_HINTING_MINIMAL \ + ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \ + TT_INTERPRETER_VERSION_40 ) +#endif #define PROJECT( v1, v2 ) \ exc->func_project( exc, (v1)->x - (v2)->x, (v1)->y - (v2)->y ) @@ -286,8 +297,8 @@ exec->stackSize = 0; exec->glyphSize = 0; - exec->stack = NULL; - exec->glyphIns = NULL; + exec->stack = NULL; + exec->glyphIns = NULL; exec->face = NULL; exec->size = NULL; @@ -1561,7 +1572,7 @@ static FT_Short GetShortIns( TT_ExecContext exc ) { - /* Reading a byte stream so there is no endianess (DaveP) */ + /* Reading a byte stream so there is no endianness (DaveP) */ exc->IP += 2; return (FT_Short)( ( exc->code[exc->IP - 2] << 8 ) + exc->code[exc->IP - 1] ); @@ -1642,6 +1653,10 @@ /* <InOut> */ /* zone :: The affected glyph zone. */ /* */ + /* <Note> */ + /* See `ttinterp.h' for details on backwards compatibility mode. */ + /* `Touches' the point. */ + /* */ static void Direct_Move( TT_ExecContext exc, TT_GlyphZone zone, @@ -1655,11 +1670,24 @@ if ( v != 0 ) { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( !SUBPIXEL_HINTING || +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && ( !exc->ignore_x_mode || ( exc->sph_tweak_flags & SPH_TWEAK_ALLOW_X_DMOVE ) ) ) -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + zone->cur[point].x += FT_MulDiv( distance, v, exc->F_dot_P ); + else +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* Exception to the post-IUP curfew: Allow the x component of */ + /* diagonal moves, but only post-IUP. DejaVu tries to adjust */ + /* diagonal stems like on `Z' and `z' post-IUP. */ + if ( SUBPIXEL_HINTING_MINIMAL && !exc->backwards_compatibility ) + zone->cur[point].x += FT_MulDiv( distance, v, exc->F_dot_P ); + else +#endif + + if ( NO_SUBPIXEL_HINTING ) zone->cur[point].x += FT_MulDiv( distance, v, exc->F_dot_P ); zone->tags[point] |= FT_CURVE_TAG_TOUCH_X; @@ -1669,7 +1697,13 @@ if ( v != 0 ) { - zone->cur[point].y += FT_MulDiv( distance, v, exc->F_dot_P ); +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( !( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility && + exc->iupx_called && + exc->iupy_called ) ) +#endif + zone->cur[point].y += FT_MulDiv( distance, v, exc->F_dot_P ); zone->tags[point] |= FT_CURVE_TAG_TOUCH_Y; } @@ -1720,6 +1754,7 @@ /* */ /* The following versions are used whenever both vectors are both */ /* along one of the coordinate unit vectors, i.e. in 90% of the cases. */ + /* See `ttinterp.h' for details on backwards compatibility mode. */ /* */ /*************************************************************************/ @@ -1730,12 +1765,19 @@ FT_UShort point, FT_F26Dot6 distance ) { - FT_UNUSED( exc ); +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && !exc->ignore_x_mode ) + zone->cur[point].x += distance; + else +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( SUBPIXEL_HINTING_MINIMAL && !exc->backwards_compatibility ) + zone->cur[point].x += distance; + else +#endif -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( !SUBPIXEL_HINTING || - !exc->ignore_x_mode ) -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + if ( NO_SUBPIXEL_HINTING ) zone->cur[point].x += distance; zone->tags[point] |= FT_CURVE_TAG_TOUCH_X; @@ -1750,8 +1792,14 @@ { FT_UNUSED( exc ); - zone->cur[point].y += distance; - zone->tags[point] |= FT_CURVE_TAG_TOUCH_Y; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( !( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility && + exc->iupx_called && exc->iupy_called ) ) +#endif + zone->cur[point].y += distance; + + zone->tags[point] |= FT_CURVE_TAG_TOUCH_Y; } @@ -2030,7 +2078,7 @@ FT_F26Dot6 distance, FT_F26Dot6 compensation ) { - FT_F26Dot6 val; + FT_F26Dot6 val; FT_UNUSED( exc ); @@ -2069,7 +2117,7 @@ /* Rounded distance. */ /* */ /* <Note> */ - /* The TrueType specification says very few about the relationship */ + /* The TrueType specification says very little about the relationship */ /* between rounding and engine compensation. However, it seems from */ /* the description of super round that we should add the compensation */ /* before rounding. */ @@ -2878,8 +2926,6 @@ Ins_RS( TT_ExecContext exc, FT_Long* args ) { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - FT_ULong I = (FT_ULong)args[0]; @@ -2892,9 +2938,10 @@ } else { +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* subpixel hinting - avoid Typeman Dstroke and */ /* IStroke and Vacuform rounds */ - if ( SUBPIXEL_HINTING && + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && ( ( I == 24 && ( exc->face->sph_found_func_flags & @@ -2909,25 +2956,9 @@ exc->iup_called ) ) ) args[0] = 0; else +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ args[0] = exc->storage[I]; } - -#else /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ - - FT_ULong I = (FT_ULong)args[0]; - - - if ( BOUNDSL( I, exc->storeSize ) ) - { - if ( exc->pedantic_hinting ) - ARRAY_BOUND_ERROR; - else - args[0] = 0; - } - else - args[0] = exc->storage[I]; - -#endif /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ } @@ -3409,7 +3440,7 @@ TT_DefRecord* rec; TT_DefRecord* limit; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* arguments to opcodes are skipped by `SKIP_Code' */ FT_Byte opcode_pattern[9][12] = { /* #0 inline delta function 1 */ @@ -3507,7 +3538,7 @@ FT_UShort opcode_pointer[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; FT_UShort opcode_size[9] = { 12, 8, 8, 6, 7, 4, 5, 4, 2 }; FT_UShort i; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /* some font programs are broken enough to redefine functions! */ @@ -3552,7 +3583,7 @@ if ( n > exc->maxFunc ) exc->maxFunc = (FT_UInt16)n; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* We don't know for sure these are typeman functions, */ /* however they are only active when RS 22 is called */ if ( n >= 64 && n <= 66 ) @@ -3565,9 +3596,9 @@ while ( SkipCode( exc ) == SUCCESS ) { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING ) + if ( SUBPIXEL_HINTING_INFINALITY ) { for ( i = 0; i < opcode_patterns; i++ ) { @@ -3674,7 +3705,7 @@ ( exc->face->sph_found_func_flags & SPH_FDEF_INLINE_DELTA_2 ) ); } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ switch ( exc->opcode ) { @@ -3703,9 +3734,9 @@ TT_CallRec* pRec; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY exc->sph_in_func_flags = 0x0000; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ if ( exc->callTop <= 0 ) /* We encountered an ENDF without a call */ { @@ -3791,8 +3822,8 @@ if ( !def->active ) goto Fail; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && ( ( exc->iup_called && ( exc->sph_tweak_flags & SPH_TWEAK_NO_CALL_AFTER_IUP ) ) || @@ -3800,7 +3831,7 @@ goto Fail; else exc->sph_in_func_flags = def->sph_fdef_flags; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /* check the call stack */ if ( exc->callTop >= exc->callSize ) @@ -3879,14 +3910,14 @@ if ( !def->active ) goto Fail; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && ( def->sph_fdef_flags & SPH_FDEF_VACUFORM_ROUND_1 ) ) goto Fail; else exc->sph_in_func_flags = def->sph_fdef_flags; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /* check stack */ if ( exc->callTop >= exc->callSize ) @@ -4781,13 +4812,13 @@ } } -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* Disable Type 2 Vacuform Rounds - e.g. Arial Narrow */ - if ( SUBPIXEL_HINTING && - exc->ignore_x_mode && - FT_ABS( D ) == 64 ) + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + FT_ABS( D ) == 64 ) D += 1; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ args[0] = D; } @@ -5043,12 +5074,23 @@ exc->GS.instruct_control &= ~(FT_Byte)Kf; exc->GS.instruct_control |= (FT_Byte)L; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - /* INSTCTRL modifying flag 3 also has an effect */ - /* outside of the CVT program */ if ( K == 3 ) - exc->ignore_x_mode = FT_BOOL( L == 4 ); + { +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + /* INSTCTRL modifying flag 3 also has an effect */ + /* outside of the CVT program */ + if ( SUBPIXEL_HINTING_INFINALITY ) + exc->ignore_x_mode = FT_BOOL( L == 4 ); +#endif + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* Native ClearType fonts sign a waiver that turns off all backwards */ + /* compatibility hacks and lets them program points to the grid like */ + /* it's 1996. They might sign a waiver for just one glyph, though. */ + if ( SUBPIXEL_HINTING_MINIMAL ) + exc->backwards_compatibility = !FT_BOOL( L == 4 ); #endif + } } @@ -5133,6 +5175,15 @@ FT_UShort point; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* See `ttinterp.h' for details on backwards compatibility mode. */ + if ( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility && + exc->iupx_called && + exc->iupy_called ) + goto Fail; +#endif + if ( exc->top < exc->GS.loop ) { if ( exc->pedantic_hinting ) @@ -5179,6 +5230,15 @@ FT_UShort I, K, L; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* See `ttinterp.h' for details on backwards compatibility mode. */ + if ( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility && + exc->iupx_called && + exc->iupy_called ) + return; +#endif + K = (FT_UShort)args[1]; L = (FT_UShort)args[0]; @@ -5208,6 +5268,15 @@ FT_UShort I, K, L; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* See `ttinterp.h' for details on backwards compatibility mode. */ + if ( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility && + exc->iupx_called && + exc->iupy_called ) + return; +#endif + K = (FT_UShort)args[1]; L = (FT_UShort)args[0]; @@ -5267,6 +5336,7 @@ } + /* See `ttinterp.h' for details on backwards compatibility mode. */ static void Move_Zp2_Point( TT_ExecContext exc, FT_UShort point, @@ -5276,14 +5346,26 @@ { if ( exc->GS.freeVector.x != 0 ) { - exc->zp2.cur[point].x += dx; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( !( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility ) ) +#endif + exc->zp2.cur[point].x += dx; + if ( touch ) exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_X; } if ( exc->GS.freeVector.y != 0 ) { - exc->zp2.cur[point].y += dy; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( !( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility && + exc->iupx_called && + exc->iupy_called ) ) +#endif + exc->zp2.cur[point].y += dy; + if ( touch ) exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_Y; } @@ -5330,13 +5412,12 @@ } } else -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* doesn't follow Cleartype spec but produces better result */ - if ( SUBPIXEL_HINTING && - exc->ignore_x_mode ) + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode ) Move_Zp2_Point( exc, point, 0, dy, TRUE ); else -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ Move_Zp2_Point( exc, point, dx, dy, TRUE ); exc->GS.loop--; @@ -5464,9 +5545,15 @@ { FT_F26Dot6 dx, dy; FT_UShort point; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY FT_Int B1, B2; #endif +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + FT_Bool in_twilight = exc->GS.gep0 == 0 || \ + exc->GS.gep1 == 0 || \ + exc->GS.gep2 == 0; +#endif + if ( exc->top < exc->GS.loop + 1 ) @@ -5494,7 +5581,8 @@ } } else -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY ) { /* If not using ignore_x_mode rendering, allow ZP2 move. */ /* If inline deltas aren't allowed, skip ZP2 move. */ @@ -5504,8 +5592,7 @@ /* - the glyph is specifically set to allow SHPIX moves */ /* - the move is on a previously Y-touched point */ - if ( SUBPIXEL_HINTING && - exc->ignore_x_mode ) + if ( exc->ignore_x_mode ) { /* save point for later comparison */ if ( exc->GS.freeVector.y != 0 ) @@ -5569,15 +5656,30 @@ else Move_Zp2_Point( exc, point, dx, dy, TRUE ); } + else +#endif +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility ) + { + /* Special case: allow SHPIX to move points in the twilight zone. */ + /* Otherwise, treat SHPIX the same as DELTAP. Unbreaks various */ + /* fonts such as older versions of Rokkitt and DTL Argo T Light */ + /* that would glitch severly after calling ALIGNRP after a blocked */ + /* SHPIX. */ + if ( in_twilight || + ( !( exc->iupx_called && exc->iupy_called ) && + ( ( exc->is_composite && exc->GS.freeVector.y != 0 ) || + ( exc->zp2.tags[point] & FT_CURVE_TAG_TOUCH_Y ) ) ) ) + Move_Zp2_Point( exc, point, 0, dy, TRUE ); + } + else +#endif + Move_Zp2_Point( exc, point, dx, dy, TRUE ); +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY Skip: - -#else /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ - - Move_Zp2_Point( exc, point, dx, dy, TRUE ); - -#endif /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ - +#endif exc->GS.loop--; } @@ -5597,14 +5699,13 @@ Ins_MSIRP( TT_ExecContext exc, FT_Long* args ) { - FT_UShort point; + FT_UShort point = 0; FT_F26Dot6 distance; - -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - FT_F26Dot6 control_value_cutin = 0; /* pacify compiler */ +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + FT_F26Dot6 control_value_cutin = 0; - if ( SUBPIXEL_HINTING ) + if ( SUBPIXEL_HINTING_INFINALITY ) { control_value_cutin = exc->GS.control_value_cutin; @@ -5613,8 +5714,7 @@ !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) control_value_cutin = 0; } - -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ point = (FT_UShort)args[0]; @@ -5637,14 +5737,14 @@ distance = PROJECT( exc->zp1.cur + point, exc->zp0.cur + exc->GS.rp0 ); -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* subpixel hinting - make MSIRP respect CVT cut-in; */ - if ( SUBPIXEL_HINTING && + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.x != 0 && FT_ABS( distance - args[1] ) >= control_value_cutin ) distance = args[1]; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ exc->func_move( exc, &exc->zp1, point, args[1] - distance ); @@ -5683,10 +5783,10 @@ if ( ( exc->opcode & 1 ) != 0 ) { cur_dist = FAST_PROJECT( &exc->zp0.cur[point] ); -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && - exc->ignore_x_mode && - exc->GS.freeVector.x != 0 ) +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.x != 0 ) distance = Round_None( exc, cur_dist, @@ -5729,14 +5829,14 @@ cvtEntry = (FT_ULong)args[1]; point = (FT_UShort)args[0]; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.x != 0 && exc->GS.freeVector.y == 0 && !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) control_value_cutin = 0; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ if ( BOUNDS( point, exc->zp0.n_points ) || BOUNDSL( cvtEntry, exc->cvtSize ) ) @@ -5770,27 +5870,27 @@ if ( exc->GS.gep0 == 0 ) /* If in twilight zone */ { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* Only adjust if not in sph_compatibility_mode or ignore_x_mode. */ /* Determined via experimentation and may be incorrect... */ - if ( !SUBPIXEL_HINTING || - ( !exc->ignore_x_mode || - !exc->face->sph_compatibility_mode ) ) -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + if ( !( SUBPIXEL_HINTING_INFINALITY && + ( exc->ignore_x_mode && + exc->face->sph_compatibility_mode ) ) ) +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ exc->zp0.org[point].x = TT_MulFix14( distance, exc->GS.freeVector.x ); exc->zp0.org[point].y = TT_MulFix14( distance, exc->GS.freeVector.y ), exc->zp0.cur[point] = exc->zp0.org[point]; } -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && ( exc->sph_tweak_flags & SPH_TWEAK_MIAP_HACK ) && distance > 0 && exc->GS.freeVector.y != 0 ) distance = 0; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ org_dist = FAST_PROJECT( &exc->zp0.cur[point] ); @@ -5799,10 +5899,10 @@ if ( FT_ABS( distance - org_dist ) > control_value_cutin ) distance = org_dist; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && - exc->ignore_x_mode && - exc->GS.freeVector.x != 0 ) +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.x != 0 ) distance = Round_None( exc, distance, exc->tt_metrics.compensations[0] ); @@ -5831,19 +5931,19 @@ Ins_MDRP( TT_ExecContext exc, FT_Long* args ) { - FT_UShort point; + FT_UShort point = 0; FT_F26Dot6 org_dist, distance, minimum_distance; minimum_distance = exc->GS.minimum_distance; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.x != 0 && !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) minimum_distance = 0; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ point = (FT_UShort)args[0]; @@ -5907,10 +6007,10 @@ if ( ( exc->opcode & 4 ) != 0 ) { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && - exc->ignore_x_mode && - exc->GS.freeVector.x != 0 ) +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.x != 0 ) distance = Round_None( exc, org_dist, @@ -5978,11 +6078,11 @@ org_dist, control_value_cutin, minimum_distance; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY FT_Int B1 = 0; /* pacify compiler */ FT_Int B2 = 0; FT_Bool reverse_move = FALSE; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ minimum_distance = exc->GS.minimum_distance; @@ -5990,13 +6090,14 @@ point = (FT_UShort)args[0]; cvtEntry = (FT_ULong)( args[1] + 1 ); -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.x != 0 && !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) control_value_cutin = minimum_distance = 0; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + else +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /* XXX: UNDOCUMENTED! cvt[-1] = 0 always */ @@ -6049,8 +6150,8 @@ cvt_dist = -cvt_dist; } -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.y != 0 && ( exc->sph_tweak_flags & SPH_TWEAK_TIMES_NEW_ROMAN_HACK ) ) @@ -6060,7 +6161,7 @@ else if ( cur_dist > 64 && cur_dist < 84 ) cvt_dist += 32; } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /* control value cut-in and round */ @@ -6095,16 +6196,16 @@ else { -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* do cvt cut-in always in MIRP for sph */ - if ( SUBPIXEL_HINTING && + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.gep0 == exc->GS.gep1 ) { if ( FT_ABS( cvt_dist - org_dist ) > control_value_cutin ) cvt_dist = org_dist; } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ distance = Round_None( exc, @@ -6128,8 +6229,8 @@ } } -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING ) +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY ) { B1 = exc->zp1.cur[point].y; @@ -6146,12 +6247,12 @@ ( exc->sph_tweak_flags & SPH_TWEAK_COURIER_NEW_2_HACK ) ) distance += 64; } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ exc->func_move( exc, &exc->zp1, point, distance - cur_dist ); -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING ) +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY ) { B2 = exc->zp1.cur[point].y; @@ -6175,7 +6276,7 @@ exc->func_move( exc, &exc->zp1, point, -( distance - cur_dist ) ); } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ Fail: exc->GS.rp1 = exc->GS.rp0; @@ -6200,8 +6301,8 @@ FT_F26Dot6 distance; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->iup_called && ( exc->sph_tweak_flags & SPH_TWEAK_NO_ALIGNRP_AFTER_IUP ) ) @@ -6209,7 +6310,7 @@ exc->error = FT_THROW( Invalid_Reference ); goto Fail; } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ if ( exc->top < exc->GS.loop || BOUNDS( exc->GS.rp0, exc->zp0.n_points ) ) @@ -6324,6 +6425,7 @@ R.x = FT_MulDiv( val, dax, discriminant ); R.y = FT_MulDiv( val, day, discriminant ); + /* XXX: Block in backwards_compatibility and/or post-IUP? */ exc->zp2.cur[point].x = exc->zp1.cur[a0].x + R.x; exc->zp2.cur[point].y = exc->zp1.cur[a0].y + R.y; } @@ -6331,6 +6433,7 @@ { /* else, take the middle of the middles of A and B */ + /* XXX: Block in backwards_compatibility and/or post-IUP? */ exc->zp2.cur[point].x = ( exc->zp1.cur[a0].x + exc->zp1.cur[a1].x + exc->zp0.cur[b0].x + @@ -6719,6 +6822,23 @@ FT_Short contour; /* current contour */ +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* See `ttinterp.h' for details on backwards compatibility mode. */ + /* Allow IUP until it has been called on both axes. Immediately */ + /* return on subsequent ones. */ + if ( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility ) + { + if ( exc->iupx_called && exc->iupy_called ) + return; + + if ( exc->opcode & 1 ) + exc->iupx_called = TRUE; + else + exc->iupy_called = TRUE; + } +#endif + /* ignore empty outlines */ if ( exc->pts.n_contours == 0 ) return; @@ -6742,15 +6862,15 @@ contour = 0; point = 0; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - if ( SUBPIXEL_HINTING && - exc->ignore_x_mode ) +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode ) { exc->iup_called = TRUE; if ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_IUP ) return; } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ do { @@ -6822,16 +6942,16 @@ FT_UShort A; FT_ULong C, P; FT_Long B; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY FT_UShort B1, B2; - if ( SUBPIXEL_HINTING && + if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->iup_called && ( exc->sph_tweak_flags & SPH_TWEAK_NO_DELTAP_AFTER_IUP ) ) goto Fail; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ P = (FT_ULong)exc->func_cur_ppem( exc ); nump = (FT_ULong)args[0]; /* some points theoretically may occur more @@ -6885,9 +7005,9 @@ B++; B *= 1L << ( 6 - exc->GS.delta_shift ); -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING ) + if ( SUBPIXEL_HINTING_INFINALITY ) { /* * Allow delta move if @@ -6944,9 +7064,25 @@ } } else -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ - exc->func_move( exc, &exc->zp0, A, B ); + { + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* See `ttinterp.h' for details on backwards compatibility */ + /* mode. */ + if ( SUBPIXEL_HINTING_MINIMAL && + exc->backwards_compatibility ) + { + if ( !( exc->iupx_called && exc->iupy_called ) && + ( ( exc->is_composite && exc->GS.freeVector.y != 0 ) || + ( exc->zp0.tags[A] & FT_CURVE_TAG_TOUCH_Y ) ) ) + exc->func_move( exc, &exc->zp0, A, B ); + } + else +#endif + exc->func_move( exc, &exc->zp0, A, B ); + } } } else @@ -7062,20 +7198,21 @@ Ins_GETINFO( TT_ExecContext exc, FT_Long* args ) { - FT_Long K; + FT_Long K; + TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( exc->face ); K = 0; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /********************************/ /* RASTERIZER VERSION */ /* Selector Bit: 0 */ /* Return Bit(s): 0-7 */ /* */ - if ( SUBPIXEL_HINTING && - ( args[0] & 1 ) != 0 && - exc->subpixel_hinting ) + if ( SUBPIXEL_HINTING_INFINALITY && + ( args[0] & 1 ) != 0 && + exc->subpixel_hinting ) { if ( exc->ignore_x_mode ) { @@ -7089,9 +7226,9 @@ K = TT_INTERPRETER_VERSION_38; } else -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ if ( ( args[0] & 1 ) != 0 ) - K = TT_INTERPRETER_VERSION_35; + K = driver->interpreter_version; /********************************/ /* GLYPH ROTATED */ @@ -7110,16 +7247,69 @@ K |= 1 << 8; /********************************/ - /* HINTING FOR GRAYSCALE */ + /* BI-LEVEL HINTING AND */ + /* GRAYSCALE RENDERING */ /* Selector Bit: 5 */ /* Return Bit(s): 12 */ /* */ if ( ( args[0] & 32 ) != 0 && exc->grayscale ) K |= 1 << 12; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + if ( SUBPIXEL_HINTING_MINIMAL ) + { + /********************************/ + /* HINTING FOR SUBPIXEL */ + /* Selector Bit: 6 */ + /* Return Bit(s): 13 */ + /* */ + /* v40 does subpixel hinting by default. */ + if ( ( args[0] & 64 ) != 0 ) + K |= 1 << 13; + + /********************************/ + /* VERTICAL LCD SUBPIXELS? */ + /* Selector Bit: 8 */ + /* Return Bit(s): 15 */ + /* */ + if ( ( args[0] & 256 ) != 0 && exc->vertical_lcd_lean ) + K |= 1 << 15; + + /********************************/ + /* SUBPIXEL POSITIONED? */ + /* Selector Bit: 10 */ + /* Return Bit(s): 17 */ + /* */ + /* XXX: FreeType supports it, dependent on what client does? */ + if ( ( args[0] & 1024 ) != 0 ) + K |= 1 << 17; + + /********************************/ + /* SYMMETRICAL SMOOTHING */ + /* Selector Bit: 11 */ + /* Return Bit(s): 18 */ + /* */ + /* The only smoothing method FreeType supports unless someone sets */ + /* FT_LOAD_TARGET_MONO. */ + if ( ( args[0] & 2048 ) != 0 ) + K |= 1 << 18; + + /********************************/ + /* CLEARTYPE HINTING AND */ + /* GRAYSCALE RENDERING */ + /* Selector Bit: 12 */ + /* Return Bit(s): 19 */ + /* */ + /* Grayscale rendering is what FreeType does anyway unless someone */ + /* sets FT_LOAD_TARGET_MONO or FT_LOAD_TARGET_LCD(_V) */ + if ( ( args[0] & 4096 ) != 0 && exc->grayscale_cleartype ) + K |= 1 << 19; + } +#endif + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING && + if ( SUBPIXEL_HINTING_INFINALITY && exc->rasterizer_version >= TT_INTERPRETER_VERSION_35 ) { @@ -7192,7 +7382,7 @@ } } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ args[0] = K; } @@ -7274,7 +7464,7 @@ FT_Long ins_counter = 0; /* executed instructions counter */ FT_UShort i; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY FT_Byte opcode_pattern[1][2] = { /* #8 TypeMan Talk Align */ { @@ -7285,12 +7475,27 @@ FT_UShort opcode_patterns = 1; FT_UShort opcode_pointer[1] = { 0 }; FT_UShort opcode_size[1] = { 1 }; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY exc->iup_called = FALSE; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* Toggle backwards compatibility according to what font says, except */ + /* when it's a `tricky' font that heavily relies on the interpreter to */ + /* render glyphs correctly, e.g. DFKai-SB. Backwards compatibility */ + /* hacks may break it. */ + if ( SUBPIXEL_HINTING_MINIMAL && + !FT_IS_TRICKY( &exc->face->root ) ) + exc->backwards_compatibility = !( exc->GS.instruct_control & 4 ); + else + exc->backwards_compatibility = FALSE; + + exc->iupx_called = FALSE; + exc->iupy_called = FALSE; +#endif /* set PPEM and CVT functions */ exc->tt_metrics.ratio = 0; @@ -7383,9 +7588,9 @@ exc->step_ins = TRUE; exc->error = FT_Err_Ok; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING ) + if ( SUBPIXEL_HINTING_INFINALITY ) { for ( i = 0; i < opcode_patterns; i++ ) { @@ -7414,7 +7619,7 @@ } } -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ { FT_Long* args = exc->stack + exc->args; diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.h b/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.h index e5a02b961a5..df7ce51f1c6 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.h +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.h @@ -99,7 +99,7 @@ FT_BEGIN_HEADER } TT_CallRec, *TT_CallStack; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /*************************************************************************/ /* */ @@ -138,7 +138,7 @@ FT_BEGIN_HEADER } SPH_Font_Class; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /*************************************************************************/ @@ -247,9 +247,135 @@ FT_BEGIN_HEADER TT_Set_CVT_Func func_write_cvt; /* write a cvt entry (in pixels) */ TT_Set_CVT_Func func_move_cvt; /* incr a cvt entry (in pixels) */ - FT_Bool grayscale; /* are we hinting for grayscale? */ - -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING + FT_Bool grayscale; /* bi-level hinting and */ + /* grayscale rendering */ + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* + * Modern TrueType fonts are usually rendered through Microsoft's + * collection of rendering techniques called ClearType (e.g., subpixel + * rendering and subpixel hinting). When ClearType was introduced, most + * fonts were not ready. Microsoft decided to implement a backwards + * compatibility mode that employed several simple to complicated + * assumptions and tricks that modified the interpretation of the + * bytecode contained in these fonts to make them look ClearType-y + * somehow. Most (web)fonts that were released since then have come to + * rely on these hacks to render correctly, even some of Microsoft's + * flagship ClearType fonts (Calibri, Cambria, Segoe UI). + * + * The minimal subpixel hinting code (interpreter version 40) employs a + * small list of font-agnostic hacks to bludgeon non-native-ClearType + * fonts (except tricky ones[1]) into submission. It will not try to + * toggle hacks for specific fonts for performance and complexity + * reasons. The focus is on modern (web)fonts rather than legacy fonts + * that were made for black-and-white rendering. + * + * Major hacks + * + * - Any point movement on the x axis is ignored (cf. `Direct_Move' and + * `Direct_Move_X'). This has the smallest code footprint and single + * biggest effect. The ClearType way to increase resolution is + * supersampling the x axis, the FreeType way is ignoring instructions + * on the x axis, which gives the same result in the majority of + * cases. + * + * - Points are not moved post-IUP (neither on the x nor on the y axis), + * except the x component of diagonal moves post-IUP (cf. + * `Direct_Move', `Direct_Move_Y', `Move_Zp2_Point'). Post-IUP + * changes are commonly used to `fix' pixel patterns which has little + * use outside monochrome rendering. + * + * - SHPIX and DELTAP don't execute unless moving a composite on the + * y axis or moving a previously y touched point. SHPIX additionally + * denies movement on the x axis (cf. `Ins_SHPIX' and `Ins_DELTAP'). + * Both instructions are commonly used to `fix' pixel patterns for + * monochrome or Windows's GDI rendering but make little sense for + * FreeType rendering. Both can distort the outline. See [2] for + * details. + * + * - The hdmx table and modifications to phantom points are ignored. + * Bearings and advance widths remain unchanged (except rounding them + * outside the interpreter!), cf. `compute_glyph_metrics' and + * `TT_Hint_Glyph'. Letting non-native-ClearType fonts modify spacing + * might mess up spacing. + * + * Minor hacks + * + * - FLIPRGON, FLIPRGOFF, and FLIPPT don't execute post-IUP. This + * prevents dents in e.g. Arial-Regular's `D' and `G' glyphs at + * various sizes. + * + * (Post-IUP is the state after both IUP[x] and IUP[y] have been + * executed.) + * + * The best results are achieved for fonts that were from the outset + * designed with ClearType in mind, meaning they leave the x axis mostly + * alone and don't mess with the `final' outline to produce more + * pleasing pixel patterns. The harder the designer tried to produce + * very specific patterns (`superhinting') for pre-ClearType-displays, + * the worse the results. + * + * Microsoft defines a way to turn off backwards compatibility and + * interpret instructions as before (called `native ClearType')[2][3]. + * The font designer then regains full control and is responsible for + * making the font work correctly with ClearType without any + * hand-holding by the interpreter or rasterizer[4]. The v40 + * interpreter assumes backwards compatibility by default, which can be + * turned off the same way by executing the following in the control + * program (cf. `Ins_INSTCTRL'). + * + * #PUSH 4,3 + * INSTCTRL[] + * + * [1] Tricky fonts as FreeType defines them rely on the bytecode + * interpreter to display correctly. Hacks can interfere with them, + * so they get treated like native ClearType fonts (v40 with + * backwards compatibility turned off). Cf. `TT_RunIns'. + * + * [2] Proposed by Microsoft's Greg Hitchcock in + * https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx + * + * [3] Beat Stamm describes it in more detail: + * http://www.beatstamm.com/typography/RTRCh4.htm#Sec12 + * + * [4] The list of `native ClearType' fonts is small at the time of this + * writing; I found the following on a Windows 10 Update 1511 + * installation: Constantia, Corbel, Sitka, Malgun Gothic, Microsoft + * JhengHei (Bold and UI Bold), Microsoft YaHei (Bold and UI Bold), + * SimSun, NSimSun, and Yu Gothic. + * + */ + + /* Using v40 implies subpixel hinting. Used to detect interpreter */ + /* version switches. `_lean' to differentiate from the Infinality */ + /* `subpixel_hinting', which is managed differently. */ + FT_Bool subpixel_hinting_lean; + + /* Long side of a LCD subpixel is vertical (e.g., screen is rotated). */ + /* `_lean' to differentiate from the Infinality `vertical_lcd', which */ + /* is managed differently. */ + FT_Bool vertical_lcd_lean; + + /* Default to backwards compatibility mode in v40 interpreter. If */ + /* this is false, it implies the interpreter is in v35 or in native */ + /* ClearType mode. */ + FT_Bool backwards_compatibility; + + /* Useful for detecting and denying post-IUP trickery that is usually */ + /* used to fix pixel patterns (`superhinting'). */ + FT_Bool iupx_called; + FT_Bool iupy_called; + + /* ClearType hinting and grayscale rendering, as used by Universal */ + /* Windows Platform apps (Windows 8 and above). Like the standard */ + /* colorful ClearType mode, it utilizes a vastly increased virtual */ + /* resolution on the x axis. Different from bi-level hinting and */ + /* grayscale rendering, the old mode from Win9x days that roughly */ + /* adheres to the physical pixel grid on both axes. */ + FT_Bool grayscale_cleartype; +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL */ + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY TT_Round_Func func_round_sphn; /* subpixel rounding function */ FT_Bool subpixel_hinting; /* Using subpixel hinting? */ @@ -279,7 +405,7 @@ FT_BEGIN_HEADER FT_ULong sph_in_func_flags; /* flags to indicate if in */ /* special functions */ -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ } TT_ExecContextRec; diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttobjs.c b/Build/source/libs/freetype2/freetype-src/src/truetype/ttobjs.c index cd4e294d546..ed3be2dbee7 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttobjs.c +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttobjs.c @@ -398,11 +398,11 @@ for ( j = 0; j < TRICK_SFNT_IDS_NUM_FACES; j++ ) { if ( !has_cvt && !sfnt_id[j][TRICK_SFNT_ID_cvt].Length ) - num_matched_ids[j] ++; + num_matched_ids[j]++; if ( !has_fpgm && !sfnt_id[j][TRICK_SFNT_ID_fpgm].Length ) - num_matched_ids[j] ++; + num_matched_ids[j]++; if ( !has_prep && !sfnt_id[j][TRICK_SFNT_ID_prep].Length ) - num_matched_ids[j] ++; + num_matched_ids[j]++; if ( num_matched_ids[j] == TRICK_SFNT_IDS_PER_FACE ) return TRUE; } @@ -1287,10 +1287,12 @@ TT_Driver driver = (TT_Driver)ttdriver; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING - driver->interpreter_version = TT_INTERPRETER_VERSION_38; -#else driver->interpreter_version = TT_INTERPRETER_VERSION_35; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + driver->interpreter_version = TT_INTERPRETER_VERSION_38; +#endif +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + driver->interpreter_version = TT_INTERPRETER_VERSION_40; #endif #else /* !TT_USE_BYTECODE_INTERPRETER */ diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.c b/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.c index 5a8f262316d..03950960a47 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.c +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.c @@ -27,7 +27,7 @@ #include "ttsubpix.h" -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /*************************************************************************/ /* */ @@ -1000,12 +1000,12 @@ } } -#else /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#else /* !TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /* ANSI C doesn't like empty source files */ typedef int _tt_subpix_dummy; -#endif /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* !TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ /* END */ diff --git a/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.h b/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.h index 6313baabbb7..86844da666f 100644 --- a/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.h +++ b/Build/source/libs/freetype2/freetype-src/src/truetype/ttsubpix.h @@ -27,7 +27,7 @@ FT_BEGIN_HEADER -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /*************************************************************************/ /* */ @@ -100,7 +100,7 @@ FT_BEGIN_HEADER #define SPH_OPTION_SET_COMPATIBLE_WIDTHS FALSE #define SPH_OPTION_SET_RASTERIZER_VERSION 38 -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ FT_END_HEADER diff --git a/Build/source/libs/freetype2/freetype-src/src/type1/t1afm.c b/Build/source/libs/freetype2/freetype-src/src/type1/t1afm.c index 3c7735db4a6..bbd843c1c33 100644 --- a/Build/source/libs/freetype2/freetype-src/src/type1/t1afm.c +++ b/Build/source/libs/freetype2/freetype-src/src/type1/t1afm.c @@ -197,7 +197,7 @@ /* encoding of first glyph (1 byte) */ /* encoding of second glyph (1 byte) */ /* offset (little-endian short) */ - for ( ; p < limit ; p += 4 ) + for ( ; p < limit; p += 4 ) { kp->index1 = FT_Get_Char_Index( t1_face, p[0] ); kp->index2 = FT_Get_Char_Index( t1_face, p[1] ); diff --git a/Build/source/libs/freetype2/freetype-src/src/type1/t1load.c b/Build/source/libs/freetype2/freetype-src/src/type1/t1load.c index a53037ca5b3..c981adcf2cc 100644 --- a/Build/source/libs/freetype2/freetype-src/src/type1/t1load.c +++ b/Build/source/libs/freetype2/freetype-src/src/type1/t1load.c @@ -326,7 +326,7 @@ /* Point to axes after MM_Var struct */ mmvar->namedstyle = NULL; - for ( i = 0 ; i < mmaster.num_axis; ++i ) + for ( i = 0; i < mmaster.num_axis; ++i ) { mmvar->axis[i].name = mmaster.axis[i].name; mmvar->axis[i].minimum = INT_TO_FIXED( mmaster.axis[i].minimum); @@ -1544,7 +1544,7 @@ /* */ if ( face->type1.private_dict.lenIV >= 0 ) { - FT_Byte* temp; + FT_Byte* temp = NULL; /* some fonts define empty subr records -- this is not totally */ @@ -1748,7 +1748,7 @@ if ( face->type1.private_dict.lenIV >= 0 && n < num_glyphs + TABLE_EXTEND ) { - FT_Byte* temp; + FT_Byte* temp = NULL; if ( size <= (FT_ULong)face->type1.private_dict.lenIV ) diff --git a/Build/source/libs/freetype2/freetype-src/src/type1/t1objs.c b/Build/source/libs/freetype2/freetype-src/src/type1/t1objs.c index f553f86d653..a0091171336 100644 --- a/Build/source/libs/freetype2/freetype-src/src/type1/t1objs.c +++ b/Build/source/libs/freetype2/freetype-src/src/type1/t1objs.c @@ -67,7 +67,7 @@ "pshinter" ); return ( module && pshinter && pshinter->get_globals_funcs ) ? pshinter->get_globals_funcs( module ) - : 0 ; + : 0; } diff --git a/Build/source/libs/freetype2/freetype-src/src/type42/t42parse.c b/Build/source/libs/freetype2/freetype-src/src/type42/t42parse.c index cf9009bb7af..f948916afaa 100644 --- a/Build/source/libs/freetype2/freetype-src/src/type42/t42parse.c +++ b/Build/source/libs/freetype2/freetype-src/src/type42/t42parse.c @@ -899,8 +899,13 @@ for (;;) { - /* The format is simple: */ - /* `/glyphname' + index [+ def] */ + /* We support two formats. */ + /* */ + /* `/glyphname' + index [+ `def'] */ + /* `(glyphname)' [+ `cvn'] + index [+ `def'] */ + /* */ + /* The latter format gets created by the */ + /* LilyPond typesetting program. */ T1_Skip_Spaces( parser ); @@ -928,12 +933,13 @@ if ( parser->root.error ) return; - if ( *cur == '/' ) + if ( *cur == '/' || *cur == '(' ) { FT_UInt len; + FT_Bool have_literal = ( *cur == '(' ); - if ( cur + 2 >= limit ) + if ( cur + ( have_literal ? 3 : 2 ) >= limit ) { FT_ERROR(( "t42_parse_charstrings: out of bounds\n" )); error = FT_THROW( Invalid_File_Format ); @@ -942,6 +948,8 @@ cur++; /* skip `/' */ len = (FT_UInt)( parser->root.cursor - cur ); + if ( have_literal ) + len--; error = T1_Add_Table( name_table, n, cur, len + 1 ); if ( error ) @@ -961,6 +969,9 @@ T1_Skip_Spaces( parser ); + if ( have_literal ) + T1_Skip_PS_Token( parser ); + cur = parser->root.cursor; (void)T1_ToInt( parser ); diff --git a/Build/source/libs/freetype2/freetype-src/vms_make.com b/Build/source/libs/freetype2/freetype-src/vms_make.com index e5a49282a7b..be8c615382a 100644 --- a/Build/source/libs/freetype2/freetype-src/vms_make.com +++ b/Build/source/libs/freetype2/freetype-src/vms_make.com @@ -1090,13 +1090,13 @@ $ type/out=vmslib.dat sys$input ! might look like. They are site specific and the locations of the ! library and include files need almost certainly to be changed. ! -! Location: All of the libaries can be found at the following addresses +! Location: All of the libraries can be found at the following addresses ! ! ZLIB: http://zinser.no-ip.info/vms/sw/zlib.htmlx ! ZLIB # sys$library:libz.olb # sys$library: # zlib.h # FT_CONFIG_OPTION_SYSTEM_ZLIB $ write sys$output "New driver file vmslib.dat created." -$ write sys$output "Please customize libary locations for your site" +$ write sys$output "Please customize library locations for your site" $ write sys$output "and afterwards re-execute ''myproc'" $ goto err_exit $ endif diff --git a/Build/source/libs/freetype2/version.ac b/Build/source/libs/freetype2/version.ac index 7e756000a24..a33045bfc51 100644 --- a/Build/source/libs/freetype2/version.ac +++ b/Build/source/libs/freetype2/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current freetype version -m4_define([freetype_version], [2.6.3]) +m4_define([freetype_version], [2.6.4]) |